1 package fr.ifremer.dali.ui.swing.content.manage.context;
2
3 import fr.ifremer.dali.ui.swing.DaliHelpBroker;
4 import fr.ifremer.dali.ui.swing.DaliUIContext;
5 import fr.ifremer.dali.ui.swing.content.manage.context.contextslist.ManageContextsListTableUI;
6 import fr.ifremer.dali.ui.swing.content.manage.context.filtercontent.ManageFilterContentTableUI;
7 import fr.ifremer.dali.ui.swing.content.manage.context.filterslist.ManageFiltersListTableUI;
8 import fr.ifremer.dali.ui.swing.content.manage.context.menu.ManageContextsListMenuUI;
9 import fr.ifremer.dali.ui.swing.util.DaliUI;
10 import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
11 import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
12 import java.awt.BorderLayout;
13 import java.awt.Component;
14 import java.awt.Container;
15 import java.awt.GridBagConstraints;
16 import java.awt.GridLayout;
17 import java.awt.Insets;
18 import java.awt.LayoutManager;
19 import java.util.ArrayList;
20 import java.util.HashMap;
21 import java.util.List;
22 import java.util.Map;
23 import java.util.TreeMap;
24 import javax.swing.BorderFactory;
25 import javax.swing.Box;
26 import javax.swing.BoxLayout;
27 import javax.swing.JButton;
28 import javax.swing.JPanel;
29 import jaxx.runtime.JAXXBinding;
30 import jaxx.runtime.JAXXContext;
31 import jaxx.runtime.JAXXObject;
32 import jaxx.runtime.JAXXObjectDescriptor;
33 import jaxx.runtime.JAXXUtil;
34 import jaxx.runtime.JAXXValidator;
35 import jaxx.runtime.SwingUtil;
36 import jaxx.runtime.binding.DefaultJAXXBinding;
37 import jaxx.runtime.context.DefaultJAXXContext;
38 import jaxx.runtime.swing.Table;
39 import jaxx.runtime.swing.help.JAXXHelpUI;
40 import jaxx.runtime.validator.swing.SwingValidator;
41 import jaxx.runtime.validator.swing.SwingValidatorUtil;
42 import jaxx.runtime.validator.swing.meta.Validator;
43 import jaxx.runtime.validator.swing.meta.ValidatorField;
44 import jaxx.runtime.validator.swing.ui.ImageValidationUI;
45 import org.apache.commons.logging.Log;
46 import org.apache.commons.logging.LogFactory;
47 import static org.nuiton.i18n.I18n.t;
48
49 public class ManageContextsUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<ManageContextsUIModel, ManageContextsUIHandler>, JAXXObject, JAXXValidator {
50
51
52
53
54
55 public static final String BINDING_SAVE_BUTTON_ENABLED = "saveButton.enabled";
56
57
58
59
60
61 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAKVWS29bRRQ+NrZTx1DahlQJLVIaSkl4XPNQFygIkriJmmKXCrtRhBcwvneSTLkvZsbptawgfgI/AfZskNixQixYs2CD+AsIsWBbcWbuy7e+ThxiyTeeOed85ztz5n4n3/8FZcHhxiMSBAbvu5I51Li3sbf3ce8RNeUdKkzOfOlxCD+FIhS7ULOSfSHh5W5Thdej8HrDc3zPpe5I9FoTZoUc2FQcUiolvJSNMIWotxPzWuD3eYyakMpD/fafv4vfWF9/VwQIfGR3EUtZOi0qraTUhCKzJFzBTEekbhP3AGlw5h4g3+fUXsMmQtwnDv0SvoKZJlR8whFMwvL0JWsMHR/4Ei7cvPeAuNR+S8L6PjfYPqcO5YZFbGb0mSEeY3bD9FyJYIZDXHJAw2UgjZZeNsKVeLjj+xq3IqHseBa1JWydF7KlcFLcSo97X1Au4dWJwHdwdRdjNrVnGlo9QoNF8CQkvJ7pSWKIENrquRtvpggLToZckwnZom7/4Y6E1lnrdDDwqWJTPJWvmqSNO/Q2Xgx1B4IIOdzN+s7c7JCeTbGZC5kSwwhtU54LScAL4zWpenbPWk/0V9gIkFOXzhwWdi0lu89sSblevpg1zYXw26FDzKpzVlZRghFSI4gjnG4kiedHEzdCVJV67/+ljo2tcdTc9HGv30nOJG1VzbQ9QTf7UiIAzGWuQrirHFcT/1lBjmhqeDOycriWuRqodUaqdakYFbpQ5n3cxrvUHZfHT9AUCuPCU8KoALX1ydW533/688ftWA1rmHs+13VEzFGlfO75+I4zlfr5UAr7ktn1FvHXulAV1MZJoJX+eg6xdmRGcpjvsgo3VLhxl4hDhCjP/PHzL1c//+0ZKG7DrO0Ra5so/x2oykOOp+DZVuB/uK4ZPfv4Aj4v4beEb99nxPdtZhLJPHfDVE/sw7Ch2hIuDVNp6zGePdHrHdV/qJjENZUazo8DfEQHEm4PJ94uzVxJGjriKEBJE0Zj435jq4lZSuqmSbisQ0zPcTQDZBNgW67ntCU5m17113/n2j+sx60p4FEtTnRP21P+FCrMtZlL9aiKplDuaKr5gvYtL502efMHstfaj8T2tn6+N9aEyoQmXBm28a6f1IOSehkmd+Dds3WgvbG7lZ7/pdHzD/PUpOfZHeZ3tMOidgjpaIdELlEEqauEAKf+K0M9NA0mcOix/cHK6tKtW0vxnp5HK6vHQV8dTUP3TP3agsybftoJFtQM9bilZuiD4ab+Fd7/gWFySiTtMIl0QsuKXFmOisvKvNLPWF0NqSKWV/O5xSI/DTGbDDysAi6+j5OXLPWYa2EHPhiDLajn7KmIarunHmY+wuK5EZbPjfDaFOcyix04cPE/Brl3AtIbU3GRJyDUp+BSYmY4Ts7F4vgUFv8BLR0RUQYMAAA=";
62 private static final Log log = LogFactory.getLog(ManageContextsUI.class);
63 private static final long serialVersionUID = 1L;
64
65
66
67
68
69 protected List<Object> $activeBindings = new ArrayList<Object>();
70 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
71 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
72 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
73 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
74 private boolean allComponentsCreated;
75 protected final JAXXContext delegateContext = new DefaultJAXXContext();
76
77
78
79
80
81 protected DaliHelpBroker broker;
82 protected JButton closeButton;
83 protected JPanel filters;
84 protected final ManageContextsUIHandler handler = createHandler();
85 protected ManageContextsListMenuUI manageContextsListMenuUI;
86 @ValidatorField( validatorId = "validator", propertyName = "contextListModel", editorName = "manageContextsListUI")
87 protected ManageContextsListTableUI manageContextsListUI;
88 protected ManageFilterContentTableUI manageFilterContentUI;
89 protected ManageFiltersListTableUI manageFiltersListUI;
90 protected ManageContextsUIModel model;
91 protected JButton saveButton;
92 @Validator( validatorId = "validator")
93 protected SwingValidator<ManageContextsUIModel> validator;
94 protected List<String> validatorIds = new ArrayList<String>();
95
96
97
98
99
100 private ManageContextsUI $JPanel0 = this;
101 private JPanel $JPanel1;
102 private JPanel $JPanel2;
103 private Table $Table0;
104
105
106
107
108
109 public ManageContextsUI(ApplicationUI parentUI) {
110 ApplicationUIUtil.setParentUI(this, parentUI);
111 $initialize();
112 }
113
114 public ManageContextsUI() {
115 $initialize();
116 }
117
118 public ManageContextsUI(JAXXContext parentContext) {
119 JAXXUtil.initContext(this, parentContext);
120 $initialize();
121 }
122
123 public ManageContextsUI(boolean param0) {
124 super(param0);
125 $initialize();
126 }
127
128 public ManageContextsUI(JAXXContext parentContext, boolean param1) {
129 super(param1);
130 JAXXUtil.initContext(this, parentContext);
131 $initialize();
132 }
133
134 public ManageContextsUI(LayoutManager param0) {
135 super(param0);
136 $initialize();
137 }
138
139 public ManageContextsUI(JAXXContext parentContext, LayoutManager param1) {
140 super(param1);
141 JAXXUtil.initContext(this, parentContext);
142 $initialize();
143 }
144
145 public ManageContextsUI(LayoutManager param0, boolean param1) {
146 super(param0 ,param1);
147 $initialize();
148 }
149
150 public ManageContextsUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
151 super(param1 ,param2);
152 JAXXUtil.initContext(this, parentContext);
153 $initialize();
154 }
155
156
157
158
159
160 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
161 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
162 }
163
164
165
166
167
168 @Override
169 public void applyDataBinding(String $binding) {
170 if (allComponentsCreated && $bindings.containsKey($binding)) {
171 getDataBinding($binding).applyDataBinding();
172 }
173 processDataBinding($binding);
174 }
175
176 @Override
177 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
178 super.firePropertyChange(propertyName, oldValue, newValue);
179 }
180
181 @Override
182 public Map<String, Object> get$objectMap() {
183 return $objectMap;
184 }
185
186 @Override
187 public JAXXBinding getDataBinding(String bindingId) {
188 return $bindings.get(bindingId);
189 }
190
191 @Override
192 public JAXXBinding[] getDataBindings() {
193 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
194 }
195
196 @Override
197 public Object getObjectById(String id) {
198 return $objectMap.get(id);
199 }
200
201 @Override
202 public void processDataBinding(String $binding, boolean $force) {
203 if (!$force && $activeBindings.contains($binding)) {
204 return;
205 }
206 $activeBindings.add($binding);
207 try {
208 if (allComponentsCreated && $bindings.containsKey($binding)) {
209 getDataBinding($binding).processDataBinding();
210 }
211 } finally {
212 $activeBindings.remove($binding);
213 }
214 }
215
216 @Override
217 public void processDataBinding(String $binding) {
218 processDataBinding($binding, false);
219 }
220
221 @Override
222 public void registerDataBinding(JAXXBinding binding) {
223 $bindings.put(binding.getId(), binding);
224 }
225
226 @Override
227 public void removeDataBinding(String $binding) {
228 if (allComponentsCreated && $bindings.containsKey($binding)) {
229 getDataBinding($binding).removeDataBinding();
230 }
231 }
232
233
234
235
236
237 @Override
238 public <T> T getContextValue(Class<T> clazz) {
239 return delegateContext.getContextValue(clazz, null);
240 }
241
242 @Override
243 public <T> T getContextValue(Class<T> clazz, String name) {
244 return delegateContext.getContextValue(clazz, name);
245 }
246
247 @Override
248 public JAXXContext getDelegateContext() {
249 return delegateContext;
250 }
251
252 @Override
253 public <O extends Container> O getParentContainer(Class<O> clazz) {
254 return SwingUtil.getParentContainer(this, clazz);
255 }
256
257 @Override
258 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
259 return SwingUtil.getParentContainer(source, clazz);
260 }
261
262 @Override
263 public <T> void removeContextValue(Class<T> clazz) {
264 delegateContext.removeContextValue(clazz, null);
265 }
266
267 @Override
268 public <T> void removeContextValue(Class<T> clazz, String name) {
269 delegateContext.removeContextValue(clazz, name);
270 }
271
272 @Override
273 public <T> void setContextValue(T o) {
274 delegateContext.setContextValue(o, null);
275 }
276
277 @Override
278 public <T> void setContextValue(T o, String name) {
279 delegateContext.setContextValue(o, name);
280 }
281
282
283
284
285
286 @Override
287 public SwingValidator<?> getValidator(String validatorId) {
288 return (SwingValidator<?>) (validatorIds.contains(validatorId) ? getObjectById(validatorId) : null);
289 }
290
291 @Override
292 public List<String> getValidatorIds() {
293 return validatorIds;
294 }
295
296 @Override
297 public void registerValidatorFields() {
298 SwingValidatorUtil.detectValidatorFields(this);
299 }
300
301
302
303
304
305 public DaliHelpBroker getBroker() {
306 return broker;
307 }
308
309 public JButton getCloseButton() {
310 return closeButton;
311 }
312
313 public JPanel getFilters() {
314 return filters;
315 }
316
317 public ManageContextsUIHandler getHandler() {
318 return handler;
319 }
320
321 public ManageContextsListMenuUI getManageContextsListMenuUI() {
322 return manageContextsListMenuUI;
323 }
324
325 public ManageContextsListTableUI getManageContextsListUI() {
326 return manageContextsListUI;
327 }
328
329 public ManageFilterContentTableUI getManageFilterContentUI() {
330 return manageFilterContentUI;
331 }
332
333 public ManageFiltersListTableUI getManageFiltersListUI() {
334 return manageFiltersListUI;
335 }
336
337 public ManageContextsUIModel getModel() {
338 return model;
339 }
340
341 public JButton getSaveButton() {
342 return saveButton;
343 }
344
345 public SwingValidator<ManageContextsUIModel> getValidator() {
346 return validator;
347 }
348
349
350
351
352
353 @Override
354 public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
355 broker.installUI(component, helpId);
356 }
357
358 @Override
359 public void showHelp(String helpId) {
360 getBroker().showHelp(this, helpId);
361 }
362
363
364
365
366
367 protected JPanel get$JPanel1() {
368 return $JPanel1;
369 }
370
371 protected JPanel get$JPanel2() {
372 return $JPanel2;
373 }
374
375 protected Table get$Table0() {
376 return $Table0;
377 }
378
379
380
381
382
383 protected void addChildrenToFilters() {
384 if (!allComponentsCreated) {
385 return;
386 }
387 filters.add(manageFiltersListUI);
388 filters.add(manageFilterContentUI);
389 }
390
391 protected void addChildrenToValidator() {
392 if (!allComponentsCreated) {
393 return;
394 }
395 validator.setUiClass(ImageValidationUI.class);
396 validator.setBean(model);
397 }
398
399 protected void createBroker() {
400 $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
401 }
402
403 protected void createCloseButton() {
404 $objectMap.put("closeButton", closeButton = new JButton());
405
406 closeButton.setName("closeButton");
407 closeButton.setText(t("dali.common.close"));
408 closeButton.putClientProperty("applicationActionKey", fr.ifremer.dali.ui.swing.util.DaliKeyStrokes.CANCEL);
409 closeButton.putClientProperty("applicationAction", CloseAction.class);
410 }
411
412 protected void createFilters() {
413 $objectMap.put("filters", filters = new JPanel());
414
415 filters.setName("filters");
416 filters.setLayout(new GridLayout(0,1));
417 }
418
419 protected ManageContextsUIHandler createHandler() {
420 return new ManageContextsUIHandler();
421 }
422
423 protected void createManageContextsListMenuUI() {
424 $objectMap.put("manageContextsListMenuUI", manageContextsListMenuUI = new ManageContextsListMenuUI(this));
425
426 manageContextsListMenuUI.setName("manageContextsListMenuUI");
427 }
428
429 protected void createManageContextsListUI() {
430 $objectMap.put("manageContextsListUI", manageContextsListUI = new ManageContextsListTableUI(this));
431
432 manageContextsListUI.setName("manageContextsListUI");
433 }
434
435 protected void createManageFilterContentUI() {
436 $objectMap.put("manageFilterContentUI", manageFilterContentUI = new ManageFilterContentTableUI(this));
437
438 manageFilterContentUI.setName("manageFilterContentUI");
439 }
440
441 protected void createManageFiltersListUI() {
442 $objectMap.put("manageFiltersListUI", manageFiltersListUI = new ManageFiltersListTableUI(this));
443
444 manageFiltersListUI.setName("manageFiltersListUI");
445 }
446
447 protected void createModel() {
448 $objectMap.put("model", model = getContextValue(ManageContextsUIModel.class));
449 }
450
451 protected void createSaveButton() {
452 $objectMap.put("saveButton", saveButton = new JButton());
453
454 saveButton.setName("saveButton");
455 saveButton.setText(t("dali.common.save"));
456 saveButton.setToolTipText(t("dali.action.save.contexts"));
457 saveButton.putClientProperty("applicationActionKey", fr.ifremer.dali.ui.swing.util.DaliKeyStrokes.SAVE);
458 saveButton.putClientProperty("applicationAction", SaveAction.class);
459 }
460
461 protected void createValidator() {
462 $objectMap.put("validator", validator = SwingValidator.newValidator(ManageContextsUIModel.class, null));
463 }
464
465
466
467
468
469 private void $completeSetup() {
470 allComponentsCreated = true;
471 if (log.isDebugEnabled()) {
472 log.debug(this);
473 }
474
475 add(manageContextsListMenuUI, BorderLayout.LINE_START);
476 add($JPanel1, BorderLayout.CENTER);
477 addChildrenToValidator();
478
479 $JPanel1.add($Table0, BorderLayout.CENTER);
480 $JPanel1.add($JPanel2, BorderLayout.PAGE_END);
481
482 $Table0.add(SwingUtil.boxComponentWithJxLayer(manageContextsListUI), new GridBagConstraints(0, 0, 1, 1, 1.0, 0.2, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
483 $Table0.add(filters, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.8, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
484 addChildrenToFilters();
485
486 $JPanel2.add(closeButton);
487 $JPanel2.add(saveButton);
488
489
490 JAXXUtil.applyDataBinding(this, $bindings.keySet());
491
492
493 closeButton.setAlignmentX(Component.CENTER_ALIGNMENT);
494 saveButton.setAlignmentX(Component.CENTER_ALIGNMENT);
495 filters.setBorder(BorderFactory.createTitledBorder(t("dali.context.contextsList.filters.title")));
496 closeButton.setIcon(SwingUtil.createActionIcon("cancel"));
497 saveButton.setIcon(SwingUtil.createActionIcon("save"));
498
499
500 validatorIds = SwingValidatorUtil.detectValidators(this);
501 SwingValidatorUtil.installUI(this);
502 }
503
504 private void $initialize() {
505 if (allComponentsCreated) {
506 return;
507 }
508 if (log.isDebugEnabled()) {
509 log.debug(this);
510 }
511 handler.beforeInit(this);
512 $objectMap.put("$JPanel0", $JPanel0);
513 createModel();
514 createBroker();
515 createValidator();
516 createManageContextsListMenuUI();
517
518 $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
519
520 $JPanel1.setName("$JPanel1");
521 $JPanel1.setLayout(new BorderLayout());
522
523 $objectMap.put("$Table0", $Table0 = new Table());
524
525 $Table0.setName("$Table0");
526 createManageContextsListUI();
527 createFilters();
528 createManageFiltersListUI();
529 createManageFilterContentUI();
530
531 $objectMap.put("$JPanel2", $JPanel2 = new JPanel());
532
533 $JPanel2.setName("$JPanel2");
534 $JPanel2.setLayout(new GridLayout(1,0));
535 createCloseButton();
536 createSaveButton();
537
538 setName("$JPanel0");
539 setLayout(new BorderLayout());
540
541
542 $registerDefaultBindings();
543 $completeSetup();
544 handler.afterInit(this);
545 }
546
547 private void $registerDefaultBindings() {
548
549 registerDataBinding(new DefaultJAXXBinding(this, BINDING_SAVE_BUTTON_ENABLED, true, true) {
550
551 @Override
552 public void applyDataBinding() {
553 if (model != null) {
554 model.addPropertyChangeListener("modify", this);
555 }
556 if (model != null) {
557 model.addPropertyChangeListener("valid", this);
558 }
559 }
560
561 @Override
562 public void processDataBinding() {
563 if (model != null) {
564 saveButton.setEnabled(model.isModify() && model.isValid());
565 }
566 }
567
568 @Override
569 public void removeDataBinding() {
570 if (model != null) {
571 model.removePropertyChangeListener("modify", this);
572 }
573 if (model != null) {
574 model.removePropertyChangeListener("valid", this);
575 }
576 }
577 });
578 }
579
580 }