001: /* ===========================================================
002: * JFreeChart : a free chart library for the Java(tm) platform
003: * ===========================================================
004: *
005: * (C) Copyright 2000-2005, 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: * StandardPieToolTipGenerator.java
029: * --------------------------------
030: * (C) Copyright 2001-2006, by Object Refinery Limited.
031: *
032: * Original Author: David Gilbert (for Object Refinery Limited);
033: * Contributor(s): Richard Atkinson;
034: * Andreas Schroeder;
035: *
036: * $Id: StandardPieToolTipGenerator.java,v 1.1.2.3 2006/05/03 10:46:36 mungady Exp $
037: *
038: * Changes
039: * -------
040: * 13-Dec-2001 : Version 1 (DG);
041: * 16-Jan-2002 : Completed Javadocs (DG);
042: * 29-Aug-2002 : Changed to format numbers using default locale (RA);
043: * 26-Sep-2002 : Fixed errors reported by Checkstyle (DG);
044: * 30-Oct-2002 : Changed PieToolTipGenerator interface (DG);
045: * 21-Mar-2003 : Implemented Serializable (DG);
046: * 13-Aug-2003 : Implemented Cloneable (DG);
047: * 19-Aug-2003 : Renamed StandardPieToolTipGenerator -->
048: * StandardPieItemLabelGenerator (DG);
049: * 10-Mar-2004 : Modified to use MessageFormat class (DG);
050: * 31-Mar-2004 : Added javadocs for the MessageFormat usage (AS);
051: * 15-Apr-2004 : Split PieItemLabelGenerator interface into
052: * PieSectionLabelGenerator and PieToolTipGenerator (DG);
053: * 25-Nov-2004 : Moved some code into abstract super class (DG);
054: * 29-Jul-2005 : Removed implementation of PieSectionLabelGenerator
055: * interface (DG);
056: *
057: */
058:
059: package org.jfree.chart.labels;
060:
061: import java.io.Serializable;
062: import java.text.NumberFormat;
063:
064: import org.jfree.data.general.PieDataset;
065: import org.jfree.util.PublicCloneable;
066:
067: /**
068: * A standard item label generator for plots that use data from a
069: * {@link PieDataset}.
070: * <p>
071: * For the label format, use {0} where the pie section key should be inserted,
072: * {1} for the absolute section value and {2} for the percent amount of the pie
073: * section, e.g. <code>"{0} = {1} ({2})"</code> will display as
074: * <code>apple = 120 (5%)</code>.
075: */
076: public class StandardPieToolTipGenerator extends
077: AbstractPieItemLabelGenerator implements PieToolTipGenerator,
078: Cloneable, PublicCloneable, Serializable {
079:
080: /** For serialization. */
081: private static final long serialVersionUID = 2995304200445733779L;
082:
083: /** The default tooltip format. */
084: public static final String DEFAULT_TOOLTIP_FORMAT = "{0}: ({1}, {2})";
085:
086: /** The default section label format. */
087: public static final String DEFAULT_SECTION_LABEL_FORMAT = "{0} = {1}";
088:
089: /**
090: * Creates an item label generator using default number formatters.
091: */
092: public StandardPieToolTipGenerator() {
093: this (DEFAULT_SECTION_LABEL_FORMAT, NumberFormat
094: .getNumberInstance(), NumberFormat.getPercentInstance());
095: }
096:
097: /**
098: * Creates an item label generator.
099: *
100: * @param labelFormat the label format.
101: */
102: public StandardPieToolTipGenerator(String labelFormat) {
103: this (labelFormat, NumberFormat.getNumberInstance(),
104: NumberFormat.getPercentInstance());
105: }
106:
107: /**
108: * Creates an item label generator using the specified number formatters.
109: *
110: * @param labelFormat the label format string (<code>null</code> not
111: * permitted).
112: * @param numberFormat the format object for the values (<code>null</code>
113: * not permitted).
114: * @param percentFormat the format object for the percentages
115: * (<code>null</code> not permitted).
116: */
117: public StandardPieToolTipGenerator(String labelFormat,
118: NumberFormat numberFormat, NumberFormat percentFormat) {
119: super (labelFormat, numberFormat, percentFormat);
120: }
121:
122: /**
123: * Generates a tool tip text item for one section in a pie chart.
124: *
125: * @param dataset the dataset (<code>null</code> not permitted).
126: * @param key the section key (<code>null</code> not permitted).
127: *
128: * @return The tool tip text (possibly <code>null</code>).
129: */
130: public String generateToolTip(PieDataset dataset, Comparable key) {
131: return generateSectionLabel(dataset, key);
132: }
133:
134: /**
135: * Returns an independent copy of the generator.
136: *
137: * @return A clone.
138: *
139: * @throws CloneNotSupportedException should not happen.
140: */
141: public Object clone() throws CloneNotSupportedException {
142: return super.clone();
143: }
144:
145: }
|