1 package fr.ifremer.dali.ui.swing.content.extraction.config;
2
3 import fr.ifremer.dali.ui.swing.DaliHelpBroker;
4 import fr.ifremer.dali.ui.swing.DaliUIContext;
5 import fr.ifremer.dali.ui.swing.util.DaliUI;
6 import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
7 import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
8 import java.awt.BorderLayout;
9 import java.awt.Component;
10 import java.awt.Container;
11 import java.awt.GridBagConstraints;
12 import java.awt.Insets;
13 import java.awt.event.ActionEvent;
14 import java.awt.event.ActionListener;
15 import java.awt.event.ItemEvent;
16 import java.awt.event.ItemListener;
17 import java.util.ArrayList;
18 import java.util.HashMap;
19 import java.util.List;
20 import java.util.Map;
21 import java.util.TreeMap;
22 import javax.swing.BorderFactory;
23 import javax.swing.JButton;
24 import javax.swing.JCheckBox;
25 import javax.swing.JLabel;
26 import javax.swing.JTextField;
27 import jaxx.runtime.JAXXBinding;
28 import jaxx.runtime.JAXXContext;
29 import jaxx.runtime.JAXXObject;
30 import jaxx.runtime.JAXXObjectDescriptor;
31 import jaxx.runtime.JAXXUtil;
32 import jaxx.runtime.SwingUtil;
33 import jaxx.runtime.binding.DefaultJAXXBinding;
34 import jaxx.runtime.context.DefaultJAXXContext;
35 import jaxx.runtime.swing.Table;
36 import jaxx.runtime.swing.help.JAXXHelpUI;
37 import org.apache.commons.logging.Log;
38 import org.apache.commons.logging.LogFactory;
39 import static org.nuiton.i18n.I18n.t;
40
41 public class ExtractionConfigUI extends Table implements JAXXHelpUI<DaliHelpBroker>, DaliUI<ExtractionConfigUIModel, ExtractionConfigUIHandler>, JAXXObject {
42
43
44
45
46
47 public static final String BINDING_FILL_ZERO_CHECK_BOX_ENABLED = "fillZeroCheckBox.enabled";
48 public static final String BINDING_FILL_ZERO_CHECK_BOX_SELECTED = "fillZeroCheckBox.selected";
49 public static final String BINDING_PMFM_PRESET_BUTTON_ENABLED = "pmfmPresetButton.enabled";
50
51
52
53
54
55 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1UyW4TQRCtmNjZWBMSBQECAojkwPgDgiBksUhkFpEgRVhCtD3tuKE93fSUyUQRiE/gE+DOBYkbJ8SBMwcuiF9AiANXRHWP7YnjCbEQPozG1f1evaqpem++QzY0cO4RiyLPNAIUde6tXF9fv11+xCu4yMOKERqVgfjXl4FMCUb8djxEOF8qWni+Cc8vqLpWAQ92oGeLMBziluRhjXNEON2JqIRhfrV9PBvphmmxtkWlsb76+SPz0n/xOgMQaVI3SKWc3Q+VVNJfhIzwEUYp01OWlyzYIBlGBBuk95CNLUgWhrdYnT+B5zBQhJxmhsgQpnov2XE4fKQpF4/QsAoKFSyooCo27i0jLFWNJ6qG17nxfCaF1xBeuEk6vIoKkGi9BGVDBPOWuni0dmlyCNm68rlEWPkvvDctWUKeKxv1mBuES3uyL9K/G4SZdzcT6BFdr9bvGB5yLLKyVThquxw1YSsuaO8OtSFjCWSNxBYEl/TFJjpg7YNO6NEEOt9ApIphrAMXRztBh6pCyvvcqLaW47tYWxcWarzyeF5FCOMdrK14E2bgZMdE0qx7yawnw9hXgqxpUBhhstS9HnfpKF6MyV2LYQnd6e+JsS/vv70r7NyG8dSrO5aZplQbpel7Cpv6SLwKDRQyf5Pp2RIMhVySE7hNP5UibLV5TOIo3zEL9yzcu8HCGlFkB75++Djx8PMByBRgWCrmF5i9vwxDWKOPU1PSj/S1Oafo4OYgPY9abXbQlPHtoC1tz7u3GLjlVQxnyNcESu7HJ9M4PeVGsHue0V6bmpl5FlHvTqX0rl1AeejTr7HVt3Ot/vVRPSf2vJ70MHsfciKQIuDOT5pWkeofIzrkDV8llpBmEpDqErq5RhfdcyatYf1IMISTe3TCrkPUsOjLrjr7lofurewh0wAPWJm6T1ZTZTLkabRpm7sf9QGE4Vj0snUo6Oe+oIpGUCm5JvSaq+/CX+rzLIC+ud6pcXJ7g6NzsekZT4RLcXzajkS37C7X6L3xZ/YQ1nKMtHSdfrNfrgzSVrsBtHUd33Y+TyUVmiRU078XvtvYeig8J9mWoi7B4Ss+Q3a2LAKfTPBqF3+ffQ730kpRiS35QTrHCeL4AxKwV021CAAA";
56 private static final Log log = LogFactory.getLog(ExtractionConfigUI.class);
57 private static final long serialVersionUID = 1L;
58
59
60
61
62
63 protected List<Object> $activeBindings = new ArrayList<Object>();
64 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
65 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
66 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
67 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
68 private boolean allComponentsCreated;
69 protected final JAXXContext delegateContext = new DefaultJAXXContext();
70
71
72
73
74
75 protected DaliHelpBroker broker;
76 protected ExtractionConfigUI extractionConfigUI = this;
77 protected JCheckBox fillZeroCheckBox;
78 protected JLabel fillZeroLabel;
79 protected final ExtractionConfigUIHandler handler = createHandler();
80 protected ExtractionConfigUIModel model;
81 protected JButton pmfmPresetButton;
82 protected JLabel pmfmPresetLabel;
83 protected JTextField pmfmPresetTextField;
84
85
86
87
88
89 public ExtractionConfigUI(ApplicationUI parentUI) {
90 ApplicationUIUtil.setParentUI(this, parentUI);
91 $initialize();
92 }
93
94 public ExtractionConfigUI() {
95 $initialize();
96 }
97
98 public ExtractionConfigUI(JAXXContext parentContext) {
99 JAXXUtil.initContext(this, parentContext);
100 $initialize();
101 }
102
103
104
105
106
107 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
108 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
109 }
110
111
112
113
114
115 @Override
116 public void applyDataBinding(String $binding) {
117 if (allComponentsCreated && $bindings.containsKey($binding)) {
118 getDataBinding($binding).applyDataBinding();
119 }
120 processDataBinding($binding);
121 }
122
123 @Override
124 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
125 super.firePropertyChange(propertyName, oldValue, newValue);
126 }
127
128 @Override
129 public Map<String, Object> get$objectMap() {
130 return $objectMap;
131 }
132
133 @Override
134 public JAXXBinding getDataBinding(String bindingId) {
135 return $bindings.get(bindingId);
136 }
137
138 @Override
139 public JAXXBinding[] getDataBindings() {
140 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
141 }
142
143 @Override
144 public Object getObjectById(String id) {
145 return $objectMap.get(id);
146 }
147
148 @Override
149 public void processDataBinding(String $binding, boolean $force) {
150 if (!$force && $activeBindings.contains($binding)) {
151 return;
152 }
153 $activeBindings.add($binding);
154 try {
155 if (allComponentsCreated && $bindings.containsKey($binding)) {
156 getDataBinding($binding).processDataBinding();
157 }
158 } finally {
159 $activeBindings.remove($binding);
160 }
161 }
162
163 @Override
164 public void processDataBinding(String $binding) {
165 processDataBinding($binding, false);
166 }
167
168 @Override
169 public void registerDataBinding(JAXXBinding binding) {
170 $bindings.put(binding.getId(), binding);
171 }
172
173 @Override
174 public void removeDataBinding(String $binding) {
175 if (allComponentsCreated && $bindings.containsKey($binding)) {
176 getDataBinding($binding).removeDataBinding();
177 }
178 }
179
180
181
182
183
184 @Override
185 public <T> T getContextValue(Class<T> clazz) {
186 return delegateContext.getContextValue(clazz, null);
187 }
188
189 @Override
190 public <T> T getContextValue(Class<T> clazz, String name) {
191 return delegateContext.getContextValue(clazz, name);
192 }
193
194 @Override
195 public JAXXContext getDelegateContext() {
196 return delegateContext;
197 }
198
199 @Override
200 public <O extends Container> O getParentContainer(Class<O> clazz) {
201 return SwingUtil.getParentContainer(this, clazz);
202 }
203
204 @Override
205 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
206 return SwingUtil.getParentContainer(source, clazz);
207 }
208
209 @Override
210 public <T> void removeContextValue(Class<T> clazz) {
211 delegateContext.removeContextValue(clazz, null);
212 }
213
214 @Override
215 public <T> void removeContextValue(Class<T> clazz, String name) {
216 delegateContext.removeContextValue(clazz, name);
217 }
218
219 @Override
220 public <T> void setContextValue(T o) {
221 delegateContext.setContextValue(o, null);
222 }
223
224 @Override
225 public <T> void setContextValue(T o, String name) {
226 delegateContext.setContextValue(o, name);
227 }
228
229
230
231
232
233 public void doActionPerformed__on__pmfmPresetButton(ActionEvent event) {
234 if (log.isDebugEnabled()) {
235 log.debug(event);
236 }
237 handler.openConfig();
238 }
239
240 public void doItemStateChanged__on__fillZeroCheckBox(ItemEvent event) {
241 if (log.isDebugEnabled()) {
242 log.debug(event);
243 }
244 handler.setBoolean(event, ExtractionConfigUIModel.PROPERTY_FILL_ZERO);
245 }
246
247
248
249
250
251 public DaliHelpBroker getBroker() {
252 return broker;
253 }
254
255 public JCheckBox getFillZeroCheckBox() {
256 return fillZeroCheckBox;
257 }
258
259 public JLabel getFillZeroLabel() {
260 return fillZeroLabel;
261 }
262
263 public ExtractionConfigUIHandler getHandler() {
264 return handler;
265 }
266
267 public ExtractionConfigUIModel getModel() {
268 return model;
269 }
270
271 public JButton getPmfmPresetButton() {
272 return pmfmPresetButton;
273 }
274
275 public JLabel getPmfmPresetLabel() {
276 return pmfmPresetLabel;
277 }
278
279 public JTextField getPmfmPresetTextField() {
280 return pmfmPresetTextField;
281 }
282
283
284
285
286
287 @Override
288 public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
289 broker.installUI(component, helpId);
290 }
291
292 @Override
293 public void showHelp(String helpId) {
294 getBroker().showHelp(this, helpId);
295 }
296
297
298
299
300
301 protected void addChildrenToExtractionConfigUI() {
302 if (!allComponentsCreated) {
303 return;
304 }
305 add(pmfmPresetLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
306 add(pmfmPresetTextField, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
307 add(pmfmPresetButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
308 add(fillZeroLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
309 add(fillZeroCheckBox, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
310 }
311
312 protected void createBroker() {
313 $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
314 }
315
316 protected void createFillZeroCheckBox() {
317 $objectMap.put("fillZeroCheckBox", fillZeroCheckBox = new JCheckBox());
318
319 fillZeroCheckBox.setName("fillZeroCheckBox");
320 fillZeroCheckBox.addItemListener(JAXXUtil.getEventListener(ItemListener.class, "itemStateChanged", this, "doItemStateChanged__on__fillZeroCheckBox"));
321 }
322
323 protected void createFillZeroLabel() {
324 $objectMap.put("fillZeroLabel", fillZeroLabel = new JLabel());
325
326 fillZeroLabel.setName("fillZeroLabel");
327 fillZeroLabel.setText(t("dali.extraction.config.fillZero"));
328 }
329
330 protected ExtractionConfigUIHandler createHandler() {
331 return new ExtractionConfigUIHandler();
332 }
333
334 protected void createModel() {
335 $objectMap.put("model", model = getContextValue(ExtractionConfigUIModel.class));
336 }
337
338 protected void createPmfmPresetButton() {
339 $objectMap.put("pmfmPresetButton", pmfmPresetButton = new JButton());
340
341 pmfmPresetButton.setName("pmfmPresetButton");
342 pmfmPresetButton.setToolTipText(t("dali.extraction.config.pmfm.edit.tip"));
343 pmfmPresetButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__pmfmPresetButton"));
344 }
345
346 protected void createPmfmPresetLabel() {
347 $objectMap.put("pmfmPresetLabel", pmfmPresetLabel = new JLabel());
348
349 pmfmPresetLabel.setName("pmfmPresetLabel");
350 pmfmPresetLabel.setText(t("dali.extraction.config.pmfm"));
351 }
352
353 protected void createPmfmPresetTextField() {
354 $objectMap.put("pmfmPresetTextField", pmfmPresetTextField = new JTextField());
355
356 pmfmPresetTextField.setName("pmfmPresetTextField");
357 pmfmPresetTextField.setColumns(15);
358 pmfmPresetTextField.setEnabled(false);
359 }
360
361
362
363
364
365 private void $completeSetup() {
366 allComponentsCreated = true;
367 if (log.isDebugEnabled()) {
368 log.debug(this);
369 }
370 addChildrenToExtractionConfigUI();
371
372
373 JAXXUtil.applyDataBinding(this, $bindings.keySet());
374
375
376 setBorder(BorderFactory.createTitledBorder(t("dali.extraction.config.title")));
377 pmfmPresetButton.setIcon(SwingUtil.createActionIcon("edit"));
378 }
379
380 private void $initialize() {
381 if (allComponentsCreated) {
382 return;
383 }
384 if (log.isDebugEnabled()) {
385 log.debug(this);
386 }
387 handler.beforeInit(this);
388 $objectMap.put("extractionConfigUI", extractionConfigUI);
389 createModel();
390 createBroker();
391 createPmfmPresetLabel();
392 createPmfmPresetTextField();
393 createPmfmPresetButton();
394 createFillZeroLabel();
395 createFillZeroCheckBox();
396
397 setName("extractionConfigUI");
398 setLayout(new BorderLayout());
399
400
401 $registerDefaultBindings();
402 $completeSetup();
403 handler.afterInit(this);
404 }
405
406 private void $registerDefaultBindings() {
407
408 registerDataBinding(new DefaultJAXXBinding(this, BINDING_PMFM_PRESET_BUTTON_ENABLED, true) {
409
410 @Override
411 public void applyDataBinding() {
412 if (getModel() != null) {
413 getModel().addPropertyChangeListener("enabled", this);
414 }
415 }
416
417 @Override
418 public void processDataBinding() {
419 if (getModel() != null) {
420 pmfmPresetButton.setEnabled(getModel().isEnabled());
421 }
422 }
423
424 @Override
425 public void removeDataBinding() {
426 if (getModel() != null) {
427 getModel().removePropertyChangeListener("enabled", this);
428 }
429 }
430 });
431 registerDataBinding(new DefaultJAXXBinding(this, BINDING_FILL_ZERO_CHECK_BOX_SELECTED, true) {
432
433 @Override
434 public void applyDataBinding() {
435 if (model != null) {
436 model.addPropertyChangeListener("fillZero", this);
437 }
438 }
439
440 @Override
441 public void processDataBinding() {
442 if (model != null) {
443 fillZeroCheckBox.setSelected(model.isFillZero());
444 }
445 }
446
447 @Override
448 public void removeDataBinding() {
449 if (model != null) {
450 model.removePropertyChangeListener("fillZero", this);
451 }
452 }
453 });
454 registerDataBinding(new DefaultJAXXBinding(this, BINDING_FILL_ZERO_CHECK_BOX_ENABLED, true) {
455
456 @Override
457 public void applyDataBinding() {
458 if (getModel() != null) {
459 getModel().addPropertyChangeListener("enabled", this);
460 }
461 }
462
463 @Override
464 public void processDataBinding() {
465 if (getModel() != null) {
466 fillZeroCheckBox.setEnabled(getModel().isEnabled());
467 }
468 }
469
470 @Override
471 public void removeDataBinding() {
472 if (getModel() != null) {
473 getModel().removePropertyChangeListener("enabled", this);
474 }
475 }
476 });
477 }
478
479 }