Class XYBarRenderer

    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        For serialization.
        See Also:
        Constant Field Values
      • defaultBarPainter

        private static XYBarPainter defaultBarPainter
        The default bar painter assigned to each new instance of this renderer.
      • defaultShadowsVisible

        private static boolean defaultShadowsVisible
        The default value for the initialisation of the shadowsVisible flag.
      • base

        private double base
        The default base value for the bars.
      • useYInterval

        private boolean useYInterval
        A flag that controls whether the bars use the y-interval supplied by the dataset.
      • margin

        private double margin
        Percentage margin (to reduce the width of bars).
      • drawBarOutline

        private boolean drawBarOutline
        A flag that controls whether or not bar outlines are drawn.
      • gradientPaintTransformer

        private GradientPaintTransformer gradientPaintTransformer
        An optional class used to transform gradient paint objects to fit each bar.
      • legendBar

        private transient java.awt.Shape legendBar
        The shape used to represent a bar in each legend item (this should never be null).
      • positiveItemLabelPositionFallback

        private ItemLabelPosition positiveItemLabelPositionFallback
        The fallback position if a positive item label doesn't fit inside the bar.
      • negativeItemLabelPositionFallback

        private ItemLabelPosition negativeItemLabelPositionFallback
        The fallback position if a negative item label doesn't fit inside the bar.
      • barPainter

        private XYBarPainter barPainter
        The bar painter (never null).
      • shadowsVisible

        private boolean shadowsVisible
        The flag that controls whether or not shadows are drawn for the bars.
      • shadowXOffset

        private double shadowXOffset
        The x-offset for the shadow effect.
      • shadowYOffset

        private double shadowYOffset
        The y-offset for the shadow effect.
      • barAlignmentFactor

        private double barAlignmentFactor
        A factor used to align the bars about the x-value.
      • minimumLabelSize

        private java.awt.Dimension minimumLabelSize
        The minimum size for the bar to draw a label
      • showLabelInsideVisibleBar

        private boolean showLabelInsideVisibleBar
        true if the label should be aligned to the visible part of the bar.
    • Constructor Detail

      • XYBarRenderer

        public XYBarRenderer()
        The default constructor.
      • XYBarRenderer

        public XYBarRenderer​(double margin)
        Constructs a new renderer.
        Parameters:
        margin - the percentage amount to trim from the width of each bar.
    • Method Detail

      • getDefaultBarPainter

        public static XYBarPainter getDefaultBarPainter()
        Returns the default bar painter.
        Returns:
        The default bar painter.
      • setDefaultBarPainter

        public static void setDefaultBarPainter​(XYBarPainter painter)
        Sets the default bar painter.
        Parameters:
        painter - the painter (null not permitted).
      • getDefaultShadowsVisible

        public static boolean getDefaultShadowsVisible()
        Returns the default value for the shadowsVisible flag.
        Returns:
        A boolean.
        See Also:
        setDefaultShadowsVisible(boolean)
      • setDefaultShadowsVisible

        public static void setDefaultShadowsVisible​(boolean visible)
        Sets the default value for the shadows visible flag.
        Parameters:
        visible - the new value for the default.
        See Also:
        getDefaultShadowsVisible()
      • getBase

        public double getBase()
        Returns the base value for the bars.
        Returns:
        The base value for the bars.
        See Also:
        setBase(double)
      • setBase

        public void setBase​(double base)
        Sets the base value for the bars and sends a RendererChangeEvent to all registered listeners. The base value is not used if the dataset's y-interval is being used to determine the bar length.
        Parameters:
        base - the new base value.
        See Also:
        getBase(), getUseYInterval()
      • getUseYInterval

        public boolean getUseYInterval()
        Returns a flag that determines whether the y-interval from the dataset is used to calculate the length of each bar.
        Returns:
        A boolean.
        See Also:
        setUseYInterval(boolean)
      • setUseYInterval

        public void setUseYInterval​(boolean use)
        Sets the flag that determines whether the y-interval from the dataset is used to calculate the length of each bar, and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        use - the flag.
        See Also:
        getUseYInterval()
      • getMargin

        public double getMargin()
        Returns the margin which is a percentage amount by which the bars are trimmed.
        Returns:
        The margin.
        See Also:
        setMargin(double)
      • setMargin

        public void setMargin​(double margin)
        Sets the percentage amount by which the bars are trimmed and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        margin - the new margin.
        See Also:
        getMargin()
      • isDrawBarOutline

        public boolean isDrawBarOutline()
        Returns a flag that controls whether or not bar outlines are drawn.
        Returns:
        A boolean.
        See Also:
        setDrawBarOutline(boolean)
      • setDrawBarOutline

        public void setDrawBarOutline​(boolean draw)
        Sets the flag that controls whether or not bar outlines are drawn and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        draw - the flag.
        See Also:
        isDrawBarOutline()
      • getLegendBar

        public java.awt.Shape getLegendBar()
        Returns the shape used to represent bars in each legend item.
        Returns:
        The shape used to represent bars in each legend item (never null).
        See Also:
        setLegendBar(Shape)
      • setLegendBar

        public void setLegendBar​(java.awt.Shape bar)
        Sets the shape used to represent bars in each legend item and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        bar - the bar shape (null not permitted).
        See Also:
        getLegendBar()
      • getBarPainter

        public XYBarPainter getBarPainter()
        Returns the bar painter.
        Returns:
        The bar painter (never null).
      • setBarPainter

        public void setBarPainter​(XYBarPainter painter)
        Sets the bar painter and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        painter - the painter (null not permitted).
      • getShadowsVisible

        public boolean getShadowsVisible()
        Returns the flag that controls whether or not shadows are drawn for the bars.
        Returns:
        A boolean.
      • setShadowVisible

        public void setShadowVisible​(boolean visible)
        Sets the flag that controls whether or not the renderer draws shadows for the bars, and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        visible - the new flag value.
      • getShadowXOffset

        public double getShadowXOffset()
        Returns the shadow x-offset.
        Returns:
        The shadow x-offset.
      • setShadowXOffset

        public void setShadowXOffset​(double offset)
        Sets the x-offset for the bar shadow and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        offset - the offset.
      • getShadowYOffset

        public double getShadowYOffset()
        Returns the shadow y-offset.
        Returns:
        The shadow y-offset.
      • setShadowYOffset

        public void setShadowYOffset​(double offset)
        Sets the y-offset for the bar shadow and sends a RendererChangeEvent to all registered listeners.
        Parameters:
        offset - the offset.
      • getBarAlignmentFactor

        public double getBarAlignmentFactor()
        Returns the bar alignment factor.
        Returns:
        The bar alignment factor.
      • setBarAlignmentFactor

        public void setBarAlignmentFactor​(double factor)
        Sets the bar alignment factor and sends a RendererChangeEvent to all registered listeners. If the alignment factor is outside the range 0.0 to 1.0, no alignment will be performed by the renderer.
        Parameters:
        factor - the factor.
      • getMinimumLabelSize

        public java.awt.Dimension getMinimumLabelSize()
        Returns the minimum size for the bar to draw a label.
        Returns:
        The minimum size to draw a label.
      • setMinimumLabelSize

        public void setMinimumLabelSize​(java.awt.Dimension minimumLabelSize)
        Sets the minimum size for the bar to draw a label.
        Parameters:
        minimumLabelSize - The size
      • isShowLabelInsideVisibleBar

        public boolean isShowLabelInsideVisibleBar()
        Returns true if the label should be aligned to the visible part of the bar.
        Returns:
        true if the label should be aligned to the visible part of the bar.
        See Also:
        setShowLabelInsideVisibleBar(boolean)
      • setShowLabelInsideVisibleBar

        public void setShowLabelInsideVisibleBar​(boolean showLabelInsideVisibleBar)
        Sets whether the label should be aligned to the visible part of the bar.
        This setting has no effect when ItemLabelAnchor.isInternal() returns false.
        Parameters:
        showLabelInsideVisibleBar - true to align to the visible part.
      • initialise

        public XYItemRendererState initialise​(java.awt.Graphics2D g2,
                                              java.awt.geom.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. Here we calculate the Java2D y-coordinate for zero, since all the bars have their bases fixed at zero.
        Specified by:
        initialise in interface XYItemRenderer
        Overrides:
        initialise in class AbstractXYItemRenderer
        Parameters:
        g2 - the graphics device.
        dataArea - the area inside the axes.
        plot - the plot.
        dataset - the data.
        info - an optional info collection object to return data back to the caller.
        Returns:
        A state object.
      • 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
        Overrides:
        getLegendItem in class AbstractXYItemRenderer
        Parameters:
        datasetIndex - the dataset index (zero-based).
        series - the series index (zero-based).
        Returns:
        A legend item for the series.
      • drawItem

        public void drawItem​(java.awt.Graphics2D g2,
                             XYItemRendererState state,
                             java.awt.geom.Rectangle2D dataArea,
                             PlotRenderingInfo info,
                             XYPlot plot,
                             ValueAxis domainAxis,
                             ValueAxis rangeAxis,
                             XYDataset dataset,
                             int series,
                             int item,
                             CrosshairState crosshairState,
                             int pass)
        Draws the visual representation of a single data item.
        Specified by:
        drawItem in interface XYItemRenderer
        Parameters:
        g2 - the graphics device.
        state - the renderer state.
        dataArea - the area within which the plot is being drawn.
        info - collects information about the drawing.
        plot - the plot (can be used to obtain standard color information etc).
        domainAxis - the domain axis.
        rangeAxis - the range axis.
        dataset - the dataset.
        series - the series index (zero-based).
        item - the item index (zero-based).
        crosshairState - crosshair information for the plot (null permitted).
        pass - the pass index.
      • drawItemLabel

        protected void drawItemLabel​(java.awt.Graphics2D g,
                                     XYDataset dataset,
                                     int series,
                                     int item,
                                     XYPlot plot,
                                     XYItemLabelGenerator generator,
                                     java.awt.geom.Rectangle2D bar,
                                     boolean negative)
        Draws an item label. This method is provided as an alternative to AbstractXYItemRenderer.drawItemLabel(Graphics2D, PlotOrientation, XYDataset, int, int, double, double, boolean) so that the bar can be used to calculate the label anchor point.
        Parameters:
        g - the graphics device.
        dataset - the dataset.
        series - the series index.
        item - the item index.
        plot - the plot.
        generator - the label generator (null permitted, in which case the method does nothing, just returns).
        bar - the bar.
        negative - a flag indicating a negative value.
      • calculateLabeltoDraw

        private java.lang.String calculateLabeltoDraw​(java.lang.String label,
                                                      java.awt.geom.Point2D anchorPoint,
                                                      ItemLabelPosition position,
                                                      java.awt.geom.Rectangle2D bar,
                                                      java.awt.Graphics2D g2)
        Returns:
        The label to draw or null if label should not be drawn.
      • calculateLabelAnchorPoint

        private java.awt.geom.Point2D calculateLabelAnchorPoint​(ItemLabelAnchor anchor,
                                                                java.awt.geom.Rectangle2D bar,
                                                                PlotOrientation orientation)
        Calculates the item label anchor point.
         Inside:
          +-----------------+
          | 10/11  12   1/2 |
          |   9     C    3  |
          |  7/8    6   4/5 |
          +-----------------+
        
         Outside:
         10/11       12         1/2
             +----------------+
             |                |
           9 |                |  3
             |                |
             +----------------+
          7/8        6          4/5 
         
        Parameters:
        anchor - the anchor.
        bar - the bar.
        orientation - the plot orientation.
        Returns:
        The anchor point.
      • clone

        public java.lang.Object clone()
                               throws java.lang.CloneNotSupportedException
        Returns a clone of the renderer.
        Specified by:
        clone in interface PublicCloneable
        Overrides:
        clone in class AbstractXYItemRenderer
        Returns:
        A clone.
        Throws:
        java.lang.CloneNotSupportedException - if the renderer cannot be cloned.
      • equals

        public boolean equals​(java.lang.Object obj)
        Tests this renderer for equality with an arbitrary object.
        Overrides:
        equals in class AbstractXYItemRenderer
        Parameters:
        obj - the object to test against (null permitted).
        Returns:
        A boolean.
      • readObject

        private void readObject​(java.io.ObjectInputStream stream)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Provides serialization support.
        Parameters:
        stream - the input stream.
        Throws:
        java.io.IOException - if there is an I/O error.
        java.lang.ClassNotFoundException - if there is a classpath problem.
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream stream)
                          throws java.io.IOException
        Provides serialization support.
        Parameters:
        stream - the output stream.
        Throws:
        java.io.IOException - if there is an I/O error.