Example usage for org.jfree.chart ChartPanel addChartMouseListener

List of usage examples for org.jfree.chart ChartPanel addChartMouseListener

Introduction

In this page you can find the example usage for org.jfree.chart ChartPanel addChartMouseListener.

Prototype

public void addChartMouseListener(ChartMouseListener listener) 

Source Link

Document

Adds a listener to the list of objects listening for chart mouse events.

Usage

From source file:velocitekProStartAnalyzer.MainWindow.java

private void createChartPanel() {
    XYSeriesCollection dataset = JDBCPointDao.dataSet;
    JFreeChart chart = createChart(dataset);
    ChartPanel chartPanel = new ChartPanel(chart, true, false, false, true, false);
    chartPanel.setMinimumDrawWidth(0);//from  w w  w.  j  a  v a 2  s  .  c  o m
    chartPanel.setMinimumDrawHeight(0);
    chartPanel.setMaximumDrawWidth(1920);
    chartPanel.setMaximumDrawHeight(1200);
    chartPanel.getPopupMenu().addSeparator();
    chartPanel.getPopupMenu().add(btnAvgSpeedChart);
    chartPanel.getPopupMenu().add(btnMedianSpeedChart);
    chartPanel.getPopupMenu().add(btnResetSpeedChart);
    chartPanel.getPopupMenu().addSeparator();
    btnMenuSaveSubmenuForChart = new JMenu("Save");
    chartPanel.getPopupMenu().add(btnMenuSaveSubmenuForChart);

    if (JDBCPointDao.points.isEmpty()) {
        btnSaveAsVCC.setEnabled(false);
    }
    saveChartAsPng(chartPanel);

    btnMenuSaveSubmenuForChart.add(btnSaveChartAsPngForChart);
    btnMenuSaveSubmenuForChart.add(btnSaveTableAsPngForChart);
    btnMenuSaveSubmenuForChart.add(btnSaveMapAsPngForChart);
    btnMenuSaveSubmenuForChart.addSeparator();
    btnMenuSaveSubmenuForChart.add(btnSaveAsVCC);
    chartPanel.addChartMouseListener(new ChartMouseListener() {

        @Override
        public void chartMouseClicked(ChartMouseEvent event) {
            Rectangle2D dataArea = chartPanel.getScreenDataArea();
            JFreeChart chart = event.getChart();
            XYPlot plot = (XYPlot) chart.getPlot();
            ValueAxis xAxis = plot.getDomainAxis();
            double x = xAxis.java2DToValue(event.getTrigger().getX(), dataArea, RectangleEdge.BOTTOM);
            // make the crosshairs disappear if the mouse is out of range
            if (!xAxis.getRange().contains(x)) {
                x = Double.NaN;
            }

            x = Math.round(x);

            if (SwingUtilities.isLeftMouseButton(event.getTrigger()) && event.getTrigger().isShiftDown()) {
                for (PointDto cord : JDBCPointDao.points) {
                    {
                        if (cord.getPointID() == x) {
                            if (pointTable.getSelectionModel() == null) {
                                for (int i = 0; i < pointTable.getModel().getRowCount(); i++) {
                                    if (pointTable.getModel().getValueAt(i, 0).equals(cord.getPointID())) {
                                        pointTable.setRowSelectionInterval(i, i);
                                    }
                                }
                            } else {
                                for (int i = 0; i < pointTable.getModel().getRowCount(); i++) {
                                    if (pointTable.getModel().getValueAt(i, 0).equals(cord.getPointID())) {
                                        pointTable.addRowSelectionInterval(pointTable.getSelectedRow(), i);
                                    }
                                }
                            }
                            pointTable.scrollRectToVisible(
                                    pointTable.getCellRect(pointTable.getSelectedRow(), 0, true));
                        }
                    }
                }
            } else {
                for (PointDto cord : JDBCPointDao.points) {
                    {
                        if (cord.getPointID() == x) {
                            if (pointTable.getSelectionModel() != null) {
                                pointTable.getSelectionModel().clearSelection();
                            }
                            for (int i = 0; i < pointTable.getModel().getRowCount(); i++) {
                                if (pointTable.getModel().getValueAt(i, 0).equals(cord.getPointID())) {
                                    pointTable.setRowSelectionInterval(i, i);
                                }
                            }
                            pointTable.scrollRectToVisible(
                                    pointTable.getCellRect(pointTable.getSelectedRow(), 0, true));
                            //MainWindow.pointTable.revalidate();                      
                        }
                    }

                }
            }
        }

        @Override
        public void chartMouseMoved(ChartMouseEvent event) {

            Rectangle2D dataArea = chartPanel.getScreenDataArea();
            JFreeChart chart = event.getChart();
            XYPlot plot = (XYPlot) chart.getPlot();
            ValueAxis xAxis = plot.getDomainAxis();
            double x = xAxis.java2DToValue(event.getTrigger().getX(), dataArea, RectangleEdge.BOTTOM);
            // make the crosshairs disappear if the mouse is out of range
            if (!xAxis.getRange().contains(x)) {
                x = Double.NaN;
            }
            double y = DatasetUtilities.findYValue(plot.getDataset(), 0, x);
            xCrosshair.setValue(x);
            yCrosshair.setValue(y);
            x = Math.round(x);
            for (PointDto cord : JDBCPointDao.points) {

                if (cord.getPointID() == x) {
                    mapPanel.map().removeMapMarker(mapPanel.getMapPoint());
                    mapPanel.setMapPoint(
                            new MapMarkerDot(null, null, cord.getPointLatidude(), cord.getPointLongtidude()));
                    mapPanel.setMapPoint(mapPanel.getMapPoint());
                    mapPanel.getMapPoint().setColor(colorMapMarkerCircle);
                    mapPanel.getMapPoint().setBackColor(colorMapMarkerHover);
                    mapPanel.map().addMapMarker(mapPanel.getMapPoint());
                }

            }
        }

    });
    XYPlot xyPlot = (XYPlot) chart.getPlot();
    ValueAxis rangeAxis = xyPlot.getRangeAxis();
    NavigableMap<Double, PointDto> pointDtoSortedSpeedMap = new TreeMap<Double, PointDto>();

    if (!JDBCPointDao.points.isEmpty()) {
        for (PointDto pointDto : JDBCPointDao.points) {
            pointDtoSortedSpeedMap.put(pointDto.getPointSpeed(), pointDto);
        }
        rangeAxis.setRange(pointDtoSortedSpeedMap.firstEntry().getKey() - 0.1,
                pointDtoSortedSpeedMap.lastEntry().getKey() + 0.1);
    }

    CrosshairOverlay crosshairOverlay = new CrosshairOverlay();
    xCrosshair = new Crosshair(Double.NaN, Color.GRAY, new BasicStroke(0f));
    xCrosshair.setLabelVisible(true);
    yCrosshair = new Crosshair(Double.NaN, Color.GRAY, new BasicStroke(0f));
    yCrosshair.setLabelVisible(true);
    crosshairOverlay.addDomainCrosshair(xCrosshair);
    crosshairOverlay.addRangeCrosshair(yCrosshair);
    chartPanel.addOverlay(crosshairOverlay);
    graphPanel.removeAll();
    graphPanel.add(chartPanel, BorderLayout.CENTER);
    graphPanel.revalidate();
    graphPanel.repaint();
    graphMapSplitPanel.revalidate();
}

From source file:search2go.UIFrame.java

private void btnFrequencyGraphActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFrequencyGraphActionPerformed
    if (currentProj.isAvaialable()) {
        if (currentProj.checkStage(3)) {
            if (gTerms.getGTerm(txtFilterGOID.getText()) == null && !("".equals(txtFilterGOID.getText())))
                javax.swing.JOptionPane.showMessageDialog(this,
                        "GO ID provded not in current dataset. Please ensure you have opened the correct project and/or used the format 'GO:#######' (without quotes)");
            else {
                try {
                    graphViewer.close();
                } catch (NullPointerException e) {
                }/*from   w w w.  j a v  a 2s. c o  m*/
                pnlChartHolder.removeAll();
                gTerms.getFilter().setFamilyFilter(gTerms.getGTerm(txtFilterGOID.getText()));
                if (!txtMinHits.getText().equals(""))
                    gTerms.getFilter().setMinFreq(Integer.parseInt(txtMinHits.getText()));
                else
                    gTerms.getFilter().setMinFreq(0);
                if (!txtMaxHits.getText().equals(""))
                    gTerms.getFilter().setMaxFreq(Integer.parseInt(txtMaxHits.getText()));
                else
                    gTerms.getFilter().setMaxFreq(-1);

                prgChart.setIndeterminate(true);

                try {
                    ProcessSequence graphSequence = gTerms.getFamilyFilterSequence(currentProj);
                    graphSequence.setTail(new ProcessSequenceEnd() {
                        @Override
                        public void run() {
                            new Thread(new Runnable() {
                                private JFreeChart barChart;
                                private DefaultCategoryDataset dataset = new DefaultCategoryDataset();

                                @Override
                                public void run() {
                                    GTermSet termSet = gTerms.getFilteredTerms();

                                    termSet.freqSort();
                                    Collections.reverse(termSet.getGTerms());
                                    for (GTerm term : termSet.getGTerms()) {
                                        dataset.addValue(term.getFrequency(), "GO Term Frequency",
                                                term.getID());
                                    }

                                    barChart = ChartFactory.createBarChart("GO Term Frequency", "GO Terms",
                                            "Frequency", dataset, PlotOrientation.VERTICAL, true, true, false);
                                    BarRenderer renderer = (BarRenderer) barChart.getCategoryPlot()
                                            .getRenderer();
                                    ChartPanel chartPanel = new ChartPanel(barChart);
                                    barChart.getCategoryPlot().setRenderer(renderer);
                                    CategoryItemLabelGenerator generator = new StandardCategoryItemLabelGenerator(
                                            "{1}", NumberFormat.getInstance());
                                    renderer.setItemLabelGenerator(generator);
                                    renderer.setItemLabelFont(new Font("SansSerif", Font.PLAIN, 12));
                                    renderer.setItemLabelsVisible(true);
                                    renderer.setPositiveItemLabelPosition(
                                            new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER,
                                                    TextAnchor.CENTER, -Math.PI / 2));
                                    chartPanel.addChartMouseListener(new TermClickListener());

                                    pnlChartHolder.add(chartPanel);
                                    pnlChartHolder.validate();
                                    prgChart.setIndeterminate(false);

                                }
                            }).start();
                        }

                    });
                    graphSequence.start();
                } catch (IOException ex) {
                    System.out.println("Coud not generate graph");
                }

            }
        } else
            javax.swing.JOptionPane.showMessageDialog(this,
                    "Identification data unavailable. Please perform identification or load a project with completed identification to continue.");
    } else
        javax.swing.JOptionPane.showMessageDialog(this,
                "Another function is currently being performed on this project, please wait until completion or manually stop the process.");
}