1   /*
2    * Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton,
3    * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
4    *
5    * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
6    * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
7    * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
8    * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
9    * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10   * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
11   * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
12   * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
13   * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
14   * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
15   * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
16   * OR MODIFICATIONS.
17   * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
18   * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
19   * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
20   * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
21   */
22  
23  package de.desy.acop.demo;
24  
25  import java.awt.BorderLayout;
26  import java.awt.Color;
27  
28  import javax.swing.JPanel;
29  
30  import com.cosylab.gui.components.util.RunnerHelper;
31  
32  import de.desy.acop.chart.AcopAdapter;
33  import de.desy.acop.chart.AcopDisplayMode;
34  import de.desy.acop.chart.AcopEvent;
35  import de.desy.acop.chart.AcopGraphStyleEnum;
36  import de.desy.acop.displayers.AcopChart;
37  
38  public class AcopChartDemo3 extends JPanel {
39  	private static final long serialVersionUID = 1L;
40  	private AcopChart chart;
41  	
42  	public AcopChartDemo3() {
43  		super();
44  		initialize();
45  	}
46  	
47  	private void initialize() {
48  		setLayout(new BorderLayout());
49  		add(getAcopChart(), BorderLayout.CENTER);
50  	}
51  	
52  	private AcopChart getAcopChart() {
53  		if (chart == null) {
54  			try {
55  				chart = new AcopChart();
56  				
57  				//generate random data
58  				double[] yData = new double[1000];
59  				double[] xData = new double[1000];
60  				for (int i = 0; i < yData.length; i++) {
61  					yData[i] = Math.random()*100;
62  					xData[i] = System.currentTimeMillis()/1000 - 300 * (1. - (double)i/(yData.length-1) );
63  				}
64  				
65  				//draw data
66  				chart.setForeground(Color.BLUE);
67  				chart.setDisplayMode(AcopDisplayMode.PolyLineDots.ordinal());
68  				chart.draw(yData, xData);
69  				
70  				//set visual style
71  				chart.setXMin(System.currentTimeMillis()/1000 - 300 );
72  				chart.setXMax(System.currentTimeMillis()/1000);				
73  				chart.setGraphStyle(AcopGraphStyleEnum.TimeLin.ordinal());
74  				
75  				//set grid and cursor
76  				chart.setXGrid(true);
77  				chart.setYGrid(true);
78  				chart.setCursorMarkerMode(3);
79  				
80  				//initiate tooltips
81  				chart.addAcopListener(new AcopAdapter(){
82  					public void acopMouseMove(AcopEvent move) {
83  						chart.setToolTipText(move.getMousePositionX() + " " + move.getMousePositionY());						
84  					}					
85  				});
86  				
87  			} catch (java.lang.Throwable e) {
88  				e.printStackTrace();
89  			}
90  		}
91  		return chart;
92  	}
93  	
94  	public static void main(String[] args) {
95  		RunnerHelper.runComponent(new AcopChartDemo3(), 600,600);
96  	}
97  
98  }