001 /* ===========================================================
002 * JFreeChart : a free chart library for the Java(tm) platform
003 * ===========================================================
004 *
005 * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
006 *
007 * Project Info: http://www.jfree.org/jfreechart/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it
010 * under the terms of the GNU Lesser General Public License as published by
011 * the Free Software Foundation; either version 2.1 of the License, or
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022 * USA.
023 *
024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025 * in the United States and other countries.]
026 *
027 * -------------------------------
028 * StandardXYToolTipGenerator.java
029 * -------------------------------
030 * (C) Copyright 2004-2007, by Object Refinery Limited.
031 *
032 * Original Author: David Gilbert (for Object Refinery Limited);
033 * Contributor(s): -;
034 *
035 * $Id: StandardXYToolTipGenerator.java,v 1.3.2.3 2007/02/02 11:07:00 mungady Exp $
036 *
037 * Changes
038 * -------
039 * 12-May-2004 : Version 1 (DG);
040 * ------------- JFREECHART 1.0.x ---------------------------------------------
041 * 25-Jan-2007 : Added new constructor - see bug 1624067 (DG);
042 *
043 */
044
045 package org.jfree.chart.labels;
046
047 import java.io.Serializable;
048 import java.text.DateFormat;
049 import java.text.NumberFormat;
050
051 import org.jfree.data.xy.XYDataset;
052 import org.jfree.util.PublicCloneable;
053
054 /**
055 * A standard tool tip generator for use with an
056 * {@link org.jfree.chart.renderer.xy.XYItemRenderer}.
057 */
058 public class StandardXYToolTipGenerator extends AbstractXYItemLabelGenerator
059 implements XYToolTipGenerator,
060 Cloneable,
061 PublicCloneable,
062 Serializable {
063
064 /** For serialization. */
065 private static final long serialVersionUID = -3564164459039540784L;
066
067 /** The default tooltip format. */
068 public static final String DEFAULT_TOOL_TIP_FORMAT = "{0}: ({1}, {2})";
069
070 /**
071 * Returns a tool tip generator that formats the x-values as dates and the
072 * y-values as numbers.
073 *
074 * @return A tool tip generator (never <code>null</code>).
075 */
076 public static StandardXYToolTipGenerator getTimeSeriesInstance() {
077 return new StandardXYToolTipGenerator(DEFAULT_TOOL_TIP_FORMAT,
078 DateFormat.getInstance(), NumberFormat.getInstance());
079 }
080
081 /**
082 * Creates a tool tip generator using default number formatters.
083 */
084 public StandardXYToolTipGenerator() {
085 this(DEFAULT_TOOL_TIP_FORMAT, NumberFormat.getNumberInstance(),
086 NumberFormat.getNumberInstance());
087 }
088
089 /**
090 * Creates a tool tip generator using the specified number formatters.
091 *
092 * @param formatString the item label format string (<code>null</code> not
093 * permitted).
094 * @param xFormat the format object for the x values (<code>null</code>
095 * not permitted).
096 * @param yFormat the format object for the y values (<code>null</code>
097 * not permitted).
098 */
099 public StandardXYToolTipGenerator(String formatString, NumberFormat xFormat,
100 NumberFormat yFormat) {
101
102 super(formatString, xFormat, yFormat);
103
104 }
105
106 /**
107 * Creates a tool tip generator using the specified number formatters.
108 *
109 * @param formatString the label format string (<code>null</code> not
110 * permitted).
111 * @param xFormat the format object for the x values (<code>null</code>
112 * not permitted).
113 * @param yFormat the format object for the y values (<code>null</code>
114 * not permitted).
115 */
116 public StandardXYToolTipGenerator(String formatString, DateFormat xFormat,
117 NumberFormat yFormat) {
118
119 super(formatString, xFormat, yFormat);
120
121 }
122
123 /**
124 * Creates a tool tip generator using the specified formatters (a
125 * number formatter for the x-values and a date formatter for the
126 * y-values).
127 *
128 * @param formatString the item label format string (<code>null</code>
129 * not permitted).
130 * @param xFormat the format object for the x values (<code>null</code>
131 * permitted).
132 * @param yFormat the format object for the y values (<code>null</code>
133 * not permitted).
134 *
135 * @since 1.0.4
136 */
137 public StandardXYToolTipGenerator(String formatString,
138 NumberFormat xFormat, DateFormat yFormat) {
139
140 super(formatString, xFormat, yFormat);
141 }
142 /**
143 * Creates a tool tip generator using the specified date formatters.
144 *
145 * @param formatString the label format string (<code>null</code> not
146 * permitted).
147 * @param xFormat the format object for the x values (<code>null</code>
148 * not permitted).
149 * @param yFormat the format object for the y values (<code>null</code>
150 * not permitted).
151 */
152 public StandardXYToolTipGenerator(String formatString,
153 DateFormat xFormat, DateFormat yFormat) {
154
155 super(formatString, xFormat, yFormat);
156
157 }
158
159 /**
160 * Generates the tool tip text for an item in a dataset.
161 *
162 * @param dataset the dataset (<code>null</code> not permitted).
163 * @param series the series index (zero-based).
164 * @param item the item index (zero-based).
165 *
166 * @return The tooltip text (possibly <code>null</code>).
167 */
168 public String generateToolTip(XYDataset dataset, int series, int item) {
169 return generateLabelString(dataset, series, item);
170 }
171
172 /**
173 * Tests this object for equality with an arbitrary object.
174 *
175 * @param obj the other object (<code>null</code> permitted).
176 *
177 * @return A boolean.
178 */
179 public boolean equals(Object obj) {
180 if (obj == this) {
181 return true;
182 }
183 if (!(obj instanceof StandardXYToolTipGenerator)) {
184 return false;
185 }
186 return super.equals(obj);
187 }
188
189 /**
190 * Returns an independent copy of the generator.
191 *
192 * @return A clone.
193 *
194 * @throws CloneNotSupportedException if cloning is not supported.
195 */
196 public Object clone() throws CloneNotSupportedException {
197 return super.clone();
198 }
199
200 }