KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > chart > labels > BoxAndWhiskerXYToolTipGenerator


1 /* ===========================================================
2  * JFreeChart : a free chart library for the Java(tm) platform
3  * ===========================================================
4  *
5  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
6  *
7  * Project Info: http://www.jfree.org/jfreechart/index.html
8  *
9  * This library is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17  * License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22  * USA.
23  *
24  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
25  * in the United States and other countries.]
26  *
27  * ------------------------------------
28  * BoxAndWhiskerXYToolTipGenerator.java
29  * ------------------------------------
30  * (C) Copyright 2003-2005, by David Browning and Contributors.
31  *
32  * Original Author: David Browning;
33  * Contributor(s): David Gilbert (for Object Refinery Limited);
34  *
35  * $Id: BoxAndWhiskerXYToolTipGenerator.java,v 1.4.2.1 2005/10/25 20:49:02 mungady Exp $
36  *
37  * Changes
38  * -------
39  * 05-Aug-2003 : Version 1, contributed by David Browning (DG);
40  * 13-Aug-2003 : Implemented Cloneable (DG);
41  * 28-Aug-2003 : Updated for changes in dataset API (DG);
42  * 25-Feb-2004 : Renamed XYToolTipGenerator --> XYItemLabelGenerator (DG);
43  * 27-Feb-2004 : Renamed BoxAndWhiskerItemLabelGenerator -->
44  * BoxAndWhiskerXYItemLabelGenerator, and modified to use
45  * MessageFormat (DG);
46  * 15-Jul-2004 : Switched getX() with getXValue() and getY() with
47  * getYValue() (DG);
48  *
49  */

50
51 package org.jfree.chart.labels;
52
53 import java.io.Serializable JavaDoc;
54 import java.text.DateFormat JavaDoc;
55 import java.text.MessageFormat JavaDoc;
56 import java.text.NumberFormat JavaDoc;
57 import java.util.Date JavaDoc;
58
59 import org.jfree.data.statistics.BoxAndWhiskerXYDataset;
60 import org.jfree.data.xy.XYDataset;
61
62 /**
63  * An item label generator for plots that use data from a
64  * {@link BoxAndWhiskerXYDataset}.
65  * <P>
66  * The tooltip text and item label text are composed using a
67  * {@link java.text.MessageFormat} object, that can aggregate some or all of
68  * the following string values into a message.
69  * <table>
70  * <tr><td>0</td><td>Series Name</td></tr>
71  * <tr><td>1</td><td>X (value or date)</td></tr>
72  * <tr><td>2</td><td>Mean</td></tr>
73  * <tr><td>3</td><td>Median</td></tr>
74  * <tr><td>4</td><td>Minimum</td></tr>
75  * <tr><td>5</td><td>Maximum</td></tr>
76  * <tr><td>6</td><td>Quartile 1</td></tr>
77  * <tr><td>7</td><td>Quartile 3</td></tr>
78  * </table>
79  *
80  * @author David Browning
81  */

82 public class BoxAndWhiskerXYToolTipGenerator extends StandardXYToolTipGenerator
83                                              implements XYToolTipGenerator,
84                                                         Cloneable JavaDoc,
85                                                         Serializable JavaDoc {
86
87     /** For serialization. */
88     private static final long serialVersionUID = -2648775791161459710L;
89     
90     /** The default tooltip format string. */
91     public static final String JavaDoc DEFAULT_TOOL_TIP_FORMAT
92         = "X: {1} Mean: {2} Median: {3} Min: {4} Max: {5} Q1: {6} Q3: {7} ";
93     
94     /**
95      * Creates a default item label generator.
96      */

97     public BoxAndWhiskerXYToolTipGenerator() {
98         super(
99             DEFAULT_TOOL_TIP_FORMAT,
100             NumberFormat.getInstance(), NumberFormat.getInstance()
101         );
102     }
103
104     /**
105      * Creates a new item label generator. If the date formatter is not
106      * <code>null</code>, the x-values will be formatted as dates.
107      *
108      * @param toolTipFormat the tool tip format string (<code>null</code> not
109      * permitted).
110      * @param numberFormat the number formatter (<code>null</code> not
111      * permitted).
112      * @param dateFormat the date formatter (<code>null</code> permitted).
113      */

114     public BoxAndWhiskerXYToolTipGenerator(String JavaDoc toolTipFormat,
115                                            DateFormat JavaDoc dateFormat,
116                                            NumberFormat JavaDoc numberFormat) {
117         
118         super(toolTipFormat, dateFormat, numberFormat);
119     
120     }
121     
122     /**
123      * Creates the array of items that can be passed to the
124      * {@link MessageFormat} class for creating labels.
125      *
126      * @param dataset the dataset (<code>null</code> not permitted).
127      * @param series the series (zero-based index).
128      * @param item the item (zero-based index).
129      *
130      * @return The items (never <code>null</code>).
131      */

132     protected Object JavaDoc[] createItemArray(XYDataset dataset, int series,
133                                        int item) {
134         Object JavaDoc[] result = new Object JavaDoc[8];
135         result[0] = dataset.getSeriesKey(series).toString();
136         Number JavaDoc x = dataset.getX(series, item);
137         if (getXDateFormat() != null) {
138             result[1] = getXDateFormat().format(new Date JavaDoc(x.longValue()));
139         }
140         else {
141             result[1] = getXFormat().format(x);
142         }
143         NumberFormat JavaDoc formatter = getYFormat();
144         
145         if (dataset instanceof BoxAndWhiskerXYDataset) {
146             BoxAndWhiskerXYDataset d = (BoxAndWhiskerXYDataset) dataset;
147             result[2] = formatter.format(d.getMeanValue(series, item));
148             result[3] = formatter.format(d.getMedianValue(series, item));
149             result[4] = formatter.format(d.getMinRegularValue(series, item));
150             result[5] = formatter.format(d.getMaxRegularValue(series, item));
151             result[6] = formatter.format(d.getQ1Value(series, item));
152             result[7] = formatter.format(d.getQ3Value(series, item));
153         }
154         return result;
155     }
156
157     /**
158      * Tests if this object is equal to another.
159      *
160      * @param obj the other object.
161      *
162      * @return A boolean.
163      */

164     public boolean equals(Object JavaDoc obj) {
165         if (obj == this) {
166             return true;
167         }
168         if (!(obj instanceof BoxAndWhiskerXYToolTipGenerator)) {
169             return false;
170         }
171         return super.equals(obj);
172     }
173     
174 }
175
Popular Tags