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
27 import javax.swing.DefaultListCellRenderer;
28 import javax.swing.JList;
29 import javax.swing.ListCellRenderer;
30
31 import com.cosylab.gui.adapters.Converter;
32
33 import de.desy.acop.displayers.table.AcopTableParameters;
34 import de.desy.acop.displayers.table.TableColumnType;
35 import de.desy.acop.displayers.tools.MultipleAcopDisplayer;
36 import de.desy.acop.transport.ConnectionParameters;
37
38
39
40
41
42
43
44
45
46
47 public class TableConnectionCustomizer extends MultipleConnectionCustomizer<AcopTableParameters> {
48
49
50 private static final long serialVersionUID = 4596748128425127898L;
51 private TableCustomizerPanel tableCustomizerPanel;
52 private SelectorGUI selector;
53
54 protected class AcopTableCellRenderer extends DefaultListCellRenderer {
55
56 private static final long serialVersionUID = 7937185460891053942L;
57
58
59
60
61
62 @Override
63 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
64 if (value instanceof AcopTableParameters) {
65 value = ((AcopTableParameters)value).getConnectionParameters() + "; " + ((AcopTableParameters)value).getColumnType() + (((AcopTableParameters)value).getConverter() != null ? "; Converter" : "");
66 }
67
68 return super.getListCellRendererComponent(list, value, index, isSelected,
69 cellHasFocus);
70 }
71 }
72
73 public TableConnectionCustomizer() {
74 super();
75 setConverterTabEnabled(true);
76 }
77
78
79
80
81
82 @Override
83 protected ListCellRenderer getListRenderer() {
84 return new AcopTableCellRenderer();
85 }
86
87
88
89
90
91 @Override
92 protected AcopTableParameters generateParameters() {
93 Converter c=null;
94 try {
95 c= getConverterPanel().getConverter();
96 if (c!=null) {
97 c= (Converter)c.clone();
98 }
99 } catch (CloneNotSupportedException e) {
100 e.printStackTrace();
101 }
102 return new AcopTableParameters(
103 getSelectorGUI().getConnectionParameters(),
104 getTableCustomizerPanel().getType(),
105 c,
106 getTableCustomizerPanel().getName());
107 }
108
109
110
111
112
113 @Override
114 protected MultipleDisplayerAbstractSettingsPanel<AcopTableParameters> getSettingsPanel() {
115 return getTableCustomizerPanel();
116 }
117
118 private TableCustomizerPanel getTableCustomizerPanel() {
119 if (tableCustomizerPanel == null) {
120 tableCustomizerPanel = new TableCustomizerPanel();
121 }
122 return tableCustomizerPanel;
123 }
124
125
126
127
128
129 @Override
130 protected SelectorGUI getSelectorGUI() {
131 if (selector == null) {
132 selector = super.getSelectorGUI();
133 selector.addSelectorGUIListener(new SelectorGUIListener() {
134 public void selectionChanged(SelectorGUIEvent e) {
135 ConnectionParameters parameters = selector.getConnectionParameters();
136 if (parameters.getDeviceName().contains("*") ||
137 parameters.getDeviceProperty().contains("*")) {
138 getTableCustomizerPanel().setType(TableColumnType.STRING);
139 }
140 getTableCustomizerPanel().setName(parameters.getRemoteName());
141 }
142 });
143 }
144
145 return super.getSelectorGUI();
146 }
147
148
149
150
151
152 @Override
153 public AcopTableParameters[] getDisplayerParameters() {
154 AcopTableParameters[] p = new AcopTableParameters[displayerParameters.size()];
155 return displayerParameters.toArray(p);
156 }
157 }
158
159
160