Example usage for org.jfree.chart.entity EntityCollection getEntity

List of usage examples for org.jfree.chart.entity EntityCollection getEntity

Introduction

In this page you can find the example usage for org.jfree.chart.entity EntityCollection getEntity.

Prototype

public ChartEntity getEntity(double x, double y);

Source Link

Document

Returns an entity whose area contains the specified point.

Usage

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;

}