/** * Confirm that the equals method can distinguish all the required fields. */ public void testEquals() { LegendItemEntity e1 = new LegendItemEntity(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0)); LegendItemEntity e2 = new LegendItemEntity(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0)); assertTrue(e1.equals(e2)); e1.setArea(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0)); assertFalse(e1.equals(e2)); e2.setArea(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0)); assertTrue(e1.equals(e2)); e1.setToolTipText("New ToolTip"); assertFalse(e1.equals(e2)); e2.setToolTipText("New ToolTip"); assertTrue(e1.equals(e2)); e1.setURLText("New URL"); assertFalse(e1.equals(e2)); e2.setURLText("New URL"); assertTrue(e1.equals(e2)); }
/** * Confirm that the equals method can distinguish all the required fields. */ public void testEquals() { LegendItemEntity e1 = new LegendItemEntity( new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0) ); LegendItemEntity e2 = new LegendItemEntity( new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0) ); assertTrue(e1.equals(e2)); e1.setArea(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0)); assertFalse(e1.equals(e2)); e2.setArea(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0)); assertTrue(e1.equals(e2)); e1.setToolTipText("New ToolTip"); assertFalse(e1.equals(e2)); e2.setToolTipText("New ToolTip"); assertTrue(e1.equals(e2)); e1.setURLText("New URL"); assertFalse(e1.equals(e2)); e2.setURLText("New URL"); assertTrue(e1.equals(e2)); }
/** * The gesture entity type * * @param entity * @return */ public static Entity getGestureEntity(ChartEntity entity) { if (entity == null) return NONE; if (entity instanceof PlotEntity) return PLOT; if (entity instanceof AxisEntity) { AxisEntity e = (AxisEntity) entity; if (e.getAxis().getPlot() instanceof XYPlot) { XYPlot plot = ((XYPlot) e.getAxis().getPlot()); for (int i = 0; i < plot.getDomainAxisCount(); i++) if (plot.getDomainAxis(i).equals(e.getAxis())) return DOMAIN_AXIS; for (int i = 0; i < plot.getRangeAxisCount(); i++) if (plot.getRangeAxis(i).equals(e.getAxis())) return RANGE_AXIS; } // else return basic axis return AXIS; } if (entity instanceof LegendItemEntity) return LEGEND_ITEM; if (entity instanceof XYItemEntity) return XY_ITEM; if (entity instanceof XYAnnotationEntity) return XY_ANNOTATION; if (entity instanceof TitleEntity) { if (((TitleEntity) entity).getTitle() instanceof TextTitle) return TEXT_TITLE; else return NON_TEXT_TITLE; } if (entity instanceof JFreeChartEntity) return JFREECHART; if (entity instanceof CategoryItemEntity) return CATEGORY_ITEM; return GENERAL; }
private boolean isClickOnLegend(ChartEntity entity) { if (entity instanceof LegendItemEntity) { LegendItemEntity itemEntity = (LegendItemEntity) entity; Comparable<?> key = itemEntity.getSeriesKey(); TimeSeriesCollection dataset = (TimeSeriesCollection) itemEntity.getDataset(); int seriesIndex = dataset.indexOf(key); XYPlot plot = getChart().getXYPlot(); int datasetIndex = plot.indexOf(dataset); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(datasetIndex); LegendItemCollection coll = renderer.getLegendItems(); LegendItem legendItem = coll.get(seriesIndex); boolean shapesVisible = legendItem.isShapeVisible(); boolean seriesVisible = renderer.isSeriesVisible(seriesIndex); ValueAxis axis = plot.getRangeAxis(datasetIndex); if (seriesVisible) { if (shapesVisible) { renderer.setSeriesShapesVisible(seriesIndex, false); legendItem.setShapeVisible(false); } else { // Hide case renderer.setSeriesVisible(seriesIndex, false, false); renderer.setLegendTextPaint(seriesIndex, sLegendDisabledTextColor); axis.setVisible(false); } } else { if (mShapesInChart) { renderer.setSeriesShapesVisible(seriesIndex, true); } renderer.setSeriesVisible(seriesIndex, true, false); renderer.setLegendTextPaint(seriesIndex, sLegendTextColor); axis.setVisible(true); } return true; } return false; }
/** * Confirm that the equals method can distinguish all the required fields. */ public void testEquals() { LegendItemEntity e1 = new LegendItemEntity(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0)); LegendItemEntity e2 = new LegendItemEntity(new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0)); assertTrue(e1.equals(e2)); e1.setArea(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0)); assertFalse(e1.equals(e2)); e2.setArea(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0)); assertTrue(e1.equals(e2)); e1.setToolTipText("New ToolTip"); assertFalse(e1.equals(e2)); e2.setToolTipText("New ToolTip"); assertTrue(e1.equals(e2)); e1.setURLText("New URL"); assertFalse(e1.equals(e2)); e2.setURLText("New URL"); assertTrue(e1.equals(e2)); e1.setDataset(new DefaultCategoryDataset()); assertFalse(e1.equals(e2)); e2.setDataset(new DefaultCategoryDataset()); assertTrue(e1.equals(e2)); e1.setSeriesKey("A"); assertFalse(e1.equals(e2)); e2.setSeriesKey("A"); assertTrue(e1.equals(e2)); }
/** * Draws the series elements. * * @param g2 the graphics device. * @param items the items. * @param translation the translation point. * @param info optional carrier for rendering info. */ private void drawSeriesElements(Graphics2D g2, List items, Point2D translation, ChartRenderingInfo info) { EntityCollection entities = null; if (info != null) { entities = info.getEntityCollection(); } // Draw individual series elements for (int i = 0; i < items.size(); i++) { DrawableLegendItem item = (DrawableLegendItem) items.get(i); g2.setPaint(item.getItem().getPaint()); Shape keyBox = item.getMarker(); if (this.displaySeriesLines) { g2.setStroke(item.getLineStroke()); g2.draw(item.getLine()); if (this.displaySeriesShapes) { if (item.isMarkerFilled()) { g2.fill(keyBox); } else { g2.draw(keyBox); } } } else { if (item.isMarkerFilled()) { g2.fill(keyBox); } else { g2.draw(keyBox); } } if (getOutlineShapes()) { g2.setPaint(this.shapeOutlinePaint); g2.setStroke(this.shapeOutlineStroke); g2.draw(keyBox); } g2.setPaint(this.itemPaint); g2.setFont(this.itemFont); TextUtilities.drawAlignedString( item.getItem().getLabel(), g2, (float) item.getLabelPosition().getX(), (float) item.getLabelPosition().getY(), TextAnchor.CENTER_LEFT ); LOGGER.debug("Item x = " + item.getLabelPosition().getX()); LOGGER.debug("Item y = " + item.getLabelPosition().getY()); if (entities != null) { Rectangle2D area = new Rectangle2D.Double( translation.getX() + item.getX(), translation.getY() + item.getY(), item.getWidth(), item.getHeight() ); LegendItemEntity entity = new LegendItemEntity(area); entity.setSeriesIndex(i); entities.addEntity(entity); } } }
@Override public final void chartMouseClicked(ChartMouseEvent event) { int series = -1; ChartEntity entity = event.getEntity(); if (entity == null) { return; } // users can click on either the line or the legend // regardless, figure out the series index if (entity.getClass() == XYItemEntity.class) { series = ((XYItemEntity) event.getEntity()).getSeriesIndex(); } else if (entity.getClass() == LegendItemEntity.class) { LegendItemEntity legendEntity = (LegendItemEntity) event.getEntity(); XYDataset dataset = (XYDataset) legendEntity.getDataset(); for (int i = 0; i < dataset.getSeriesCount(); i++) { if (dataset.getSeriesKey(i).equals(legendEntity.getSeriesKey())) { series = i; break; } } } if (series != -1) { XYItemRenderer renderer = getChart().getXYPlot().getRenderer(); Stroke oldHighlight = renderer.getSeriesStroke(series); // clear existing highlights ((AbstractRenderer) getChart().getXYPlot().getRenderer()).clearSeriesStrokes(false); // toggle series stroke if (oldHighlight != SELECTED_STROKE) { renderer.setSeriesStroke(series, SELECTED_STROKE); firePropertyChange("highlightedLine", null, series); } else { renderer.setSeriesStroke(series, null); firePropertyChange("highlightedLine", series, null); } // assume whatever fired the event will repaint the chart } }