1 package fr.ifremer.reefdb.ui.swing.content.manage.rule.department;
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 ControlDepartmentTableUI extends JPanel implements JAXXHelpUI<ReefDbHelpBroker>, ReefDbUI<ControlDepartmentTableUIModel, ControlDepartmentTableUIHandler>, JAXXObject {
65
66
67
68
69
70 public static final String BINDING_ADD_DEPARTMENT_BUTTON_ENABLED = "addDepartmentButton.enabled";
71 public static final String BINDING_REMOVE_DEPARTMENT_BUTTON_ENABLED = "removeDepartmentButton.enabled";
72
73
74
75
76
77 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1Uz28bRRR+dmOncfjRNhBSmpYkhZKo0piqxyAoaRo1wYXKTkWED3TsmThTdne2s+Nko6iIP4E/Ae5ckLhxQhw4c+CC+BcQ4sAV8d6svRsn69ioWPJqPe993/ve83zv2z+gFBlYfMLjmJluYJUv2dYHOzsft57Itl2XUduo0GoDyadQhGITpkV6Hlm43qwRvNqDV+9qP9SBDI6hV2tQieyhJ6M9Ka2Fq4OIdhRVG2l4NQ67ps+aispj/fqvP4tfiS+/KQLEIaqbwlYWRqGyTiZqUFTCwiWstM+rHg86KMOooIN6X6Szux6Poo+4L5/CFzBZg3LIDZJZWBq/Zcfh8HFoYa6tA2u0ty6RyvoI2eYtTz7atFDfNUztGulLw4yUu6LFuopFB6iHEQpzmc8D3pHYnieZSCmwzXzSMHSVyxZKvhbSs/DJ/1/kATFnlcotoz+XxsLNM0rV8fd66z7i1lx2Br86bEAPeUANvEb/S9yj2Wq0MdWjEMGnUpbZfBYL7Jiop10ujOrI25kuS1msQe8OQHSXUtbzb245Fe/gnRmQ4U4HFfRzb9Hv1+kxl8ZmuBCZsrWutagWZgYok1MCXMm6Qt16X56EUvSNXqaBKwMGQGuxzFrZ3S80oUR/MPp3rnnajXUMJT6cO+FDInTRf2Znfv3h9+83+uarYO1Xc1OP7Q40RWh0iNdDUemXE+d1rfKqD3i42kQLSw8Xj1ss8znCGr0wisN6FwnOCM7u82gPKUqTv/340+zjX85BcQMqnuZig1P+JkzZPYNT0J6Iw/fvOEUvHJzH5wX8FuneaiPo3t47WnNvCfCQtY3kVm4r60mRRJbt8lLvRp80iaW0pZWVZ9jcZ/vcU4IjSY236O5ePxoJfBbjzOdzZp423pr6+e+Zxnd3+nMv4BwuD03PZl/6FMoq8FQg3drrbbTcNTcdRrIrdLa58nYZnLHMwp6f33bPm6fGPWGhgtNVOtgkCjiHhrB4KmPcrRd7E2pr39cBc6Fpq7W3rcJtl3FtyAwxFeeIW3ZSBiQEgW8ducXHOtI+dLvbbavlFaaie0I5uy/T0EnnLTdNersN+Sb9r32VsZa0Mm3tlcHW+tHB7haHdJdkn2zww3EaXLhxY2ExzUvuhhR1fRAliX5oD4eMYcjOGTWJAjbv8UONyfDSu2gCvtBSgcDV9t6pKgV6VkYy0nGdHo18hsvPzTA/RlcV9HQnoEHsnMF0bSwtj89gWBxDy4RqJ9v/uVSoESr+BYqX+WUkCgAA";
78 private static final Log log = LogFactory.getLog(ControlDepartmentTableUI.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 JButton addDepartmentButton;
98 protected ReefDbHelpBroker broker;
99 protected SwingTable controlDepartmentTable;
100 protected ControlDepartmentTableUI controlDepartmentTableUI = this;
101 protected JScrollPane controlDepartmentTableUIPanel;
102 protected final ControlDepartmentTableUIHandler handler = createHandler();
103 protected ControlDepartmentTableUIModel model;
104 protected JButton removeDepartmentButton;
105
106
107
108
109
110 private JPanel $JPanel0;
111 private JPanel $JPanel1;
112
113
114
115
116
117 public ControlDepartmentTableUI(ApplicationUI parentUI) {
118 ApplicationUIUtil.setParentUI(this, parentUI);
119 $initialize();
120 }
121
122 public ControlDepartmentTableUI(LayoutManager param0, boolean param1) {
123 super(param0 ,param1);
124 $initialize();
125 }
126
127 public ControlDepartmentTableUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
128 super(param1 ,param2);
129 JAXXUtil.initContext(this, parentContext);
130 $initialize();
131 }
132
133 public ControlDepartmentTableUI(boolean param0) {
134 super(param0);
135 $initialize();
136 }
137
138 public ControlDepartmentTableUI(JAXXContext parentContext, boolean param1) {
139 super(param1);
140 JAXXUtil.initContext(this, parentContext);
141 $initialize();
142 }
143
144 public ControlDepartmentTableUI() {
145 $initialize();
146 }
147
148 public ControlDepartmentTableUI(JAXXContext parentContext) {
149 JAXXUtil.initContext(this, parentContext);
150 $initialize();
151 }
152
153 public ControlDepartmentTableUI(LayoutManager param0) {
154 super(param0);
155 $initialize();
156 }
157
158 public ControlDepartmentTableUI(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__addDepartmentButton(ActionEvent event) {
295 if (log.isDebugEnabled()) {
296 log.debug(event);
297 }
298 handler.openAddDialog();
299 }
300
301 public void doActionPerformed__on__removeDepartmentButton(ActionEvent event) {
302 if (log.isDebugEnabled()) {
303 log.debug(event);
304 }
305 handler.removeDepartments();
306 }
307
308
309
310
311
312 public JButton getAddDepartmentButton() {
313 return addDepartmentButton;
314 }
315
316 public ReefDbHelpBroker getBroker() {
317 return broker;
318 }
319
320 public SwingTable getControlDepartmentTable() {
321 return controlDepartmentTable;
322 }
323
324 public JScrollPane getControlDepartmentTableUIPanel() {
325 return controlDepartmentTableUIPanel;
326 }
327
328 public ControlDepartmentTableUIHandler getHandler() {
329 return handler;
330 }
331
332 public ControlDepartmentTableUIModel getModel() {
333 return model;
334 }
335
336 public JButton getRemoveDepartmentButton() {
337 return removeDepartmentButton;
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 addChildrenToControlDepartmentTableUI() {
371 if (!allComponentsCreated) {
372 return;
373 }
374 add(controlDepartmentTableUIPanel);
375 add($JPanel0, BorderLayout.PAGE_END);
376 }
377
378 protected void addChildrenToControlDepartmentTableUIPanel() {
379 if (!allComponentsCreated) {
380 return;
381 }
382 controlDepartmentTableUIPanel.getViewport().add(controlDepartmentTable);
383 }
384
385 protected void createAddDepartmentButton() {
386 $objectMap.put("addDepartmentButton", addDepartmentButton = new JButton());
387
388 addDepartmentButton.setName("addDepartmentButton");
389 addDepartmentButton.setText(t("reefdb.common.add"));
390 addDepartmentButton.setToolTipText(t("reefdb.rule.department.add.tip"));
391 addDepartmentButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__addDepartmentButton"));
392 }
393
394 protected void createBroker() {
395 $objectMap.put("broker", broker = new ReefDbHelpBroker("reefdb.home.help"));
396 }
397
398 protected void createControlDepartmentTable() {
399 $objectMap.put("controlDepartmentTable", controlDepartmentTable = new SwingTable());
400
401 controlDepartmentTable.setName("controlDepartmentTable");
402 }
403
404 protected void createControlDepartmentTableUIPanel() {
405 $objectMap.put("controlDepartmentTableUIPanel", controlDepartmentTableUIPanel = new JScrollPane());
406
407 controlDepartmentTableUIPanel.setName("controlDepartmentTableUIPanel");
408 }
409
410 protected ControlDepartmentTableUIHandler createHandler() {
411 return new ControlDepartmentTableUIHandler();
412 }
413
414 protected void createModel() {
415 $objectMap.put("model", model = getContextValue(ControlDepartmentTableUIModel.class));
416 }
417
418 protected void createRemoveDepartmentButton() {
419 $objectMap.put("removeDepartmentButton", removeDepartmentButton = new JButton());
420
421 removeDepartmentButton.setName("removeDepartmentButton");
422 removeDepartmentButton.setText(t("reefdb.common.delete"));
423 removeDepartmentButton.setToolTipText(t("reefdb.rule.department.delete.tip"));
424 removeDepartmentButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__removeDepartmentButton"));
425 }
426
427
428
429
430
431 private void $completeSetup() {
432 allComponentsCreated = true;
433 if (log.isDebugEnabled()) {
434 log.debug(this);
435 }
436 addChildrenToControlDepartmentTableUI();
437 addChildrenToControlDepartmentTableUIPanel();
438
439 $JPanel0.add($JPanel1, BorderLayout.LINE_START);
440
441 $JPanel1.add(addDepartmentButton);
442 $JPanel1.add(removeDepartmentButton);
443
444
445 JAXXUtil.applyDataBinding(this, $bindings.keySet());
446
447
448 addDepartmentButton.setAlignmentX(Component.CENTER_ALIGNMENT);
449 removeDepartmentButton.setAlignmentX(Component.CENTER_ALIGNMENT);
450 setBorder(BorderFactory.createTitledBorder(t("reefdb.rule.department.title")));
451 addDepartmentButton.setIcon(SwingUtil.createActionIcon("add"));
452 removeDepartmentButton.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("controlDepartmentTableUI", controlDepartmentTableUI);
464 createModel();
465 createBroker();
466 createControlDepartmentTableUIPanel();
467 createControlDepartmentTable();
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 createAddDepartmentButton();
479 createRemoveDepartmentButton();
480
481 setName("controlDepartmentTableUI");
482 setLayout(new BorderLayout());
483 controlDepartmentTableUI.putClientProperty("validatorLabel", t("reefdb.rule.department.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_DEPARTMENT_BUTTON_ENABLED, true) {
494
495 @Override
496 public void applyDataBinding() {
497 if (model != null) {
498 model.addPropertyChangeListener("parentModel", this);
499 }
500 }
501
502 @Override
503 public void processDataBinding() {
504 if (model != null && model.getParentModel() != null) {
505 addDepartmentButton.setEnabled(model.getParentModel().isEditable());
506 }
507 }
508
509 @Override
510 public void removeDataBinding() {
511 if (model != null) {
512 model.removePropertyChangeListener("parentModel", this);
513 }
514 }
515 });
516 registerDataBinding(new DefaultJAXXBinding(this, BINDING_REMOVE_DEPARTMENT_BUTTON_ENABLED, true, true) {
517
518 @Override
519 public void applyDataBinding() {
520 if (model != null) {
521 model.addPropertyChangeListener("parentModel", 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 && model.getParentModel() != null) {
531 removeDepartmentButton.setEnabled(model.getParentModel().isEditable() && !model.getSelectedRows().isEmpty());
532 }
533 }
534
535 @Override
536 public void removeDataBinding() {
537 if (model != null) {
538 model.removePropertyChangeListener("parentModel", this);
539 }
540 if (model != null) {
541 model.removePropertyChangeListener("selectedRows", this);
542 }
543 }
544 });
545 }
546
547 }