List of usage examples for org.jfree.chart.entity EntityCollection getEntity
public ChartEntity getEntity(double x, double y);
From source file:org.gumtree.vis.awt.time.TimePlotPanel.java
@Override public void mouseMoved(MouseEvent e) { Insets insets = getInsets();//from ww w . j a v a2 s .c o m int x = (int) ((e.getX() - insets.left) / getScaleX()); int y = (int) ((e.getY() - insets.top) / getScaleY()); EntityCollection entities = getChartRenderingInfo().getEntityCollection(); if (entities != null) { ChartEntity entity = entities.getEntity(x, y); Object[] listeners = getListeners(ChartMouseListener.class); if (getChart() != null) { XYChartMouseEvent event = new XYChartMouseEvent(getChart(), e, entity); event.setXY(getChartX(), getChartY()); // event.setSeriesIndex(seriesIndex); for (int i = listeners.length - 1; i >= 0; i -= 1) { ((ChartMouseListener) listeners[i]).chartMouseMoved(event); } } } super.mouseMoved(e); }
From source file:org.gumtree.vis.awt.time.TimePlotPanel.java
@Override public void mouseClicked(MouseEvent event) { Insets insets = getInsets();// w w w . j av a 2 s. c om int x = (int) ((event.getX() - insets.left) / getScaleX()); int y = (int) ((event.getY() - insets.top) / getScaleY()); setAnchor(new Point2D.Double(x, y)); if (getChart() == null) { return; } // getChart().setNotify(true); // force a redraw // new entity code... // if (listeners.length == 0) { // return; // } ChartEntity entity = null; if (getChartRenderingInfo() != null) { EntityCollection entities = getChartRenderingInfo().getEntityCollection(); if (entities != null) { entity = entities.getEntity(x, y); if (entity instanceof XYItemEntity) { XYItemEntity xyEntity = (XYItemEntity) entity; // XYDataset dataset = xyEntity.getDataset(); // int item = ((XYItemEntity) entity).getItem(); // chartX = dataset.getXValue(xyEntity.getSeriesIndex(), item); // chartY = dataset.getYValue(xyEntity.getSeriesIndex(), item); // Point2D screenPoint = ChartMaskingUtilities.translateChartPoint( // new Point2D.Double(chartX, chartY), getScreenDataArea(), getChart()); // if (getHorizontalAxisTrace()) { // horizontalTraceLocation = (int) screenPoint.getX(); // } // if (getVerticalAxisTrace()) { // verticalTraceLocation = (int) screenPoint.getY(); // } if ((event.getModifiers() & seriesSelectionEventMask) != 0 && (event.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) { XYDataset dataset = xyEntity.getDataset(); if (dataset instanceof IDataset) { selectSeries((IDataset) xyEntity.getDataset(), xyEntity.getSeriesIndex()); } } else if ((event.getModifiers() & maskingSelectionMask) == 0 && (event.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) { if (selectedSeriesIndex != xyEntity.getSeriesIndex()) { selectSeries(null, -1); } } } else { if (selectedSeriesIndex >= 0) { if ((event.getModifiers() & seriesSelectionEventMask) != 0 && (event.getModifiers() & maskingSelectionMask) == 0 && (event.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) { selectSeries(null, -1); } } } } } if ((event.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) { double chartX = ChartMaskingUtilities.translateScreenX(x, getScreenDataArea(), getChart()); int selectedDatasetIndex = 0; if (selectedDataset != null) { selectedDatasetIndex = getXYPlot().indexOf(selectedDataset); } double chartY = ChartMaskingUtilities.translateScreenY(y, getScreenDataArea(), getChart(), selectedDatasetIndex); setHorizontalTraceLocation(x); setVerticalTraceLocation(y); setChartX(chartX); setChartY(chartY); repaint(); } XYChartMouseEvent chartEvent = new XYChartMouseEvent(getChart(), event, entity); chartEvent.setXY(getChartX(), getChartY()); Object[] listeners = getListeners(ChartMouseListener.class); for (int i = listeners.length - 1; i >= 0; i -= 1) { ((ChartMouseListener) listeners[i]).chartMouseClicked(chartEvent); } System.out.println("chartX = " + getChartX() + ", chartY = " + getChartY()); }
From source file:de.xirp.ui.widgets.custom.XChartComposite.java
/** * Returns a string for the tooltip.//www. j av a 2 s .c o m * * @param e * the mouse event. * @return A tool tip or <code>null</code> if no tooltip is * available. */ public String getToolTipText(org.eclipse.swt.events.MouseEvent e) { String result = null; if (this.info != null) { EntityCollection entities = this.info.getEntityCollection(); if (entities != null) { Rectangle insets = getBounds(); ChartEntity entity = entities.getEntity((int) ((e.x - insets.x) / this.scaleX), (int) ((e.y - insets.y) / this.scaleY)); if (entity != null) { result = entity.getToolTipText(); } } } return result; }
From source file:de.xirp.ui.widgets.custom.XChartComposite.java
/** * @param event//ww w . j a v a 2 s . c om */ private void handleMouseEvents(Event event) { switch (event.type) { case SWT.MouseDown: Rectangle scaledDataArea = getScreenDataArea(event.x, event.y); zoomPoint = getPointInRectangle(event.x, event.y, scaledDataArea); Rectangle insets = getClientArea(); int x = (int) ((event.x - insets.x) / scaleX); int y = (int) ((event.y - insets.y) / scaleY); anchor = new Point2D.Double(x, y); chart.setNotify(true); // force a redraw canvas.redraw(); // new entity code... Object[] listeners = chartMouseListeners.getListeners(ChartMouseListener.class); if (listeners.length == 0) { return; } ChartEntity entity = null; if (info != null) { EntityCollection entities = info.getEntityCollection(); if (entities != null) { entity = entities.getEntity(x, y); } } java.awt.event.MouseEvent mouseEvent = SWTUtils.toAwtMouseEvent(event); ChartMouseEvent chartEvent = new ChartMouseEvent(getChart(), mouseEvent, entity); for (int i = listeners.length - 1; i >= 0; i -= 1) { ((ChartMouseListener) listeners[i]).chartMouseClicked(chartEvent); } break; case SWT.MouseMove: // handle axis trace if (horizontalAxisTrace || verticalAxisTrace) { horizontalTraceLineY = event.y; verticalTraceLineX = event.x; canvas.redraw(); } // handle tool tips in a simple way if (displayToolTips) { String s = getToolTipText(new MouseEvent(event)); if (s != null && !s.equals(canvas.getToolTipText())) { canvas.setToolTipText(s); } } // handle zoom box if (zoomPoint == null) { return; } scaledDataArea = getScreenDataArea(zoomPoint.x, zoomPoint.y); org.eclipse.swt.graphics.Point movingPoint = getPointInRectangle(event.x, event.y, scaledDataArea); // handle zoom boolean hZoom = false; boolean vZoom = false; if (orientation == PlotOrientation.HORIZONTAL) { hZoom = rangeZoomable; vZoom = domainZoomable; } else { hZoom = domainZoomable; vZoom = rangeZoomable; } if (hZoom && vZoom) { // selected rectangle shouldn't extend outside the // data area... zoomRectangle = new Rectangle(zoomPoint.x, zoomPoint.y, movingPoint.x - zoomPoint.x, movingPoint.y - zoomPoint.y); } else if (hZoom) { zoomRectangle = new Rectangle(zoomPoint.x, scaledDataArea.y, movingPoint.x - zoomPoint.x, scaledDataArea.height); } else if (vZoom) { zoomRectangle = new Rectangle(scaledDataArea.x, zoomPoint.y, scaledDataArea.width, event.y - zoomPoint.y); } canvas.redraw(); break; case SWT.MouseUp: if (zoomRectangle == null) { Rectangle screenDataArea = getScreenDataArea(event.x, event.y); if (screenDataArea != null) { zoomPoint = getPointInRectangle(event.x, event.y, screenDataArea); } if (popup != null && event.button == 3) { org.eclipse.swt.graphics.Point pt = canvas.toDisplay(event.x, event.y); displayPopupMenu(pt.x, pt.y); } } else { hZoom = false; vZoom = false; if (orientation == PlotOrientation.HORIZONTAL) { hZoom = rangeZoomable; vZoom = domainZoomable; } else { hZoom = domainZoomable; vZoom = rangeZoomable; } boolean zoomTrigger1 = hZoom && Math.abs(zoomRectangle.width) >= zoomTriggerDistance; boolean zoomTrigger2 = vZoom && Math.abs(zoomRectangle.height) >= zoomTriggerDistance; if (zoomTrigger1 || zoomTrigger2) { // if the box has been drawn backwards, // restore the auto bounds if ((hZoom && (zoomRectangle.x + zoomRectangle.width < zoomPoint.x)) || (vZoom && (zoomRectangle.y + zoomRectangle.height < zoomPoint.y))) { restoreAutoBounds(); } else { zoom(zoomRectangle); } canvas.redraw(); } } zoomPoint = null; zoomRectangle = null; break; default: zoomPoint = null; zoomRectangle = null; } }
From source file:org.tsho.dmc2.core.chart.jfree.DmcChartPanel.java
/** * Returns the chart entity at a given point. * <P>/*www .ja v a2s. c o m*/ * This method will return null if there is (a) no entity at the given point, or * (b) no entity collection has been generated. * * @param viewX the x-coordinate. * @param viewY the y-coordinate. * * @return the chart entity (possibly null). */ public ChartEntity getEntityForPoint(int viewX, int viewY) { ChartEntity result = null; if (this.info != null) { Insets insets = getInsets(); double x = (viewX - insets.left); double y = (viewY - insets.top); EntityCollection entities = this.info.getEntityCollection(); result = entities != null ? entities.getEntity(x, y) : null; } return result; }
From source file:org.gumtree.vis.hist2d.Hist2DPanel.java
/** * Implementation of the MouseMotionListener's method. * * @param e the event./*from ww w .j a v a 2s. c o m*/ */ public void mouseMoved(MouseEvent e) { if (getHorizontalAxisTrace()) { setHorizontalTraceLocation(e.getX()); } if (getVerticalAxisTrace()) { setVerticalTraceLocation(e.getY()); } Insets insets = getInsets(); int x = (int) ((e.getX() - insets.left) / getScaleX()); int y = (int) ((e.getY() - insets.top) / getScaleY()); ChartEntity entity = null; if (getChartRenderingInfo() != null) { EntityCollection entities = getChartRenderingInfo().getEntityCollection(); if (entities != null) { entity = entities.getEntity(x, y); } } if (entity instanceof XYItemEntity) { IDataset dataset = (IDataset) ((XYItemEntity) entity).getDataset(); int item = ((XYItemEntity) entity).getItem(); setChartX(dataset.getXValue(0, item)); setChartY(dataset.getYValue(0, item)); setChartZ(((XYZDataset) dataset).getZValue(0, item)); } if (getHorizontalAxisTrace() || getVerticalAxisTrace() || isToolTipFollowerEnabled()) { repaint(); } // if ((e.getModifiers() & maskingKeyMask) != 0) { // int cursorType = findSelectedMask(e.getX(), e.getY()); // setCursor(Cursor.getPredefinedCursor(cursorType)); // } else if (getCursor() != defaultCursor) { // setCursor(defaultCursor); // } // // we can only generate events if the panel's chart is not null // (see bug report 1556951) Object[] listeners = getListeners(ChartMouseListener.class); if (getChart() != null) { XYZChartMouseEvent event = new XYZChartMouseEvent(getChart(), e, entity); event.setXYZ(getChartX(), getChartY(), getChartZ()); for (int i = listeners.length - 1; i >= 0; i -= 1) { ((ChartMouseListener) listeners[i]).chartMouseMoved(event); } } super.mouseMoved(e); }
From source file:org.gumtree.vis.hist2d.Hist2DPanel.java
/** * Receives notification of mouse clicks on the panel. These are * translated and passed on to any registered {@link ChartMouseListener}s. * * @param event Information about the mouse event. *//*w ww . jav a 2s . c om*/ public void mouseClicked(MouseEvent event) { Insets insets = getInsets(); int x = (int) ((event.getX() - insets.left) / getScaleX()); int y = (int) ((event.getY() - insets.top) / getScaleY()); double chartX = 0; double chartY = 0; double chartZ = 0; setAnchor(new Point2D.Double(x, y)); if (getChart() == null) { return; } // this.chart.setNotify(true); // force a redraw // new entity code... // Object[] listeners = this.chartMouseListeners.getListeners( // ChartMouseListener.class); ChartEntity entity = null; if (getChartRenderingInfo() != null) { EntityCollection entities = getChartRenderingInfo().getEntityCollection(); if (entities != null) { entity = entities.getEntity(x, y); } } if (entity instanceof XYItemEntity) { IDataset dataset = (IDataset) ((XYItemEntity) entity).getDataset(); int item = ((XYItemEntity) entity).getItem(); chartX = dataset.getXValue(0, item); chartY = dataset.getYValue(0, item); chartZ = ((XYZDataset) dataset).getZValue(0, item); // System.out.println("px=" + x + ", py=" + y); // System.out.println("x=" + chartX + ", y=" + chartY + ", z=" + chartZ); // Point2D trsPoint = translateChartPoint(new Point2D.Double(chartX, chartY)); // System.out.println("tx=" + trsPoint.getX() + ", y=" + trsPoint.getY()); // if ((event.getModifiers() & maskingSelectionMask) != 0) { // selectMask(chartX, chartY); // repaint(); // } else { // if (getSelectedMask() != null && (event.getModifiers() & MouseEvent.BUTTON1_MASK) != 0 // && !getSelectedMask().getShape().contains(chartX, chartY)) { // selectMask(null); // repaint(); // } // } if ((event.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) { selectMask(chartX, chartY); repaint(); } } Object[] listeners = getListeners(ChartMouseListener.class); XYZChartMouseEvent chartEvent = new XYZChartMouseEvent(getChart(), event, entity); chartEvent.setXYZ(chartX, chartY, chartZ); for (int i = listeners.length - 1; i >= 0; i -= 1) { ((ChartMouseListener) listeners[i]).chartMouseClicked(chartEvent); } }
From source file:org.tsho.dmc2.core.chart.jfree.DmcChartPanel.java
/** * Receives notification of mouse clicks on the panel. These are * translated and passed on to any registered chart mouse click listeners. * * @param event Information about the mouse event. *//*from ww w .j av a2 s .c o m*/ public void mouseClicked(MouseEvent event) { Insets insets = getInsets(); int x = event.getX() - insets.left; int y = event.getY() - insets.top; //"Custom" mouse click handling code. One may use it for interactive work with the plots //(or follow the original framework). //Manager should be set with setManager(), and handleMouseClicked(), which //is an empty function of AbstractManager, should be overriden in the AbstractManager subclass. if (manager != null) manager.handleMouseClicked(x, y); // old 'handle click' code... chart.handleClick(x, y, this.info); // new entity code... if (this.chartMouseListeners.isEmpty()) { return; } ChartEntity entity = null; if (this.info != null) { EntityCollection entities = this.info.getEntityCollection(); if (entities != null) { entity = entities.getEntity(x, y); } } ChartMouseEvent chartEvent = new ChartMouseEvent(getChart(), event, entity); Iterator iterator = chartMouseListeners.iterator(); while (iterator.hasNext()) { ChartMouseListener listener = (ChartMouseListener) iterator.next(); listener.chartMouseClicked(chartEvent); } }
From source file:org.tsho.dmc2.core.chart.jfree.DmcChartPanel.java
/** * Implementation of the MouseMotionListener's method * * @param e the event.//w ww . j av a2 s . co m */ public void mouseMoved(MouseEvent e) { //crosshair if (this.horizontalAxisTrace && this.verticalAxisTrace && this.crosshairNotBlocked) { Rectangle2D rect = this.getScaledDataArea(); double ux = userX(e); double uy = userY(e); if (!(rect.contains(e.getX(), e.getY()) && disableCrosshairTillLeavesDisplay)) { if (disableCrosshairTillLeavesDisplay) { disableCrosshairTillLeavesDisplay = false; drawHorizontalAxisTrace(e.getX()); drawVerticalAxisTrace(e.getY()); } else { drawHorizontalAxisTrace(e.getX()); drawVerticalAxisTrace(e.getY()); if (rect.contains(e.getX(), e.getY())) { float uxf = (float) ux; float uyf = (float) uy; this.writeToStatusBar("( " + uxf + " , " + uyf + " )"); } else { this.writeToStatusBar(""); } } } } if (this.chartMouseListeners.isEmpty()) { return; } Insets insets = getInsets(); int x = e.getX() - insets.left; int y = e.getY() - insets.top; ChartEntity entity = null; if (this.info != null) { EntityCollection entities = this.info.getEntityCollection(); if (entities != null) { entity = entities.getEntity(x, y); } } ChartMouseEvent event = new ChartMouseEvent(getChart(), e, entity); Iterator iterator = chartMouseListeners.iterator(); while (iterator.hasNext()) { ChartMouseListener listener = (ChartMouseListener) iterator.next(); listener.chartMouseMoved(event); } }
From source file:org.tsho.dmc2.core.chart.jfree.DmcChartPanel.java
/** * Returns a string for the tooltip.//from w w w . j a v a 2s.c om * * @param e the mouse event. * * @return a tool tip or <code>null</code> if no tooltip is available. */ public String getToolTipText(MouseEvent e) { String result = null; if (this.info != null) { EntityCollection entities = this.info.getEntityCollection(); if (entities != null) { Insets insets = getInsets(); ChartEntity entity = entities.getEntity((int) (e.getX() - insets.left), (int) (e.getY() - insets.top)); if (entity != null) { result = entity.getToolTipText(); } } } return result; }