001    /* ===========================================================
002     * JFreeChart : a free chart library for the Java(tm) platform
003     * ===========================================================
004     *
005     * (C) Copyright 2000-2006, 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     * StandardCategoryItemLabelGenerator.java
029     * ---------------------------------------
030     * (C) Copyright 2004-2006, by Object Refinery Limited.
031     *
032     * Original Author:  David Gilbert (for Object Refinery Limited);
033     * Contributor(s):   -;
034     *
035     * $Id: StandardCategoryItemLabelGenerator.java,v 1.2.2.3 2006/07/25 15:55:48 mungady Exp $
036     *
037     * Changes
038     * -------
039     * 11-May-2004 : Version 1 (DG);
040     * 20-Apr-2005 : Renamed StandardCategoryLabelGenerator 
041     *               --> StandardCategoryItemLabelGenerator (DG);
042     * ------------- JFREECHART 1.0.0 ---------------------------------------------
043     * 03-May-2005 : Added equals() implementation, to fix bug 1481087 (DG);
044     */
045    
046    package org.jfree.chart.labels;
047    
048    import java.io.Serializable;
049    import java.text.DateFormat;
050    import java.text.NumberFormat;
051    
052    import org.jfree.data.category.CategoryDataset;
053    import org.jfree.util.PublicCloneable;
054    
055    /**
056     * A standard label generator that can be used with a 
057     * {@link org.jfree.chart.renderer.category.CategoryItemRenderer}.
058     */
059    public class StandardCategoryItemLabelGenerator 
060        extends AbstractCategoryItemLabelGenerator 
061        implements CategoryItemLabelGenerator, Cloneable, PublicCloneable,
062                   Serializable {
063    
064        /** For serialization. */
065        private static final long serialVersionUID = 3499701401211412882L;
066        
067        /** The default format string. */
068        public static final String DEFAULT_LABEL_FORMAT_STRING = "{2}";
069        
070        /**
071         * Creates a new generator with a default number formatter.
072         */
073        public StandardCategoryItemLabelGenerator() {
074            super(DEFAULT_LABEL_FORMAT_STRING, NumberFormat.getInstance());
075        }
076    
077        /**
078         * Creates a new generator with the specified number formatter.
079         *
080         * @param labelFormat  the label format string (<code>null</code> not 
081         *                     permitted).
082         * @param formatter  the number formatter (<code>null</code> not permitted).
083         */
084        public StandardCategoryItemLabelGenerator(String labelFormat, 
085                                                  NumberFormat formatter) {
086            super(labelFormat, formatter);
087        }
088        
089        /**
090         * Creates a new generator with the specified number formatter.
091         *
092         * @param labelFormat  the label format string (<code>null</code> not 
093         *                     permitted).
094         * @param formatter  the number formatter (<code>null</code> not permitted).
095         * @param percentFormatter  the percent formatter (<code>null</code> not
096         *     permitted).
097         * 
098         * @since 1.0.2
099         */
100        public StandardCategoryItemLabelGenerator(String labelFormat, 
101                NumberFormat formatter, NumberFormat percentFormatter) {
102            super(labelFormat, formatter, percentFormatter);
103        }
104        
105        /**
106         * Creates a new generator with the specified date formatter.
107         *
108         * @param labelFormat  the label format string (<code>null</code> not 
109         *                     permitted).
110         * @param formatter  the date formatter (<code>null</code> not permitted).
111         */
112        public StandardCategoryItemLabelGenerator(String labelFormat, 
113                                                  DateFormat formatter) {
114            super(labelFormat, formatter);
115        }
116        
117        /**
118         * Generates the label for an item in a dataset.  Note: in the current 
119         * dataset implementation, each row is a series, and each column contains 
120         * values for a particular category.
121         *
122         * @param dataset  the dataset (<code>null</code> not permitted).
123         * @param row  the row index (zero-based).
124         * @param column  the column index (zero-based).
125         *
126         * @return The label (possibly <code>null</code>).
127         */
128        public String generateLabel(CategoryDataset dataset, int row, int column) {
129            return generateLabelString(dataset, row, column);
130        }
131        
132        /**
133         * Tests this generator for equality with an arbitrary object.
134         * 
135         * @param obj  the object (<code>null</code> permitted).
136         * 
137         * @return <code>true</code> if this generator is equal to 
138         *     <code>obj</code>, and <code>false</code> otherwise.
139         */
140        public boolean equals(Object obj) {
141            if (obj == this) {
142                return true;
143            }
144            if (!(obj instanceof StandardCategoryItemLabelGenerator)) {
145                return false;
146            }
147            return super.equals(obj);
148        }
149    }