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