1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  package de.desy.acop.demo;
24  
25  import java.awt.BorderLayout;
26  import java.awt.Color;
27  import java.awt.event.MouseEvent;
28  
29  import javax.swing.JPanel;
30  
31  import com.cosylab.gui.components.util.RunnerHelper;
32  
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.chart.AcopListener;
37  import de.desy.acop.displayers.AcopChart;
38  import de.desy.acop.displayers.tools.AcopGraphParameters;
39  import de.desy.acop.transport.AccessMode;
40  import de.desy.acop.transport.ConnectionParameters;
41  
42  public class AcopChartDemo2 extends JPanel {
43  
44  	private AcopChart chart;
45  	
46  	public AcopChartDemo2() {
47  		super();
48  		initialize();
49  	}
50  	
51  	private void initialize() {
52  		setLayout(new BorderLayout());
53  		add(getAcopChart(), BorderLayout.CENTER);
54  	}
55  	
56  	private AcopChart getAcopChart() {
57  		if (chart == null) {
58  			try {
59  				chart = new AcopChart();
60  				
61  				double[] yData = new double[50];
62  				double[] xData = new double[50];
63  				for (int i = 0; i < yData.length; i++) {
64  					yData[i] = Math.random()*100;
65  					xData[i] = System.currentTimeMillis()/1000 - 300 * (1. - (double)i/(yData.length-1) );
66  				}
67  				
68  				
69  				chart.setForeground(Color.BLUE);
70  				
71  				
72  				
73  				chart.setDisplayMode(AcopDisplayMode.PolyLine.ordinal());
74  				final int handle1 = chart.draw(yData, xData);
75  				
76  				chart.setDisplayMode(AcopDisplayMode.Dots.ordinal());
77  				final int handle2 = chart.draw(yData, xData);
78  				
79  				
80  				
81  				chart.setXMin(System.currentTimeMillis()/1000 - 300 );
82  				chart.setXMax(System.currentTimeMillis()/1000);				
83  				chart.setGraphStyle(AcopGraphStyleEnum.TimeLin.ordinal());
84  				
85  				new Thread(new Runnable(){
86  					public void run() {
87  						while(true) {
88  							double[] y = new double[]{Math.random()*100};
89  							double[] x = new double[]{System.currentTimeMillis()/1000};
90  							
91  							
92  							chart.appendScreen(y, handle1,x);
93  							chart.appendScreen(y, handle2,x);
94  							try {
95  								Thread.sleep(1000);
96  							} catch (InterruptedException e) {
97  								
98  								e.printStackTrace();
99  							}
100 						}
101 					}
102 				}).start();
103 				
104 				
105 				chart.addAcopListener(new AcopListener(){
106 
107 					public void acopMouseClick(AcopEvent click) {
108 						System.out.println("POS X: "+click.getMousePositionX());
109 						System.out.println("POS Y: " +click.getMousePositionY());
110 						
111 						System.out.println("Idx: "+click.getHistoIndex());
112 						
113 						
114 					}
115 
116 					public void acopMouseDoubleClick(AcopEvent doubleClick) {
117 						
118 						
119 					}
120 
121 					public void acopMouseEnter(AcopEvent enter) {
122 						
123 						
124 					}
125 
126 					public void acopMouseExit(AcopEvent exit) {
127 						
128 						
129 					}
130 
131 					public void acopMouseMove(AcopEvent move) {
132 						
133 					}
134 
135 					public void acopMousePressed(AcopEvent pressed) {
136 						
137 						
138 					}
139 
140 					public void acopMouseZoom(AcopEvent zoom) {
141 						
142 						
143 					}
144 
145 					public void acopReceive(AcopEvent receive) {
146 						
147 						
148 					}
149 					
150 				});
151 			} catch (java.lang.Throwable e) {
152 				e.printStackTrace();
153 			}
154 		}
155 		return chart;
156 	}
157 	
158 	public static void main(String[] args) {
159 		RunnerHelper.runComponent(new AcopChartDemo2(), 600,600);
160 	}
161 
162 }