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.selector;
24
25 import java.awt.Color;
26 import java.awt.Component;
27 import java.beans.PropertyChangeEvent;
28 import java.beans.PropertyChangeListener;
29 import java.beans.PropertyEditorSupport;
30
31 import com.cosylab.gui.adapters.ConverterUtilities;
32
33 import de.desy.acop.displayers.tools.AcopGraphParameters;
34 import de.desy.acop.displayers.tools.MultipleAcopDisplayer;
35 import de.desy.acop.transport.ConnectionParameters;
36
37
38
39
40
41
42
43 public class ChartSelectorPropertyEditor extends PropertyEditorSupport {
44
45 private ChartConnectionCustomizer editor;
46
47
48
49
50 public ChartSelectorPropertyEditor() {
51 super();
52 }
53
54
55
56
57
58 @Override
59 public Component getCustomEditor() {
60 if (editor == null) {
61 editor = new ChartConnectionCustomizer();
62 editor.setDisplayerParameters((AcopGraphParameters[]) getValue());
63 editor.addPropertyChangeListener(MultipleAcopDisplayer.DISPLAYER_PARAMETERS_PROPERTY,
64 new PropertyChangeListener() {
65 public void propertyChange(PropertyChangeEvent evt) {
66 setValueSilently(editor.getDisplayerParameters());
67 }
68 });
69 }
70 return editor;
71 }
72
73
74
75
76
77 @Override
78 public String getJavaInitializationString() {
79 AcopGraphParameters[] params = (AcopGraphParameters[]) getValue();
80 StringBuffer buffer = new StringBuffer();
81 buffer.append("new de.desy.acop.displayers.tools.AcopGraphParameters[]{");
82 ConnectionParameters cp;
83 Color color;
84 if (params != null) {
85 for (AcopGraphParameters p : params) {
86 cp = p.getConnectionParameters();
87 color = p.getColor();
88 buffer.append("new de.desy.acop.displayers.tools.AcopGraphParameters(");
89 buffer.append("new de.desy.acop.transport.ConnectionParameters(\""
90 + cp.getRemoteName()
91 + "\",de.desy.acop.transport.AccessMode."
92 + cp.getAccessMode() + ", " + cp.getAccessRate() + "," + cp.getPropertySize() + "," + SelectorUtilities.getExtendedDataString(cp) + "),");
93 if (color!=null) {
94 buffer.append("new java.awt.Color("+color.getRGB() + "),");
95 } else {
96 buffer.append("null,");
97 }
98 buffer.append(p.getFFT() + "," + p.getDrawStyle() + ","+p.getMode()+","+ p.getWidth() + "," + p.isTrend() + "," + p.getTrendLength());
99 if (p.getConverter() != null){
100 buffer.append(", " + ConverterUtilities.getInitializationString(p.getConverter()));
101 }
102 else {
103 buffer.append(", null");
104 }
105 buffer.append("),");
106
107 }
108 }
109 return buffer.toString() + "}";
110 }
111
112
113
114
115
116 @Override
117 public boolean supportsCustomEditor() {
118 return true;
119 }
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145 @Override
146 public String getAsText() {
147 AcopGraphParameters[] params = (AcopGraphParameters[]) getValue();
148 if (params == null || params.length == 0) return "";
149 StringBuffer buffer = new StringBuffer();
150 for (AcopGraphParameters cp : params) {
151 buffer.append(cp.toString() + ";");
152 }
153 return buffer.toString();
154 }
155
156
157 private void setValueSilently(Object value) {
158 super.setValue(value);
159 }
160
161
162
163
164
165 @Override
166 public void setValue(Object value) {
167 super.setValue(value);
168 if (editor != null) {
169 editor.setDisplayerParameters((AcopGraphParameters[]) value);
170 }
171 }
172 }
173
174