List of usage examples for org.jfree.chart ChartPanel addChartMouseListener
public void addChartMouseListener(ChartMouseListener listener)
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."); }