/* * CoordinateViewChart.java of project jchart2d, a demo that uses * a ChartCoordinateView to display the position of the mouse over the chart. * * Copyright (c) 2007 - 2011 Achim Westermann, Achim.Westermann@gmx.de * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * If you modify or optimize the code in a useful way please let me know. * Achim.Westermann@gmx.de */ package info.monitorenter.gui.chart.demos; import info.monitorenter.gui.chart.Chart2D; import info.monitorenter.gui.chart.ITrace2D; import info.monitorenter.gui.chart.controls.LayoutFactory; import info.monitorenter.gui.chart.io.AStaticDataCollector; import info.monitorenter.gui.chart.io.PropertyFileStaticDataCollector; import info.monitorenter.gui.chart.pointpainters.PointPainterDisc; import info.monitorenter.gui.chart.traces.Trace2DLtd; import info.monitorenter.gui.chart.views.ChartCoordinateView; import info.monitorenter.gui.chart.views.ChartPanel; import java.awt.Container; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import javax.swing.JFrame; /** * A demo that uses a * {@link info.monitorenter.gui.chart.views.ChartCoordinateView} to display the * position of the mouse over the chart. * <p> * * @author <a href="mailto:Achim.Westermann@gmx.de">Achim Westermann</a> * @version $Revision: 1.8 $ */ public class CoordinateViewChart extends JFrame { /** * Generated <code>serial version UID</code>. * <p> */ private static final long serialVersionUID = 1195707820931595997L; /** * Demo application startup method. * <p> * * @param args * ignored. * @throws IOException * if loading data for the demo chart fails. */ public static void main(final String[] args) throws IOException { Chart2D chart = new Chart2D(); chart.enablePointHighlighting(true); chart.setToolTipType(Chart2D.ToolTipType.VALUE_SNAP_TO_TRACEPOINTS); ITrace2D trace = new Trace2DLtd(400); AStaticDataCollector collector = new PropertyFileStaticDataCollector(trace, CoordinateViewChart.class.getResourceAsStream("data.properties")); chart.addTrace(trace); trace.setPointHighlighter(new PointPainterDisc(10)); collector.collectData(); new CoordinateViewChart(chart); } /** The chart to display and query for coordinates. */ private Chart2D m_chart; /** * Creates an instance that displays the given chart and a * {@link ChartCoordinateView} to show the coordinates of the mouse cursor * over the chart. * <p> * * @param chart * the chart to display and sshow the coordinates of the mouse cursor * over it. */ public CoordinateViewChart(final Chart2D chart) { super("View coordinates"); this.m_chart = chart; ChartCoordinateView viewChartValue = new ChartCoordinateView(this.m_chart); // listen for basic propery changes of the chart: new LayoutFactory.BasicPropertyAdaptSupport(viewChartValue, this.m_chart,LayoutFactory.BasicPropertyAdaptSupport.RemoveAsListenerFromComponentNever.getInstance()); Container contentPane = this.getContentPane(); contentPane.setLayout(new GridBagLayout()); new LayoutFactory.BasicPropertyAdaptSupport(contentPane, this.m_chart,LayoutFactory.BasicPropertyAdaptSupport.RemoveAsListenerFromComponentNever.getInstance()); // chart: use space GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.gridheight = 1; gbc.gridwidth = 1; gbc.weightx = 1; gbc.weighty = 1.0; gbc.insets.bottom = 8; gbc.anchor = GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.BOTH; contentPane.add(new ChartPanel(this.m_chart), gbc); // coordinate view: stay small gbc.gridy = 1; gbc.weighty = 0.0; gbc.insets.bottom = 0; gbc.anchor = GridBagConstraints.NORTH; gbc.fill = GridBagConstraints.NONE; contentPane.add(viewChartValue, gbc); this.addWindowListener(new WindowAdapter() { /** * @see java.awt.event.WindowAdapter#windowClosing(java.awt.event.WindowEvent) */ @Override public void windowClosing(final WindowEvent e) { System.exit(0); } }); this.setSize(new Dimension(400, 300)); this.setVisible(true); } }