org.progeeks.jfreechart
Class EnhancedStackedXYBarRenderer

java.lang.Object
  extended by org.jfree.chart.renderer.AbstractRenderer
      extended by org.jfree.chart.renderer.xy.AbstractXYItemRenderer
          extended by org.jfree.chart.renderer.xy.XYBarRenderer
              extended by org.jfree.chart.renderer.xy.StackedXYBarRenderer
                  extended by org.progeeks.jfreechart.EnhancedStackedXYBarRenderer
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, org.jfree.chart.LegendItemSource, org.jfree.chart.renderer.xy.XYItemRenderer, org.jfree.util.PublicCloneable, EnhancedItemRenderer

public class EnhancedStackedXYBarRenderer
extends org.jfree.chart.renderer.xy.StackedXYBarRenderer
implements EnhancedItemRenderer

Handles some additional drawing for StackedXYBarCharts. It can draw labels with the total value of all the series at each point above the bar. It also draws regular item labels since the default StackedXYBarRenderer doesn't do that yet (though that may included in a new release of jfreechart). It also allows for setting the stroke and paint of individual items in a series. This is useful for hilighting or focusing on an item.

Version:
$Revision: 1.5 $
Author:
esword
See Also:
Serialized Form

Nested Class Summary
protected static class EnhancedStackedXYBarRenderer.TableIndexTuple
          Class for representing a cell coordinate for a sparsely populated and/or dynamically sized table of objects.
 
Nested classes/interfaces inherited from class org.jfree.chart.renderer.xy.XYBarRenderer
org.jfree.chart.renderer.xy.XYBarRenderer.XYBarRendererState
 
Field Summary
static int DEFAULT_MIN_ITEM_LABEL_HEIGHT
          Default minimum height that an item in a stack must be for the item label to draw.
 
Fields inherited from class org.jfree.chart.renderer.AbstractRenderer
DEFAULT_OUTLINE_PAINT, DEFAULT_OUTLINE_STROKE, DEFAULT_PAINT, DEFAULT_SHAPE, DEFAULT_STROKE, DEFAULT_VALUE_LABEL_FONT, DEFAULT_VALUE_LABEL_PAINT, ZERO
 
Constructor Summary
EnhancedStackedXYBarRenderer()
           
 
Method Summary
 void drawItem(java.awt.Graphics2D g2, org.jfree.chart.renderer.xy.XYItemRendererState state, java.awt.geom.Rectangle2D dataArea, org.jfree.chart.plot.PlotRenderingInfo info, org.jfree.chart.plot.XYPlot plot, org.jfree.chart.axis.ValueAxis domainAxis, org.jfree.chart.axis.ValueAxis rangeAxis, org.jfree.data.xy.XYDataset dataset, int series, int item, org.jfree.chart.plot.CrosshairState crosshairState, int pass)
           
 java.awt.Paint getItemOutlinePaint(int row, int col)
           
 java.awt.Stroke getItemOutlineStroke(int row, int col)
           
 java.awt.Paint getItemPaint(int row, int col)
           
 java.awt.Stroke getItemStroke(int row, int col)
           
 int getMinItemLabelHeight()
           
 java.text.NumberFormat getTotalFormatter()
          Returns the total formatter.
 java.awt.Font getTotalLabelFont()
           
 java.awt.Color getTotalLabelPaint()
           
 void setItemOutlinePaint(int row, int col, java.awt.Paint paint)
           
 void setItemOutlineStroke(int row, int col, java.awt.Stroke stroke)
           
 void setItemPaint(int row, int col, java.awt.Paint paint)
           
 void setItemStroke(int row, int col, java.awt.Stroke stroke)
           
 void setMinItemLabelHeight(int minItemLabelHeight)
          Set this depending on your font size to avoid drawing item labels in blocks that are too short to nicely display them.
 void setTotalFormatter(java.text.NumberFormat format)
          Sets the total formatter.
 void setTotalLabelFont(java.awt.Font totalLabelFont)
           
 void setTotalLabelPaint(java.awt.Color totalLabelPaint)
           
 
Methods inherited from class org.jfree.chart.renderer.xy.StackedXYBarRenderer
findRangeBounds, initialise
 
Methods inherited from class org.jfree.chart.renderer.xy.XYBarRenderer
clone, equals, findDomainBounds, getBase, getGradientPaintTransformer, getLegendBar, getLegendItem, getMargin, getUseYInterval, isDrawBarOutline, setBase, setDrawBarOutline, setGradientPaintTransformer, setLegendBar, setMargin, setUseYInterval
 
Methods inherited from class org.jfree.chart.renderer.xy.AbstractXYItemRenderer
addAnnotation, addAnnotation, addEntity, calculateDomainMarkerTextAnchorPoint, drawAnnotations, drawDomainGridLine, drawDomainMarker, drawItemLabel, drawRangeLine, drawRangeMarker, fillDomainGridBand, fillRangeGridBand, getBaseItemLabelGenerator, getBaseToolTipGenerator, getDefaultEntityRadius, getDrawingSupplier, getItemLabelGenerator, getLegendItemLabelGenerator, getLegendItems, getLegendItemToolTipGenerator, getLegendItemURLGenerator, getPassCount, getPlot, getSeriesItemLabelGenerator, getSeriesToolTipGenerator, getToolTipGenerator, getURLGenerator, removeAnnotation, removeAnnotations, setBaseItemLabelGenerator, setBaseToolTipGenerator, setDefaultEntityRadius, setItemLabelGenerator, setLegendItemLabelGenerator, setLegendItemToolTipGenerator, setLegendItemURLGenerator, setPlot, setSeriesItemLabelGenerator, setSeriesToolTipGenerator, setToolTipGenerator, setURLGenerator, updateCrosshairValues
 
Methods inherited from class org.jfree.chart.renderer.AbstractRenderer
addChangeListener, calculateLabelAnchorPoint, getBaseCreateEntities, getBaseFillPaint, getBaseItemLabelFont, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getCreateEntities, getItemCreateEntity, getItemFillPaint, getItemLabelAnchorOffset, getItemLabelFont, getItemLabelFont, getItemLabelPaint, getItemLabelPaint, getItemShape, getItemVisible, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesCreateEntities, getSeriesFillPaint, getSeriesItemLabelFont, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, hashCode, hasListener, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, notifyListeners, removeChangeListener, setBaseCreateEntities, setBaseCreateEntities, setBaseFillPaint, setBaseFillPaint, setBaseItemLabelFont, setBaseItemLabelFont, setBaseItemLabelPaint, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlinePaint, setBaseOutlineStroke, setBaseOutlineStroke, setBasePaint, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseShape, setBaseStroke, setBaseStroke, setCreateEntities, setCreateEntities, setFillPaint, setFillPaint, setItemLabelAnchorOffset, setItemLabelFont, setItemLabelFont, setItemLabelPaint, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setNegativeItemLabelPosition, setNegativeItemLabelPosition, setOutlinePaint, setOutlinePaint, setOutlineStroke, setOutlineStroke, setPaint, setPaint, setPositiveItemLabelPosition, setPositiveItemLabelPosition, setSeriesCreateEntities, setSeriesCreateEntities, setSeriesFillPaint, setSeriesFillPaint, setSeriesItemLabelFont, setSeriesItemLabelFont, setSeriesItemLabelPaint, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesOutlineStroke, setSeriesPaint, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesShape, setSeriesStroke, setSeriesStroke, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setShape, setShape, setStroke, setStroke
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jfree.chart.renderer.xy.XYItemRenderer
addAnnotation, addAnnotation, addChangeListener, drawAnnotations, drawDomainGridLine, drawDomainMarker, drawRangeLine, drawRangeMarker, fillDomainGridBand, fillRangeGridBand, getBaseItemLabelFont, getBaseItemLabelGenerator, getBaseItemLabelPaint, getBaseItemLabelsVisible, getBaseNegativeItemLabelPosition, getBaseOutlinePaint, getBaseOutlineStroke, getBasePaint, getBasePositiveItemLabelPosition, getBaseSeriesVisible, getBaseSeriesVisibleInLegend, getBaseShape, getBaseStroke, getBaseToolTipGenerator, getItemLabelFont, getItemLabelFont, getItemLabelGenerator, getItemLabelPaint, getItemLabelPaint, getItemShape, getItemVisible, getLegendItemLabelGenerator, getNegativeItemLabelPosition, getNegativeItemLabelPosition, getPassCount, getPlot, getPositiveItemLabelPosition, getPositiveItemLabelPosition, getSeriesItemLabelFont, getSeriesItemLabelGenerator, getSeriesItemLabelPaint, getSeriesNegativeItemLabelPosition, getSeriesOutlinePaint, getSeriesOutlineStroke, getSeriesPaint, getSeriesPositiveItemLabelPosition, getSeriesShape, getSeriesStroke, getSeriesToolTipGenerator, getSeriesVisible, getSeriesVisible, getSeriesVisibleInLegend, getSeriesVisibleInLegend, getToolTipGenerator, getURLGenerator, isItemLabelVisible, isSeriesItemLabelsVisible, isSeriesVisible, isSeriesVisibleInLegend, removeAnnotation, removeAnnotations, removeChangeListener, setBaseItemLabelFont, setBaseItemLabelGenerator, setBaseItemLabelPaint, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseItemLabelsVisible, setBaseNegativeItemLabelPosition, setBaseNegativeItemLabelPosition, setBaseOutlinePaint, setBaseOutlineStroke, setBasePaint, setBasePositiveItemLabelPosition, setBasePositiveItemLabelPosition, setBaseSeriesVisible, setBaseSeriesVisible, setBaseSeriesVisibleInLegend, setBaseSeriesVisibleInLegend, setBaseShape, setBaseStroke, setBaseToolTipGenerator, setItemLabelFont, setItemLabelGenerator, setItemLabelPaint, setItemLabelsVisible, setItemLabelsVisible, setItemLabelsVisible, setLegendItemLabelGenerator, setNegativeItemLabelPosition, setNegativeItemLabelPosition, setOutlinePaint, setOutlineStroke, setPaint, setPlot, setPositiveItemLabelPosition, setPositiveItemLabelPosition, setSeriesItemLabelFont, setSeriesItemLabelGenerator, setSeriesItemLabelPaint, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesItemLabelsVisible, setSeriesNegativeItemLabelPosition, setSeriesNegativeItemLabelPosition, setSeriesOutlinePaint, setSeriesOutlineStroke, setSeriesPaint, setSeriesPositiveItemLabelPosition, setSeriesPositiveItemLabelPosition, setSeriesShape, setSeriesStroke, setSeriesToolTipGenerator, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisible, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setSeriesVisibleInLegend, setShape, setStroke, setToolTipGenerator, setURLGenerator
 
Methods inherited from interface org.jfree.chart.LegendItemSource
getLegendItems
 

Field Detail

DEFAULT_MIN_ITEM_LABEL_HEIGHT

public static final int DEFAULT_MIN_ITEM_LABEL_HEIGHT
Default minimum height that an item in a stack must be for the item label to draw. Currently 10. Can be overridden by calling setMinItemLabelHeight.

See Also:
Constant Field Values
Constructor Detail

EnhancedStackedXYBarRenderer

public EnhancedStackedXYBarRenderer()
Method Detail

drawItem

public void drawItem(java.awt.Graphics2D g2,
                     org.jfree.chart.renderer.xy.XYItemRendererState state,
                     java.awt.geom.Rectangle2D dataArea,
                     org.jfree.chart.plot.PlotRenderingInfo info,
                     org.jfree.chart.plot.XYPlot plot,
                     org.jfree.chart.axis.ValueAxis domainAxis,
                     org.jfree.chart.axis.ValueAxis rangeAxis,
                     org.jfree.data.xy.XYDataset dataset,
                     int series,
                     int item,
                     org.jfree.chart.plot.CrosshairState crosshairState,
                     int pass)
Specified by:
drawItem in interface org.jfree.chart.renderer.xy.XYItemRenderer
Overrides:
drawItem in class org.jfree.chart.renderer.xy.StackedXYBarRenderer

getItemOutlinePaint

public java.awt.Paint getItemOutlinePaint(int row,
                                          int col)
Specified by:
getItemOutlinePaint in interface org.jfree.chart.renderer.xy.XYItemRenderer
Specified by:
getItemOutlinePaint in interface EnhancedItemRenderer
Overrides:
getItemOutlinePaint in class org.jfree.chart.renderer.AbstractRenderer
See Also:
AbstractRenderer.getItemOutlinePaint(int, int)

getItemOutlineStroke

public java.awt.Stroke getItemOutlineStroke(int row,
                                            int col)
Specified by:
getItemOutlineStroke in interface org.jfree.chart.renderer.xy.XYItemRenderer
Specified by:
getItemOutlineStroke in interface EnhancedItemRenderer
Overrides:
getItemOutlineStroke in class org.jfree.chart.renderer.AbstractRenderer
See Also:
AbstractRenderer.getItemOutlineStroke(int, int)

getItemPaint

public java.awt.Paint getItemPaint(int row,
                                   int col)
Specified by:
getItemPaint in interface org.jfree.chart.renderer.xy.XYItemRenderer
Specified by:
getItemPaint in interface EnhancedItemRenderer
Overrides:
getItemPaint in class org.jfree.chart.renderer.AbstractRenderer
See Also:
AbstractRenderer.getItemPaint(int, int)

getItemStroke

public java.awt.Stroke getItemStroke(int row,
                                     int col)
Specified by:
getItemStroke in interface org.jfree.chart.renderer.xy.XYItemRenderer
Specified by:
getItemStroke in interface EnhancedItemRenderer
Overrides:
getItemStroke in class org.jfree.chart.renderer.AbstractRenderer
See Also:
AbstractRenderer.getItemStroke(int, int)

setItemOutlinePaint

public void setItemOutlinePaint(int row,
                                int col,
                                java.awt.Paint paint)
Specified by:
setItemOutlinePaint in interface EnhancedItemRenderer
See Also:
EnhancedItemRenderer.setItemOutlinePaint(int, int, java.awt.Paint)

setItemOutlineStroke

public void setItemOutlineStroke(int row,
                                 int col,
                                 java.awt.Stroke stroke)
Specified by:
setItemOutlineStroke in interface EnhancedItemRenderer
See Also:
EnhancedItemRenderer.setItemOutlineStroke(int, int, java.awt.Stroke)

setItemPaint

public void setItemPaint(int row,
                         int col,
                         java.awt.Paint paint)
Specified by:
setItemPaint in interface EnhancedItemRenderer
See Also:
EnhancedItemRenderer.setItemPaint(int, int, java.awt.Paint)

setItemStroke

public void setItemStroke(int row,
                          int col,
                          java.awt.Stroke stroke)
Specified by:
setItemStroke in interface EnhancedItemRenderer
See Also:
EnhancedItemRenderer.setItemStroke(int, int, java.awt.Stroke)

getTotalLabelPaint

public java.awt.Color getTotalLabelPaint()
Returns:
Returns the totalLabelPaint.

getTotalFormatter

public java.text.NumberFormat getTotalFormatter()
Returns the total formatter.

Returns:
the total formatter (never null).

getTotalLabelFont

public java.awt.Font getTotalLabelFont()
Returns:
Returns the totalLabelFont.

setTotalLabelPaint

public void setTotalLabelPaint(java.awt.Color totalLabelPaint)
Parameters:
totalLabelPaint - The totalLabelPaint to set.

setTotalFormatter

public void setTotalFormatter(java.text.NumberFormat format)
Sets the total formatter.

Parameters:
format - the formatter (null not permitted).

setTotalLabelFont

public void setTotalLabelFont(java.awt.Font totalLabelFont)
Parameters:
totalLabelFont - The totalLabelFont to set.

getMinItemLabelHeight

public int getMinItemLabelHeight()
Returns:
Returns the minItemLabelHeight.

setMinItemLabelHeight

public void setMinItemLabelHeight(int minItemLabelHeight)
Set this depending on your font size to avoid drawing item labels in blocks that are too short to nicely display them. Default is DEFAULT_MIN_ITEM_LABEL_HEIGHT.

Parameters:
minItemLabelHeight - The minItemLabelHeight to set.


Copyright © 2002-2003 Paul Speed. All Rights Reserved.