Module platform

Class AbstractXYItemRenderer

java.lang.Object
org.jfree.chart.renderer.AbstractRenderer
org.jfree.chart.renderer.xy.AbstractXYItemRenderer
All Implemented Interfaces:
Serializable, Cloneable, EventListener, AnnotationChangeListener, LegendItemSource, XYItemRenderer
Direct Known Subclasses:
CandlestickRenderer, HighLowRenderer, SamplingXYLineRenderer, StandardXYItemRenderer, VectorRenderer, WindItemRenderer, XYAreaRenderer, XYAreaRenderer2, XYBarRenderer, XYBlockRenderer, XYBoxAndWhiskerRenderer, XYBubbleRenderer, XYDifferenceRenderer, XYDotRenderer, XYLineAndShapeRenderer, XYShapeRenderer, XYStepAreaRenderer, YIntervalRenderer

public abstract class AbstractXYItemRenderer extends AbstractRenderer implements XYItemRenderer, AnnotationChangeListener, Cloneable, Serializable
A base class that can be used to create new XYItemRenderer implementations.
See Also:
  • Constructor Details

    • AbstractXYItemRenderer

      protected AbstractXYItemRenderer()
      Creates a renderer where the tooltip generator and the URL generator are both null.
  • Method Details

    • getPassCount

      public int getPassCount()
      Returns the number of passes through the data that the renderer requires in order to draw the chart. Most charts will require a single pass, but some require two passes.
      Specified by:
      getPassCount in interface XYItemRenderer
      Returns:
      The pass count.
    • getPlot

      public XYPlot getPlot()
      Returns the plot that the renderer is assigned to.
      Specified by:
      getPlot in interface XYItemRenderer
      Returns:
      The plot (possibly null).
    • setPlot

      public void setPlot(XYPlot plot)
      Sets the plot that the renderer is assigned to.
      Specified by:
      setPlot in interface XYItemRenderer
      Parameters:
      plot - the plot (null permitted).
    • initialise

      public XYItemRendererState initialise(Graphics2D g2, Rectangle2D dataArea, XYPlot plot, XYDataset dataset, PlotRenderingInfo info)
      Initialises the renderer and returns a state object that should be passed to all subsequent calls to the drawItem() method.

      This method will be called before the first item is rendered, giving the renderer an opportunity to initialise any state information it wants to maintain. The renderer can do nothing if it chooses.

      Specified by:
      initialise in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      dataArea - the area inside the axes.
      plot - the plot.
      dataset - the dataset.
      info - an optional info collection object to return data back to the caller.
      Returns:
      The renderer state (never null).
    • beginElementGroup

      protected void beginElementGroup(Graphics2D g2, Comparable seriesKey, int itemIndex)
      Adds a KEY_BEGIN_ELEMENT hint to the graphics target. This hint is recognised by JFreeSVG (in theory it could be used by other Graphics2D implementations also).
      Parameters:
      g2 - the graphics target (null not permitted).
      seriesKey - the series key that identifies the element (null not permitted).
      itemIndex - the item index.
    • getItemLabelGenerator

      public XYItemLabelGenerator getItemLabelGenerator(int series, int item)
      Returns the label generator for a data item. This implementation simply passes control to the getSeriesItemLabelGenerator(int) method. If, for some reason, you want a different generator for individual items, you can override this method.
      Specified by:
      getItemLabelGenerator in interface XYItemRenderer
      Parameters:
      series - the series index (zero based).
      item - the item index (zero based).
      Returns:
      The generator (possibly null).
    • getSeriesItemLabelGenerator

      public XYItemLabelGenerator getSeriesItemLabelGenerator(int series)
      Returns the item label generator for a series.
      Specified by:
      getSeriesItemLabelGenerator in interface XYItemRenderer
      Parameters:
      series - the series index (zero based).
      Returns:
      The generator (possibly null).
      See Also:
    • setSeriesItemLabelGenerator

      public void setSeriesItemLabelGenerator(int series, XYItemLabelGenerator generator)
      Sets the item label generator for a series and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      setSeriesItemLabelGenerator in interface XYItemRenderer
      Parameters:
      series - the series index (zero based).
      generator - the generator (null permitted).
      See Also:
    • getDefaultItemLabelGenerator

      public XYItemLabelGenerator getDefaultItemLabelGenerator()
      Returns the default item label generator.
      Specified by:
      getDefaultItemLabelGenerator in interface XYItemRenderer
      Returns:
      The generator (possibly null).
      See Also:
    • setDefaultItemLabelGenerator

      public void setDefaultItemLabelGenerator(XYItemLabelGenerator generator)
      Sets the default item label generator and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      setDefaultItemLabelGenerator in interface XYItemRenderer
      Parameters:
      generator - the generator (null permitted).
      See Also:
    • getToolTipGenerator

      public XYToolTipGenerator getToolTipGenerator(int series, int item)
      Returns the tool tip generator for a data item. If, for some reason, you want a different generator for individual items, you can override this method.
      Specified by:
      getToolTipGenerator in interface XYItemRenderer
      Parameters:
      series - the series index (zero based).
      item - the item index (zero based).
      Returns:
      The generator (possibly null).
    • getSeriesToolTipGenerator

      public XYToolTipGenerator getSeriesToolTipGenerator(int series)
      Returns the tool tip generator for a series.
      Specified by:
      getSeriesToolTipGenerator in interface XYItemRenderer
      Parameters:
      series - the series index (zero based).
      Returns:
      The generator (possibly null).
      See Also:
    • setSeriesToolTipGenerator

      public void setSeriesToolTipGenerator(int series, XYToolTipGenerator generator)
      Sets the tool tip generator for a series and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      setSeriesToolTipGenerator in interface XYItemRenderer
      Parameters:
      series - the series index (zero based).
      generator - the generator (null permitted).
      See Also:
    • getDefaultToolTipGenerator

      public XYToolTipGenerator getDefaultToolTipGenerator()
      Returns the default tool tip generator.
      Specified by:
      getDefaultToolTipGenerator in interface XYItemRenderer
      Returns:
      The generator (possibly null).
      See Also:
    • setDefaultToolTipGenerator

      public void setDefaultToolTipGenerator(XYToolTipGenerator generator)
      Sets the default tool tip generator and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      setDefaultToolTipGenerator in interface XYItemRenderer
      Parameters:
      generator - the generator (null permitted).
      See Also:
    • getURLGenerator

      public XYURLGenerator getURLGenerator()
      Returns the URL generator for HTML image maps.
      Specified by:
      getURLGenerator in interface XYItemRenderer
      Returns:
      The URL generator (possibly null).
    • setURLGenerator

      public void setURLGenerator(XYURLGenerator urlGenerator)
      Sets the URL generator for HTML image maps and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      setURLGenerator in interface XYItemRenderer
      Parameters:
      urlGenerator - the URL generator (null permitted).
    • addAnnotation

      public void addAnnotation(XYAnnotation annotation)
      Adds an annotation and sends a RendererChangeEvent to all registered listeners. The annotation is added to the foreground layer.
      Specified by:
      addAnnotation in interface XYItemRenderer
      Parameters:
      annotation - the annotation (null not permitted).
    • addAnnotation

      public void addAnnotation(XYAnnotation annotation, Layer layer)
      Adds an annotation to the specified layer and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      addAnnotation in interface XYItemRenderer
      Parameters:
      annotation - the annotation (null not permitted).
      layer - the layer (null not permitted).
    • removeAnnotation

      public boolean removeAnnotation(XYAnnotation annotation)
      Removes the specified annotation and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      removeAnnotation in interface XYItemRenderer
      Parameters:
      annotation - the annotation to remove (null not permitted).
      Returns:
      A boolean to indicate whether or not the annotation was successfully removed.
    • removeAnnotations

      public void removeAnnotations()
      Removes all annotations and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      removeAnnotations in interface XYItemRenderer
    • annotationChanged

      public void annotationChanged(AnnotationChangeEvent event)
      Receives notification of a change to an Annotation added to this renderer.
      Specified by:
      annotationChanged in interface AnnotationChangeListener
      Parameters:
      event - information about the event (not used here).
    • getAnnotations

      public Collection getAnnotations()
      Returns a collection of the annotations that are assigned to the renderer.
      Returns:
      A collection of annotations (possibly empty but never null).
    • getLegendItemLabelGenerator

      public XYSeriesLabelGenerator getLegendItemLabelGenerator()
      Returns the legend item label generator.
      Specified by:
      getLegendItemLabelGenerator in interface XYItemRenderer
      Returns:
      The label generator (never null).
      See Also:
    • setLegendItemLabelGenerator

      public void setLegendItemLabelGenerator(XYSeriesLabelGenerator generator)
      Sets the legend item label generator and sends a RendererChangeEvent to all registered listeners.
      Specified by:
      setLegendItemLabelGenerator in interface XYItemRenderer
      Parameters:
      generator - the generator (null not permitted).
      See Also:
    • getLegendItemToolTipGenerator

      public XYSeriesLabelGenerator getLegendItemToolTipGenerator()
      Returns the legend item tool tip generator.
      Returns:
      The tool tip generator (possibly null).
      See Also:
    • setLegendItemToolTipGenerator

      public void setLegendItemToolTipGenerator(XYSeriesLabelGenerator generator)
      Sets the legend item tool tip generator and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      generator - the generator (null permitted).
      See Also:
    • getLegendItemURLGenerator

      public XYSeriesLabelGenerator getLegendItemURLGenerator()
      Returns the legend item URL generator.
      Returns:
      The URL generator (possibly null).
      See Also:
    • setLegendItemURLGenerator

      public void setLegendItemURLGenerator(XYSeriesLabelGenerator generator)
      Sets the legend item URL generator and sends a RendererChangeEvent to all registered listeners.
      Parameters:
      generator - the generator (null permitted).
      See Also:
    • findDomainBounds

      public Range findDomainBounds(XYDataset dataset)
      Returns the lower and upper bounds (range) of the x-values in the specified dataset.
      Specified by:
      findDomainBounds in interface XYItemRenderer
      Parameters:
      dataset - the dataset (null permitted).
      Returns:
      The range (null if the dataset is null or empty).
      See Also:
    • findDomainBounds

      protected Range findDomainBounds(XYDataset dataset, boolean includeInterval)
      Returns the lower and upper bounds (range) of the x-values in the specified dataset.
      Parameters:
      dataset - the dataset (null permitted).
      includeInterval - include the interval (if any) for the dataset?
      Returns:
      The range (null if the dataset is null or empty).
    • findRangeBounds

      public Range findRangeBounds(XYDataset dataset)
      Returns the range of values the renderer requires to display all the items from the specified dataset.
      Specified by:
      findRangeBounds in interface XYItemRenderer
      Parameters:
      dataset - the dataset (null permitted).
      Returns:
      The range (null if the dataset is null or empty).
      See Also:
    • findRangeBounds

      protected Range findRangeBounds(XYDataset dataset, boolean includeInterval)
      Returns the range of values the renderer requires to display all the items from the specified dataset.
      Parameters:
      dataset - the dataset (null permitted).
      includeInterval - include the interval (if any) for the dataset?
      Returns:
      The range (null if the dataset is null or empty).
    • getLegendItems

      public LegendItemCollection getLegendItems()
      Returns a (possibly empty) collection of legend items for the series that this renderer is responsible for drawing.
      Specified by:
      getLegendItems in interface LegendItemSource
      Returns:
      The legend item collection (never null).
    • getLegendItem

      public LegendItem getLegendItem(int datasetIndex, int series)
      Returns a default legend item for the specified series. Subclasses should override this method to generate customised items.
      Specified by:
      getLegendItem in interface XYItemRenderer
      Parameters:
      datasetIndex - the dataset index (zero-based).
      series - the series index (zero-based).
      Returns:
      A legend item for the series.
    • fillDomainGridBand

      public void fillDomainGridBand(Graphics2D g2, XYPlot plot, ValueAxis axis, Rectangle2D dataArea, double start, double end)
      Fills a band between two values on the axis. This can be used to color bands between the grid lines.
      Specified by:
      fillDomainGridBand in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      plot - the plot.
      axis - the domain axis.
      dataArea - the data area.
      start - the start value.
      end - the end value.
    • fillRangeGridBand

      public void fillRangeGridBand(Graphics2D g2, XYPlot plot, ValueAxis axis, Rectangle2D dataArea, double start, double end)
      Fills a band between two values on the range axis. This can be used to color bands between the grid lines.
      Specified by:
      fillRangeGridBand in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      plot - the plot.
      axis - the range axis.
      dataArea - the data area.
      start - the start value.
      end - the end value.
    • drawDomainLine

      public void drawDomainLine(Graphics2D g2, XYPlot plot, ValueAxis axis, Rectangle2D dataArea, double value, Paint paint, Stroke stroke)
      Draws a line perpendicular to the domain axis.
      Specified by:
      drawDomainLine in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      plot - the plot.
      axis - the value axis.
      dataArea - the area for plotting data.
      value - the value at which the grid line should be drawn.
      paint - the paint (null not permitted).
      stroke - the stroke (null not permitted).
    • drawRangeLine

      public void drawRangeLine(Graphics2D g2, XYPlot plot, ValueAxis axis, Rectangle2D dataArea, double value, Paint paint, Stroke stroke)
      Draws a line perpendicular to the range axis.
      Specified by:
      drawRangeLine in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      plot - the plot.
      axis - the value axis.
      dataArea - the area for plotting data.
      value - the value at which the grid line should be drawn.
      paint - the paint.
      stroke - the stroke.
    • drawDomainMarker

      public void drawDomainMarker(Graphics2D g2, XYPlot plot, ValueAxis domainAxis, Marker marker, Rectangle2D dataArea)
      Draws a line on the chart perpendicular to the x-axis to mark a value or range of values.
      Specified by:
      drawDomainMarker in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      plot - the plot.
      domainAxis - the domain axis.
      marker - the marker line.
      dataArea - the axis data area.
    • calculateDomainMarkerTextAnchorPoint

      protected Point2D calculateDomainMarkerTextAnchorPoint(Graphics2D g2, PlotOrientation orientation, Rectangle2D dataArea, Rectangle2D markerArea, RectangleInsets markerOffset, LengthAdjustmentType labelOffsetType, RectangleAnchor anchor)
      Calculates the (x, y) coordinates for drawing a marker label.
      Parameters:
      g2 - the graphics device.
      orientation - the plot orientation.
      dataArea - the data area.
      markerArea - the rectangle surrounding the marker area.
      markerOffset - the marker label offset.
      labelOffsetType - the label offset type.
      anchor - the label anchor.
      Returns:
      The coordinates for drawing the marker label.
    • drawRangeMarker

      public void drawRangeMarker(Graphics2D g2, XYPlot plot, ValueAxis rangeAxis, Marker marker, Rectangle2D dataArea)
      Draws a line on the chart perpendicular to the y-axis to mark a value or range of values.
      Specified by:
      drawRangeMarker in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      plot - the plot.
      rangeAxis - the range axis.
      marker - the marker line.
      dataArea - the axis data area.
    • clone

      protected Object clone() throws CloneNotSupportedException
      Returns a clone of the renderer.
      Overrides:
      clone in class AbstractRenderer
      Returns:
      A clone.
      Throws:
      CloneNotSupportedException - if the renderer does not support cloning.
    • equals

      public boolean equals(Object obj)
      Tests this renderer for equality with another object.
      Overrides:
      equals in class AbstractRenderer
      Parameters:
      obj - the object (null permitted).
      Returns:
      true or false.
    • getDrawingSupplier

      public DrawingSupplier getDrawingSupplier()
      Returns the drawing supplier from the plot.
      Specified by:
      getDrawingSupplier in class AbstractRenderer
      Returns:
      The drawing supplier (possibly null).
    • updateCrosshairValues

      protected void updateCrosshairValues(CrosshairState crosshairState, double x, double y, int datasetIndex, double transX, double transY, PlotOrientation orientation)
      Considers the current (x, y) coordinate and updates the crosshair point if it meets the criteria (usually means the (x, y) coordinate is the closest to the anchor point so far).
      Parameters:
      crosshairState - the crosshair state (null permitted, but the method does nothing in that case).
      x - the x-value (in data space).
      y - the y-value (in data space).
      datasetIndex - the index of the dataset for the point.
      transX - the x-value translated to Java2D space.
      transY - the y-value translated to Java2D space.
      orientation - the plot orientation (null not permitted).
    • drawItemLabel

      protected void drawItemLabel(Graphics2D g2, PlotOrientation orientation, XYDataset dataset, int series, int item, double x, double y, boolean negative)
      Draws an item label.
      Parameters:
      g2 - the graphics device.
      orientation - the orientation.
      dataset - the dataset.
      series - the series index (zero-based).
      item - the item index (zero-based).
      x - the x coordinate (in Java2D space).
      y - the y coordinate (in Java2D space).
      negative - indicates a negative value (which affects the item label position).
    • drawAnnotations

      public void drawAnnotations(Graphics2D g2, Rectangle2D dataArea, ValueAxis domainAxis, ValueAxis rangeAxis, Layer layer, PlotRenderingInfo info)
      Draws all the annotations for the specified layer.
      Specified by:
      drawAnnotations in interface XYItemRenderer
      Parameters:
      g2 - the graphics device.
      dataArea - the data area.
      domainAxis - the domain axis.
      rangeAxis - the range axis.
      layer - the layer (null not permitted).
      info - the plot rendering info.
    • addEntity

      protected void addEntity(EntityCollection entities, Shape hotspot, XYDataset dataset, int series, int item, double entityX, double entityY)
      Adds an entity to the collection. Note the the entityX and entityY coordinates are in Java2D space, should already be adjusted for the plot orientation, and will only be used if hotspot is null.
      Parameters:
      entities - the entity collection being populated.
      hotspot - the entity area (if null a default will be used).
      dataset - the dataset.
      series - the series.
      item - the item.
      entityX - the entity x-coordinate (in Java2D space, only used if hotspot is null).
      entityY - the entity y-coordinate (in Java2D space, only used if hotspot is null).
    • moveTo

      protected static void moveTo(GeneralPath hotspot, double x, double y)
      Utility method delegating to Path2D.Float.moveTo(double, double) taking double as parameters.
      Parameters:
      hotspot - the region under construction (null not permitted);
      x - the x coordinate;
      y - the y coordinate;
    • lineTo

      protected static void lineTo(GeneralPath hotspot, double x, double y)
      Utility method delegating to Path2D.Float.lineTo(double, double) taking double as parameters.
      Parameters:
      hotspot - the region under construction (null not permitted);
      x - the x coordinate;
      y - the y coordinate;