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 }