1 package fr.ifremer.reefdb.ui.swing.content.manage.rule.pmfm;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
28 import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
29 import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
30 import fr.ifremer.reefdb.ui.swing.ReefDbHelpBroker;
31 import fr.ifremer.reefdb.ui.swing.ReefDbUIContext;
32 import fr.ifremer.reefdb.ui.swing.util.ReefDbUI;
33 import java.awt.BorderLayout;
34 import java.awt.Component;
35 import java.awt.Container;
36 import java.awt.FlowLayout;
37 import java.awt.LayoutManager;
38 import java.awt.event.ActionEvent;
39 import java.awt.event.ActionListener;
40 import java.util.ArrayList;
41 import java.util.HashMap;
42 import java.util.List;
43 import java.util.Map;
44 import java.util.TreeMap;
45 import javax.swing.BorderFactory;
46 import javax.swing.Box;
47 import javax.swing.BoxLayout;
48 import javax.swing.JButton;
49 import javax.swing.JPanel;
50 import javax.swing.JScrollPane;
51 import jaxx.runtime.JAXXBinding;
52 import jaxx.runtime.JAXXContext;
53 import jaxx.runtime.JAXXObject;
54 import jaxx.runtime.JAXXObjectDescriptor;
55 import jaxx.runtime.JAXXUtil;
56 import jaxx.runtime.SwingUtil;
57 import jaxx.runtime.binding.DefaultJAXXBinding;
58 import jaxx.runtime.context.DefaultJAXXContext;
59 import jaxx.runtime.swing.help.JAXXHelpUI;
60 import org.apache.commons.logging.Log;
61 import org.apache.commons.logging.LogFactory;
62 import static org.nuiton.i18n.I18n.t;
63
64 public class ControlPmfmTableUI extends JPanel implements JAXXHelpUI<ReefDbHelpBroker>, ReefDbUI<ControlPmfmTableUIModel, ControlPmfmTableUIHandler>, JAXXObject {
65
66
67
68
69
70 public static final String BINDING_ADD_PMFM_BUTTON_ENABLED = "addPmfmButton.enabled";
71 public static final String BINDING_REMOVE_PMFM_BUTTON_ENABLED = "removePmfmButton.enabled";
72
73
74
75
76
77 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1Vz29TRxBem9ghTik/QiE0oSQBpYmQ1kXcmqpAoBFJzQ/FQYrwoVl7N87SfW+XfevkRRFV/wT+BLhzQeqtp6qHnnvoBfEvVFUPvVad2Wf7xfYjSQWWvHreme+bb+bNjF/9SQqRJdNPWBxT2wqdDARdubW+/qD+RDTcHRE1rDROW5J8cnmSr5FR3r2PHLlcqyC83IaXb+vA6FCE+9ALFVKK3K4S0ZYQzpGLvYhGFJWrXfNCbFq2w9oVlcX64u+/8s/5jy/zhMQG1I1AKlOHodJMhiokL7kjZyDSNisrFjZBhpVhE/SewLvbikXRfRaIp+QHMlwhRcMskDkyc/SUPYfHxwZiNXTorFYPg81gjdWVeLTsyNKmpXLTikBYaoXY5HXakjTaASUU/YGYBixkTQGJKUENgCG1fiJjfJyiI4VAc6Ec+fbDEN9DtpS9WLf6e2EduXoA/Sr8vlO/C7hF753Czw8GeMhClHseax63CVaqDXBSaELgSBd/qr+EjtB9Qp62GLeyKa6nWhx60So+ewASnenyHb+y4uN/AW+nR4C/7Y3d8b2Gvz/FY7xrO8E4R02LLedAIRnrIUtu0XUizQQU622RgvD+UtvHkomeVoYhoemQpF2cq5ECvjyYxPHa4FytgimZqPG+iUJCb/333NgfP7/9aakzRiWI/Umm674tAO1trDbQBhJDn0xmqOWkKt9jZqEGwygUrBC/IiYzhFXbZhAH8U4jnCKc3mXRFlAUht/88uu5jd+PkfwSKSnN+BJD/2Uy4rYsVEErHpsbN72ij3aOw3kKvnnsT2059ueNvUX/lAB3acMK5sSadErwxDLn5mbanZsOgEOHmfn5Z5DWd9tMSc4AXmF17NGLewdAnsVQ58mMOneTrY/89s9Y9fXNTq1zkPuFd7qn9S48JkUZKhkKv7Ta+yhzSY2aSLS4TvdO1iYimavItKf0c39eHSjukCMlqKXU4TKCyTFoeQe3IoadeLpdlYYOAh1Sbxp1Wqs1ada8x/hA3cAJagd7cViEKAEgZ/f88qIy+oZLP7lzWFcUdM0XDJ+uk/55+7/SixBDONFVf7ZXfcfam8DEQAKJX38OX2bkMDU7OzWdXDeFS96w4Kt6J5qbR8fAuN13ZDqwJw5LNgf5KbarwZl8/BW0L5uqy5DDIvp6gD+HZ+lQRrxexaOazXDhvRkmj5BVCaaxGQbwv7V+ANNnR9KycQDD9BG0DMlGsrHfS4U8RMV/oYSXYqIJAAA=";
78 private static final Log log = LogFactory.getLog(ControlPmfmTableUI.class);
79 private static final long serialVersionUID = 1L;
80
81
82
83
84
85 protected List<Object> $activeBindings = new ArrayList<Object>();
86 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
87 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
88 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
89 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
90 private boolean allComponentsCreated;
91 protected final JAXXContext delegateContext = new DefaultJAXXContext();
92
93
94
95
96
97 protected JScrollPane ControlPmfmTableUIPanel;
98 protected JButton addPmfmButton;
99 protected ReefDbHelpBroker broker;
100 protected SwingTable controlPmfmTable;
101 protected ControlPmfmTableUI controlPmfmTableUI = this;
102 protected final ControlPmfmTableUIHandler handler = createHandler();
103 protected ControlPmfmTableUIModel model;
104 protected JButton removePmfmButton;
105
106
107
108
109
110 private JPanel $JPanel0;
111 private JPanel $JPanel1;
112
113
114
115
116
117 public ControlPmfmTableUI(ApplicationUI parentUI) {
118 ApplicationUIUtil.setParentUI(this, parentUI);
119 $initialize();
120 }
121
122 public ControlPmfmTableUI(LayoutManager param0, boolean param1) {
123 super(param0 ,param1);
124 $initialize();
125 }
126
127 public ControlPmfmTableUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
128 super(param1 ,param2);
129 JAXXUtil.initContext(this, parentContext);
130 $initialize();
131 }
132
133 public ControlPmfmTableUI(boolean param0) {
134 super(param0);
135 $initialize();
136 }
137
138 public ControlPmfmTableUI(JAXXContext parentContext, boolean param1) {
139 super(param1);
140 JAXXUtil.initContext(this, parentContext);
141 $initialize();
142 }
143
144 public ControlPmfmTableUI() {
145 $initialize();
146 }
147
148 public ControlPmfmTableUI(JAXXContext parentContext) {
149 JAXXUtil.initContext(this, parentContext);
150 $initialize();
151 }
152
153 public ControlPmfmTableUI(LayoutManager param0) {
154 super(param0);
155 $initialize();
156 }
157
158 public ControlPmfmTableUI(JAXXContext parentContext, LayoutManager param1) {
159 super(param1);
160 JAXXUtil.initContext(this, parentContext);
161 $initialize();
162 }
163
164
165
166
167
168 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
169 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
170 }
171
172
173
174
175
176 @Override
177 public void applyDataBinding(String $binding) {
178 if (allComponentsCreated && $bindings.containsKey($binding)) {
179 getDataBinding($binding).applyDataBinding();
180 }
181 processDataBinding($binding);
182 }
183
184 @Override
185 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
186 super.firePropertyChange(propertyName, oldValue, newValue);
187 }
188
189 @Override
190 public Map<String, Object> get$objectMap() {
191 return $objectMap;
192 }
193
194 @Override
195 public JAXXBinding getDataBinding(String bindingId) {
196 return $bindings.get(bindingId);
197 }
198
199 @Override
200 public JAXXBinding[] getDataBindings() {
201 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
202 }
203
204 @Override
205 public Object getObjectById(String id) {
206 return $objectMap.get(id);
207 }
208
209 @Override
210 public void processDataBinding(String $binding, boolean $force) {
211 if (!$force && $activeBindings.contains($binding)) {
212 return;
213 }
214 $activeBindings.add($binding);
215 try {
216 if (allComponentsCreated && $bindings.containsKey($binding)) {
217 getDataBinding($binding).processDataBinding();
218 }
219 } finally {
220 $activeBindings.remove($binding);
221 }
222 }
223
224 @Override
225 public void processDataBinding(String $binding) {
226 processDataBinding($binding, false);
227 }
228
229 @Override
230 public void registerDataBinding(JAXXBinding binding) {
231 $bindings.put(binding.getId(), binding);
232 }
233
234 @Override
235 public void removeDataBinding(String $binding) {
236 if (allComponentsCreated && $bindings.containsKey($binding)) {
237 getDataBinding($binding).removeDataBinding();
238 }
239 }
240
241
242
243
244
245 @Override
246 public <T> T getContextValue(Class<T> clazz) {
247 return delegateContext.getContextValue(clazz, null);
248 }
249
250 @Override
251 public <T> T getContextValue(Class<T> clazz, String name) {
252 return delegateContext.getContextValue(clazz, name);
253 }
254
255 @Override
256 public JAXXContext getDelegateContext() {
257 return delegateContext;
258 }
259
260 @Override
261 public <O extends Container> O getParentContainer(Class<O> clazz) {
262 return SwingUtil.getParentContainer(this, clazz);
263 }
264
265 @Override
266 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
267 return SwingUtil.getParentContainer(source, clazz);
268 }
269
270 @Override
271 public <T> void removeContextValue(Class<T> clazz) {
272 delegateContext.removeContextValue(clazz, null);
273 }
274
275 @Override
276 public <T> void removeContextValue(Class<T> clazz, String name) {
277 delegateContext.removeContextValue(clazz, name);
278 }
279
280 @Override
281 public <T> void setContextValue(T o) {
282 delegateContext.setContextValue(o, null);
283 }
284
285 @Override
286 public <T> void setContextValue(T o, String name) {
287 delegateContext.setContextValue(o, name);
288 }
289
290
291
292
293
294 public void doActionPerformed__on__addPmfmButton(ActionEvent event) {
295 if (log.isDebugEnabled()) {
296 log.debug(event);
297 }
298 handler.openAddPmfmDialog();
299 }
300
301 public void doActionPerformed__on__removePmfmButton(ActionEvent event) {
302 if (log.isDebugEnabled()) {
303 log.debug(event);
304 }
305 handler.removePmfm();
306 }
307
308
309
310
311
312 public JButton getAddPmfmButton() {
313 return addPmfmButton;
314 }
315
316 public ReefDbHelpBroker getBroker() {
317 return broker;
318 }
319
320 public SwingTable getControlPmfmTable() {
321 return controlPmfmTable;
322 }
323
324 public JScrollPane getControlPmfmTableUIPanel() {
325 return ControlPmfmTableUIPanel;
326 }
327
328 public ControlPmfmTableUIHandler getHandler() {
329 return handler;
330 }
331
332 public ControlPmfmTableUIModel getModel() {
333 return model;
334 }
335
336 public JButton getRemovePmfmButton() {
337 return removePmfmButton;
338 }
339
340
341
342
343
344 @Override
345 public void registerHelpId(ReefDbHelpBroker broker, Component component, String helpId) {
346 broker.installUI(component, helpId);
347 }
348
349 @Override
350 public void showHelp(String helpId) {
351 getBroker().showHelp(this, helpId);
352 }
353
354
355
356
357
358 protected JPanel get$JPanel0() {
359 return $JPanel0;
360 }
361
362 protected JPanel get$JPanel1() {
363 return $JPanel1;
364 }
365
366
367
368
369
370 protected void addChildrenToControlPmfmTableUI() {
371 if (!allComponentsCreated) {
372 return;
373 }
374 add(ControlPmfmTableUIPanel);
375 add($JPanel0, BorderLayout.PAGE_END);
376 }
377
378 protected void addChildrenToControlPmfmTableUIPanel() {
379 if (!allComponentsCreated) {
380 return;
381 }
382 ControlPmfmTableUIPanel.getViewport().add(controlPmfmTable);
383 }
384
385 protected void createAddPmfmButton() {
386 $objectMap.put("addPmfmButton", addPmfmButton = new JButton());
387
388 addPmfmButton.setName("addPmfmButton");
389 addPmfmButton.setText(t("reefdb.common.add"));
390 addPmfmButton.setToolTipText(t("reefdb.rule.pmfm.add.tip"));
391 addPmfmButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__addPmfmButton"));
392 }
393
394 protected void createBroker() {
395 $objectMap.put("broker", broker = new ReefDbHelpBroker("reefdb.home.help"));
396 }
397
398 protected void createControlPmfmTable() {
399 $objectMap.put("controlPmfmTable", controlPmfmTable = new SwingTable());
400
401 controlPmfmTable.setName("controlPmfmTable");
402 }
403
404 protected void createControlPmfmTableUIPanel() {
405 $objectMap.put("ControlPmfmTableUIPanel", ControlPmfmTableUIPanel = new JScrollPane());
406
407 ControlPmfmTableUIPanel.setName("ControlPmfmTableUIPanel");
408 }
409
410 protected ControlPmfmTableUIHandler createHandler() {
411 return new ControlPmfmTableUIHandler();
412 }
413
414 protected void createModel() {
415 $objectMap.put("model", model = getContextValue(ControlPmfmTableUIModel.class));
416 }
417
418 protected void createRemovePmfmButton() {
419 $objectMap.put("removePmfmButton", removePmfmButton = new JButton());
420
421 removePmfmButton.setName("removePmfmButton");
422 removePmfmButton.setText(t("reefdb.common.delete"));
423 removePmfmButton.setToolTipText(t("reefdb.rule.pmfm.delete.tip"));
424 removePmfmButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__removePmfmButton"));
425 }
426
427
428
429
430
431 private void $completeSetup() {
432 allComponentsCreated = true;
433 if (log.isDebugEnabled()) {
434 log.debug(this);
435 }
436 addChildrenToControlPmfmTableUI();
437 addChildrenToControlPmfmTableUIPanel();
438
439 $JPanel0.add($JPanel1, BorderLayout.LINE_START);
440
441 $JPanel1.add(addPmfmButton);
442 $JPanel1.add(removePmfmButton);
443
444
445 JAXXUtil.applyDataBinding(this, $bindings.keySet());
446
447
448 addPmfmButton.setAlignmentX(Component.CENTER_ALIGNMENT);
449 removePmfmButton.setAlignmentX(Component.CENTER_ALIGNMENT);
450 setBorder(BorderFactory.createTitledBorder(t("reefdb.rule.pmfm.title")));
451 addPmfmButton.setIcon(SwingUtil.createActionIcon("add"));
452 removePmfmButton.setIcon(SwingUtil.createActionIcon("delete"));
453 }
454
455 private void $initialize() {
456 if (allComponentsCreated) {
457 return;
458 }
459 if (log.isDebugEnabled()) {
460 log.debug(this);
461 }
462 handler.beforeInit(this);
463 $objectMap.put("controlPmfmTableUI", controlPmfmTableUI);
464 createModel();
465 createBroker();
466 createControlPmfmTableUIPanel();
467 createControlPmfmTable();
468
469 $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
470
471 $JPanel0.setName("$JPanel0");
472 $JPanel0.setLayout(new BorderLayout());
473
474 $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
475
476 $JPanel1.setName("$JPanel1");
477 $JPanel1.setLayout(new FlowLayout());
478 createAddPmfmButton();
479 createRemovePmfmButton();
480
481 setName("controlPmfmTableUI");
482 setLayout(new BorderLayout());
483 controlPmfmTableUI.putClientProperty("validatorLabel", t("reefdb.rule.pmfm.title"));
484
485
486 $registerDefaultBindings();
487 $completeSetup();
488 handler.afterInit(this);
489 }
490
491 private void $registerDefaultBindings() {
492
493 registerDataBinding(new DefaultJAXXBinding(this, BINDING_ADD_PMFM_BUTTON_ENABLED, true) {
494
495 @Override
496 public void applyDataBinding() {
497 if (model != null) {
498 model.addPropertyChangeListener("editable", this);
499 }
500 }
501
502 @Override
503 public void processDataBinding() {
504 if (model != null) {
505 addPmfmButton.setEnabled(model.isEditable());
506 }
507 }
508
509 @Override
510 public void removeDataBinding() {
511 if (model != null) {
512 model.removePropertyChangeListener("editable", this);
513 }
514 }
515 });
516 registerDataBinding(new DefaultJAXXBinding(this, BINDING_REMOVE_PMFM_BUTTON_ENABLED, true, true) {
517
518 @Override
519 public void applyDataBinding() {
520 if (model != null) {
521 model.addPropertyChangeListener("editable", this);
522 }
523 if (model != null) {
524 model.addPropertyChangeListener("selectedRows", this);
525 }
526 }
527
528 @Override
529 public void processDataBinding() {
530 if (model != null && model.getSelectedRows() != null) {
531 removePmfmButton.setEnabled(model.isEditable() && !model.getSelectedRows().isEmpty());
532 }
533 }
534
535 @Override
536 public void removeDataBinding() {
537 if (model != null) {
538 model.removePropertyChangeListener("editable", this);
539 }
540 if (model != null) {
541 model.removePropertyChangeListener("selectedRows", this);
542 }
543 }
544 });
545 }
546
547 }