1 package fr.ifremer.dali.ui.swing.content.manage.campaign;
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.campaign.menu.CampaignsMenuUI;
6 import fr.ifremer.dali.ui.swing.content.manage.campaign.table.CampaignsTableUI;
7 import fr.ifremer.dali.ui.swing.util.DaliUI;
8 import fr.ifremer.dali.ui.swing.util.image.BackgroundPanel;
9 import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
10 import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
11 import java.awt.BorderLayout;
12 import java.awt.Component;
13 import java.awt.Container;
14 import java.awt.GridLayout;
15 import java.awt.LayoutManager;
16 import java.util.ArrayList;
17 import java.util.HashMap;
18 import java.util.List;
19 import java.util.Map;
20 import java.util.TreeMap;
21 import javax.swing.BorderFactory;
22 import javax.swing.Box;
23 import javax.swing.BoxLayout;
24 import javax.swing.JButton;
25 import javax.swing.JLabel;
26 import javax.swing.JPanel;
27 import jaxx.runtime.JAXXBinding;
28 import jaxx.runtime.JAXXContext;
29 import jaxx.runtime.JAXXObject;
30 import jaxx.runtime.JAXXObjectDescriptor;
31 import jaxx.runtime.JAXXUtil;
32 import jaxx.runtime.JAXXValidator;
33 import jaxx.runtime.SwingUtil;
34 import jaxx.runtime.binding.DefaultJAXXBinding;
35 import jaxx.runtime.context.DefaultJAXXContext;
36 import jaxx.runtime.validator.swing.SwingValidator;
37 import jaxx.runtime.validator.swing.SwingValidatorUtil;
38 import jaxx.runtime.validator.swing.meta.Validator;
39 import jaxx.runtime.validator.swing.meta.ValidatorField;
40 import jaxx.runtime.validator.swing.ui.ImageValidationUI;
41 import org.apache.commons.logging.Log;
42 import org.apache.commons.logging.LogFactory;
43 import static org.nuiton.i18n.I18n.t;
44
45 public class CampaignsUI extends JPanel implements DaliUI<CampaignsUIModel, CampaignsUIHandler>, JAXXObject, JAXXValidator {
46
47
48
49
50
51 public static final String BINDING_SAVE_BUTTON_ENABLED = "saveButton.enabled";
52
53
54
55
56
57 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAKVWz1MjRRRuYhKW4AoLBYLuWoiKINrBRa1StpCQDW7WgNYGVkoOa2emCQ09P+zuQGJqLf8EvXrSuxervHmy9uDZgxfLf8GyPHi1fN2TzCQkgVCBqq5Jv/e+/t6P/mZ++AslpEAvHpNqFYuKq5hD8f3M/v5HpWNqqbtUWoL5yhMo+BuKodgBGrXDfanQSwcFHZ5uhKeznuN7LnVbotcKKCVVjVN5RKlS6FZ7hCVluhia16p+RTRRQ1LdUL/75+/Y1/ZX38cQqvrAbgxSmbssKsokXkAxZis0ASedkjQnbhloCOaWge91vZflRMod4tDP0ZdouICSPhEAptB8/ykbDBNf9RW69vL9j4lL+YpCdw4FZoeCOlRgm3CGKwzLMzgdW56rAAw7xCVlii3i+ISVXZxtPMi9vO8bzKRCCcezKVcoMwjctsaIMJMl4Z1QodCrPUHvwq97ELNpPKPQkVMw2AQqoNByWy9CQwOhqNeHzc0IoVmiN6EzugnVhn+wq51GQt+4Q92Kfn5WL1NRAnp/L69Q7spV0ZFRabYNjkad6SB4Ozw4sl2XTMJZn9BSgbkn5zMokFKQwa2oXpweqrwDFBRa7Um2ohjHTHvhTWKdlIVXce2wHlMd1FZDalGtxpspyl1S4lRX54MrV0fp0Kg8DSR9wisdJN4KSUS2UYt7km5WlIID0GRbdYJd7fha6J+S5JRGBtywCvR822yBguBIQaIrPnSAEqIC2wrNHHSKzgMwBXIzc05uNKCx/jc9+fvPf/601aoxU11dWyQS7r4vPB9uENNHjwUCo5uY3ib+2gEakZSDvhr9vNmFWLFhBnJw3g0dHszAPSKPACIx/McvT6Y/++0pFNtCKe4Re4to/zwaUUcCquBxu+q/v2EYPX12DdZxzQ24PArvoZlGhZ6rq8V50/2oy0xxOr/0uAqVudmlMiG90siv/04Wf9xoVmcI2M72dI8qlPgUJZnLmUuNBjfktavmjvqSVmwvktFuwoq6jLffkJR3zPpeRzHiWuc8YWudW65vmqegijVsCUoUzTm+qgWGxdsrr5v/pccwtkeeYF/AABOe4XCiY94JY/XgfuNsbmc39wD84opWwTDbXtxAITA3+pA69AQNrrNCU3XTaHKm4MXFQSg3C3s5aILmv26qq5820HmZuSxTaHuCBRLzbt3I7p6epSDJPFz1xfm0scu0YVl2KT72y/NLGEKMNi0udaURiVcfxZ54RHyfM4so5rkZS69QynpWC0LwE1u6pVC4FDG/NTVokkVcSw/qVCfAh7Sm0Nv1i3VTv6rAEV7t8KqSOJvZyeYKUXtuBO3xHMcwADbdUm0VrsuSTfZIdqJeBDW7KNe4lrvema5eLdNi5mEuynO8Nc/gnFHleXyX+bstcxrQMQ4YRKwsiAMiNUxdfatgSNfr5oMDMwkfDeywtrg0t7Aw19wz7/P2LZ1zLojuMUYtIt/HKCc5qXngjJ65AzJG5krMtaEC6x3IQ3pNXYqot8/0Uu2OMD0wwuzACC8MjLAwMMJyH71JkaYe7l+A9EZfXL65AGGlDy5xZgUfDQOx+PYSFv8Dil4Pm0INAAA=";
58 private static final Log log = LogFactory.getLog(CampaignsUI.class);
59 private static final long serialVersionUID = 1L;
60
61
62
63
64
65 protected List<Object> $activeBindings = new ArrayList<Object>();
66 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
67 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
68 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
69 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
70 private boolean allComponentsCreated;
71 protected final JAXXContext delegateContext = new DefaultJAXXContext();
72
73
74
75
76
77 protected DaliHelpBroker broker;
78 @ValidatorField( validatorId = "validator", propertyName = "campaignsTableUIModel", editorName = "campaignsTableUI")
79 protected CampaignsTableUI campaignsTableUI;
80 protected JButton closeButton;
81 protected final CampaignsUIHandler handler = createHandler();
82 protected BackgroundPanel leftImage;
83 protected JPanel menu;
84 protected CampaignsMenuUI menuUI;
85 protected CampaignsUIModel model;
86 protected JButton saveButton;
87 protected JLabel sismerWebLink;
88 @Validator( validatorId = "validator")
89 protected SwingValidator<CampaignsUIModel> validator;
90 protected List<String> validatorIds = new ArrayList<String>();
91
92
93
94
95
96 private CampaignsUI $JPanel0 = this;
97 private JPanel $JPanel1;
98 private JPanel $JPanel2;
99 private JPanel $JPanel3;
100 private JPanel $JPanel4;
101
102
103
104
105
106 public CampaignsUI(ApplicationUI parentUI) {
107 ApplicationUIUtil.setParentUI(this, parentUI);
108 $initialize();
109 }
110
111 public CampaignsUI() {
112 $initialize();
113 }
114
115 public CampaignsUI(JAXXContext parentContext) {
116 JAXXUtil.initContext(this, parentContext);
117 $initialize();
118 }
119
120 public CampaignsUI(boolean param0) {
121 super(param0);
122 $initialize();
123 }
124
125 public CampaignsUI(JAXXContext parentContext, boolean param1) {
126 super(param1);
127 JAXXUtil.initContext(this, parentContext);
128 $initialize();
129 }
130
131 public CampaignsUI(LayoutManager param0) {
132 super(param0);
133 $initialize();
134 }
135
136 public CampaignsUI(JAXXContext parentContext, LayoutManager param1) {
137 super(param1);
138 JAXXUtil.initContext(this, parentContext);
139 $initialize();
140 }
141
142 public CampaignsUI(LayoutManager param0, boolean param1) {
143 super(param0 ,param1);
144 $initialize();
145 }
146
147 public CampaignsUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
148 super(param1 ,param2);
149 JAXXUtil.initContext(this, parentContext);
150 $initialize();
151 }
152
153
154
155
156
157 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
158 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
159 }
160
161
162
163
164
165 @Override
166 public void applyDataBinding(String $binding) {
167 if (allComponentsCreated && $bindings.containsKey($binding)) {
168 getDataBinding($binding).applyDataBinding();
169 }
170 processDataBinding($binding);
171 }
172
173 @Override
174 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
175 super.firePropertyChange(propertyName, oldValue, newValue);
176 }
177
178 @Override
179 public Map<String, Object> get$objectMap() {
180 return $objectMap;
181 }
182
183 @Override
184 public JAXXBinding getDataBinding(String bindingId) {
185 return $bindings.get(bindingId);
186 }
187
188 @Override
189 public JAXXBinding[] getDataBindings() {
190 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
191 }
192
193 @Override
194 public Object getObjectById(String id) {
195 return $objectMap.get(id);
196 }
197
198 @Override
199 public void processDataBinding(String $binding, boolean $force) {
200 if (!$force && $activeBindings.contains($binding)) {
201 return;
202 }
203 $activeBindings.add($binding);
204 try {
205 if (allComponentsCreated && $bindings.containsKey($binding)) {
206 getDataBinding($binding).processDataBinding();
207 }
208 } finally {
209 $activeBindings.remove($binding);
210 }
211 }
212
213 @Override
214 public void processDataBinding(String $binding) {
215 processDataBinding($binding, false);
216 }
217
218 @Override
219 public void registerDataBinding(JAXXBinding binding) {
220 $bindings.put(binding.getId(), binding);
221 }
222
223 @Override
224 public void removeDataBinding(String $binding) {
225 if (allComponentsCreated && $bindings.containsKey($binding)) {
226 getDataBinding($binding).removeDataBinding();
227 }
228 }
229
230
231
232
233
234 @Override
235 public <T> T getContextValue(Class<T> clazz) {
236 return delegateContext.getContextValue(clazz, null);
237 }
238
239 @Override
240 public <T> T getContextValue(Class<T> clazz, String name) {
241 return delegateContext.getContextValue(clazz, name);
242 }
243
244 @Override
245 public JAXXContext getDelegateContext() {
246 return delegateContext;
247 }
248
249 @Override
250 public <O extends Container> O getParentContainer(Class<O> clazz) {
251 return SwingUtil.getParentContainer(this, clazz);
252 }
253
254 @Override
255 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
256 return SwingUtil.getParentContainer(source, clazz);
257 }
258
259 @Override
260 public <T> void removeContextValue(Class<T> clazz) {
261 delegateContext.removeContextValue(clazz, null);
262 }
263
264 @Override
265 public <T> void removeContextValue(Class<T> clazz, String name) {
266 delegateContext.removeContextValue(clazz, name);
267 }
268
269 @Override
270 public <T> void setContextValue(T o) {
271 delegateContext.setContextValue(o, null);
272 }
273
274 @Override
275 public <T> void setContextValue(T o, String name) {
276 delegateContext.setContextValue(o, name);
277 }
278
279
280
281
282
283 @Override
284 public SwingValidator<?> getValidator(String validatorId) {
285 return (SwingValidator<?>) (validatorIds.contains(validatorId) ? getObjectById(validatorId) : null);
286 }
287
288 @Override
289 public List<String> getValidatorIds() {
290 return validatorIds;
291 }
292
293 @Override
294 public void registerValidatorFields() {
295 SwingValidatorUtil.detectValidatorFields(this);
296 }
297
298
299
300
301
302 public DaliHelpBroker getBroker() {
303 return broker;
304 }
305
306 public CampaignsTableUI getCampaignsTableUI() {
307 return campaignsTableUI;
308 }
309
310 public JButton getCloseButton() {
311 return closeButton;
312 }
313
314 public CampaignsUIHandler getHandler() {
315 return handler;
316 }
317
318 public BackgroundPanel getLeftImage() {
319 return leftImage;
320 }
321
322 public JPanel getMenu() {
323 return menu;
324 }
325
326 public CampaignsMenuUI getMenuUI() {
327 return menuUI;
328 }
329
330 public CampaignsUIModel getModel() {
331 return model;
332 }
333
334 public JButton getSaveButton() {
335 return saveButton;
336 }
337
338 public JLabel getSismerWebLink() {
339 return sismerWebLink;
340 }
341
342 public SwingValidator<CampaignsUIModel> getValidator() {
343 return validator;
344 }
345
346
347
348
349
350 protected JPanel get$JPanel1() {
351 return $JPanel1;
352 }
353
354 protected JPanel get$JPanel2() {
355 return $JPanel2;
356 }
357
358 protected JPanel get$JPanel3() {
359 return $JPanel3;
360 }
361
362 protected JPanel get$JPanel4() {
363 return $JPanel4;
364 }
365
366
367
368
369
370 protected void addChildrenToMenu() {
371 if (!allComponentsCreated) {
372 return;
373 }
374 menu.add(menuUI);
375 menu.add($JPanel2);
376 }
377
378 protected void addChildrenToValidator() {
379 if (!allComponentsCreated) {
380 return;
381 }
382 validator.setUiClass(ImageValidationUI.class);
383 validator.setBean(model);
384 }
385
386 protected void createBroker() {
387 $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
388 }
389
390 protected void createCampaignsTableUI() {
391 $objectMap.put("campaignsTableUI", campaignsTableUI = new CampaignsTableUI(this));
392
393 campaignsTableUI.setName("campaignsTableUI");
394 campaignsTableUI.putClientProperty("validatorLabel", t("dali.campaign.title"));
395 }
396
397 protected void createCloseButton() {
398 $objectMap.put("closeButton", closeButton = new JButton());
399
400 closeButton.setName("closeButton");
401 closeButton.setText(t("dali.common.close"));
402 closeButton.putClientProperty("applicationActionKey", fr.ifremer.dali.ui.swing.util.DaliKeyStrokes.CANCEL);
403 closeButton.putClientProperty("applicationAction", CloseAction.class);
404 }
405
406 protected CampaignsUIHandler createHandler() {
407 return new CampaignsUIHandler();
408 }
409
410 protected void createLeftImage() {
411 $objectMap.put("leftImage", leftImage = new BackgroundPanel());
412
413 leftImage.setName("leftImage");
414 }
415
416 protected void createMenu() {
417 $objectMap.put("menu", menu = new JPanel());
418
419 menu.setName("menu");
420 menu.setLayout(new BoxLayout(menu, BoxLayout.PAGE_AXIS));
421 }
422
423 protected void createMenuUI() {
424 $objectMap.put("menuUI", menuUI = new CampaignsMenuUI(this));
425
426 menuUI.setName("menuUI");
427 }
428
429 protected void createModel() {
430 $objectMap.put("model", model = getContextValue(CampaignsUIModel.class));
431 }
432
433 protected void createSaveButton() {
434 $objectMap.put("saveButton", saveButton = new JButton());
435
436 saveButton.setName("saveButton");
437 saveButton.setText(t("dali.common.save"));
438 saveButton.setToolTipText(t("dali.action.save.programs"));
439 saveButton.putClientProperty("applicationActionKey", fr.ifremer.dali.ui.swing.util.DaliKeyStrokes.SAVE);
440 saveButton.putClientProperty("applicationAction", SaveAction.class);
441 }
442
443 protected void createSismerWebLink() {
444 $objectMap.put("sismerWebLink", sismerWebLink = new JLabel());
445
446 sismerWebLink.setName("sismerWebLink");
447 sismerWebLink.setText(t("dali.campaign.sismer.link"));
448 }
449
450 protected void createValidator() {
451 $objectMap.put("validator", validator = SwingValidator.newValidator(CampaignsUIModel.class, null));
452 }
453
454
455
456
457
458 private void $completeSetup() {
459 allComponentsCreated = true;
460 if (log.isDebugEnabled()) {
461 log.debug(this);
462 }
463
464 add($JPanel1, BorderLayout.LINE_START);
465 add($JPanel3, BorderLayout.CENTER);
466 addChildrenToValidator();
467
468 $JPanel1.add(menu, BorderLayout.PAGE_START);
469 $JPanel1.add(leftImage, BorderLayout.PAGE_END);
470 addChildrenToMenu();
471
472 $JPanel2.add(sismerWebLink);
473
474 $JPanel3.add(SwingUtil.boxComponentWithJxLayer(campaignsTableUI));
475 $JPanel3.add($JPanel4, BorderLayout.PAGE_END);
476
477 $JPanel4.add(closeButton);
478 $JPanel4.add(saveButton);
479
480
481 JAXXUtil.applyDataBinding(this, $bindings.keySet());
482
483
484 closeButton.setAlignmentX(Component.CENTER_ALIGNMENT);
485 saveButton.setAlignmentX(Component.CENTER_ALIGNMENT);
486 sismerWebLink.setBorder(BorderFactory.createEmptyBorder(20,0,0,0));
487 sismerWebLink.setHorizontalAlignment(JLabel.CENTER);
488 sismerWebLink.setForeground(java.awt.Color.BLUE);
489 leftImage.setImage(SwingUtil.createIcon("/images/campagne.jpg").getImage());
490 closeButton.setIcon(SwingUtil.createActionIcon("cancel"));
491 saveButton.setIcon(SwingUtil.createActionIcon("save"));
492
493
494 validatorIds = SwingValidatorUtil.detectValidators(this);
495 SwingValidatorUtil.installUI(this);
496 }
497
498 private void $initialize() {
499 if (allComponentsCreated) {
500 return;
501 }
502 if (log.isDebugEnabled()) {
503 log.debug(this);
504 }
505 handler.beforeInit(this);
506 $objectMap.put("$JPanel0", $JPanel0);
507 createModel();
508 createBroker();
509 createValidator();
510
511 $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
512
513 $JPanel1.setName("$JPanel1");
514 $JPanel1.setLayout(new BorderLayout());
515 createMenu();
516 createMenuUI();
517
518 $objectMap.put("$JPanel2", $JPanel2 = new JPanel());
519
520 $JPanel2.setName("$JPanel2");
521 $JPanel2.setLayout(new BorderLayout());
522 createSismerWebLink();
523 createLeftImage();
524
525 $objectMap.put("$JPanel3", $JPanel3 = new JPanel());
526
527 $JPanel3.setName("$JPanel3");
528 $JPanel3.setLayout(new BorderLayout());
529 createCampaignsTableUI();
530
531 $objectMap.put("$JPanel4", $JPanel4 = new JPanel());
532
533 $JPanel4.setName("$JPanel4");
534 $JPanel4.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 if (model != null) {
560 model.addPropertyChangeListener("saveEnabled", this);
561 }
562 }
563
564 @Override
565 public void processDataBinding() {
566 if (model != null) {
567 saveButton.setEnabled(model.isModify() && model.isValid() && model.isSaveEnabled());
568 }
569 }
570
571 @Override
572 public void removeDataBinding() {
573 if (model != null) {
574 model.removePropertyChangeListener("modify", this);
575 }
576 if (model != null) {
577 model.removePropertyChangeListener("valid", this);
578 }
579 if (model != null) {
580 model.removePropertyChangeListener("saveEnabled", this);
581 }
582 }
583 });
584 }
585
586 }