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.Component;
26 import java.beans.PropertyChangeEvent;
27 import java.beans.PropertyChangeListener;
28 import java.beans.PropertyEditorSupport;
29
30 import com.cosylab.gui.adapters.ConverterUtilities;
31
32 import de.desy.acop.displayers.table.AcopTableParameters;
33 import de.desy.acop.displayers.tools.MultipleAcopDisplayer;
34 import de.desy.acop.transport.ConnectionParameters;
35
36
37
38
39
40
41
42
43
44 public class TableSelectorPropertyEditor extends PropertyEditorSupport {
45
46 private TableConnectionCustomizer editor;
47
48
49
50
51 public TableSelectorPropertyEditor() {
52 super();
53 }
54
55
56
57
58
59 @Override
60 public Component getCustomEditor() {
61 if (editor == null) {
62 editor = new TableConnectionCustomizer();
63 editor.setDisplayerParameters((AcopTableParameters[]) getValue());
64 editor.addPropertyChangeListener(MultipleAcopDisplayer.DISPLAYER_PARAMETERS_PROPERTY,
65 new PropertyChangeListener() {
66 public void propertyChange(PropertyChangeEvent evt) {
67 setValueSilently(editor.getDisplayerParameters());
68 }
69 });
70 }
71 return editor;
72 }
73
74
75
76
77
78 @Override
79 public String getJavaInitializationString() {
80 AcopTableParameters[] params = (AcopTableParameters[]) getValue();
81 StringBuffer buffer = new StringBuffer();
82 buffer.append("new de.desy.acop.displayers.table.AcopTableParameters[]{");
83 ConnectionParameters cp;
84 if (params != null) {
85 for (AcopTableParameters p : params) {
86 cp = p.getConnectionParameters();
87 buffer.append("new de.desy.acop.displayers.table.AcopTableParameters(");
88 buffer.append("new de.desy.acop.transport.ConnectionParameters(\""
89 + cp.getRemoteName()
90 + "\",de.desy.acop.transport.AccessMode."
91 + cp.getAccessMode() + ", " + cp.getAccessRate() + "," + cp.getPropertySize() + "," + SelectorUtilities.getExtendedDataString(cp) + "),");
92 buffer.append("de.desy.acop.displayers.table.TableDisplayType."+p.getColumnType() +
93 (p.getConverter() == null ? ", null" : ", " +
94 ConverterUtilities.getInitializationString(p.getConverter())) + "),");
95 }
96 }
97 return buffer.toString() + "}";
98 }
99
100
101
102
103
104 @Override
105 public boolean supportsCustomEditor() {
106 return true;
107 }
108
109
110
111
112
113
114 @Override
115 public String getAsText() {
116 AcopTableParameters[] params = (AcopTableParameters[]) getValue();
117 if (params == null || params.length == 0) return "";
118 StringBuffer buffer = new StringBuffer();
119 for (AcopTableParameters cp : params) {
120 buffer.append(cp.toString() + ";");
121 }
122 return buffer.toString();
123 }
124
125
126 private void setValueSilently(Object value) {
127 super.setValue(value);
128 }
129
130
131
132
133
134 @Override
135 public void setValue(Object value) {
136 super.setValue(value);
137 if (editor != null) {
138 editor.setDisplayerParameters((AcopTableParameters[]) value);
139 }
140 }
141 }
142
143