Example usage for org.jfree.chart ChartMouseEvent getTrigger

List of usage examples for org.jfree.chart ChartMouseEvent getTrigger

Introduction

In this page you can find the example usage for org.jfree.chart ChartMouseEvent getTrigger.

Prototype

public MouseEvent getTrigger() 

Source Link

Document

Returns the mouse event that triggered this event.

Usage

From source file:net.sf.maltcms.chromaui.charts.events.ChartPanelMouseListener.java

/**
 *
 * @param arg0/*www .  j a v  a 2s . c o m*/
 */

@Override
public void chartMouseClicked(final ChartMouseEvent arg0) {
    final ChartPanelMouseListener cpml = this;
    if (arg0.getEntity() != null) {
        if (arg0.getEntity() instanceof XYItemEntity) {
            XYItemEntity xyie = (XYItemEntity) arg0.getEntity();

            if (arg0.getTrigger().getButton() == MouseEvent.BUTTON1) {
                //                
                if (arg0.getTrigger().isAltDown() && arg0.getTrigger().isShiftDown()) {
                    //                        System.out.println("Item removed");
                    fireEvent(new XYItemEntityRemovedEvent((XYItemEntity) arg0.getEntity(), cpml));
                } else if (arg0.getTrigger().isAltDown()) {
                    //                        System.out.println("Item added");
                    fireEvent(new XYItemEntityAddedEvent((XYItemEntity) arg0.getEntity(), cpml));
                } else {
                    setTarget(arg0);
                    //                        System.out.println("Item clicked");
                    fireEvent(new XYItemEntityClickedEvent((XYItemEntity) arg0.getEntity(), cpml));
                }
            }
        } else if (arg0.getEntity() instanceof LegendItemEntity) {
            JPopupMenu jpm = new JPopupMenu();
            final LegendItemEntity lie = (LegendItemEntity) arg0.getEntity();
            Dataset ds = lie.getDataset();
            Comparable skey = lie.getSeriesKey();
            Plot plot = arg0.getChart().getPlot();
            if (plot instanceof XYPlot) {
                XYPlot xyplot = arg0.getChart().getXYPlot();
                if (xyplot.getSeriesCount() > 1) {
                    XYDataset xyds = (XYDataset) ds;
                    XYItemRenderer xyir = xyplot.getRendererForDataset(xyds);

                    xyir.setSeriesVisible(xyds.indexOf(skey), !xyir.isSeriesVisible(xyds.indexOf(skey)));
                    xyir.setSeriesVisibleInLegend(xyds.indexOf(skey), Boolean.TRUE);
                }
            } else if (plot instanceof CategoryPlot) {
                CategoryPlot cplot = arg0.getChart().getCategoryPlot();
                if (cplot.getDatasetCount() > 1) {
                    CategoryDataset cds = (CategoryDataset) ds;
                    CategoryItemRenderer xyir = cplot.getRendererForDataset(cds);
                    int seriesIndex = cds.getColumnIndex(skey);
                    if (seriesIndex == -1) {
                        seriesIndex = cds.getRowIndex(skey);
                    }
                    xyir.setSeriesVisible(seriesIndex, !xyir.isSeriesVisible(seriesIndex));
                    xyir.setSeriesVisibleInLegend(seriesIndex, Boolean.TRUE);
                }
            }
            //                AbstractAction hse = new AbstractAction("Hide") {
            //
            //                    @Override
            //                    public void actionPerformed(ActionEvent ae) {
            //                        
            //                    }
            //                };
            //                AbstractAction hse = new AbstractAction("Show") {
            //
            //                    @Override
            //                    public void actionPerformed(ActionEvent ae) {
            //                        
            //                    }
            //                };
            //                AbstractAction hse = new AbstractAction("Remove") {
            //
            //                    @Override
            //                    public void actionPerformed(ActionEvent ae) {
            //                        
            //                    }
            //                };
        }
    }
}

From source file:org.griphyn.vdl.karajan.monitor.monitors.swing.GraphPanel.java

@Override
public void chartMouseClicked(ChartMouseEvent e) {
    if (isPointWithinChartArea(e.getTrigger().getX(), e.getTrigger().getY())) {
        enableTooltip(valueFromPosition(e));
    }//from w  w  w .  ja v  a2 s  .co m
}

From source file:com.sdk.connector.chart.TimeDomainRenderer.java

@Override
public void chartMouseClicked(ChartMouseEvent cme) {
    ChartEntity chartentity = cme.getEntity();
    //JOptionPane.showMessageDialog(null,chartentity.getClass(), "",JOptionPane.CANCEL_OPTION);

    if (cme.getEntity() instanceof PlotEntity) {
        if (chartentity != null) {
            Point2D p = chartPanel.translateScreenToJava2D(cme.getTrigger().getPoint());
            final Rectangle2D plotArea = chartPanel.getChartRenderingInfo().getPlotInfo().getDataArea();
            double chartX = plot.getDomainAxis().java2DToValue(p.getX(), plotArea, plot.getDomainAxisEdge());
            double chartY = plot.getRangeAxis().java2DToValue(p.getY(), plotArea, plot.getRangeAxisEdge());

            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis((long) chartX);
            createAnnotation(formatter.format(calendar.getTime()), chartX, chartY);
        } else {// w w w  . jav  a  2 s .c  om

        }
    }
}

From source file:ec.ui.view.RevisionSaSeriesView.java

private void showRevisionPopup(ChartMouseEvent e) {
    XYItemEntity entity = (XYItemEntity) e.getEntity();
    TsPeriod start = firstPeriod.plus(entity.getSeriesIndex());
    popup.setTsData(history_.tsRevision(info_, start, start), null);
    Point p = e.getTrigger().getLocationOnScreen();
    p.translate(3, 3);//from w w w .j a v  a2  s. c  o  m
    popup.setLocation(p);
    popup.setChartTitle(info_.toUpperCase() + "[" + start.toString() + "] Revisions");
    popup.setVisible(true);
}

From source file:de.cebitec.readXplorer.plotting.MouseActions.java

@Override
public void chartMouseClicked(ChartMouseEvent cme) {
    if (cme.getEntity() instanceof XYItemEntity) {
        XYItemEntity xyitem = (XYItemEntity) cme.getEntity(); // get clicked entity
        XYSeriesCollection dataset = (XYSeriesCollection) xyitem.getDataset(); // get data set
        int itemIndex = xyitem.getItem();
        int seriesIndex = xyitem.getSeriesIndex();
        PlotDataItem clickedItem = (PlotDataItem) dataset.getSeries(seriesIndex).getDataItem(itemIndex);
        showPosition(clickedItem.getFeature());
        selectedItem = clickedItem;/* w w  w.  ja v a2s.  com*/
        selectedPoint = cme.getTrigger().getPoint();
    }
}

From source file:org.griphyn.vdl.karajan.monitor.monitors.swing.GraphPanel.java

@Override
public void chartMouseMoved(ChartMouseEvent e) {
    disableToolTip();//from   w  w w  . j  a  v  a  2 s.c o  m

    if (isPointWithinChartArea(e.getTrigger().getX(), e.getTrigger().getY())) {
        chart.getXYPlot().setDomainCrosshairVisible(true);
        double vx = valueFromPosition(e);
        chart.getXYPlot().setDomainCrosshairValue(vx);
        scheduleTooltipDisplay(vx);
    } else {
        chart.getXYPlot().setDomainCrosshairVisible(false);
        synchronized (this) {
            if (tooltipTimerTask != null) {
                tooltipTimerTask.cancel();
            }
        }
    }
}

From source file:org.mwc.cmap.grideditor.chart.DataPointsDragTracker.java

public void chartMouseMoved(final ChartMouseEvent event) {
    if (!myDragSubject.isEmpty()) {
        myChartPanel.forgetZoomPoints();

        // Rectangle clientArea = myChartPanel.getClientArea();
        // int screenX = event.getTrigger().getX() - clientArea.x;
        // int screenY = event.getTrigger().getY() - clientArea.y;

        // [IM] don't bother with sorting out the client area offset
        // - we've stopped using it in the FixedChartComposite calling method
        final int screenX = event.getTrigger().getX();
        final int screenY = event.getTrigger().getY();

        // deliberately switch axes for following line, now that we've switched
        // the axes to put time
        // down the LH side.
        final Point2D point2d = new Point2D.Double(screenY, screenX);
        final XYPlot xyplot = myChartPanel.getChart().getXYPlot();
        final ChartRenderingInfo renderingInfo = myChartPanel.getChartRenderingInfo();
        Rectangle2D dataArea = renderingInfo.getPlotInfo().getDataArea();

        // WORKAROUND: when the grid graph gets really wide, the labels on the
        // y-axis get stretched.
        // but, the dataArea value doesn't reflect this.
        // So, get the width values from the getScreenDataArea method - which
        // does reflect the scaling applied to the y axis.
        // - and all works well now.
        final Rectangle dataArea2 = myChartPanel.getScreenDataArea();
        dataArea = new Rectangle2D.Double(dataArea2.x, dataArea.getY(), dataArea2.width, dataArea.getHeight());

        final ValueAxis domainAxis = xyplot.getDomainAxis();
        final RectangleEdge domainEdge = xyplot.getDomainAxisEdge();
        final ValueAxis valueAxis = xyplot.getRangeAxis();
        final RectangleEdge valueEdge = xyplot.getRangeAxisEdge();
        double domainX = domainAxis.java2DToValue(point2d.getX(), dataArea, domainEdge);
        final double domainY = valueAxis.java2DToValue(point2d.getY(), dataArea, valueEdge);

        if (myAllowVerticalMovesOnly) {
            domainX = myDragSubject.getDraggedItem().getXValue();
        }//  w  w  w .j  a  v  a  2 s . c om

        if (!myDragSubject.isEmpty())
            myDragSubject.setProposedValues(domainX, domainY);
        myChartPanel.redrawCanvas();
    }
}

From source file:org.griphyn.vdl.karajan.monitor.monitors.swing.GraphPanel.java

private double valueFromPosition(ChartMouseEvent e) {
    Rectangle2D chartArea = cp.getScreenDataArea();
    XYPlot plot = chart.getXYPlot();/*  w w w.  ja va  2  s.com*/
    return plot.getDomainAxis().java2DToValue(e.getTrigger().getX(), chartArea, plot.getDomainAxisEdge());
}

From source file:net.sf.eclipsecs.ui.stats.views.GraphStatsView.java

/**
 * Creates the master view containing the chart.
 * //from  w w  w .j  av  a 2s.c om
 * @param parent
 *            the parent composite
 * @return the chart composite
 */
public Composite createMasterView(Composite parent) {

    // create the date set for the chart
    mPieDataset = new GraphPieDataset();
    mPieDataset.setShowAllCategories(mShowAllCategoriesAction.isChecked());
    mGraph = createChart(mPieDataset);

    // creates the chart component
    // Composite embeddedComposite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);
    // embeddedComposite.setLayoutData(new GridData(GridData.FILL_BOTH));

    // experimental usage of JFreeChart SWT
    // the composite to harbor the Swing chart control
    ChartComposite embeddedComposite = new ChartComposite(parent, SWT.NONE, mGraph, true);
    embeddedComposite.setLayoutData(new GridData(GridData.FILL_BOTH));

    embeddedComposite.addChartMouseListener(new ChartMouseListener() {

        public void chartMouseClicked(final ChartMouseEvent event) {

            MouseEvent trigger = event.getTrigger();
            if (trigger.getButton() == MouseEvent.BUTTON1 && event.getEntity() instanceof PieSectionEntity) {

                // && trigger.getClickCount() == 2 //doubleclick not correctly detected with the SWT composite

                mMasterComposite.getDisplay().syncExec(new Runnable() {

                    public void run() {
                        mIsDrilledDown = true;
                        mCurrentDetailCategory = (String) ((PieSectionEntity) event.getEntity())
                                .getSectionKey();
                        mStackLayout.topControl = mDetailViewer.getTable();
                        mMainSection.layout();
                        mDetailViewer.setInput(mDetailViewer.getInput());

                        updateActions();
                        updateLabel();
                    }
                });
            } else {
                event.getTrigger().consume();
            }
        }

        public void chartMouseMoved(ChartMouseEvent event) {
            // NOOP
        }
    });

    return embeddedComposite;
}

From source file:com.rapidminer.gui.plotter.charts.MultipleScatterPlotter.java

@Override
public void updatePlotter() {

    prepareData();//from w  w  w.j a  v  a 2 s  .com

    JFreeChart chart = ChartFactory.createScatterPlot(null, // chart title
            null, // domain axis label
            null, // range axis label
            dataSet, // data
            PlotOrientation.VERTICAL, // orientation
            false, // include legend
            true, // tooltips
            false // URLs
    );

    if (xAxis >= 0) {
        int size = dataSet.getSeriesCount();
        chart = ChartFactory.createScatterPlot(null, // chart title
                null, // domain axis label
                null, // range axis label
                dataSet, // data
                PlotOrientation.VERTICAL, // orientation
                true, // include legend
                true, // tooltips
                false // URLs
        );

        // renderer settings
        XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) chart.getXYPlot().getRenderer();
        renderer.setBaseOutlinePaint(Color.BLACK);
        renderer.setUseOutlinePaint(true);
        renderer.setDrawOutlines(true);

        for (int i = 0; i < size; i++) {
            renderer.setSeriesShapesVisible(i, this.showPoints[plotIndexToColumnIndexMap.get(i)]);
            renderer.setSeriesLinesVisible(i, this.showLines[plotIndexToColumnIndexMap.get(i)]);
        }

        renderer.setSeriesShape(0, new Ellipse2D.Double(-3, -3, 7, 7));

        // legend settings
        LegendTitle legend = chart.getLegend();
        if (legend != null) {
            legend.setPosition(RectangleEdge.TOP);
            legend.setFrame(BlockBorder.NONE);
            legend.setHorizontalAlignment(HorizontalAlignment.LEFT);
            legend.setItemFont(LABEL_FONT);
        }
    }

    // GENERAL CHART SETTINGS

    int size = dataSet.getSeriesCount();
    if (size <= 1) {
        chart.getXYPlot().getRenderer().setSeriesPaint(0, getColorProvider().getPointColor(1.0d));
    } else {
        for (int i = 0; i < dataSet.getSeriesCount(); i++) {
            chart.getXYPlot().getRenderer().setSeriesStroke(i,
                    new BasicStroke(1.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
            chart.getXYPlot().getRenderer().setSeriesPaint(i,
                    getColorProvider().getPointColor(i / (double) (dataSet.getSeriesCount() - 1)));
        }
    }

    // set the background colors for the chart...
    chart.setBackgroundPaint(Color.WHITE);
    chart.getPlot().setBackgroundPaint(Color.WHITE);
    chart.setAntiAlias(false);

    // general plot settings
    XYPlot plot = chart.getXYPlot();
    plot.setDomainGridlinePaint(Color.LIGHT_GRAY);
    plot.setRangeGridlinePaint(Color.LIGHT_GRAY);

    // domain axis
    if (xAxis >= 0) {
        if (dataTable.isNominal(xAxis)) {
            String[] values = new String[dataTable.getNumberOfValues(xAxis)];
            for (int i = 0; i < values.length; i++) {
                values[i] = dataTable.mapIndex(xAxis, i);
            }
            plot.setDomainAxis(new SymbolAxis(dataTable.getColumnName(xAxis), values));
        } else if ((dataTable.isDate(xAxis)) || (dataTable.isDateTime(xAxis))) {
            DateAxis domainAxis = new DateAxis(dataTable.getColumnName(xAxis));
            domainAxis.setTimeZone(Tools.getPreferredTimeZone());
            plot.setDomainAxis(domainAxis);
        } else {
            if (xLogScale) {
                LogAxis domainAxis = new LogAxis(dataTable.getColumnName(xAxis));
                domainAxis.setStandardTickUnits(NumberAxis.createStandardTickUnits(Locale.US));
                plot.setDomainAxis(domainAxis);
            } else {
                NumberAxis domainAxis = new NumberAxis(dataTable.getColumnName(xAxis));
                domainAxis.setAutoRangeStickyZero(false);
                domainAxis.setAutoRangeIncludesZero(false);
                plot.setDomainAxis(domainAxis);
            }
        }
    }
    plot.getDomainAxis().setLabelFont(LABEL_FONT_BOLD);
    plot.getDomainAxis().setTickLabelFont(LABEL_FONT);

    // rotate labels
    if (isLabelRotating()) {
        plot.getDomainAxis().setTickLabelsVisible(true);
        plot.getDomainAxis().setVerticalTickLabels(true);
    }

    // range axis
    plot.getRangeAxis().setLabelFont(LABEL_FONT_BOLD);
    plot.getRangeAxis().setTickLabelFont(LABEL_FONT);

    // Chart Panel Settings
    if (panel instanceof AbstractChartPanel) {
        panel.setChart(chart);
    } else {
        panel = new AbstractChartPanel(chart, getWidth(), getHeight() - MARGIN);

        final ChartPanelShiftController controller = new ChartPanelShiftController(panel);
        panel.addMouseListener(controller);
        panel.addMouseMotionListener(controller);

        // react to mouse clicks
        // ATTENTION: ACTIVATING THIS WILL LEAD TO SEVERE MEMORY LEAKS!!! (see below)
        panel.addChartMouseListener(new ChartMouseListener() {

            @Override
            public void chartMouseClicked(ChartMouseEvent e) {
                if (e.getTrigger().getClickCount() > 1) {
                    XYItemEntity entity = (XYItemEntity) e.getEntity();
                    if (entity != null) {
                        String id = idMap.get(new SeriesAndItem(entity.getSeriesIndex(), entity.getItem()));
                        if (id != null) {
                            ObjectVisualizer visualizer = ObjectVisualizerService
                                    .getVisualizerForObject(dataTable);
                            visualizer.startVisualization(id);
                        }
                    }
                }
            }

            @Override
            public void chartMouseMoved(ChartMouseEvent e) {
            }
        });
    }

    // tooltips
    class CustomXYToolTipGenerator implements XYToolTipGenerator {

        public CustomXYToolTipGenerator() {
        }

        @Override
        public String generateToolTip(XYDataset dataset, int row, int column) {
            String id = idMap.get(new SeriesAndItem(row, column));
            if (id != null) {
                return "<html><b>Id: " + id + "</b> (" + dataset.getSeriesKey(row) + ", "
                        + Tools.formatIntegerIfPossible(dataset.getXValue(row, column)) + ", "
                        + Tools.formatIntegerIfPossible(dataset.getYValue(row, column)) + ")</html>";
            } else {
                return "<html>(" + dataset.getSeriesKey(row) + ", "
                        + Tools.formatIntegerIfPossible(dataset.getXValue(row, column)) + ", "
                        + Tools.formatIntegerIfPossible(dataset.getYValue(row, column)) + ")</html>";
            }
        }
    }

    for (int i = 0; i < dataSet.getSeriesCount(); i++) {
        plot.getRenderer().setSeriesToolTipGenerator(i, new CustomXYToolTipGenerator());
    }
}