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.JLabel;
29 import javax.swing.JList;
30 import javax.swing.ListCellRenderer;
31
32 import com.cosylab.gui.adapters.Converter;
33
34 import de.desy.acop.chart.AcopDisplayMode;
35 import de.desy.acop.displayers.tools.AcopGraphParameters;
36 import de.desy.acop.displayers.tools.MultipleAcopDisplayer;
37
38
39
40
41
42
43
44
45
46
47 public class ChartConnectionCustomizer extends MultipleConnectionCustomizer<AcopGraphParameters>{
48
49 private static final long serialVersionUID = 8873830017332674294L;
50 private GraphCustomizerPanel graphCustomizerPanel;
51 private SelectorGUI selector;
52
53 protected class AcopGraphCellRenderer extends DefaultListCellRenderer {
54
55 private static final long serialVersionUID = 7937185460891053942L;
56
57 public AcopGraphCellRenderer() {
58 super();
59 setOpaque(true);
60 }
61
62
63
64
65
66 @Override
67 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
68 Component c = super.getListCellRendererComponent(list, value, index, isSelected,
69 cellHasFocus);
70
71 if (value instanceof AcopGraphParameters) {
72 c.setForeground(((AcopGraphParameters)value).getColor());
73 ((JLabel)c).setText(String.valueOf(((AcopGraphParameters)value).getConnectionParameters()) + (((AcopGraphParameters)value).getConverter() == null ? "" : "; Converter"));
74 }
75 return c;
76 }
77 }
78
79
80
81
82
83 @Override
84 protected ListCellRenderer getListRenderer() {
85 return new AcopGraphCellRenderer();
86 }
87
88
89
90
91
92 @Override
93 protected SelectorGUI getSelectorGUI() {
94 if (selector == null) {
95 selector = super.getSelectorGUI();
96 selector.addSelectorGUIListener(new SelectorGUIListener() {
97 public void selectionChanged(SelectorGUIEvent e) {
98 if (e.isSelectionComplete() && SelectorUtilities.isChannel(selector.getConnectionParameters())) {
99 getGraphCustomizerPanel().setGraphMode(AcopDisplayMode.SimpleHistogram.ordinal());
100 } else {
101 getGraphCustomizerPanel().setGraphMode(AcopDisplayMode.PolyLine.ordinal());
102 }
103 }
104 });
105 }
106
107 return super.getSelectorGUI();
108 }
109
110
111
112
113
114 @Override
115 protected AcopGraphParameters generateParameters() {
116 Converter c=null;
117 try {
118 c= getConverterPanel().getConverter();
119 if (c!=null) {
120 c= (Converter)c.clone();
121 }
122 } catch (CloneNotSupportedException e) {
123 e.printStackTrace();
124 }
125 return new AcopGraphParameters(
126 getSelectorGUI().getConnectionParameters(),
127 getGraphCustomizerPanel().getColor(),
128 getGraphCustomizerPanel().getGraphFFT(),
129 getGraphCustomizerPanel().getGraphStyle(),
130 getGraphCustomizerPanel().getGraphMode(),
131 getGraphCustomizerPanel().getGraphWidth(),
132 getGraphCustomizerPanel().isTrend(),
133 getGraphCustomizerPanel().getTrendLength(),
134 c);
135
136 }
137
138
139
140
141
142 @Override
143 protected MultipleDisplayerAbstractSettingsPanel<AcopGraphParameters> getSettingsPanel() {
144 return getGraphCustomizerPanel();
145 }
146
147 private GraphCustomizerPanel getGraphCustomizerPanel() {
148 if (graphCustomizerPanel == null) {
149 graphCustomizerPanel = new GraphCustomizerPanel();
150 }
151 return graphCustomizerPanel;
152 }
153
154
155
156
157
158 @Override
159 public AcopGraphParameters[] getDisplayerParameters() {
160 AcopGraphParameters[] p = new AcopGraphParameters[displayerParameters.size()];
161 return displayerParameters.toArray(p);
162 }
163
164
165
166
167
168 public ChartConnectionCustomizer() {
169 super();
170 setConverterTabEnabled(true);
171 }
172 }