List of usage examples for org.jfree.chart.event ChartChangeEventType GENERAL
ChartChangeEventType GENERAL
To view the source code for org.jfree.chart.event ChartChangeEventType GENERAL.
Click Source Link
From source file:org.yccheok.jstock.gui.charting.InvestmentFlowChartJDialog.java
private void addChangeListener(ChartPanel chartPanel) { chartPanel.getChart().addChangeListener(new ChartChangeListener() { @Override//www .j a v a 2 s . c o m public void chartChanged(ChartChangeEvent event) { if (event.getType() == ChartChangeEventType.GENERAL) { // Sequence is important. We will use invest information box as master. // ROI information box will be adjusted accordingly. investmentFlowLayerUI.updateInvestPoint(); investmentFlowLayerUI.updateROIPoint(); } } }); }
From source file:statistic.graph.Controller.java
public void notify(DiagramEvent event) { LOGGER.entering("Controller", "notify", event); DiagramData data = event.getDiagram(); if (data == null) { return;/*from w w w .j a v a 2 s . c o m*/ } if (event instanceof DiagramChangedEvent) { ChartPanel chartPanel = chartPanels.get(data); if (chartPanel != null) { if (event instanceof DiagramTitleChangedEvent) { chartPanel.getChart().setTitle(((DiagramTitleChangedEvent) event).getNewTitle()); } else if (event instanceof DiagramXAxisLabelChangedEvent) { chartPanel.getChart().getXYPlot().getDomainAxis() .setLabel(((DiagramXAxisLabelChangedEvent) event).getNewXAxisLabel()); } else if (event instanceof DiagramYAxisLabelChangedEvent) { chartPanel.getChart().getXYPlot().getRangeAxis() .setLabel(((DiagramYAxisLabelChangedEvent) event).getNewYAxisLabel()); } else { throw new AssertionError("This should not happen."); } chartPanel.chartChanged( new ChartChangeEvent(event, chartPanel.getChart(), ChartChangeEventType.GENERAL)); } } else if (event instanceof DiagramSelectionChangedEvent) { } else { if (event instanceof DiagramAddedEvent) { if (data.getType() == DiagramType.TABLE) { JTable table = createTable(data); JScrollPane pane = new JScrollPane(table); pane.setPreferredSize(new Dimension(scrollPane.getWidth() / 2 - 14, 300)); tableScrollPanes.put(data, pane); contentPane.add(pane); } else { ChartPanel chartPanel = createChartPanel(data); //chartPanel.setPreferredSize(new Dimension(scrollPane.getWidth() / 2 - 14, 300)); chartPanels.put(data, chartPanel); contentPane.add(chartPanel); } } else if (event instanceof DiagramRemovedEvent) { if (data.getType() == DiagramType.TABLE) { JScrollPane pane = tableScrollPanes.remove(data); contentPane.remove(pane); } else { ChartPanel chartPanel = chartPanels.remove(data); contentPane.remove(chartPanel); } } else if (event instanceof DiagramSequenceChangedEvent) { DiagramData data2 = ((DiagramSequenceChangedEvent) event).getDiagram2(); Component component1 = getComponent(data); LOGGER.finest("1. Komponente: " + component1); Component component2 = getComponent(data2); LOGGER.finest("2. Komponente: " + component2); int index = 0; for (Component component : contentPane.getComponents()) { if (component == component1) { break; } index++; } LOGGER.finest("1. Komponente befindet sich an Index: " + index); LOGGER.finest("Entferne 2. Komponente"); contentPane.remove(component2); LOGGER.finest("Fge 2. Komponent an Index " + index + " wieder ein."); contentPane.add(component2, index); } else if (event instanceof DiagramTypeChangedEvent) { Component component = null; if (chartPanels.containsKey(data)) { component = chartPanels.get(data); } else if (tableScrollPanes.containsKey(data)) { component = tableScrollPanes.get(data); } int index = 0; for (Component c : contentPane.getComponents()) { if (c == component) { break; } index++; } contentPane.remove(component); if (component instanceof ChartPanel) { chartPanels.remove(data); } else if (component instanceof JScrollPane) { tableScrollPanes.remove(data); } if (data.getType() == DiagramType.TABLE) { JTable table = createTable(data); JScrollPane pane = new JScrollPane(table); pane.setPreferredSize(new Dimension(scrollPane.getWidth() / 2 - 14, 300)); component = pane; tableScrollPanes.put(data, pane); } else { ChartPanel panel = createChartPanel(data); component = panel; chartPanels.put(data, panel); } contentPane.add(component, index); } else { throw new AssertionError("This should not happen."); } scrollPane.validate(); scrollPane.repaint(); } }
From source file:com.android.ddmuilib.log.event.EventDisplay.java
Control createCompositeChart(final Composite parent, EventLogParser logParser, String title) { mChart = ChartFactory.createTimeSeriesChart(null, null /* timeAxisLabel */, null /* valueAxisLabel */, null, /* dataset. set below */ true /* legend */, false /* tooltips */, false /* urls */); // get the font to make a proper title. We need to convert the swt font, // into an awt font. Font f = parent.getFont();/* ww w.j av a 2 s . c o m*/ FontData[] fData = f.getFontData(); // event though on Mac OS there could be more than one fontData, we'll only use // the first one. FontData firstFontData = fData[0]; java.awt.Font awtFont = SWTUtils.toAwtFont(parent.getDisplay(), firstFontData, true /* ensureSameSize */); mChart.setTitle(new TextTitle(title, awtFont)); final XYPlot xyPlot = mChart.getXYPlot(); xyPlot.setRangeCrosshairVisible(true); xyPlot.setRangeCrosshairLockedOnData(true); xyPlot.setDomainCrosshairVisible(true); xyPlot.setDomainCrosshairLockedOnData(true); mChart.addChangeListener(new ChartChangeListener() { @Override public void chartChanged(ChartChangeEvent event) { ChartChangeEventType type = event.getType(); if (type == ChartChangeEventType.GENERAL) { // because the value we need (rangeCrosshair and domainCrosshair) are // updated on the draw, but the notification happens before the draw, // we process the click in a future runnable! parent.getDisplay().asyncExec(new Runnable() { @Override public void run() { processClick(xyPlot); } }); } } }); mChartComposite = new ChartComposite(parent, SWT.BORDER, mChart, ChartComposite.DEFAULT_WIDTH, ChartComposite.DEFAULT_HEIGHT, ChartComposite.DEFAULT_MINIMUM_DRAW_WIDTH, ChartComposite.DEFAULT_MINIMUM_DRAW_HEIGHT, 3000, // max draw width. We don't want it to zoom, so we put a big number 3000, // max draw height. We don't want it to zoom, so we put a big number true, // off-screen buffer true, // properties true, // save true, // print true, // zoom true); // tooltips mChartComposite.addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { mValueTypeDataSetMap.clear(); mDataSetCount = 0; mOccurrenceDataSet = null; mChart = null; mChartComposite = null; mValueDescriptorSeriesMap.clear(); mOcurrenceDescriptorSeriesMap.clear(); } }); return mChartComposite; }
From source file:org.yccheok.jstock.gui.charting.ChartJDialog.java
/** * Returns chart change listener, which will be responsible for handling * zooming event./*from w w w. j a v a 2s.c o m*/ * * @return chart change listener, which will be responsible for handling * zooming event */ private ChartChangeListener getChartChangeListner() { return new ChartChangeListener() { @Override public void chartChanged(ChartChangeEvent event) { // Is weird. This works well for zoom-in. When we add new CCI or // RIS. This event function will be triggered too. However, the // returned draw area will always be the old draw area, unless // you move your move over. // Even I try to capture event.getType() == ChartChangeEventType.NEW_DATASET // also doesn't work. if (event.getType() == ChartChangeEventType.GENERAL) { ChartJDialog.this.chartLayerUI.updateTraceInfos(); // Re-calculating high low value. ChartJDialog.this.updateHighLowJLabels(); } } }; }