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.displayers.chart;
24
25 import java.awt.Dimension;
26 import java.awt.GridBagConstraints;
27 import java.awt.GridBagLayout;
28 import java.awt.Insets;
29 import java.awt.event.ActionEvent;
30 import java.awt.event.ActionListener;
31 import javax.swing.JCheckBox;
32 import javax.swing.JComboBox;
33 import javax.swing.JLabel;
34 import javax.swing.JPanel;
35 import javax.swing.JTextField;
36 import javax.swing.SwingUtilities;
37
38 import com.cosylab.gui.components.util.RunnerHelper;
39
40 import de.desy.acop.displayers.selector.AcopComboBoxModel;
41
42
43
44
45
46
47
48
49
50
51 public class TrendSelector extends JPanel {
52
53 public static void main(String[] args) {
54 RunnerHelper.runComponent(new TrendSelector(), 440,400);
55 }
56 private static final long serialVersionUID = 1L;
57 private static final String SUBSYSTEM = "HIST";
58
59 private JLabel subsystemLabel;
60 private JLabel contextLabel;
61 private JLabel serverLabel;
62 private JLabel propertyLabel;
63 private JLabel deviceLabel;
64 private JLabel indexLabel;
65
66 private JLabel subsystemValueLabel;
67 private JTextField contextField;
68 private JTextField serverField;
69 private JTextField propertyField;
70 private JTextField deviceField;
71 private JComboBox indexCombo;
72
73 private JCheckBox enableHistoryBox;
74 private boolean historyEnabled = false;
75
76 private IndexModel indexModel;
77
78 private class IndexModel extends AcopComboBoxModel<Integer> {
79
80 private static final long serialVersionUID = 1L;
81 public IndexModel() {
82 super(Integer.class);
83 }
84
85 public void setMaxIndex(int maxIndex) {
86 removeAllElements();
87 Integer[] values = new Integer[maxIndex+1];
88 for (int i = 0; i <= maxIndex; i++) {
89 values[i] = i;
90 }
91 setElements(values);
92 if (values.length > 0) {
93 setSelectedItem(values[0]);
94 }
95 }
96 }
97
98
99
100
101
102 public TrendSelector() {
103 initialize();
104 }
105
106 private void initialize() {
107 setLayout(new GridBagLayout());
108
109 add(getEnableHistoryBox(), new GridBagConstraints(0,0,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(1,10,1,1),0,0));
110 add(getSubsystemLabel(), new GridBagConstraints(0,1,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(1,10,1,1),0,0));
111 add(getSubsystemValueLabel(), new GridBagConstraints(1,1,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL,new Insets(1,1,1,10),0,0));
112 add(getContextLabel(), new GridBagConstraints(0,2,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(1,10,1,1),0,0));
113 add(getContextField(), new GridBagConstraints(1,2,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL,new Insets(1,1,1,10),0,0));
114 add(getServerLabel(), new GridBagConstraints(0,3,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(1,10,1,1),0,0));
115 add(getServerField(), new GridBagConstraints(1,3,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL,new Insets(1,1,1,10),0,0));
116 add(getDeviceLabel(), new GridBagConstraints(0,4,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(1,10,1,1),0,0));
117 add(getDeviceField(), new GridBagConstraints(1,4,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL,new Insets(1,1,1,10),0,0));
118 add(getPropertyLabel(), new GridBagConstraints(0,5,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(1,10,1,1),0,0));
119 add(getPropertyField(), new GridBagConstraints(1,5,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL,new Insets(1,1,1,10),0,0));
120 add(getIndexLabel(), new GridBagConstraints(0,6,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(1,10,1,1),0,0));
121 add(getIndexCombo(), new GridBagConstraints(1,6,1,1,1,1,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL,new Insets(1,1,1,10),0,0));
122
123
124
125
126 }
127
128 private JCheckBox getEnableHistoryBox() {
129 if (enableHistoryBox == null) {
130 enableHistoryBox = new JCheckBox("History Enabled");
131 enableHistoryBox.addActionListener(new ActionListener() {
132 public void actionPerformed(ActionEvent e) {
133 setHistoryEnabled(enableHistoryBox.isSelected());
134 }});
135 enableHistoryBox.setSelected(true);
136 }
137
138 return enableHistoryBox;
139 }
140
141 private JLabel getSubsystemLabel() {
142 if (subsystemLabel == null) {
143 subsystemLabel = new JLabel("Subsystem");
144 subsystemLabel.setPreferredSize(new Dimension(120,21));
145 subsystemLabel.setMinimumSize(new Dimension(120,21));
146 subsystemLabel.setMaximumSize(new Dimension(120,21));
147 }
148
149 return subsystemLabel;
150 }
151
152 private JLabel getSubsystemValueLabel() {
153 if (subsystemValueLabel == null) {
154 subsystemValueLabel = new JLabel(SUBSYSTEM);
155 subsystemValueLabel.setPreferredSize(new Dimension(120,21));
156 subsystemValueLabel.setMinimumSize(new Dimension(120,21));
157 subsystemValueLabel.setMaximumSize(new Dimension(120,21));
158 }
159
160 return subsystemValueLabel;
161 }
162
163 private JLabel getContextLabel() {
164 if (contextLabel == null) {
165 contextLabel = new JLabel("Context");
166 contextLabel.setPreferredSize(new Dimension(120,21));
167 contextLabel.setMinimumSize(new Dimension(120,21));
168 contextLabel.setMaximumSize(new Dimension(120,21));
169 }
170
171 return contextLabel;
172 }
173
174 private JTextField getContextField() {
175 if (contextField == null) {
176 contextField = new JTextField();
177 contextField.setPreferredSize(new Dimension(120,21));
178 contextField.setMinimumSize(new Dimension(120,21));
179 contextField.setMaximumSize(new Dimension(120,21));
180 }
181
182 return contextField;
183 }
184
185 private JLabel getServerLabel() {
186 if (serverLabel == null) {
187 serverLabel = new JLabel("Server");
188 serverLabel.setPreferredSize(new Dimension(120,21));
189 serverLabel.setMinimumSize(new Dimension(120,21));
190 serverLabel.setMaximumSize(new Dimension(120,21));
191 }
192
193 return serverLabel;
194 }
195
196 private JTextField getServerField() {
197 if (serverField == null) {
198 serverField = new JTextField();
199 serverField.setPreferredSize(new Dimension(120,21));
200 serverField.setMinimumSize(new Dimension(120,21));
201 serverField.setMaximumSize(new Dimension(120,21));
202 }
203
204 return serverField;
205 }
206
207 private JLabel getPropertyLabel() {
208 if (propertyLabel == null) {
209 propertyLabel = new JLabel("Property");
210 propertyLabel.setPreferredSize(new Dimension(120,21));
211 propertyLabel.setMinimumSize(new Dimension(120,21));
212 propertyLabel.setMaximumSize(new Dimension(120,21));
213 }
214
215 return propertyLabel;
216 }
217
218 private JTextField getPropertyField() {
219 if (propertyField == null) {
220 propertyField = new JTextField();
221 propertyField.setPreferredSize(new Dimension(120,21));
222 propertyField.setMinimumSize(new Dimension(120,21));
223 propertyField.setMaximumSize(new Dimension(120,21));
224 }
225
226 return propertyField;
227 }
228
229 private JLabel getDeviceLabel() {
230 if (deviceLabel == null) {
231 deviceLabel = new JLabel("Device");
232 deviceLabel.setPreferredSize(new Dimension(120,21));
233 deviceLabel.setMinimumSize(new Dimension(120,21));
234 deviceLabel.setMaximumSize(new Dimension(120,21));
235 }
236
237 return deviceLabel;
238 }
239
240 private JTextField getDeviceField() {
241 if (deviceField == null) {
242 deviceField = new JTextField();
243 deviceField.setPreferredSize(new Dimension(120,21));
244 deviceField.setMinimumSize(new Dimension(120,21));
245 deviceField.setMaximumSize(new Dimension(120,21));
246 }
247
248 return deviceField;
249 }
250
251 private JLabel getIndexLabel() {
252 if (indexLabel == null) {
253 indexLabel = new JLabel("Index");
254 indexLabel.setPreferredSize(new Dimension(120,21));
255 indexLabel.setMinimumSize(new Dimension(120,21));
256 indexLabel.setMaximumSize(new Dimension(120,21));
257 }
258
259 return indexLabel;
260 }
261
262 private JComboBox getIndexCombo() {
263 if (indexCombo == null) {
264 indexCombo = new JComboBox();
265 indexCombo.setModel(getIndexModel());
266 indexCombo.setPreferredSize(new Dimension(120,21));
267 indexCombo.setMinimumSize(new Dimension(120,21));
268 indexCombo.setMaximumSize(new Dimension(120,21));
269 }
270
271 return indexCombo;
272 }
273
274 private IndexModel getIndexModel() {
275 if (indexModel == null) {
276 indexModel = new IndexModel();
277 indexModel.setElements(new Integer[]{new Integer(0)});
278 }
279
280 return indexModel;
281 }
282
283 private void enableHistoryChoosing(boolean enable) {
284 getContextField().setEnabled(enable);
285 getServerField().setEnabled(enable);
286 getDeviceField().setEnabled(enable);
287 getPropertyField().setEnabled(enable);
288 }
289
290
291
292
293
294
295 public HistoryParameters getHistoryParameters() {
296 if (!enableHistoryBox.isSelected()) return null;
297 return new HistoryParameters(
298 getContextField().getText(),
299 getServerField().getText(),
300 getDeviceField().getText(),
301 getPropertyField().getText(),
302 (Integer) getIndexCombo().getSelectedItem());
303 }
304
305
306
307
308
309
310 public void setHistoryParameters(HistoryParameters parameters) {
311 if (parameters == null) {
312 setValues(null, null, null, null);
313 }
314 else setValues(
315 parameters.getHistoryContext(),
316 parameters.getHistoryServer(),
317 parameters.getHistoryDevice(),
318 parameters.getHistoryProperty());
319 }
320
321
322
323
324
325
326
327
328
329 public void setHistoryParameters(String context, String server, String device, String property) {
330 setValues(context, server, device, property);
331 getIndexModel().setMaxIndex(0);
332
333 }
334
335 private void setValues(String context, String server, String device, String property) {
336 getContextField().setText(context == null ? "" : context);
337 getServerField().setText(server == null ? "" : server);
338 getDeviceField().setText(device == null ? "" : device);
339 getPropertyField().setText(property == null ? "" : property);
340 }
341
342
343
344
345
346
347 public void setSelectedIndex(int index) {
348 getIndexCombo().setSelectedItem(new Integer(index));
349 }
350
351
352
353
354
355
356 public void setIndexMax(final int max) {
357 SwingUtilities.invokeLater(new Runnable() {
358 public void run() {
359 getIndexModel().setMaxIndex(max);
360 }
361 });
362 }
363
364
365
366
367
368
369 public int getSelectedIndex() {
370 return getIndexCombo().getSelectedIndex();
371 }
372
373
374
375
376
377
378 public boolean isHistoryEnabled() {
379 return historyEnabled;
380 }
381
382
383
384
385
386
387 public void setHistoryEnabled(boolean historyEnabled) {
388 this.historyEnabled = historyEnabled;
389 getEnableHistoryBox().setSelected(historyEnabled);
390 enableHistoryChoosing(historyEnabled);
391 }
392
393
394 }