From: <mu...@us...> - 2009-06-26 07:32:28
|
Revision: 2165 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=2165&view=rev Author: mungady Date: 2009-06-26 07:32:18 +0000 (Fri, 26 Jun 2009) Log Message: ----------- Added selection parameter to rendering. Modified Paths: -------------- trunk/source/org/jfree/chart/plot/CategoryPlot.java trunk/source/org/jfree/chart/plot/XYPlot.java trunk/source/org/jfree/chart/renderer/AbstractRenderer.java trunk/source/org/jfree/chart/renderer/category/AbstractCategoryItemRenderer.java trunk/source/org/jfree/chart/renderer/category/AreaRenderer.java trunk/source/org/jfree/chart/renderer/category/BarPainter.java trunk/source/org/jfree/chart/renderer/category/BarRenderer.java trunk/source/org/jfree/chart/renderer/category/BarRenderer3D.java trunk/source/org/jfree/chart/renderer/category/BoxAndWhiskerRenderer.java trunk/source/org/jfree/chart/renderer/category/CategoryItemRenderer.java trunk/source/org/jfree/chart/renderer/category/CategoryStepRenderer.java trunk/source/org/jfree/chart/renderer/category/GanttRenderer.java trunk/source/org/jfree/chart/renderer/category/GradientBarPainter.java trunk/source/org/jfree/chart/renderer/category/GroupedStackedBarRenderer.java trunk/source/org/jfree/chart/renderer/category/IntervalBarRenderer.java trunk/source/org/jfree/chart/renderer/category/LayeredBarRenderer.java trunk/source/org/jfree/chart/renderer/category/LevelRenderer.java trunk/source/org/jfree/chart/renderer/category/LineAndShapeRenderer.java trunk/source/org/jfree/chart/renderer/category/LineRenderer3D.java trunk/source/org/jfree/chart/renderer/category/MinMaxCategoryRenderer.java trunk/source/org/jfree/chart/renderer/category/ScatterRenderer.java trunk/source/org/jfree/chart/renderer/category/StackedAreaRenderer.java trunk/source/org/jfree/chart/renderer/category/StackedBarRenderer.java trunk/source/org/jfree/chart/renderer/category/StackedBarRenderer3D.java trunk/source/org/jfree/chart/renderer/category/StandardBarPainter.java trunk/source/org/jfree/chart/renderer/category/StatisticalBarRenderer.java trunk/source/org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer.java trunk/source/org/jfree/chart/renderer/category/WaterfallBarRenderer.java trunk/source/org/jfree/chart/renderer/xy/AbstractXYItemRenderer.java trunk/source/org/jfree/chart/renderer/xy/CandlestickRenderer.java trunk/source/org/jfree/chart/renderer/xy/ClusteredXYBarRenderer.java trunk/source/org/jfree/chart/renderer/xy/CyclicXYItemRenderer.java trunk/source/org/jfree/chart/renderer/xy/DeviationRenderer.java trunk/source/org/jfree/chart/renderer/xy/GradientXYBarPainter.java trunk/source/org/jfree/chart/renderer/xy/HighLowRenderer.java trunk/source/org/jfree/chart/renderer/xy/SamplingXYLineRenderer.java trunk/source/org/jfree/chart/renderer/xy/StackedXYAreaRenderer.java trunk/source/org/jfree/chart/renderer/xy/StackedXYAreaRenderer2.java trunk/source/org/jfree/chart/renderer/xy/StackedXYBarRenderer.java trunk/source/org/jfree/chart/renderer/xy/StandardXYBarPainter.java trunk/source/org/jfree/chart/renderer/xy/StandardXYItemRenderer.java trunk/source/org/jfree/chart/renderer/xy/VectorRenderer.java trunk/source/org/jfree/chart/renderer/xy/WindItemRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYAreaRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYAreaRenderer2.java trunk/source/org/jfree/chart/renderer/xy/XYBarPainter.java trunk/source/org/jfree/chart/renderer/xy/XYBarRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYBlockRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYBoxAndWhiskerRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYBubbleRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYDifferenceRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYDotRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYErrorRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYItemRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYItemRendererState.java trunk/source/org/jfree/chart/renderer/xy/XYLine3DRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYLineAndShapeRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYShapeRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYSplineRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYStepAreaRenderer.java trunk/source/org/jfree/chart/renderer/xy/XYStepRenderer.java trunk/source/org/jfree/chart/renderer/xy/YIntervalRenderer.java trunk/source/org/jfree/chart/util/ShapeUtilities.java trunk/tests/org/jfree/chart/junit/AreaChartTests.java trunk/tests/org/jfree/chart/junit/BarChart3DTests.java trunk/tests/org/jfree/chart/junit/BarChartTests.java trunk/tests/org/jfree/chart/junit/GanttChartTests.java trunk/tests/org/jfree/chart/junit/LineChart3DTests.java trunk/tests/org/jfree/chart/junit/LineChartTests.java trunk/tests/org/jfree/chart/junit/ScatterPlotTests.java trunk/tests/org/jfree/chart/junit/StackedAreaChartTests.java trunk/tests/org/jfree/chart/junit/StackedBarChart3DTests.java trunk/tests/org/jfree/chart/junit/StackedBarChartTests.java trunk/tests/org/jfree/chart/junit/TimeSeriesChartTests.java trunk/tests/org/jfree/chart/junit/WaterfallChartTests.java trunk/tests/org/jfree/chart/junit/XYAreaChartTests.java trunk/tests/org/jfree/chart/junit/XYBarChartTests.java trunk/tests/org/jfree/chart/junit/XYLineChartTests.java trunk/tests/org/jfree/chart/junit/XYStepAreaChartTests.java trunk/tests/org/jfree/chart/junit/XYStepChartTests.java Modified: trunk/source/org/jfree/chart/plot/CategoryPlot.java =================================================================== --- trunk/source/org/jfree/chart/plot/CategoryPlot.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/plot/CategoryPlot.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -3876,14 +3876,14 @@ for (int row = 0; row < rowCount; row++) { renderer.drawItem(g2, state, dataArea, this, domainAxis, rangeAxis, currentDataset, - row, column, pass); + row, column, false, pass); } } else { for (int row = rowCount - 1; row >= 0; row--) { renderer.drawItem(g2, state, dataArea, this, domainAxis, rangeAxis, currentDataset, - row, column, pass); + row, column, false, pass); } } } @@ -3894,14 +3894,14 @@ for (int row = 0; row < rowCount; row++) { renderer.drawItem(g2, state, dataArea, this, domainAxis, rangeAxis, currentDataset, - row, column, pass); + row, column, false, pass); } } else { for (int row = rowCount - 1; row >= 0; row--) { renderer.drawItem(g2, state, dataArea, this, domainAxis, rangeAxis, currentDataset, - row, column, pass); + row, column, false, pass); } } } Modified: trunk/source/org/jfree/chart/plot/XYPlot.java =================================================================== --- trunk/source/org/jfree/chart/plot/XYPlot.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/plot/XYPlot.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -3740,9 +3740,9 @@ state.startSeriesPass(dataset, series, firstItem, lastItem, pass, passCount); for (int item = firstItem; item <= lastItem; item++) { - renderer.drawItem(g2, state, dataArea, info, + renderer.drawItem(g2, state, dataArea, this, xAxis, yAxis, dataset, series, item, - crosshairState, pass); + false, pass); } state.endSeriesPass(dataset, series, firstItem, lastItem, pass, passCount); @@ -3766,9 +3766,9 @@ state.startSeriesPass(dataset, series, firstItem, lastItem, pass, passCount); for (int item = firstItem; item <= lastItem; item++) { - renderer.drawItem(g2, state, dataArea, info, + renderer.drawItem(g2, state, dataArea, this, xAxis, yAxis, dataset, series, item, - crosshairState, pass); + false, pass); } state.endSeriesPass(dataset, series, firstItem, lastItem, pass, passCount); Modified: trunk/source/org/jfree/chart/renderer/AbstractRenderer.java =================================================================== --- trunk/source/org/jfree/chart/renderer/AbstractRenderer.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/renderer/AbstractRenderer.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -700,18 +700,20 @@ // PAINT /** - * Returns the paint used to fill data items as they are drawn. - * <p> - * The default implementation passes control to the - * <code>lookupSeriesPaint()</code> method. You can override this method + * Returns the paint used to fill data items as they are drawn. The + * default implementation passes control to the + * {@link #lookupSeriesPaint(int)} method. You can override this method * if you require different behaviour. * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The paint (never <code>null</code>). + * + * @since 1.2.0 */ - public Paint getItemPaint(int row, int column) { + public Paint getItemPaint(int row, int column, boolean selected) { return lookupSeriesPaint(row); } @@ -878,10 +880,13 @@ * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The paint (never <code>null</code>). + * + * @since 1.2.0 */ - public Paint getItemFillPaint(int row, int column) { + public Paint getItemFillPaint(int row, int column, boolean selected) { return lookupSeriesFillPaint(row); } @@ -1031,18 +1036,20 @@ // OUTLINE PAINT ////////////////////////////////////////////////////////// /** - * Returns the paint used to outline data items as they are drawn. - * <p> - * The default implementation passes control to the - * {@link #lookupSeriesOutlinePaint} method. You can override this method - * if you require different behaviour. + * Returns the paint used to outline data items as they are drawn. The + * default implementation passes control to the + * {@link #lookupSeriesOutlinePaint(int)} method. You can override this + * method if you require different behaviour. * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The paint (never <code>null</code>). + * + * @since 1.2.0 */ - public Paint getItemOutlinePaint(int row, int column) { + public Paint getItemOutlinePaint(int row, int column, boolean selected) { return lookupSeriesOutlinePaint(row); } @@ -1192,17 +1199,19 @@ // STROKE /** - * Returns the stroke used to draw data items. - * <p> - * The default implementation passes control to the getSeriesStroke method. + * Returns the stroke used to draw data items. The default implementation + * passes control to the {@link #lookupSeriesStroke(int)} method. * You can override this method if you require different behaviour. * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The stroke (never <code>null</code>). + * + * @since 1.2.0 */ - public Stroke getItemStroke(int row, int column) { + public Stroke getItemStroke(int row, int column, boolean selected) { return lookupSeriesStroke(row); } @@ -1372,10 +1381,13 @@ * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The stroke (never <code>null</code>). + * + * @since 1.2.0 */ - public Stroke getItemOutlineStroke(int row, int column) { + public Stroke getItemOutlineStroke(int row, int column, boolean selected) { return lookupSeriesOutlineStroke(row); } @@ -1526,17 +1538,20 @@ // SHAPE /** - * Returns a shape used to represent a data item. - * <p> - * The default implementation passes control to the getSeriesShape method. - * You can override this method if you require different behaviour. + * Returns a shape used to represent a data item. The default + * implementation passes control to the {@link #lookupSeriesShape(int)} + * method. You can override this method if you require different + * behaviour. * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The shape (never <code>null</code>). + * + * @since 1.2.0 */ - public Shape getItemShape(int row, int column) { + public Shape getItemShape(int row, int column, boolean selected) { return lookupSeriesShape(row); } @@ -1689,10 +1704,13 @@ * * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * * @return A boolean. + * + * @since 1.2.0 */ - public boolean isItemLabelVisible(int row, int column) { + public boolean isItemLabelVisible(int row, int column, boolean selected) { return isSeriesItemLabelsVisible(row); } @@ -1814,10 +1832,13 @@ * * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * * @return The font (never <code>null</code>). + * + * @since 1.2.0 */ - public Font getItemLabelFont(int row, int column) { + public Font getItemLabelFont(int row, int column, boolean selected) { Font result = getSeriesItemLabelFont(row); if (result == null) { result = this.baseItemLabelFont; @@ -1920,10 +1941,13 @@ * * @param row the row index (zero based). * @param column the column index (zero based). + * @param selected is the item selected? * * @return The paint (never <code>null</code>). + * + * @since 1.2.0 */ - public Paint getItemLabelPaint(int row, int column) { + public Paint getItemLabelPaint(int row, int column, boolean selected) { Paint result = getSeriesItemLabelPaint(row); if (result == null) { result = this.baseItemLabelPaint; @@ -2027,12 +2051,14 @@ * * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * * @return The item label position (never <code>null</code>). * * @see #getNegativeItemLabelPosition(int, int) */ - public ItemLabelPosition getPositiveItemLabelPosition(int row, int column) { + public ItemLabelPosition getPositiveItemLabelPosition(int row, int column, + boolean selected) { return getSeriesPositiveItemLabelPosition(row); } @@ -2047,6 +2073,8 @@ */ public ItemLabelPosition getSeriesPositiveItemLabelPosition(int series) { + // FIXME: Shouldn't this be lookupPositiveItemLabelPosition(int) + // look up the position table ItemLabelPosition position = (ItemLabelPosition) this.positiveItemLabelPositionList.get(series); @@ -2143,12 +2171,16 @@ * * @param row the row index (zero-based). * @param column the column (zero-based). + * @param selected is the item selected? * * @return The item label position (never <code>null</code>). * - * @see #getPositiveItemLabelPosition(int, int) + * @see #getPositiveItemLabelPosition(int, int, selected) + * + * @since 1.2.0 */ - public ItemLabelPosition getNegativeItemLabelPosition(int row, int column) { + public ItemLabelPosition getNegativeItemLabelPosition(int row, int column, + boolean selected) { return getSeriesNegativeItemLabelPosition(row); } @@ -2279,10 +2311,13 @@ * * @param series the series index. * @param item the item index. + * @param selected is the item selected? * * @return A boolean. + * + * @since 1.2.0 */ - public boolean getItemCreateEntity(int series, int item) { + public boolean getItemCreateEntity(int series, int item, boolean selected) { Boolean b = getSeriesCreateEntities(series); if (b != null) { return b.booleanValue(); Modified: trunk/source/org/jfree/chart/renderer/category/AbstractCategoryItemRenderer.java =================================================================== --- trunk/source/org/jfree/chart/renderer/category/AbstractCategoryItemRenderer.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/renderer/category/AbstractCategoryItemRenderer.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -107,6 +107,7 @@ * 27-Mar-2009 : Added new findRangeBounds() method to account for hidden * series (DG); * 01-Apr-2009 : Added new addEntity() method (DG); + * 26-Jun-2009 : Updated to support selections (DG); * */ @@ -299,13 +300,16 @@ * * @param row the row index (zero based). * @param column the column index (zero based). + * @param selected is the item selected? * * @return The generator (possibly <code>null</code>). + * + * @since 1.2.0 */ public CategoryItemLabelGenerator getItemLabelGenerator(int row, - int column) { + int column, boolean selected) { CategoryItemLabelGenerator generator = (CategoryItemLabelGenerator) - this.itemLabelGeneratorList.get(row); + this.itemLabelGeneratorList.get(row); if (generator == null) { generator = this.baseItemLabelGenerator; } @@ -407,17 +411,19 @@ /** * Returns the tool tip generator that should be used for the specified - * item. This method looks up the generator using the "three-layer" - * approach outlined in the general description of this interface. You - * can override this method if you want to return a different generator per - * item. + * item. You can override this method if you want to return a different + * generator per item. * * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * * @return The generator (possibly <code>null</code>). + * + * @since 1.2.0 */ - public CategoryToolTipGenerator getToolTipGenerator(int row, int column) { + public CategoryToolTipGenerator getToolTipGenerator(int row, int column, + boolean selected) { CategoryToolTipGenerator result = null; result = getSeriesToolTipGenerator(row); @@ -525,10 +531,14 @@ * * @param row the row index (zero based). * @param column the column index (zero based). + * @param selected is the item selected? * * @return The URL generator. + * + * @since 1.2.0 */ - public CategoryURLGenerator getURLGenerator(int row, int column) { + public CategoryURLGenerator getURLGenerator(int row, int column, boolean + selected) { CategoryURLGenerator generator = (CategoryURLGenerator) this.urlGeneratorList.get(row); if (generator == null) { @@ -697,6 +707,84 @@ } /** + * Returns the legend item label generator. + * + * @return The label generator (never <code>null</code>). + * + * @see #setLegendItemLabelGenerator(CategorySeriesLabelGenerator) + */ + public CategorySeriesLabelGenerator getLegendItemLabelGenerator() { + return this.legendItemLabelGenerator; + } + + /** + * Sets the legend item label generator and sends a + * {@link RendererChangeEvent} to all registered listeners. + * + * @param generator the generator (<code>null</code> not permitted). + * + * @see #getLegendItemLabelGenerator() + */ + public void setLegendItemLabelGenerator( + CategorySeriesLabelGenerator generator) { + if (generator == null) { + throw new IllegalArgumentException("Null 'generator' argument."); + } + this.legendItemLabelGenerator = generator; + fireChangeEvent(); + } + + /** + * Returns the legend item tool tip generator. + * + * @return The tool tip generator (possibly <code>null</code>). + * + * @see #setLegendItemToolTipGenerator(CategorySeriesLabelGenerator) + */ + public CategorySeriesLabelGenerator getLegendItemToolTipGenerator() { + return this.legendItemToolTipGenerator; + } + + /** + * Sets the legend item tool tip generator and sends a + * {@link RendererChangeEvent} to all registered listeners. + * + * @param generator the generator (<code>null</code> permitted). + * + * @see #setLegendItemToolTipGenerator(CategorySeriesLabelGenerator) + */ + public void setLegendItemToolTipGenerator( + CategorySeriesLabelGenerator generator) { + this.legendItemToolTipGenerator = generator; + fireChangeEvent(); + } + + /** + * Returns the legend item URL generator. + * + * @return The URL generator (possibly <code>null</code>). + * + * @see #setLegendItemURLGenerator(CategorySeriesLabelGenerator) + */ + public CategorySeriesLabelGenerator getLegendItemURLGenerator() { + return this.legendItemURLGenerator; + } + + /** + * Sets the legend item URL generator and sends a + * {@link RendererChangeEvent} to all registered listeners. + * + * @param generator the generator (<code>null</code> permitted). + * + * @see #getLegendItemURLGenerator() + */ + public void setLegendItemURLGenerator( + CategorySeriesLabelGenerator generator) { + this.legendItemURLGenerator = generator; + fireChangeEvent(); + } + + /** * Returns the number of rows in the dataset. This value is updated in the * {@link AbstractCategoryItemRenderer#initialise} method. * @@ -1485,29 +1573,32 @@ * @param dataset the dataset. * @param row the row. * @param column the column. + * @param selected is the item selected? * @param x the x coordinate (in Java2D space). * @param y the y coordinate (in Java2D space). * @param negative indicates a negative value (which affects the item * label position). + * + * @since 1.2.0 */ protected void drawItemLabel(Graphics2D g2, PlotOrientation orientation, - CategoryDataset dataset, int row, int column, + CategoryDataset dataset, int row, int column, boolean selected, double x, double y, boolean negative) { CategoryItemLabelGenerator generator = getItemLabelGenerator(row, - column); + column, selected); if (generator != null) { - Font labelFont = getItemLabelFont(row, column); - Paint paint = getItemLabelPaint(row, column); + Font labelFont = getItemLabelFont(row, column, selected); + Paint paint = getItemLabelPaint(row, column, selected); g2.setFont(labelFont); g2.setPaint(paint); String label = generator.generateLabel(dataset, row, column); ItemLabelPosition position = null; if (!negative) { - position = getPositiveItemLabelPosition(row, column); + position = getPositiveItemLabelPosition(row, column, selected); } else { - position = getNegativeItemLabelPosition(row, column); + position = getNegativeItemLabelPosition(row, column, selected); } Point2D anchorPoint = calculateLabelAnchorPoint( position.getItemLabelAnchor(), x, y, orientation); @@ -1699,114 +1790,24 @@ } /** - * Returns the legend item label generator. - * - * @return The label generator (never <code>null</code>). - * - * @see #setLegendItemLabelGenerator(CategorySeriesLabelGenerator) - */ - public CategorySeriesLabelGenerator getLegendItemLabelGenerator() { - return this.legendItemLabelGenerator; - } - - /** - * Sets the legend item label generator and sends a - * {@link RendererChangeEvent} to all registered listeners. - * - * @param generator the generator (<code>null</code> not permitted). - * - * @see #getLegendItemLabelGenerator() - */ - public void setLegendItemLabelGenerator( - CategorySeriesLabelGenerator generator) { - if (generator == null) { - throw new IllegalArgumentException("Null 'generator' argument."); - } - this.legendItemLabelGenerator = generator; - fireChangeEvent(); - } - - /** - * Returns the legend item tool tip generator. - * - * @return The tool tip generator (possibly <code>null</code>). - * - * @see #setLegendItemToolTipGenerator(CategorySeriesLabelGenerator) - */ - public CategorySeriesLabelGenerator getLegendItemToolTipGenerator() { - return this.legendItemToolTipGenerator; - } - - /** - * Sets the legend item tool tip generator and sends a - * {@link RendererChangeEvent} to all registered listeners. - * - * @param generator the generator (<code>null</code> permitted). - * - * @see #setLegendItemToolTipGenerator(CategorySeriesLabelGenerator) - */ - public void setLegendItemToolTipGenerator( - CategorySeriesLabelGenerator generator) { - this.legendItemToolTipGenerator = generator; - fireChangeEvent(); - } - - /** - * Returns the legend item URL generator. - * - * @return The URL generator (possibly <code>null</code>). - * - * @see #setLegendItemURLGenerator(CategorySeriesLabelGenerator) - */ - public CategorySeriesLabelGenerator getLegendItemURLGenerator() { - return this.legendItemURLGenerator; - } - - /** - * Sets the legend item URL generator and sends a - * {@link RendererChangeEvent} to all registered listeners. - * - * @param generator the generator (<code>null</code> permitted). - * - * @see #getLegendItemURLGenerator() - */ - public void setLegendItemURLGenerator( - CategorySeriesLabelGenerator generator) { - this.legendItemURLGenerator = generator; - fireChangeEvent(); - } - - /** * Adds an entity with the specified hotspot. * * @param entities the entity collection. + * @param hotspot the hotspot (<code>null</code> not permitted). * @param dataset the dataset. * @param row the row index. * @param column the column index. - * @param hotspot the hotspot (<code>null</code> not permitted). + * @param selected is the item selected? + * + * @since 1.2.0 */ - protected void addItemEntity(EntityCollection entities, - CategoryDataset dataset, int row, int column, - Shape hotspot) { + protected void addEntity(EntityCollection entities, Shape hotspot, + CategoryDataset dataset, int row, int column, boolean selected) { + if (hotspot == null) { throw new IllegalArgumentException("Null 'hotspot' argument."); } - if (!getItemCreateEntity(row, column)) { - return; - } - String tip = null; - CategoryToolTipGenerator tipster = getToolTipGenerator(row, column); - if (tipster != null) { - tip = tipster.generateToolTip(dataset, row, column); - } - String url = null; - CategoryURLGenerator urlster = getURLGenerator(row, column); - if (urlster != null) { - url = urlster.generateURL(dataset, row, column); - } - CategoryItemEntity entity = new CategoryItemEntity(hotspot, tip, url, - dataset, dataset.getRowKey(row), dataset.getColumnKey(column)); - entities.add(entity); + addEntity(entities, hotspot, dataset, row, column, selected, 0.0, 0.0); } /** @@ -1818,17 +1819,18 @@ * @param dataset the dataset. * @param row the series. * @param column the item. + * @param selected is the item selected? * @param entityX the entity's center x-coordinate in user space (only * used if <code>area</code> is <code>null</code>). * @param entityY the entity's center y-coordinate in user space (only * used if <code>area</code> is <code>null</code>). * - * @since 1.0.13 + * @since 1.2.0 */ protected void addEntity(EntityCollection entities, Shape hotspot, - CategoryDataset dataset, int row, int column, - double entityX, double entityY) { - if (!getItemCreateEntity(row, column)) { + CategoryDataset dataset, int row, int column, boolean selected, + double entityX, double entityY) { + if (!getItemCreateEntity(row, column, selected)) { return; } Shape s = hotspot; @@ -1843,12 +1845,13 @@ } } String tip = null; - CategoryToolTipGenerator generator = getToolTipGenerator(row, column); + CategoryToolTipGenerator generator = getToolTipGenerator(row, column, + selected); if (generator != null) { tip = generator.generateToolTip(dataset, row, column); } String url = null; - CategoryURLGenerator urlster = getURLGenerator(row, column); + CategoryURLGenerator urlster = getURLGenerator(row, column, selected); if (urlster != null) { url = urlster.generateURL(dataset, row, column); } Modified: trunk/source/org/jfree/chart/renderer/category/AreaRenderer.java =================================================================== --- trunk/source/org/jfree/chart/renderer/category/AreaRenderer.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/renderer/category/AreaRenderer.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -214,12 +214,15 @@ * @param dataset the dataset. * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * @param pass the pass index. + * + * @since 1.2.0 */ public void drawItem(Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, - int pass) { + boolean selected, int pass) { // do nothing if item is not visible or null if (!getItemVisible(row, column)) { @@ -283,8 +286,8 @@ float yz = (float) rangeAxis.valueToJava2D(0.0, dataArea, edge); double labelXX = x1; double labelYY = y1; - g2.setPaint(getItemPaint(row, column)); - g2.setStroke(getItemStroke(row, column)); + g2.setPaint(getItemPaint(row, column, selected)); + g2.setStroke(getItemStroke(row, column, selected)); GeneralPath area = new GeneralPath(); @@ -307,13 +310,13 @@ } area.closePath(); - g2.setPaint(getItemPaint(row, column)); + g2.setPaint(getItemPaint(row, column, selected)); g2.fill(area); // draw the item labels if there are any... - if (isItemLabelVisible(row, column)) { - drawItemLabel(g2, orientation, dataset, row, column, labelXX, - labelYY, (value.doubleValue() < 0.0)); + if (isItemLabelVisible(row, column, selected)) { + drawItemLabel(g2, orientation, dataset, row, column, selected, + labelXX, labelYY, (value.doubleValue() < 0.0)); } // submit the current data point as a crosshair candidate @@ -325,7 +328,7 @@ // add an item entity, if this information is being collected EntityCollection entities = state.getEntityCollection(); if (entities != null) { - addItemEntity(entities, dataset, row, column, area); + addEntity(entities, area, dataset, row, column, selected); } } Modified: trunk/source/org/jfree/chart/renderer/category/BarPainter.java =================================================================== --- trunk/source/org/jfree/chart/renderer/category/BarPainter.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/renderer/category/BarPainter.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -2,7 +2,7 @@ * JFreeChart : a free chart library for the Java(tm) platform * =========================================================== * - * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. + * (C) Copyright 2000-2009, by Object Refinery Limited and Contributors. * * Project Info: http://www.jfree.org/jfreechart/index.html * @@ -27,7 +27,7 @@ * --------------- * BarPainter.java * --------------- - * (C) Copyright 2008, by Object Refinery Limited. + * (C) Copyright 2008, 2009, by Object Refinery Limited. * * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; @@ -35,6 +35,7 @@ * Changes: * -------- * 19-Jun-2008 : Version 1 (DG); + * 25-Jun-2009 : Interface changed for 1.2.0 (DG); * */ @@ -58,7 +59,7 @@ * serialization will not be supported.</li> * </ul> * - * @since 1.0.11 + * @since 1.2.0 */ public interface BarPainter { @@ -69,11 +70,13 @@ * @param renderer the renderer. * @param row the row index for the item. * @param column the column index for the item. + * @param selected is the item selected? * @param bar the bounds for the bar. * @param base the base of the bar. */ public void paintBar(Graphics2D g2, BarRenderer renderer, - int row, int column, RectangularShape bar, RectangleEdge base); + int row, int column, boolean selected, + RectangularShape bar, RectangleEdge base); /** * Paints the shadow for a single bar on behalf of a renderer. @@ -82,12 +85,13 @@ * @param renderer the renderer. * @param row the row index for the item. * @param column the column index for the item. + * @param selected is the item selected? * @param bar the bounds for the bar. * @param base the base of the bar. * @param pegShadow peg the shadow to the base of the bar? */ public void paintBarShadow(Graphics2D g2, BarRenderer renderer, - int row, int column, RectangularShape bar, RectangleEdge base, - boolean pegShadow); + int row, int column, boolean selected, + RectangularShape bar, RectangleEdge base, boolean pegShadow); } Modified: trunk/source/org/jfree/chart/renderer/category/BarRenderer.java =================================================================== --- trunk/source/org/jfree/chart/renderer/category/BarRenderer.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/renderer/category/BarRenderer.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -132,7 +132,6 @@ import org.jfree.chart.util.StandardGradientPaintTransformer; import org.jfree.data.Range; import org.jfree.data.category.CategoryDataset; -import org.jfree.data.general.DatasetUtilities; /** * A {@link CategoryItemRenderer} that draws individual data items as bars. @@ -986,18 +985,13 @@ * @param dataset the dataset. * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * @param pass the pass index. */ - public void drawItem(Graphics2D g2, - CategoryItemRendererState state, - Rectangle2D dataArea, - CategoryPlot plot, - CategoryAxis domainAxis, - ValueAxis rangeAxis, - CategoryDataset dataset, - int row, - int column, - int pass) { + public void drawItem(Graphics2D g2, CategoryItemRendererState state, + Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, + ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, + boolean selected, int pass) { // nothing is drawn if the row index is not included in the list with // the indices of the visible rows... @@ -1071,16 +1065,17 @@ state.getBarWidth(), barLength + barLengthAdj); } if (getShadowsVisible()) { - this.barPainter.paintBarShadow(g2, this, row, column, bar, barBase, - true); + this.barPainter.paintBarShadow(g2, this, row, column, selected, + bar, barBase, true); } - this.barPainter.paintBar(g2, this, row, column, bar, barBase); + this.barPainter.paintBar(g2, this, row, column, selected, bar, + barBase); CategoryItemLabelGenerator generator = getItemLabelGenerator(row, - column); - if (generator != null && isItemLabelVisible(row, column)) { - drawItemLabel(g2, dataset, row, column, plot, generator, bar, - (value < 0.0)); + column, selected); + if (generator != null && isItemLabelVisible(row, column, selected)) { + drawItemLabelForBar(g2, plot, dataset, row, column, selected, + generator, bar, (value < 0.0)); } // submit the current data point as a crosshair candidate @@ -1092,7 +1087,7 @@ // add an item entity, if this information is being collected EntityCollection entities = state.getEntityCollection(); if (entities != null) { - addItemEntity(entities, dataset, row, column, bar); + addEntity(entities, bar, dataset, row, column, selected); } } @@ -1118,44 +1113,44 @@ } /** - * Draws an item label. This method is overridden so that the bar can be - * used to calculate the label anchor point. + * Draws an item label. This method is used for bars instead of + * {@link #drawItemLabel()} so that the bar can be used to calculate the + * label anchor point. * * @param g2 the graphics device. - * @param data the dataset. + * @param dataset the dataset. * @param row the row. * @param column the column. + * @param selected is the item selected? * @param plot the plot. * @param generator the label generator. * @param bar the bar. * @param negative a flag indicating a negative value. + * + * @since 1.2.0 */ - protected void drawItemLabel(Graphics2D g2, - CategoryDataset data, - int row, - int column, - CategoryPlot plot, - CategoryItemLabelGenerator generator, - Rectangle2D bar, - boolean negative) { + protected void drawItemLabelForBar(Graphics2D g2, CategoryPlot plot, + CategoryDataset dataset, int row, int column, boolean selected, + CategoryItemLabelGenerator generator, Rectangle2D bar, + boolean negative) { - String label = generator.generateLabel(data, row, column); + String label = generator.generateLabel(dataset, row, column); if (label == null) { return; // nothing to do } - Font labelFont = getItemLabelFont(row, column); + Font labelFont = getItemLabelFont(row, column, selected); g2.setFont(labelFont); - Paint paint = getItemLabelPaint(row, column); + Paint paint = getItemLabelPaint(row, column, selected); g2.setPaint(paint); // find out where to place the label... ItemLabelPosition position = null; if (!negative) { - position = getPositiveItemLabelPosition(row, column); + position = getPositiveItemLabelPosition(row, column, selected); } else { - position = getNegativeItemLabelPosition(row, column); + position = getNegativeItemLabelPosition(row, column, selected); } // work out the label anchor point... Modified: trunk/source/org/jfree/chart/renderer/category/BarRenderer3D.java =================================================================== --- trunk/source/org/jfree/chart/renderer/category/BarRenderer3D.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/renderer/category/BarRenderer3D.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -652,18 +652,15 @@ * @param dataset the dataset. * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * @param pass the pass index. + * + * @since 1.2.0 */ - public void drawItem(Graphics2D g2, - CategoryItemRendererState state, - Rectangle2D dataArea, - CategoryPlot plot, - CategoryAxis domainAxis, - ValueAxis rangeAxis, - CategoryDataset dataset, - int row, - int column, - int pass) { + public void drawItem(Graphics2D g2, CategoryItemRendererState state, + Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, + ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, + boolean selected, int pass) { // check the value we are plotting... Number dataValue = dataset.getValue(row, column); @@ -703,7 +700,7 @@ bar = new Rectangle2D.Double(barW0, barL0, state.getBarWidth(), barLength); } - Paint itemPaint = getItemPaint(row, column); + Paint itemPaint = getItemPaint(row, column, selected); g2.setPaint(itemPaint); g2.fill(bar); @@ -743,8 +740,8 @@ if (isDrawBarOutline() && state.getBarWidth() > BAR_OUTLINE_WIDTH_THRESHOLD) { - g2.setStroke(getItemOutlineStroke(row, column)); - g2.setPaint(getItemOutlinePaint(row, column)); + g2.setStroke(getItemOutlineStroke(row, column, selected)); + g2.setPaint(getItemOutlinePaint(row, column, selected)); g2.draw(bar); if (bar3dRight != null) { g2.draw(bar3dRight); @@ -754,11 +751,11 @@ } } - CategoryItemLabelGenerator generator - = getItemLabelGenerator(row, column); - if (generator != null && isItemLabelVisible(row, column)) { - drawItemLabel(g2, dataset, row, column, plot, generator, bar, - (value < 0.0)); + CategoryItemLabelGenerator generator = getItemLabelGenerator(row, + column, selected); + if (generator != null && isItemLabelVisible(row, column, selected)) { + drawItemLabelForBar(g2, plot, dataset, row, column, selected, + generator, bar, (value < 0.0)); } // add an item entity, if this information is being collected @@ -772,7 +769,7 @@ barOutline.lineTo((float) x3, (float) y2); barOutline.lineTo((float) x2, (float) y3); barOutline.closePath(); - addItemEntity(entities, dataset, row, column, barOutline); + addEntity(entities, barOutline, dataset, row, column, selected); } } Modified: trunk/source/org/jfree/chart/renderer/category/BoxAndWhiskerRenderer.java =================================================================== --- trunk/source/org/jfree/chart/renderer/category/BoxAndWhiskerRenderer.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/renderer/category/BoxAndWhiskerRenderer.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -470,16 +470,10 @@ * @param column the column index (zero-based). * @param pass the pass index. */ - public void drawItem(Graphics2D g2, - CategoryItemRendererState state, - Rectangle2D dataArea, - CategoryPlot plot, - CategoryAxis domainAxis, - ValueAxis rangeAxis, - CategoryDataset dataset, - int row, - int column, - int pass) { + public void drawItem(Graphics2D g2, CategoryItemRendererState state, + Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, + ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, + boolean selected, int pass) { // do nothing if item is not visible if (!getItemVisible(row, column)) { @@ -496,11 +490,11 @@ if (orientation == PlotOrientation.HORIZONTAL) { drawHorizontalItem(g2, state, dataArea, plot, domainAxis, - rangeAxis, dataset, row, column); + rangeAxis, dataset, row, column, selected, pass); } else if (orientation == PlotOrientation.VERTICAL) { drawVerticalItem(g2, state, dataArea, plot, domainAxis, - rangeAxis, dataset, row, column); + rangeAxis, dataset, row, column, selected, pass); } } @@ -520,16 +514,16 @@ * {@link BoxAndWhiskerCategoryDataset}). * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? + * @param pass the number of the current pass. + * + * @since 1.2.0 */ - public void drawHorizontalItem(Graphics2D g2, - CategoryItemRendererState state, - Rectangle2D dataArea, - CategoryPlot plot, - CategoryAxis domainAxis, - ValueAxis rangeAxis, - CategoryDataset dataset, - int row, - int column) { + protected void drawHorizontalItem(Graphics2D g2, + CategoryItemRendererState state, Rectangle2D dataArea, + CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, + CategoryDataset dataset, int row, int column, boolean selected, + int pass) { BoxAndWhiskerCategoryDataset bawDataset = (BoxAndWhiskerCategoryDataset) dataset; @@ -561,8 +555,8 @@ yy = yy + offset; } - g2.setPaint(getItemPaint(row, column)); - Stroke s = getItemStroke(row, column); + g2.setPaint(getItemPaint(row, column, selected)); + Stroke s = getItemStroke(row, column, selected); g2.setStroke(s); RectangleEdge location = plot.getRangeAxisEdge(); @@ -601,8 +595,8 @@ if (this.fillBox) { g2.fill(box); } - g2.setStroke(getItemOutlineStroke(row, column)); - g2.setPaint(getItemOutlinePaint(row, column)); + g2.setStroke(getItemOutlineStroke(row, column, selected)); + g2.setPaint(getItemOutlinePaint(row, column, selected)); g2.draw(box); } @@ -642,7 +636,7 @@ if (state.getInfo() != null && box != null) { EntityCollection entities = state.getEntityCollection(); if (entities != null) { - addItemEntity(entities, dataset, row, column, box); + addEntity(entities, box, dataset, row, column, selected); } } @@ -663,16 +657,16 @@ * {@link BoxAndWhiskerCategoryDataset}). * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? + * @param pass the number of the current pass. + * + * @since 1.2.0 */ - public void drawVerticalItem(Graphics2D g2, - CategoryItemRendererState state, - Rectangle2D dataArea, - CategoryPlot plot, - CategoryAxis domainAxis, - ValueAxis rangeAxis, - CategoryDataset dataset, - int row, - int column) { + protected void drawVerticalItem(Graphics2D g2, + CategoryItemRendererState state, Rectangle2D dataArea, + CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, + CategoryDataset dataset, int row, int column, boolean selected, + int pass) { BoxAndWhiskerCategoryDataset bawDataset = (BoxAndWhiskerCategoryDataset) dataset; @@ -707,9 +701,9 @@ double yyAverage = 0.0; double yyOutlier; - Paint itemPaint = getItemPaint(row, column); + Paint itemPaint = getItemPaint(row, column, selected); g2.setPaint(itemPaint); - Stroke s = getItemStroke(row, column); + Stroke s = getItemStroke(row, column, selected); g2.setStroke(s); double aRadius = 0; // average radius @@ -749,8 +743,8 @@ if (this.fillBox) { g2.fill(box); } - g2.setStroke(getItemOutlineStroke(row, column)); - g2.setPaint(getItemOutlinePaint(row, column)); + g2.setStroke(getItemOutlineStroke(row, column, selected)); + g2.setPaint(getItemOutlinePaint(row, column, selected)); g2.draw(box); } @@ -870,7 +864,7 @@ if (state.getInfo() != null && box != null) { EntityCollection entities = state.getEntityCollection(); if (entities != null) { - addItemEntity(entities, dataset, row, column, box); + addEntity(entities, box, dataset, row, column, selected); } } Modified: trunk/source/org/jfree/chart/renderer/category/CategoryItemRenderer.java =================================================================== --- trunk/source/org/jfree/chart/renderer/category/CategoryItemRenderer.java 2009-06-25 11:06:56 UTC (rev 2164) +++ trunk/source/org/jfree/chart/renderer/category/CategoryItemRenderer.java 2009-06-26 07:32:18 UTC (rev 2165) @@ -387,10 +387,13 @@ * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The paint (never <code>null</code>). + * + * @since 1.2.0 */ - public Paint getItemPaint(int row, int column); + public Paint getItemPaint(int row, int column, boolean selected); /** * Returns the paint used to fill an item drawn by the renderer. @@ -464,12 +467,13 @@ * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The paint (never <code>null</code>). * * @since 1.2.0 */ - public Paint getItemFillPaint(int row, int column); + public Paint getItemFillPaint(int row, int column, boolean selected); /** * Returns the paint used to fill an item drawn by the renderer. @@ -555,10 +559,13 @@ * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The paint (never <code>null</code>). + * + * @since 1.2.0 */ - public Paint getItemOutlinePaint(int row, int column); + public Paint getItemOutlinePaint(int row, int column, boolean selected); /** * Returns the paint used to outline an item drawn by the renderer. @@ -636,10 +643,13 @@ * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The stroke (never <code>null</code>). + * + * @since 1.2.0 */ - public Stroke getItemStroke(int row, int column); + public Stroke getItemStroke(int row, int column, boolean selected); /** * Returns the stroke used to draw the items in a series. @@ -721,10 +731,13 @@ * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The stroke (never <code>null</code>). + * + * @since 1.2.0 */ - public Stroke getItemOutlineStroke(int row, int column); + public Stroke getItemOutlineStroke(int row, int column, boolean selected); /** * Returns the stroke used to outline the items in a series. @@ -803,10 +816,13 @@ * * @param row the row (or series) index (zero-based). * @param column the column (or category) index (zero-based). + * @param selected is the item selected? * * @return The shape (never <code>null</code>). + * + * @since 1.2.0 */ - public Shape getItemShape(int row, int column); + public Shape getItemShape(int row, int column, boolean selected); /** * Returns a shape used to represent the items in a series. @@ -973,10 +989,14 @@ * * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * * @return The generator (possibly <code>null</code>). + * + * @since 1.2.0 */ - public CategoryToolTipGenerator getToolTipGenerator(int row, int column); + public CategoryToolTipGenerator getToolTipGenerator(int row, int column, + boolean selected); /** * Returns the tool tip generator for the specified series (a "layer 1" @@ -1060,10 +1080,14 @@ * * @param series the series index (zero-based). * @param item the item index (zero-based). + * @param selected is the item selected? * * @return The item URL generator. + * + * @since 1.2.0 */ - public CategoryURLGenerator getURLGenerator(int series, int item); + public CategoryURLGenerator getURLGenerator(int series, int item, boolean + selected); /** * Returns the URL generator for a series. @@ -1141,10 +1165,13 @@ * * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * * @return A boolean. + * + * @since 1.2.0 */ - public boolean isItemLabelVisible(int row, int column); + public boolean isItemLabelVisible(int row, int column, boolean selected); /** * Returns <code>true</code> if the item labels for a series are visible, @@ -1244,11 +1271,14 @@ * * @param series the series index (zero-based). * @param item the item index (zero-based). + * @param selected is the item selected? * * @return The generator (possibly <code>null</code>). + * + * @since 1.2.0 */ public CategoryItemLabelGenerator getItemLabelGenerator(int series, - int item); + int item, boolean selected); /** * Returns the item label generator for a series. @@ -1327,10 +1357,13 @@ * * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * * @return The font (never <code>null</code>). + * + * @since 1.2.0 */ - public Font getItemLabelFont(int row, int column); + public Font getItemLabelFont(int row, int column, boolean selected); /** * Returns the font for all the item labels in a series. @@ -1409,10 +1442,13 @@ * * @param row the row index (zero based). * @param column the column index (zero based). + * @param selected is the item selected? * * @return The paint (never <code>null</code>). + * + * @since 1.2.0 */ - public Paint getItemLabelPaint(int row, int column); + public Paint getItemLabelPaint(int row, int column, boolean selected); /** * Returns the paint used to draw the item labels for a series. @@ -1491,10 +1527,14 @@ * * @param row the row index (zero-based). * @param column the column index (zero-based). + * @param selected is the item selected? * * @return The item label position (never <code>null</code>). + * + * @since 1.2.0 */ - public ItemLabelPosition getPositiveItemLabelPosition(int row, int column); + public ItemLabelPosition getPositiveItemLabelPosition(int row, int column, + boolean selected); /** * Returns the item label position for all positive values in a series. @@ -1573,10 +1613,14 @@ * * @param row the row index (zero-based). * @param column the column (zero-based). + * @param selected is the item selected? * * @return The item label position. + * + * @since 1.2.0 */ - public ItemLabelPosition getNegativeItemLabelPosition(int row, int column); + public ItemLabelPosition getNegativeItemLabelPosition(int row, int column, + boolean selected); /** * Returns the item label position for all negative values in a series. @@ -1656,12 +1700,13 @@ * * @param series ... [truncated message content] |