1 package fr.ifremer.tutti.ui.swing.content.program;
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.tutti.persistence.entities.referential.TuttiLocation;
28 import fr.ifremer.tutti.ui.swing.TuttiHelpBroker;
29 import fr.ifremer.tutti.ui.swing.util.TuttiUI;
30 import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
31 import java.awt.BorderLayout;
32 import java.awt.Component;
33 import java.awt.Container;
34 import java.awt.GridBagConstraints;
35 import java.awt.GridLayout;
36 import java.awt.Insets;
37 import java.awt.LayoutManager;
38 import java.awt.event.FocusEvent;
39 import java.awt.event.FocusListener;
40 import java.awt.event.KeyEvent;
41 import java.awt.event.KeyListener;
42 import java.util.ArrayList;
43 import java.util.HashMap;
44 import java.util.List;
45 import java.util.Map;
46 import java.util.TreeMap;
47 import javax.swing.BorderFactory;
48 import javax.swing.JButton;
49 import javax.swing.JLabel;
50 import javax.swing.JPanel;
51 import javax.swing.JScrollPane;
52 import javax.swing.JTextArea;
53 import javax.swing.JTextField;
54 import jaxx.runtime.JAXXBinding;
55 import jaxx.runtime.JAXXContext;
56 import jaxx.runtime.JAXXObject;
57 import jaxx.runtime.JAXXObjectDescriptor;
58 import jaxx.runtime.JAXXUtil;
59 import jaxx.runtime.JAXXValidator;
60 import jaxx.runtime.SwingUtil;
61 import jaxx.runtime.binding.DefaultJAXXBinding;
62 import jaxx.runtime.context.DefaultJAXXContext;
63 import jaxx.runtime.swing.Table;
64 import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
65 import jaxx.runtime.swing.help.JAXXHelpUI;
66 import jaxx.runtime.validator.swing.SwingValidator;
67 import jaxx.runtime.validator.swing.SwingValidatorUtil;
68 import jaxx.runtime.validator.swing.meta.Validator;
69 import jaxx.runtime.validator.swing.meta.ValidatorField;
70 import jaxx.runtime.validator.swing.ui.ImageValidationUI;
71 import org.apache.commons.logging.Log;
72 import org.apache.commons.logging.LogFactory;
73 import static jaxx.runtime.SwingUtil.getStringValue;
74 import static org.nuiton.i18n.I18n.t;
75
76 public class EditProgramUI extends JPanel implements JAXXHelpUI<TuttiHelpBroker>, TuttiUI<EditProgramUIModel, EditProgramUIHandler>, JAXXObject, JAXXValidator {
77
78
79
80
81
82 public static final String BINDING_DESCRIPTION_FIELD_TEXT = "descriptionField.text";
83 public static final String BINDING_NAME_FIELD_TEXT = "nameField.text";
84 public static final String BINDING_RESET_BUTTON_ENABLED = "resetButton.enabled";
85 public static final String BINDING_SAVE_BUTTON_ENABLED = "saveButton.enabled";
86 public static final String BINDING_ZONE_COMBO_BOX_SELECTED_ITEM = "zoneComboBox.selectedItem";
87
88
89
90
91
92 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAKVXzW8bRRSfuLbz2aZNSFpKkfLRNnah6xZUAUqBJmmtJDikSlxaNYcw3p3EU9a7y+44cbCK+BP4E+DOBYkbJ8SBM4deEFe4IYQEV8R7s+v9iHftTYiUVTLvvd+8937z3pv55g+Sc2wy+4y2WordNARvMGV96cmTzdozpor7zFFtbgnTJu7PQIZkdsio5q87gszvVNC85JmXVsyGZRrMCFkvVsiII4505tQZE4K8GrVQHae07YsXW1bT7qD6TsWhfvXXn5kvtS++zhDSssC7cQhlpp9VEEm2QjJcE2QCdjqgJZ0a++CGzY198Pcsrq3o1HE+pA32KfmcDFZI3qI2gAkylz5kiSHtW5Ygk0zj4qFt7tu0UTWth9RguiBv7dkK37NZg9mKaArBlSZXnEPwRFFNQwCwYrk2yoPA/tGaZUnkvCC5hqkh0t1TIm2geQCXr9nmJ8wWpJiMV8V/V8FqWeoGxsMHVOcahSQI8lqEDl/gQWzj96POYoCQ3TPthiCXIsberrSmSzqGg/0MYKhCaxj/BNLW8nTX5SJqTUWVy5zpQPx0RLnKWkIKjhl8Bsz6QJejwjEUAvs1c9lsCXInxmEkHAKuMWooy/Apc10wG6Po2EUhxzvFxU0Dj4cgFyNubqu2qesoidqdD9l58U11xbdkM4r6877Z0NV1eQhvHc+dXJVbCDJaA65dd/SO4aiqmw5blgI41xFbdxUVi/5GozZzmAgkpah4xKEHrFtqk1ciOYVWoQStIqjlgR2Ss5uwDKdmp7u7bIHI7SuXjvUVBJTSf6cnX3z/63flTjN5CfaeilUN9UIocignCyqF49bjbidpCq6XNqi1uEOGHaZDI5WN8kqMY9ueGJyD/S6guYLmyip16gCRG/zlhx+nP/75DMmUyYhuUq1MUX+NDIs6ZLRu6lrLev+e9GjscAi+5+E3A+cWZIdbmHOoJ2E3IVtZPISCDLZls3jegnRciUmH71Nt+Kd/Jre/vddJyQC4+HKiepCW3FOS54bOoW6ww3rNM7ajjloOa2pm0CTj2iaBxjkdXztez3hHft/tysOAIOd2XQo2jbKpNoGGfBuzAdGjyYoMC/96gLuMBF0gDTLVtMeM79fFI4NDmi+6iVX2mQiWC8W4rSzY7KyOXeUxF3XU67dbvi4hBcncuZUA2FWmPeByu3Vo3YJcbs+5fT00mBQUzcW4HT+/rD6pykKXkaGWcSKMtv0O/BxPJuQbSqPbhz3UUFA3cPZanLOBouc37CFMU69yqyrBZ3raCG7FBRoMlX7hnYG63/UnmzeH5tui0NPXuWIQ/YXg3GBpFFB0spATI/COct8I8jXT1nDgV9rL8i+3zRwpKkwMwapc6ExzJYUekYVm0FwxHMbryWGEbBIIXEhjmsDj8XF6KjZv9GIzEnNAaqENdLrXSbjhNFnB5/h+YFA4fZLigu26A5ysNM+1w9eZFNWJ6qmOKiqetDqlTVJ1+peyFBGOuQOAaWuCNSLV9hRQZLUNeVP8CGJ2gzphSaPRXMq6DSUjLrbInbJfeIOgz2+/bWwYrGEaXBXkZve2UMp4bvCG1Vlq+PoTu9SydK5S1FmSmoJ80E7/jnDR4R4QwLswioozHHIy4qqsoSXJohv+0bqaxtsgqzfjshoTXvxRK6SyhSMHdyRm4DVDQyLd48IdeCPxvaNCceb69ZnOmny8xI74yJX25DQqib7Ke3RKHiun4HErhN+LyJzduVzK5F5L5XBA5UIPKqVFAonFdIk5xuJCLIuzncUVOeUSeAy/XPoRme8i8o1Ef+UDKvQK70dmOQWZHRI3LWasmg0Gr0XGjF405lVqqNjfPB6T83vc34DLUg8uXfjehZncs7pylDAQwq/RfhzhZVqnRyYok3N3ocXTmRo3NEjje13QA/gdSYE4hG+r6pElHza/x+PM9sXB5d96INxI4UmWq+4bOgFDSeXF3z0Qbv9vhDcB4T9kXCP8fBQAAA==";
93 private static final Log log = LogFactory.getLog(EditProgramUI.class);
94 private static final long serialVersionUID = 1L;
95
96
97
98
99
100 protected List<Object> $activeBindings = new ArrayList<Object>();
101 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
102 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
103 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
104 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
105 private boolean allComponentsCreated;
106 protected final JAXXContext delegateContext = new DefaultJAXXContext();
107
108
109
110
111
112 protected TuttiHelpBroker broker;
113 protected JButton closeButton;
114 protected JTextArea descriptionField;
115 @ValidatorField( validatorId = "validator", propertyName = "description", editorName = "descriptionPane")
116 protected JScrollPane descriptionPane;
117 protected EditProgramUI editProgramTopPanel = this;
118 protected Table form;
119 protected final EditProgramUIHandler handler = createHandler();
120 protected EditProgramUIModel model;
121 @ValidatorField( validatorId = "validator", propertyName = "name", editorName = "nameField")
122 protected JTextField nameField;
123 protected JLabel nameLabel;
124 protected JButton resetButton;
125 protected JButton saveButton;
126 @Validator( validatorId = "validator")
127 protected SwingValidator<EditProgramUIModel> validator;
128 protected List<String> validatorIds = new ArrayList<String>();
129 @ValidatorField( validatorId = "validator", propertyName = "zone", editorName = "zoneComboBox")
130 protected BeanFilterableComboBox<TuttiLocation> zoneComboBox;
131 protected JLabel zoneLabel;
132
133
134
135
136
137 private JPanel $JPanel0;
138
139
140
141
142
143 public EditProgramUI(TuttiUI parentUI) {
144 TuttiUIUtil.setParentUI(this, parentUI);
145 $initialize();
146 }
147
148 public EditProgramUI(LayoutManager param0, boolean param1) {
149 super(param0 ,param1);
150 $initialize();
151 }
152
153 public EditProgramUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
154 super(param1 ,param2);
155 JAXXUtil.initContext(this, parentContext);
156 $initialize();
157 }
158
159 public EditProgramUI(LayoutManager param0) {
160 super(param0);
161 $initialize();
162 }
163
164 public EditProgramUI(JAXXContext parentContext, LayoutManager param1) {
165 super(param1);
166 JAXXUtil.initContext(this, parentContext);
167 $initialize();
168 }
169
170 public EditProgramUI() {
171 $initialize();
172 }
173
174 public EditProgramUI(JAXXContext parentContext) {
175 JAXXUtil.initContext(this, parentContext);
176 $initialize();
177 }
178
179 public EditProgramUI(boolean param0) {
180 super(param0);
181 $initialize();
182 }
183
184 public EditProgramUI(JAXXContext parentContext, boolean param1) {
185 super(param1);
186 JAXXUtil.initContext(this, parentContext);
187 $initialize();
188 }
189
190
191
192
193
194 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
195 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
196 }
197
198
199
200
201
202 @Override
203 public void applyDataBinding(String $binding) {
204 if (allComponentsCreated && $bindings.containsKey($binding)) {
205 getDataBinding($binding).applyDataBinding();
206 }
207 processDataBinding($binding);
208 }
209
210 @Override
211 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
212 super.firePropertyChange(propertyName, oldValue, newValue);
213 }
214
215 @Override
216 public Map<String, Object> get$objectMap() {
217 return $objectMap;
218 }
219
220 @Override
221 public JAXXBinding getDataBinding(String bindingId) {
222 return $bindings.get(bindingId);
223 }
224
225 @Override
226 public JAXXBinding[] getDataBindings() {
227 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
228 }
229
230 @Override
231 public Object getObjectById(String id) {
232 return $objectMap.get(id);
233 }
234
235 @Override
236 public void processDataBinding(String $binding, boolean $force) {
237 if (!$force && $activeBindings.contains($binding)) {
238 return;
239 }
240 $activeBindings.add($binding);
241 try {
242 if (allComponentsCreated && $bindings.containsKey($binding)) {
243 getDataBinding($binding).processDataBinding();
244 }
245 } finally {
246 $activeBindings.remove($binding);
247 }
248 }
249
250 @Override
251 public void processDataBinding(String $binding) {
252 processDataBinding($binding, false);
253 }
254
255 @Override
256 public void registerDataBinding(JAXXBinding binding) {
257 $bindings.put(binding.getId(), binding);
258 }
259
260 @Override
261 public void removeDataBinding(String $binding) {
262 if (allComponentsCreated && $bindings.containsKey($binding)) {
263 getDataBinding($binding).removeDataBinding();
264 }
265 }
266
267
268
269
270
271 @Override
272 public <T> T getContextValue(Class<T> clazz) {
273 return delegateContext.getContextValue(clazz, null);
274 }
275
276 @Override
277 public <T> T getContextValue(Class<T> clazz, String name) {
278 return delegateContext.getContextValue(clazz, name);
279 }
280
281 @Override
282 public JAXXContext getDelegateContext() {
283 return delegateContext;
284 }
285
286 @Override
287 public <O extends Container> O getParentContainer(Class<O> clazz) {
288 return SwingUtil.getParentContainer(this, clazz);
289 }
290
291 @Override
292 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
293 return SwingUtil.getParentContainer(source, clazz);
294 }
295
296 @Override
297 public <T> void removeContextValue(Class<T> clazz) {
298 delegateContext.removeContextValue(clazz, null);
299 }
300
301 @Override
302 public <T> void removeContextValue(Class<T> clazz, String name) {
303 delegateContext.removeContextValue(clazz, name);
304 }
305
306 @Override
307 public <T> void setContextValue(T o) {
308 delegateContext.setContextValue(o, null);
309 }
310
311 @Override
312 public <T> void setContextValue(T o, String name) {
313 delegateContext.setContextValue(o, name);
314 }
315
316
317
318
319
320 @Override
321 public SwingValidator<?> getValidator(String validatorId) {
322 return (SwingValidator<?>) (validatorIds.contains(validatorId) ? getObjectById(validatorId) : null);
323 }
324
325 @Override
326 public List<String> getValidatorIds() {
327 return validatorIds;
328 }
329
330 @Override
331 public void registerValidatorFields() {
332 SwingValidatorUtil.detectValidatorFields(this);
333 }
334
335
336
337
338
339 public void doFocusGained__on__descriptionPane(FocusEvent event) {
340 if (log.isDebugEnabled()) {
341 log.debug(event);
342 }
343 descriptionField.requestFocus();
344 }
345
346 public void doKeyReleased__on__descriptionField(KeyEvent event) {
347 if (log.isDebugEnabled()) {
348 log.debug(event);
349 }
350 handler.setText(event, "description");
351 }
352
353 public void doKeyReleased__on__nameField(KeyEvent event) {
354 if (log.isDebugEnabled()) {
355 log.debug(event);
356 }
357 handler.setText(event, "name");
358 }
359
360
361
362
363
364 public TuttiHelpBroker getBroker() {
365 return broker;
366 }
367
368 public JButton getCloseButton() {
369 return closeButton;
370 }
371
372 public JTextArea getDescriptionField() {
373 return descriptionField;
374 }
375
376 public JScrollPane getDescriptionPane() {
377 return descriptionPane;
378 }
379
380 public Table getForm() {
381 return form;
382 }
383
384 public EditProgramUIHandler getHandler() {
385 return handler;
386 }
387
388 public EditProgramUIModel getModel() {
389 return model;
390 }
391
392 public JTextField getNameField() {
393 return nameField;
394 }
395
396 public JLabel getNameLabel() {
397 return nameLabel;
398 }
399
400 public JButton getResetButton() {
401 return resetButton;
402 }
403
404 public JButton getSaveButton() {
405 return saveButton;
406 }
407
408 public SwingValidator<EditProgramUIModel> getValidator() {
409 return validator;
410 }
411
412 public BeanFilterableComboBox<TuttiLocation> getZoneComboBox() {
413 return zoneComboBox;
414 }
415
416 public JLabel getZoneLabel() {
417 return zoneLabel;
418 }
419
420
421
422
423
424 @Override
425 public void registerHelpId(TuttiHelpBroker broker, Component component, String helpId) {
426 broker.installUI(component, helpId);
427 }
428
429 @Override
430 public void showHelp(String helpId) {
431 getBroker().showHelp(this, helpId);
432 }
433
434
435
436
437
438 protected JPanel get$JPanel0() {
439 return $JPanel0;
440 }
441
442
443
444
445
446 protected void addChildrenToDescriptionPane() {
447 if (!allComponentsCreated) {
448 return;
449 }
450 descriptionPane.getViewport().add(descriptionField);
451 }
452
453 protected void addChildrenToEditProgramTopPanel() {
454 if (!allComponentsCreated) {
455 return;
456 }
457 add(form);
458 }
459
460 protected void addChildrenToForm() {
461 if (!allComponentsCreated) {
462 return;
463 }
464 form.add(nameLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 17, 1, new Insets(3, 3, 3, 3), 0, 0));
465 form.add(SwingUtil.boxComponentWithJxLayer(nameField), new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
466 form.add(zoneLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
467 form.add(SwingUtil.boxComponentWithJxLayer(zoneComboBox), new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
468 form.add(SwingUtil.boxComponentWithJxLayer(descriptionPane), new GridBagConstraints(0, 2, 2, 1, 0.0, 0.8, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
469 form.add($JPanel0, new GridBagConstraints(0, 3, 2, 1, 0.0, 0.0, 15, 1, new Insets(3, 3, 3, 3), 0, 0));
470 }
471
472 protected void addChildrenToValidator() {
473 if (!allComponentsCreated) {
474 return;
475 }
476 validator.setUiClass(ImageValidationUI.class);
477 validator.setBean(model);
478 }
479
480 protected void createBroker() {
481 $objectMap.put("broker", broker = new TuttiHelpBroker("tutti.editProgram.help"));
482 }
483
484 protected void createCloseButton() {
485 $objectMap.put("closeButton", closeButton = new JButton());
486
487 closeButton.setName("closeButton");
488 closeButton.setText(t("tutti.editProgram.action.closeEditProgram"));
489 closeButton.setToolTipText(t("tutti.editProgram.action.closeEditProgram.tip"));
490 closeButton.putClientProperty("help", "tutti.editProgram.action.cancelProgram.help");
491 closeButton.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.OpenHomeScreenAction.class);
492 }
493
494 protected void createDescriptionField() {
495 $objectMap.put("descriptionField", descriptionField = new JTextArea());
496
497 descriptionField.setName("descriptionField");
498 descriptionField.setColumns(15);
499 descriptionField.setLineWrap(true);
500 descriptionField.setWrapStyleWord(true);
501 descriptionField.addKeyListener(JAXXUtil.getEventListener(KeyListener.class, "keyReleased", this, "doKeyReleased__on__descriptionField"));
502 descriptionField.putClientProperty("help", "tutti.editProgram.field.description.help");
503 descriptionField.putClientProperty("validatorLabel", t("tutti.editProgram.field.description"));
504 }
505
506 protected void createDescriptionPane() {
507 $objectMap.put("descriptionPane", descriptionPane = new JScrollPane());
508
509 descriptionPane.setName("descriptionPane");
510 descriptionPane.setToolTipText(t("tutti.editProgram.field.description.tip"));
511 descriptionPane.addFocusListener(JAXXUtil.getEventListener(FocusListener.class, "focusGained", this, "doFocusGained__on__descriptionPane"));
512 descriptionPane.putClientProperty("help", "tutti.editProgram.field.description.help");
513 }
514
515 protected void createForm() {
516 $objectMap.put("form", form = new Table());
517
518 form.setName("form");
519 }
520
521 protected EditProgramUIHandler createHandler() {
522 return new EditProgramUIHandler();
523 }
524
525 protected void createModel() {
526 $objectMap.put("model", model = getContextValue(EditProgramUIModel.class));
527 }
528
529 protected void createNameField() {
530 $objectMap.put("nameField", nameField = new JTextField());
531
532 nameField.setName("nameField");
533 nameField.setColumns(15);
534 nameField.addKeyListener(JAXXUtil.getEventListener(KeyListener.class, "keyReleased", this, "doKeyReleased__on__nameField"));
535 nameField.putClientProperty("help", "tutti.editProgram.field.name.help");
536 nameField.putClientProperty("selectOnFocus", true);
537 nameField.putClientProperty("validatorLabel", t("tutti.editProgram.field.name"));
538 }
539
540 protected void createNameLabel() {
541 $objectMap.put("nameLabel", nameLabel = new JLabel());
542
543 nameLabel.setName("nameLabel");
544 nameLabel.setText(t("tutti.editProgram.field.name"));
545 nameLabel.setToolTipText(t("tutti.editProgram.field.name.tip"));
546 nameLabel.putClientProperty("help", "tutti.editProgram.field.name.help");
547 }
548
549 protected void createResetButton() {
550 $objectMap.put("resetButton", resetButton = new JButton());
551
552 resetButton.setName("resetButton");
553 resetButton.setText(t("tutti.editProgram.action.resetProgram"));
554 resetButton.setToolTipText(t("tutti.editProgram.action.resetProgram.tip"));
555 resetButton.putClientProperty("help", "tutti.editProgram.action.reset.help");
556 resetButton.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.program.actions.ResetProgramAction.class);
557 }
558
559 protected void createSaveButton() {
560 $objectMap.put("saveButton", saveButton = new JButton());
561
562 saveButton.setName("saveButton");
563 saveButton.setText(t("tutti.editProgram.action.saveProgram"));
564 saveButton.setToolTipText(t("tutti.editProgram.action.saveProgram.tip"));
565 saveButton.putClientProperty("help", "tutti.editProgram.action.saveProgram.help");
566 saveButton.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.program.actions.SaveProgramAction.class);
567 }
568
569 protected void createValidator() {
570 $objectMap.put("validator", validator = SwingValidator.newValidator(EditProgramUIModel.class, "edit"));
571 }
572
573 protected void createZoneComboBox() {
574 $objectMap.put("zoneComboBox", zoneComboBox = new BeanFilterableComboBox<TuttiLocation>(this));
575
576 zoneComboBox.setName("zoneComboBox");
577 zoneComboBox.setProperty("zone");
578 zoneComboBox.setShowReset(true);
579 zoneComboBox.putClientProperty("help", "tutti.editProgram.field.zone.help");
580 zoneComboBox.putClientProperty("validatorLabel", t("tutti.editProgram.field.zone"));
581 }
582
583 protected void createZoneLabel() {
584 $objectMap.put("zoneLabel", zoneLabel = new JLabel());
585
586 zoneLabel.setName("zoneLabel");
587 zoneLabel.setText(t("tutti.editProgram.field.zone"));
588 zoneLabel.setToolTipText(t("tutti.editProgram.field.zone.tip"));
589 zoneLabel.putClientProperty("help", "tutti.editProgram.field.zone.help");
590 }
591
592
593
594
595
596 private void $completeSetup() {
597 allComponentsCreated = true;
598 if (log.isDebugEnabled()) {
599 log.debug(this);
600 }
601 addChildrenToEditProgramTopPanel();
602 addChildrenToValidator();
603 addChildrenToForm();
604 addChildrenToDescriptionPane();
605
606 $JPanel0.add(closeButton);
607 $JPanel0.add(resetButton);
608 $JPanel0.add(saveButton);
609
610
611 JAXXUtil.applyDataBinding(this, $bindings.keySet());
612
613
614 zoneComboBox.setBeanType(TuttiLocation.class);
615 nameLabel.setLabelFor(nameField);
616 zoneLabel.setLabelFor(zoneComboBox);
617 zoneComboBox.setBean(model);
618 descriptionPane.setBorder(BorderFactory.createTitledBorder(t("tutti.editProgram.field.description")));
619 closeButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.editProgram.action.closeEditProgram.mnemonic"),'Z'));
620 closeButton.setIcon(SwingUtil.createActionIcon("cancel"));
621 resetButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.editProgram.action.resetProgram.mnemonic"),'Z'));
622 resetButton.setIcon(SwingUtil.createActionIcon("reset"));
623 saveButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.editProgram.action.saveProgram.mnemonic"),'Z'));
624 saveButton.setIcon(SwingUtil.createActionIcon("save"));
625
626
627 TuttiHelpBroker _broker = getBroker();
628 registerHelpId(_broker, editProgramTopPanel, "tutti.editProgram.help");
629 registerHelpId(_broker, nameLabel, "tutti.editProgram.field.name.help");
630 registerHelpId(_broker, nameField, "tutti.editProgram.field.name.help");
631 registerHelpId(_broker, zoneLabel, "tutti.editProgram.field.zone.help");
632 registerHelpId(_broker, zoneComboBox, "tutti.editProgram.field.zone.help");
633 registerHelpId(_broker, descriptionPane, "tutti.editProgram.field.description.help");
634 registerHelpId(_broker, descriptionField, "tutti.editProgram.field.description.help");
635 registerHelpId(_broker, closeButton, "tutti.editProgram.action.cancelProgram.help");
636 registerHelpId(_broker, resetButton, "tutti.editProgram.action.reset.help");
637 registerHelpId(_broker, saveButton, "tutti.editProgram.action.saveProgram.help");
638 _broker.prepareUI(this);
639
640 validatorIds = SwingValidatorUtil.detectValidators(this);
641 SwingValidatorUtil.installUI(this);
642 }
643
644 private void $initialize() {
645 if (allComponentsCreated) {
646 return;
647 }
648 if (log.isDebugEnabled()) {
649 log.debug(this);
650 }
651 handler.beforeInit(this);
652 $objectMap.put("editProgramTopPanel", editProgramTopPanel);
653 createModel();
654 createBroker();
655 createValidator();
656 createForm();
657 createNameLabel();
658 createNameField();
659 createZoneLabel();
660 createZoneComboBox();
661 createDescriptionPane();
662 createDescriptionField();
663
664 $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
665
666 $JPanel0.setName("$JPanel0");
667 $JPanel0.setLayout(new GridLayout(1, 0));
668 SwingUtil.setComponentHeight($JPanel0,50);
669 createCloseButton();
670 createResetButton();
671 createSaveButton();
672
673 setName("editProgramTopPanel");
674 setLayout(new BorderLayout());
675 editProgramTopPanel.putClientProperty("help", "tutti.editProgram.help");
676
677
678 $registerDefaultBindings();
679 $completeSetup();
680 handler.afterInit(this);
681 }
682
683 private void $registerDefaultBindings() {
684
685 registerDataBinding(new DefaultJAXXBinding(this, BINDING_NAME_FIELD_TEXT, true) {
686
687 @Override
688 public void applyDataBinding() {
689 if (model != null) {
690 model.addPropertyChangeListener("name", this);
691 }
692 }
693
694 @Override
695 public void processDataBinding() {
696 if (model != null) {
697 SwingUtil.setText(nameField, model.getName());
698 }
699 }
700
701 @Override
702 public void removeDataBinding() {
703 if (model != null) {
704 model.removePropertyChangeListener("name", this);
705 }
706 }
707 });
708 registerDataBinding(new DefaultJAXXBinding(this, BINDING_ZONE_COMBO_BOX_SELECTED_ITEM, true) {
709
710 @Override
711 public void applyDataBinding() {
712 if (model != null) {
713 model.addPropertyChangeListener("zone", this);
714 }
715 }
716
717 @Override
718 public void processDataBinding() {
719 if (model != null) {
720 zoneComboBox.setSelectedItem(model.getZone());
721 }
722 }
723
724 @Override
725 public void removeDataBinding() {
726 if (model != null) {
727 model.removePropertyChangeListener("zone", this);
728 }
729 }
730 });
731 registerDataBinding(new DefaultJAXXBinding(this, BINDING_DESCRIPTION_FIELD_TEXT, true) {
732
733 @Override
734 public void applyDataBinding() {
735 if (model != null) {
736 model.addPropertyChangeListener("description", this);
737 }
738 }
739
740 @Override
741 public void processDataBinding() {
742 if (model != null) {
743 SwingUtil.setText(descriptionField, getStringValue(model.getDescription()));
744 }
745 }
746
747 @Override
748 public void removeDataBinding() {
749 if (model != null) {
750 model.removePropertyChangeListener("description", this);
751 }
752 }
753 });
754 registerDataBinding(new DefaultJAXXBinding(this, BINDING_RESET_BUTTON_ENABLED, true, true) {
755
756 @Override
757 public void applyDataBinding() {
758 if (model != null) {
759 model.addPropertyChangeListener("modify", this);
760 }
761 if (model != null) {
762 model.addPropertyChangeListener("create", this);
763 }
764 }
765
766 @Override
767 public void processDataBinding() {
768 if (model != null) {
769 resetButton.setEnabled(model.isModify() && !model.isCreate());
770 }
771 }
772
773 @Override
774 public void removeDataBinding() {
775 if (model != null) {
776 model.removePropertyChangeListener("modify", this);
777 }
778 if (model != null) {
779 model.removePropertyChangeListener("create", this);
780 }
781 }
782 });
783 registerDataBinding(new DefaultJAXXBinding(this, BINDING_SAVE_BUTTON_ENABLED, true, true) {
784
785 @Override
786 public void applyDataBinding() {
787 if (model != null) {
788 model.addPropertyChangeListener("modify", this);
789 }
790 if (model != null) {
791 model.addPropertyChangeListener("valid", this);
792 }
793 }
794
795 @Override
796 public void processDataBinding() {
797 if (model != null) {
798 saveButton.setEnabled(model.isModify() && model.isValid());
799 }
800 }
801
802 @Override
803 public void removeDataBinding() {
804 if (model != null) {
805 model.removePropertyChangeListener("modify", this);
806 }
807 if (model != null) {
808 model.removePropertyChangeListener("valid", this);
809 }
810 }
811 });
812 }
813
814 }