    001    /* ===========================================================
    002     * JFreeChart : a free chart library for the Java(tm) platform
    003     * ===========================================================
    004     *
    005     * (C) Copyright 2000-2011, 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     * [Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    025     * Other names may be trademarks of their respective owners.]
    026     *
    027     * ----------------------
    028     * PolarItemRenderer.java
    029     * ----------------------
    030     * (C) Copyright 2004-2011, by Solution Engineering, Inc. and Contributors.
    031     *
    032     * Original Author:  Daniel Bridenbecker, Solution Engineering, Inc.;
    033     * Contributor(s):   David Gilbert (for Object Refinery Limited);
    034     *
    035     * Changes
    036     * -------
    037     * 19-Jan-2004 : Version 1, contributed by DB with minor changes by DG (DG);
    038     * 03-Oct-2011 : Added tooltip and URL generator support (MH);
    039     *
    040     */
    041
    042    package org.jfree.chart.renderer;
    043
    044    import java.awt.Graphics2D;
    045    import java.awt.geom.Rectangle2D;
    046    import java.util.List;
    047
    048    import org.jfree.chart.LegendItem;
    049    import org.jfree.chart.axis.ValueAxis;
    050    import org.jfree.chart.event.RendererChangeEvent;
    051    import org.jfree.chart.event.RendererChangeListener;
    052    import org.jfree.chart.labels.XYToolTipGenerator;
    053    import org.jfree.chart.plot.PlotRenderingInfo;
    054    import org.jfree.chart.plot.PolarPlot;
    055    import org.jfree.chart.urls.XYURLGenerator;
    056    import org.jfree.data.xy.XYDataset;
    057
    058    /**
    059     * The interface for a renderer that can be used by the {@link PolarPlot}
    060     * class.
    061     */
    062    public interface PolarItemRenderer {
    063
    064        /**
    065         * Plots the data for a given series.
    066         *
    067         * @param g2  the drawing surface.
    068         * @param dataArea  the data area.
    069         * @param info  collects plot rendering info.
    070         * @param plot  the plot.
    071         * @param dataset  the dataset.
    072         * @param seriesIndex  the series index.
    073         */
    074        public void drawSeries(Graphics2D g2, Rectangle2D dataArea,
    075                PlotRenderingInfo info, PolarPlot plot, XYDataset dataset,
    076                int seriesIndex);
    077
    078        /**
    079         * Draw the angular gridlines - the spokes.
    080         *
    081         * @param g2  the drawing surface.
    082         * @param plot  the plot.
    083         * @param ticks  the ticks.
    084         * @param dataArea  the data area.
    085         */
    086        public void drawAngularGridLines(Graphics2D g2, PolarPlot plot,
    087                List ticks, Rectangle2D dataArea);
    088
    089        /**
    090         * Draw the radial gridlines - the rings.
    091         *
    092         * @param g2  the drawing surface.
    093         * @param plot  the plot.
    094         * @param radialAxis  the radial axis.
    095         * @param ticks  the ticks.
    096         * @param dataArea  the data area.
    097         */
    098        public void drawRadialGridLines(Graphics2D g2, PolarPlot plot,
    099                ValueAxis radialAxis, List ticks, Rectangle2D dataArea);
    100
    101        /**
    102         * Return the legend for the given series.
    103         *
    104         * @param series  the series index.
    105         *
    106         * @return The legend item.
    107         */
    108        public LegendItem getLegendItem(int series);
    109
    110        /**
    111         * Returns the plot that this renderer has been assigned to.
    112         *
    113         * @return The plot.
    114         */
    115        public PolarPlot getPlot();
    116
    117        /**
    118         * Sets the plot that this renderer is assigned to.  This method will be
    119         * called by the plot class...you do not need to call it yourself.
    120         *
    121         * @param plot  the plot.
    122         */
    123        public void setPlot(PolarPlot plot);
    124
    125        /**
    126         * Adds a change listener.
    127         *
    128         * @param listener  the listener.
    129         */
    130        public void addChangeListener(RendererChangeListener listener);
    131
    132        /**
    133         * Removes a change listener.
    134         *
    135         * @param listener  the listener.
    136         */
    137        public void removeChangeListener(RendererChangeListener listener);
    138
    139
    140        //// TOOL TIP GENERATOR ///////////////////////////////////////////////////
    141
    142        /**
    143         * Returns the tool tip generator for a data item.
    144         *
    145         * @param row  the row index (zero based).
    146         * @param column  the column index (zero based).
    147         *
    148         * @return The generator (possibly <code>null</code>).
    149         *
    150         * @since 1.0.14
    151         */
    152        public XYToolTipGenerator getToolTipGenerator(int row, int column);
    153
    154        /**
    155         * Returns the tool tip generator for a series.
    156         *
    157         * @param series  the series index (zero based).
    158         *
    159         * @return The generator (possibly <code>null</code>).
    160         *
    161         * @see #setSeriesToolTipGenerator(int, XYToolTipGenerator)
    162         *
    163         * @since 1.0.14
    164         */
    165        public XYToolTipGenerator getSeriesToolTipGenerator(int series);
    166
    167        /**
    168         * Sets the tool tip generator for a series and sends a
    169         * {@link RendererChangeEvent} to all registered listeners.
    170         *
    171         * @param series  the series index (zero based).
    172         * @param generator  the generator (<code>null</code> permitted).
    173         *
    174         * @see #getSeriesToolTipGenerator(int)
    175         *
    176         * @since 1.0.14
    177         */
    178        public void setSeriesToolTipGenerator(int series,
    179                                              XYToolTipGenerator generator);
    180
    181        /**
    182         * Returns the base tool tip generator.
    183         *
    184         * @return The generator (possibly <code>null</code>).
    185         *
    186         * @see #setBaseToolTipGenerator(XYToolTipGenerator)
    187         *
    188         * @since 1.0.14
    189         */
    190        public XYToolTipGenerator getBaseToolTipGenerator();
    191
    192        /**
    193         * Sets the base tool tip generator and sends a {@link RendererChangeEvent}
    194         * to all registered listeners.
    195         *
    196         * @param generator  the generator (<code>null</code> permitted).
    197         *
    198         * @see #getBaseToolTipGenerator()
    199         *
    200         * @since 1.0.14
    201         */
    202        public void setBaseToolTipGenerator(XYToolTipGenerator generator);
    203
    204
    205        //// URL GENERATOR ////////////////////////////////////////////////////////
    206
    207        /**
    208         * Returns the URL generator for HTML image maps.
    209         *
    210         * @return The URL generator (possibly null).
    211         *
    212         * @since 1.0.14
    213         */
    214        public XYURLGenerator getURLGenerator();
    215
    216        /**
    217         * Sets the URL generator for HTML image maps.
    218         *
    219         * @param urlGenerator the URL generator (null permitted).
    220         *
    221         * @since 1.0.14
    222         */
    223        public void setURLGenerator(XYURLGenerator urlGenerator);
    224
    225    }