1 package fr.ifremer.dali.ui.swing.content.manage.program.strategiesByLocation;
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.program.strategiesByLocation.locations.LieuxProgrammeTableUI;
6 import fr.ifremer.dali.ui.swing.content.manage.program.strategiesByLocation.programs.StrategiesProgrammeTableUI;
7 import fr.ifremer.dali.ui.swing.content.manage.program.strategiesByLocation.strategies.StrategiesLieuTableUI;
8 import fr.ifremer.dali.ui.swing.util.DaliUI;
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.Box;
22 import javax.swing.BoxLayout;
23 import javax.swing.JButton;
24 import javax.swing.JPanel;
25 import jaxx.runtime.JAXXBinding;
26 import jaxx.runtime.JAXXContext;
27 import jaxx.runtime.JAXXObject;
28 import jaxx.runtime.JAXXObjectDescriptor;
29 import jaxx.runtime.JAXXUtil;
30 import jaxx.runtime.JAXXValidator;
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 jaxx.runtime.validator.swing.SwingValidator;
36 import jaxx.runtime.validator.swing.SwingValidatorUtil;
37 import jaxx.runtime.validator.swing.meta.Validator;
38 import jaxx.runtime.validator.swing.meta.ValidatorField;
39 import jaxx.runtime.validator.swing.ui.ImageValidationUI;
40 import org.apache.commons.logging.Log;
41 import org.apache.commons.logging.LogFactory;
42 import static org.nuiton.i18n.I18n.t;
43
44 public class StrategiesLieuxUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<StrategiesLieuxUIModel, StrategiesLieuxUIHandler>, JAXXObject, JAXXValidator {
45
46
47
48
49
50 public static final String BINDING_SAVE_BUTTON_ENABLED = "saveButton.enabled";
51
52
53
54
55
56 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAALVVTW8bRRh+bWynjgu0jRIKLVL63QoxpiBOgdLEbdS0bqnqNKrwAca7E2fK7Aczs+laUSt+Aj8B7r1U6o0T4sCZAxfEX0CIA1fUd2bXu3a9TlIRLHm0+8778cz7zD7v0z+hqiScekjjmMjI19xj5Obygwef9x4yR19jypE81IGE5FcqQ7kLDTezKw1num0T3kzDm63ACwOf+SPRS22YVXogmNpiTGt4dzzCUarZybaX4jCSw6wZqKKs3//9V/k799sfygBxiOgaeJTFvaLyk1TaUOauhmNYaZs2BfX7CENyv494Xze2lqBK3aEe+waewEwbaiGVmEzD6f0f2eaw8XGo4dDZm3epz8QHGjY2JeGbknlMEpcKTiJO1COsTpzA15iMeNSnfUZCGfQl9YjSkmrW50ytDNqBQzUPfNLJjG3Oovj+WhjaajUNVS9wmdDQ/X8K3TbZ82q1ngy+ZlLDhanlruHbDYxZsZ55aH0bN1yKXdPw3hh/2UaaoWPWjaExzzBs62Vk0xAXp/6J1TjVM995YfDfTc7qsXXaE+z+mgb3QNok0gdF2kVlDIb5HIoaa2oGhR0IlNz4EnmFWN7J3Sd7s3UggNLNUTi792dI64fm/a1xGhuOCBRbibRGBDA3xnpiNY6nMv9ZRbdZvnEu3ZVwYuzGoRaRXItysSh1oSojNGs43p2Ur3u4lQjX8ZeEyyS0u/8uzP324x/PV4dqNYO15wtdR8QWVQS7FuJ3xU3pNxOpijQXzds0XOpCXTGBSm2V+GQBsE66jeCw3lETTkw4uUHVFqaozvz+088LX/36GpRXYVYE1F2lxn8N6npLYhcC4cbhZ1ctosOPDuF6BP8V/NC+pGEoeMLtsmNW5GGnZWhJXoljtO8x9p7a9zVzWaDmUN8xujQ/meAWG2j4eGfqbbPIjYygI14ilBFFWst3WtfbWKWiWYzafNSGOIHnWQSIJkZaThbQkvWmV//ln7nOs6tDakrYqrenuuf0VL+AGvcF95kdJemUKBwdjVCxyA3yaVA0H2D8WoepwL1v18sTJNSmkHBsp4N3fTcOKuZjmM7AR6/GQGd543re/yOj/U/qNHQQiHUerluHE9YhgWMdRtRCwwzzjRTgXD63YwcY4QpHDd8cXLy0eP784tBmp8DFS4/jyDRnybJmnj6FsW99rx6W8EIKOgjQGd74BMcKXexx38WjXpnIXDLr7J4ZjbljlvXiDAv/OcPpfZyqwp1E6abkOLsvFHSXDBcwwwt6J6P1QQoAAA==";
57 private static final Log log = LogFactory.getLog(StrategiesLieuxUI.class);
58 private static final long serialVersionUID = 1L;
59
60
61
62
63
64 protected List<Object> $activeBindings = new ArrayList<Object>();
65 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
66 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
67 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
68 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
69 private boolean allComponentsCreated;
70 protected final JAXXContext delegateContext = new DefaultJAXXContext();
71
72
73
74
75
76 protected DaliHelpBroker broker;
77 protected JButton closeButton;
78 protected final StrategiesLieuxUIHandler handler = createHandler();
79 protected LieuxProgrammeTableUI lieuxProgrammeTableUI;
80 protected StrategiesLieuxUIModel model;
81 protected JButton saveButton;
82 protected StrategiesLieuTableUI strategiesLieuTableUI;
83 @ValidatorField( validatorId = "validator", propertyName = "tableUIModel", editorName = "strategiesProgrammeTableUI")
84 protected StrategiesProgrammeTableUI strategiesProgrammeTableUI;
85 @Validator( validatorId = "validator")
86 protected SwingValidator<StrategiesLieuxUIModel> validator;
87 protected List<String> validatorIds = new ArrayList<String>();
88
89
90
91
92
93 private StrategiesLieuxUI $JPanel0 = this;
94 private JPanel $JPanel1;
95 private JPanel $JPanel2;
96
97
98
99
100
101 public StrategiesLieuxUI(ApplicationUI parentUI) {
102 ApplicationUIUtil.setParentUI(this, parentUI);
103 $initialize();
104 }
105
106 public StrategiesLieuxUI() {
107 $initialize();
108 }
109
110 public StrategiesLieuxUI(JAXXContext parentContext) {
111 JAXXUtil.initContext(this, parentContext);
112 $initialize();
113 }
114
115 public StrategiesLieuxUI(boolean param0) {
116 super(param0);
117 $initialize();
118 }
119
120 public StrategiesLieuxUI(JAXXContext parentContext, boolean param1) {
121 super(param1);
122 JAXXUtil.initContext(this, parentContext);
123 $initialize();
124 }
125
126 public StrategiesLieuxUI(LayoutManager param0) {
127 super(param0);
128 $initialize();
129 }
130
131 public StrategiesLieuxUI(JAXXContext parentContext, LayoutManager param1) {
132 super(param1);
133 JAXXUtil.initContext(this, parentContext);
134 $initialize();
135 }
136
137 public StrategiesLieuxUI(LayoutManager param0, boolean param1) {
138 super(param0 ,param1);
139 $initialize();
140 }
141
142 public StrategiesLieuxUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
143 super(param1 ,param2);
144 JAXXUtil.initContext(this, parentContext);
145 $initialize();
146 }
147
148
149
150
151
152 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
153 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
154 }
155
156
157
158
159
160 @Override
161 public void applyDataBinding(String $binding) {
162 if (allComponentsCreated && $bindings.containsKey($binding)) {
163 getDataBinding($binding).applyDataBinding();
164 }
165 processDataBinding($binding);
166 }
167
168 @Override
169 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
170 super.firePropertyChange(propertyName, oldValue, newValue);
171 }
172
173 @Override
174 public Map<String, Object> get$objectMap() {
175 return $objectMap;
176 }
177
178 @Override
179 public JAXXBinding getDataBinding(String bindingId) {
180 return $bindings.get(bindingId);
181 }
182
183 @Override
184 public JAXXBinding[] getDataBindings() {
185 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
186 }
187
188 @Override
189 public Object getObjectById(String id) {
190 return $objectMap.get(id);
191 }
192
193 @Override
194 public void processDataBinding(String $binding, boolean $force) {
195 if (!$force && $activeBindings.contains($binding)) {
196 return;
197 }
198 $activeBindings.add($binding);
199 try {
200 if (allComponentsCreated && $bindings.containsKey($binding)) {
201 getDataBinding($binding).processDataBinding();
202 }
203 } finally {
204 $activeBindings.remove($binding);
205 }
206 }
207
208 @Override
209 public void processDataBinding(String $binding) {
210 processDataBinding($binding, false);
211 }
212
213 @Override
214 public void registerDataBinding(JAXXBinding binding) {
215 $bindings.put(binding.getId(), binding);
216 }
217
218 @Override
219 public void removeDataBinding(String $binding) {
220 if (allComponentsCreated && $bindings.containsKey($binding)) {
221 getDataBinding($binding).removeDataBinding();
222 }
223 }
224
225
226
227
228
229 @Override
230 public <T> T getContextValue(Class<T> clazz) {
231 return delegateContext.getContextValue(clazz, null);
232 }
233
234 @Override
235 public <T> T getContextValue(Class<T> clazz, String name) {
236 return delegateContext.getContextValue(clazz, name);
237 }
238
239 @Override
240 public JAXXContext getDelegateContext() {
241 return delegateContext;
242 }
243
244 @Override
245 public <O extends Container> O getParentContainer(Class<O> clazz) {
246 return SwingUtil.getParentContainer(this, clazz);
247 }
248
249 @Override
250 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
251 return SwingUtil.getParentContainer(source, clazz);
252 }
253
254 @Override
255 public <T> void removeContextValue(Class<T> clazz) {
256 delegateContext.removeContextValue(clazz, null);
257 }
258
259 @Override
260 public <T> void removeContextValue(Class<T> clazz, String name) {
261 delegateContext.removeContextValue(clazz, name);
262 }
263
264 @Override
265 public <T> void setContextValue(T o) {
266 delegateContext.setContextValue(o, null);
267 }
268
269 @Override
270 public <T> void setContextValue(T o, String name) {
271 delegateContext.setContextValue(o, name);
272 }
273
274
275
276
277
278 @Override
279 public SwingValidator<?> getValidator(String validatorId) {
280 return (SwingValidator<?>) (validatorIds.contains(validatorId) ? getObjectById(validatorId) : null);
281 }
282
283 @Override
284 public List<String> getValidatorIds() {
285 return validatorIds;
286 }
287
288 @Override
289 public void registerValidatorFields() {
290 SwingValidatorUtil.detectValidatorFields(this);
291 }
292
293
294
295
296
297 public DaliHelpBroker getBroker() {
298 return broker;
299 }
300
301 public JButton getCloseButton() {
302 return closeButton;
303 }
304
305 public StrategiesLieuxUIHandler getHandler() {
306 return handler;
307 }
308
309 public LieuxProgrammeTableUI getLieuxProgrammeTableUI() {
310 return lieuxProgrammeTableUI;
311 }
312
313 public StrategiesLieuxUIModel getModel() {
314 return model;
315 }
316
317 public JButton getSaveButton() {
318 return saveButton;
319 }
320
321 public StrategiesLieuTableUI getStrategiesLieuTableUI() {
322 return strategiesLieuTableUI;
323 }
324
325 public StrategiesProgrammeTableUI getStrategiesProgrammeTableUI() {
326 return strategiesProgrammeTableUI;
327 }
328
329 public SwingValidator<StrategiesLieuxUIModel> getValidator() {
330 return validator;
331 }
332
333
334
335
336
337 @Override
338 public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
339 broker.installUI(component, helpId);
340 }
341
342 @Override
343 public void showHelp(String helpId) {
344 getBroker().showHelp(this, helpId);
345 }
346
347
348
349
350
351 protected JPanel get$JPanel1() {
352 return $JPanel1;
353 }
354
355 protected JPanel get$JPanel2() {
356 return $JPanel2;
357 }
358
359
360
361
362
363 protected void addChildrenToValidator() {
364 if (!allComponentsCreated) {
365 return;
366 }
367 validator.setUiClass(ImageValidationUI.class);
368 validator.setBean(model);
369 }
370
371 protected void createBroker() {
372 $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
373 }
374
375 protected void createCloseButton() {
376 $objectMap.put("closeButton", closeButton = new JButton());
377
378 closeButton.setName("closeButton");
379 closeButton.setText(t("dali.common.close"));
380 closeButton.putClientProperty("applicationActionKey", fr.ifremer.dali.ui.swing.util.DaliKeyStrokes.CANCEL);
381 closeButton.putClientProperty("applicationAction", CloseAction.class);
382 }
383
384 protected StrategiesLieuxUIHandler createHandler() {
385 return new StrategiesLieuxUIHandler();
386 }
387
388 protected void createLieuxProgrammeTableUI() {
389 $objectMap.put("lieuxProgrammeTableUI", lieuxProgrammeTableUI = new LieuxProgrammeTableUI(this));
390
391 lieuxProgrammeTableUI.setName("lieuxProgrammeTableUI");
392 }
393
394 protected void createModel() {
395 $objectMap.put("model", model = getContextValue(StrategiesLieuxUIModel.class));
396 }
397
398 protected void createSaveButton() {
399 $objectMap.put("saveButton", saveButton = new JButton());
400
401 saveButton.setName("saveButton");
402 saveButton.setText(t("dali.common.save"));
403 saveButton.setToolTipText(t("dali.action.save.strategies"));
404 saveButton.putClientProperty("applicationActionKey", fr.ifremer.dali.ui.swing.util.DaliKeyStrokes.SAVE);
405 saveButton.putClientProperty("applicationAction", SaveAction.class);
406 }
407
408 protected void createStrategiesLieuTableUI() {
409 $objectMap.put("strategiesLieuTableUI", strategiesLieuTableUI = new StrategiesLieuTableUI(this));
410
411 strategiesLieuTableUI.setName("strategiesLieuTableUI");
412 }
413
414 protected void createStrategiesProgrammeTableUI() {
415 $objectMap.put("strategiesProgrammeTableUI", strategiesProgrammeTableUI = new StrategiesProgrammeTableUI(this));
416
417 strategiesProgrammeTableUI.setName("strategiesProgrammeTableUI");
418 }
419
420 protected void createValidator() {
421 $objectMap.put("validator", validator = SwingValidator.newValidator(StrategiesLieuxUIModel.class, null));
422 }
423
424
425
426
427
428 private void $completeSetup() {
429 allComponentsCreated = true;
430 if (log.isDebugEnabled()) {
431 log.debug(this);
432 }
433
434 add($JPanel1);
435 add($JPanel2, BorderLayout.PAGE_END);
436 addChildrenToValidator();
437
438 $JPanel1.add(lieuxProgrammeTableUI);
439 $JPanel1.add(strategiesLieuTableUI);
440 $JPanel1.add(SwingUtil.boxComponentWithJxLayer(strategiesProgrammeTableUI));
441
442 $JPanel2.add(closeButton);
443 $JPanel2.add(saveButton);
444
445
446 JAXXUtil.applyDataBinding(this, $bindings.keySet());
447
448
449 closeButton.setIcon(SwingUtil.createActionIcon("cancel"));
450 saveButton.setIcon(SwingUtil.createActionIcon("save"));
451
452
453 validatorIds = SwingValidatorUtil.detectValidators(this);
454 SwingValidatorUtil.installUI(this);
455 }
456
457 private void $initialize() {
458 if (allComponentsCreated) {
459 return;
460 }
461 if (log.isDebugEnabled()) {
462 log.debug(this);
463 }
464 handler.beforeInit(this);
465 $objectMap.put("$JPanel0", $JPanel0);
466 createModel();
467 createBroker();
468 createValidator();
469
470 $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
471
472 $JPanel1.setName("$JPanel1");
473 $JPanel1.setLayout(new GridLayout(3,1));
474 createLieuxProgrammeTableUI();
475 createStrategiesLieuTableUI();
476 createStrategiesProgrammeTableUI();
477
478 $objectMap.put("$JPanel2", $JPanel2 = new JPanel());
479
480 $JPanel2.setName("$JPanel2");
481 $JPanel2.setLayout(new GridLayout(1,0));
482 createCloseButton();
483 createSaveButton();
484
485 setName("$JPanel0");
486 setLayout(new BorderLayout());
487
488
489 $registerDefaultBindings();
490 $completeSetup();
491 handler.afterInit(this);
492 }
493
494 private void $registerDefaultBindings() {
495
496 registerDataBinding(new DefaultJAXXBinding(this, BINDING_SAVE_BUTTON_ENABLED, true, true) {
497
498 @Override
499 public void applyDataBinding() {
500 if (model != null) {
501 model.addPropertyChangeListener("modify", this);
502 }
503 if (model != null) {
504 model.addPropertyChangeListener("valid", this);
505 }
506 }
507
508 @Override
509 public void processDataBinding() {
510 if (model != null) {
511 saveButton.setEnabled(model.isModify() && model.isValid());
512 }
513 }
514
515 @Override
516 public void removeDataBinding() {
517 if (model != null) {
518 model.removePropertyChangeListener("modify", this);
519 }
520 if (model != null) {
521 model.removePropertyChangeListener("valid", this);
522 }
523 }
524 });
525 }
526
527 }