1 package fr.ifremer.dali.ui.swing.content.manage.rule.department;
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 ControlDepartmentTableUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<ControlDepartmentTableUIModel, ControlDepartmentTableUIHandler>, JAXXObject {
40
41
42
43
44
45 public static final String BINDING_REMOVE_DEPARTMENT_BUTTON_ENABLED = "removeDepartmentButton.enabled";
46
47
48
49
50
51 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1UQW8bRRR+dmKncYCWRISUpjQJqHWENKbqMQhKEqImuCXUqRTVBxjvTJ0puzvb2XGyUVTET+AnwJ0LEjdOiANnDlwQfwEhDlwR7806u3ayiSNRSx7tznvf97739r333Z9QiQ0sPuVJwkwvtCqQbOvD3d1POk+lZ9dl7BkVWW0g/ZXKUG7DlMjuYwtvtZsEb/ThjTUdRDqU4QB6pQm12B76Mt6T0lq4Pozw4rjRyswrSdQzx6yZqCLWb/7+q/y1+OrbMkASobpJTGVhFCrPZLwJZSUsTGOkfd7wedhFGUaFXdT7Mt2t+TyOH/BAPoMvYaIJ1YgbJLOwdPGUHYfDJ5GFOU+H1mh/XSKVDRCywzu+fLRpYfuJYeqJkYE0THBfsZ5i8QGqYYRBTxbwkHclJudLJjICTLKYMopc3KqFSqCF9C08etEh7hNvHqfaMfoLaSzcOjPQOr7dQ8yq88yh188qzDYPSfrr9D2SPslWy0NXn0wEn8xYZotZLLABQc96XBjVlXdyVZa8WIueHYDopjPWS29vORXvYq8MyXC3wwqOfW/T+xt0zGW2GS5Ermy1Zy2qhZkhyvSWANfyrFC33pcnoWS90fc0cG2o8XGkWD5Sec+X2lChj4tzO9c+PYUP0ZTO39yJ+SNCZ/13dua3H//4YWNw6F4rdB3YGTgMkdERtoai0JfTietZ5Tfu82iljSzSx4XjFsp8gbBW34ziMN6rBGcEZ/d4vIcUlYnff/p59vNfx6C8ATVfc7HByX8TJu2ewSpoXyTRB3edopcOLuF5Bf9l6lltBPXs2tGqe0qBh8wzklu5o6wvRWqp2/qS6+aT42HJaWl5+Tmm9tk+egiOFE3eoc5dPBoBe55gvecL6p0l3Zn85Z+Z1vd3j2tewhpcPdM9r3vlMVRV6KtQulXX32KFq20qimVP6HxbFe0vOGeBRf1ZvuXOd06VesxCDSurdLhJFDCGw2Bh3MoE9+llVx9PB4EOmTNMWa39HRXtOPt8Yf3QEWsYJT2KeNvVhZ7uQPGojVI4fkJhFXebtDITOT0o8tg2rPNGoc7Ul6RamJAh1Qsz/PiouJRMxR8J5TZSfXnh5s2FRbe9WVfa9AtL8VAfxPVlcgwie1inDjpdgjO2xqgqlDBxnx9qdIZX3sNG5gsdFQpcTu+filKiszaSka636fi0mOHqBTTVsLDdkNLYPYfpzQtpeXwOw+IFtIwrL92+/0uFN0LFf3SV0nacCQAA";
52 private static final Log log = LogFactory.getLog(ControlDepartmentTableUI.class);
53 private static final long serialVersionUID = 1L;
54
55
56
57
58
59 protected List<Object> $activeBindings = new ArrayList<Object>();
60 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
61 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
62 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
63 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
64 private boolean allComponentsCreated;
65 protected final JAXXContext delegateContext = new DefaultJAXXContext();
66
67
68
69
70
71 protected JButton addDepartmentButton;
72 protected DaliHelpBroker broker;
73 protected SwingTable controlDepartmentTable;
74 protected ControlDepartmentTableUI controlDepartmentTableUI = this;
75 protected JScrollPane controlDepartmentTableUIPanel;
76 protected final ControlDepartmentTableUIHandler handler = createHandler();
77 protected ControlDepartmentTableUIModel model;
78 protected JButton removeDepartmentButton;
79
80
81
82
83
84 private JPanel $JPanel0;
85 private JPanel $JPanel1;
86
87
88
89
90
91 public ControlDepartmentTableUI(ApplicationUI parentUI) {
92 ApplicationUIUtil.setParentUI(this, parentUI);
93 $initialize();
94 }
95
96 public ControlDepartmentTableUI() {
97 $initialize();
98 }
99
100 public ControlDepartmentTableUI(JAXXContext parentContext) {
101 JAXXUtil.initContext(this, parentContext);
102 $initialize();
103 }
104
105 public ControlDepartmentTableUI(boolean param0) {
106 super(param0);
107 $initialize();
108 }
109
110 public ControlDepartmentTableUI(JAXXContext parentContext, boolean param1) {
111 super(param1);
112 JAXXUtil.initContext(this, parentContext);
113 $initialize();
114 }
115
116 public ControlDepartmentTableUI(LayoutManager param0) {
117 super(param0);
118 $initialize();
119 }
120
121 public ControlDepartmentTableUI(JAXXContext parentContext, LayoutManager param1) {
122 super(param1);
123 JAXXUtil.initContext(this, parentContext);
124 $initialize();
125 }
126
127 public ControlDepartmentTableUI(LayoutManager param0, boolean param1) {
128 super(param0 ,param1);
129 $initialize();
130 }
131
132 public ControlDepartmentTableUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
133 super(param1 ,param2);
134 JAXXUtil.initContext(this, parentContext);
135 $initialize();
136 }
137
138
139
140
141
142 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
143 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
144 }
145
146
147
148
149
150 @Override
151 public void applyDataBinding(String $binding) {
152 if (allComponentsCreated && $bindings.containsKey($binding)) {
153 getDataBinding($binding).applyDataBinding();
154 }
155 processDataBinding($binding);
156 }
157
158 @Override
159 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
160 super.firePropertyChange(propertyName, oldValue, newValue);
161 }
162
163 @Override
164 public Map<String, Object> get$objectMap() {
165 return $objectMap;
166 }
167
168 @Override
169 public JAXXBinding getDataBinding(String bindingId) {
170 return $bindings.get(bindingId);
171 }
172
173 @Override
174 public JAXXBinding[] getDataBindings() {
175 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
176 }
177
178 @Override
179 public Object getObjectById(String id) {
180 return $objectMap.get(id);
181 }
182
183 @Override
184 public void processDataBinding(String $binding, boolean $force) {
185 if (!$force && $activeBindings.contains($binding)) {
186 return;
187 }
188 $activeBindings.add($binding);
189 try {
190 if (allComponentsCreated && $bindings.containsKey($binding)) {
191 getDataBinding($binding).processDataBinding();
192 }
193 } finally {
194 $activeBindings.remove($binding);
195 }
196 }
197
198 @Override
199 public void processDataBinding(String $binding) {
200 processDataBinding($binding, false);
201 }
202
203 @Override
204 public void registerDataBinding(JAXXBinding binding) {
205 $bindings.put(binding.getId(), binding);
206 }
207
208 @Override
209 public void removeDataBinding(String $binding) {
210 if (allComponentsCreated && $bindings.containsKey($binding)) {
211 getDataBinding($binding).removeDataBinding();
212 }
213 }
214
215
216
217
218
219 @Override
220 public <T> T getContextValue(Class<T> clazz) {
221 return delegateContext.getContextValue(clazz, null);
222 }
223
224 @Override
225 public <T> T getContextValue(Class<T> clazz, String name) {
226 return delegateContext.getContextValue(clazz, name);
227 }
228
229 @Override
230 public JAXXContext getDelegateContext() {
231 return delegateContext;
232 }
233
234 @Override
235 public <O extends Container> O getParentContainer(Class<O> clazz) {
236 return SwingUtil.getParentContainer(this, clazz);
237 }
238
239 @Override
240 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
241 return SwingUtil.getParentContainer(source, clazz);
242 }
243
244 @Override
245 public <T> void removeContextValue(Class<T> clazz) {
246 delegateContext.removeContextValue(clazz, null);
247 }
248
249 @Override
250 public <T> void removeContextValue(Class<T> clazz, String name) {
251 delegateContext.removeContextValue(clazz, name);
252 }
253
254 @Override
255 public <T> void setContextValue(T o) {
256 delegateContext.setContextValue(o, null);
257 }
258
259 @Override
260 public <T> void setContextValue(T o, String name) {
261 delegateContext.setContextValue(o, name);
262 }
263
264
265
266
267
268 public void doActionPerformed__on__addDepartmentButton(ActionEvent event) {
269 if (log.isDebugEnabled()) {
270 log.debug(event);
271 }
272 handler.openAddDialog();
273 }
274
275 public void doActionPerformed__on__removeDepartmentButton(ActionEvent event) {
276 if (log.isDebugEnabled()) {
277 log.debug(event);
278 }
279 handler.removeDepartments();
280 }
281
282
283
284
285
286 public JButton getAddDepartmentButton() {
287 return addDepartmentButton;
288 }
289
290 public DaliHelpBroker getBroker() {
291 return broker;
292 }
293
294 public SwingTable getControlDepartmentTable() {
295 return controlDepartmentTable;
296 }
297
298 public JScrollPane getControlDepartmentTableUIPanel() {
299 return controlDepartmentTableUIPanel;
300 }
301
302 public ControlDepartmentTableUIHandler getHandler() {
303 return handler;
304 }
305
306 public ControlDepartmentTableUIModel getModel() {
307 return model;
308 }
309
310 public JButton getRemoveDepartmentButton() {
311 return removeDepartmentButton;
312 }
313
314
315
316
317
318 @Override
319 public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
320 broker.installUI(component, helpId);
321 }
322
323 @Override
324 public void showHelp(String helpId) {
325 getBroker().showHelp(this, helpId);
326 }
327
328
329
330
331
332 protected JPanel get$JPanel0() {
333 return $JPanel0;
334 }
335
336 protected JPanel get$JPanel1() {
337 return $JPanel1;
338 }
339
340
341
342
343
344 protected void addChildrenToControlDepartmentTableUI() {
345 if (!allComponentsCreated) {
346 return;
347 }
348 add(controlDepartmentTableUIPanel);
349 add($JPanel0, BorderLayout.PAGE_END);
350 }
351
352 protected void addChildrenToControlDepartmentTableUIPanel() {
353 if (!allComponentsCreated) {
354 return;
355 }
356 controlDepartmentTableUIPanel.getViewport().add(controlDepartmentTable);
357 }
358
359 protected void createAddDepartmentButton() {
360 $objectMap.put("addDepartmentButton", addDepartmentButton = new JButton());
361
362 addDepartmentButton.setName("addDepartmentButton");
363 addDepartmentButton.setText(t("dali.common.add"));
364 addDepartmentButton.setToolTipText(t("dali.rule.department.add.tip"));
365 addDepartmentButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__addDepartmentButton"));
366 }
367
368 protected void createBroker() {
369 $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
370 }
371
372 protected void createControlDepartmentTable() {
373 $objectMap.put("controlDepartmentTable", controlDepartmentTable = new SwingTable());
374
375 controlDepartmentTable.setName("controlDepartmentTable");
376 }
377
378 protected void createControlDepartmentTableUIPanel() {
379 $objectMap.put("controlDepartmentTableUIPanel", controlDepartmentTableUIPanel = new JScrollPane());
380
381 controlDepartmentTableUIPanel.setName("controlDepartmentTableUIPanel");
382 }
383
384 protected ControlDepartmentTableUIHandler createHandler() {
385 return new ControlDepartmentTableUIHandler();
386 }
387
388 protected void createModel() {
389 $objectMap.put("model", model = getContextValue(ControlDepartmentTableUIModel.class));
390 }
391
392 protected void createRemoveDepartmentButton() {
393 $objectMap.put("removeDepartmentButton", removeDepartmentButton = new JButton());
394
395 removeDepartmentButton.setName("removeDepartmentButton");
396 removeDepartmentButton.setText(t("dali.common.delete"));
397 removeDepartmentButton.setToolTipText(t("dali.rule.department.delete.tip"));
398 removeDepartmentButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__removeDepartmentButton"));
399 }
400
401
402
403
404
405 private void $completeSetup() {
406 allComponentsCreated = true;
407 if (log.isDebugEnabled()) {
408 log.debug(this);
409 }
410 addChildrenToControlDepartmentTableUI();
411 addChildrenToControlDepartmentTableUIPanel();
412
413 $JPanel0.add($JPanel1, BorderLayout.LINE_START);
414
415 $JPanel1.add(addDepartmentButton);
416 $JPanel1.add(removeDepartmentButton);
417
418
419 JAXXUtil.applyDataBinding(this, $bindings.keySet());
420
421
422 addDepartmentButton.setAlignmentX(Component.CENTER_ALIGNMENT);
423 removeDepartmentButton.setAlignmentX(Component.CENTER_ALIGNMENT);
424 setBorder(BorderFactory.createTitledBorder(t("dali.rule.department.title")));
425 addDepartmentButton.setIcon(SwingUtil.createActionIcon("add"));
426 removeDepartmentButton.setIcon(SwingUtil.createActionIcon("delete"));
427 }
428
429 private void $initialize() {
430 if (allComponentsCreated) {
431 return;
432 }
433 if (log.isDebugEnabled()) {
434 log.debug(this);
435 }
436 handler.beforeInit(this);
437 $objectMap.put("controlDepartmentTableUI", controlDepartmentTableUI);
438 createModel();
439 createBroker();
440 createControlDepartmentTableUIPanel();
441 createControlDepartmentTable();
442
443 $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
444
445 $JPanel0.setName("$JPanel0");
446 $JPanel0.setLayout(new BorderLayout());
447
448 $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
449
450 $JPanel1.setName("$JPanel1");
451 createAddDepartmentButton();
452 createRemoveDepartmentButton();
453
454 setName("controlDepartmentTableUI");
455 setLayout(new BorderLayout());
456 controlDepartmentTableUI.putClientProperty("validatorLabel", t("dali.rule.department.title"));
457
458
459 $registerDefaultBindings();
460 $completeSetup();
461 handler.afterInit(this);
462 }
463
464 private void $registerDefaultBindings() {
465
466 registerDataBinding(new DefaultJAXXBinding(this, BINDING_REMOVE_DEPARTMENT_BUTTON_ENABLED, true, true) {
467
468 @Override
469 public void applyDataBinding() {
470 if (controlDepartmentTable != null) {
471 controlDepartmentTable.addPropertyChangeListener("editable", this);
472 }
473 if (model != null) {
474 model.addPropertyChangeListener("selectedRows", this);
475 }
476 }
477
478 @Override
479 public void processDataBinding() {
480 if (model != null && model.getSelectedRows() != null && controlDepartmentTable != null) {
481 removeDepartmentButton.setEnabled(controlDepartmentTable.isEditable() && !model.getSelectedRows().isEmpty());
482 }
483 }
484
485 @Override
486 public void removeDataBinding() {
487 if (controlDepartmentTable != null) {
488 controlDepartmentTable.removePropertyChangeListener("editable", this);
489 }
490 if (model != null) {
491 model.removePropertyChangeListener("selectedRows", this);
492 }
493 }
494 });
495 }
496
497 }