View Javadoc
1   package fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create;
2   
3   /*
4    * #%L
5    * Tutti :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2012 - 2017 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU General Public License as
13   * published by the Free Software Foundation, either version 3 of the
14   * License, or (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU General Public
22   * License along with this program.  If not, see
23   * <http://www.gnu.org/licenses/gpl-3.0.html>.
24   * #L%
25   */
26  
27  import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
28  import fr.ifremer.tutti.ui.swing.TuttiHelpBroker;
29  import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
30  import fr.ifremer.tutti.ui.swing.util.TuttiUI;
31  import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
32  import java.awt.BorderLayout;
33  import java.awt.Component;
34  import java.awt.Container;
35  import java.awt.GridBagConstraints;
36  import java.awt.GridLayout;
37  import java.awt.Insets;
38  import java.awt.LayoutManager;
39  import java.util.ArrayList;
40  import java.util.HashMap;
41  import java.util.List;
42  import java.util.Map;
43  import java.util.TreeMap;
44  import javax.swing.JButton;
45  import javax.swing.JLabel;
46  import javax.swing.JPanel;
47  import jaxx.runtime.JAXXBinding;
48  import jaxx.runtime.JAXXContext;
49  import jaxx.runtime.JAXXObject;
50  import jaxx.runtime.JAXXObjectDescriptor;
51  import jaxx.runtime.JAXXUtil;
52  import jaxx.runtime.JAXXValidator;
53  import jaxx.runtime.SwingUtil;
54  import jaxx.runtime.binding.DefaultJAXXBinding;
55  import jaxx.runtime.binding.SimpleJAXXObjectBinding;
56  import jaxx.runtime.context.DefaultJAXXContext;
57  import jaxx.runtime.swing.Table;
58  import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
59  import jaxx.runtime.swing.help.JAXXHelpUI;
60  import jaxx.runtime.validator.swing.SwingValidator;
61  import jaxx.runtime.validator.swing.SwingValidatorUtil;
62  import jaxx.runtime.validator.swing.meta.Validator;
63  import jaxx.runtime.validator.swing.meta.ValidatorField;
64  import jaxx.runtime.validator.swing.ui.ImageValidationUI;
65  import org.apache.commons.logging.Log;
66  import org.apache.commons.logging.LogFactory;
67  import org.nuiton.jaxx.widgets.number.NumberEditor;
68  import static org.nuiton.i18n.I18n.t;
69  
70  public class CreateMarineLitterBatchUI extends JPanel implements JAXXHelpUI<TuttiHelpBroker>, TuttiUI<CreateMarineLitterBatchUIModel, CreateMarineLitterBatchUIHandler>, JAXXObject, JAXXValidator {
71  
72      /*-----------------------------------------------------------------------*/
73      /*------------------ Constants for all public bindings ------------------*/
74      /*-----------------------------------------------------------------------*/
75  
76      public static final String BINDING_MARINE_LITTER_CATEGORY_COMBO_BOX_SELECTED_ITEM = "marineLitterCategoryComboBox.selectedItem";
77      public static final String BINDING_MARINE_LITTER_NUMBER_FIELD_NUMBER_PATTERN = "marineLitterNumberField.numberPattern";
78      public static final String BINDING_MARINE_LITTER_NUMBER_FIELD_NUMBER_VALUE = "marineLitterNumberField.numberValue";
79      public static final String BINDING_MARINE_LITTER_SIZE_CATEGORY_COMBO_BOX_SELECTED_ITEM = "marineLitterSizeCategoryComboBox.selectedItem";
80      public static final String BINDING_MARINE_LITTER_WEIGHT_FIELD_NUMBER_VALUE = "marineLitterWeightField.numberValue";
81      public static final String BINDING_SAVE_AND_CLOSE_BUTTON_ENABLED = "saveAndCloseButton.enabled";
82      public static final String BINDING_SAVE_AND_CONTINUE_BUTTON_ENABLED = "saveAndContinueButton.enabled";
83  
84      /*-----------------------------------------------------------------------*/
85      /*------------------------- Other static fields -------------------------*/
86      /*-----------------------------------------------------------------------*/
87  
88      private static final String $jaxxObjectDescriptor = "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";
89      private static final Log log = LogFactory.getLog(CreateMarineLitterBatchUI.class);
90      private static final long serialVersionUID = 1L;
91  
92      /*-----------------------------------------------------------------------*/
93      /*--------------------------- Internal states ---------------------------*/
94      /*-----------------------------------------------------------------------*/
95  
96      protected List<Object> $activeBindings = new ArrayList<Object>();
97      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
98      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
99      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
100     protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
101     private boolean allComponentsCreated;
102     protected final JAXXContext delegateContext = new DefaultJAXXContext();
103 
104     /*-----------------------------------------------------------------------*/
105     /*------------------------ Protected components  ------------------------*/
106     /*-----------------------------------------------------------------------*/
107 
108     protected TuttiHelpBroker broker;
109     protected JButton cancelButton;
110     protected Table configurationPanel;
111     protected CreateMarineLitterBatchUI createMarineLitterBatchTopPanel = this;
112     protected final CreateMarineLitterBatchUIHandler handler = createHandler();
113     @ValidatorField( validatorId = "validator",  propertyName = "marineLitterCategory",  editorName = "marineLitterCategoryComboBox")
114     protected BeanFilterableComboBox<CaracteristicQualitativeValue> marineLitterCategoryComboBox;
115     protected JLabel marineLitterCategoryLabel;
116     @ValidatorField( validatorId = "validator",  propertyName = "number",  editorName = "marineLitterNumberField")
117     protected NumberEditor marineLitterNumberField;
118     protected JLabel marineLitterNumberLabel;
119     @ValidatorField( validatorId = "validator",  propertyName = "marineLitterSizeCategory",  editorName = "marineLitterSizeCategoryComboBox")
120     protected BeanFilterableComboBox<CaracteristicQualitativeValue> marineLitterSizeCategoryComboBox;
121     protected JLabel marineLitterSizeCategoryLabel;
122     @ValidatorField( validatorId = "validator",  propertyName = "weight",  editorName = "marineLitterWeightField")
123     protected NumberEditor marineLitterWeightField;
124     protected JLabel marineLitterWeightLabel;
125     protected CreateMarineLitterBatchUIModel model;
126     protected JButton saveAndCloseButton;
127     protected JButton saveAndContinueButton;
128     @Validator( validatorId = "validator")
129     protected SwingValidator<CreateMarineLitterBatchUIModel> validator;
130     protected List<String> validatorIds = new ArrayList<String>();
131 
132     /*-----------------------------------------------------------------------*/
133     /*------------------------- Private components  -------------------------*/
134     /*-----------------------------------------------------------------------*/
135 
136     private JPanel $JPanel0;
137 
138     /*-----------------------------------------------------------------------*/
139     /*---------------------------- Constructors  ----------------------------*/
140     /*-----------------------------------------------------------------------*/
141 
142     public CreateMarineLitterBatchUI(EditCatchesUI parentUI) {
143         TuttiUIUtil.setParentUI(this, parentUI);
144             $initialize();
145     }
146 
147     public CreateMarineLitterBatchUI(LayoutManager param0, boolean param1) {
148         super(param0 ,param1);
149         $initialize();
150     }
151 
152     public CreateMarineLitterBatchUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
153         super(param1 ,param2);
154         JAXXUtil.initContext(this, parentContext);
155         $initialize();
156     }
157 
158     public CreateMarineLitterBatchUI(LayoutManager param0) {
159         super(param0);
160         $initialize();
161     }
162 
163     public CreateMarineLitterBatchUI(JAXXContext parentContext, LayoutManager param1) {
164         super(param1);
165         JAXXUtil.initContext(this, parentContext);
166         $initialize();
167     }
168 
169     public CreateMarineLitterBatchUI() {
170         $initialize();
171     }
172 
173     public CreateMarineLitterBatchUI(JAXXContext parentContext) {
174         JAXXUtil.initContext(this, parentContext);
175         $initialize();
176     }
177 
178     public CreateMarineLitterBatchUI(boolean param0) {
179         super(param0);
180         $initialize();
181     }
182 
183     public CreateMarineLitterBatchUI(JAXXContext parentContext, boolean param1) {
184         super(param1);
185         JAXXUtil.initContext(this, parentContext);
186         $initialize();
187     }
188 
189     /*-----------------------------------------------------------------------*/
190     /*--------------------------- Statics methods ---------------------------*/
191     /*-----------------------------------------------------------------------*/
192 
193     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
194         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
195     }
196 
197     /*-----------------------------------------------------------------------*/
198     /*---------------------- JAXXObject implementation ----------------------*/
199     /*-----------------------------------------------------------------------*/
200 
201     @Override
202     public void applyDataBinding(String $binding) {
203         if (allComponentsCreated && $bindings.containsKey($binding)) {
204             getDataBinding($binding).applyDataBinding();
205         }
206         processDataBinding($binding);
207     }
208 
209     @Override
210     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
211         super.firePropertyChange(propertyName, oldValue, newValue);
212     }
213 
214     @Override
215     public Map<String, Object> get$objectMap() {
216         return $objectMap;
217     }
218 
219     @Override
220     public JAXXBinding getDataBinding(String bindingId) {
221         return $bindings.get(bindingId);
222     }
223 
224     @Override
225     public JAXXBinding[] getDataBindings() {
226         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
227     }
228 
229     @Override
230     public Object getObjectById(String id) {
231         return $objectMap.get(id);
232     }
233 
234     @Override
235     public void processDataBinding(String $binding, boolean $force) {
236         if (!$force && $activeBindings.contains($binding)) { 
237             return;
238         }
239         $activeBindings.add($binding);
240         try {
241             if (allComponentsCreated && $bindings.containsKey($binding)) {
242                 getDataBinding($binding).processDataBinding();
243             }
244         } finally {
245             $activeBindings.remove($binding);
246         }
247     }
248 
249     @Override
250     public void processDataBinding(String $binding) {
251         processDataBinding($binding, false);
252     }
253 
254     @Override
255     public void registerDataBinding(JAXXBinding binding) {
256         $bindings.put(binding.getId(), binding);
257     }
258 
259     @Override
260     public void removeDataBinding(String $binding) {
261         if (allComponentsCreated && $bindings.containsKey($binding)) {
262             getDataBinding($binding).removeDataBinding();
263         }
264     }
265 
266     /*-----------------------------------------------------------------------*/
267     /*--------------------- JAXXContext implementation  ---------------------*/
268     /*-----------------------------------------------------------------------*/
269 
270     @Override
271     public <T> T getContextValue(Class<T> clazz) {
272         return delegateContext.getContextValue(clazz, null);
273     }
274 
275     @Override
276     public <T> T getContextValue(Class<T> clazz, String name) {
277         return delegateContext.getContextValue(clazz, name);
278     }
279 
280     @Override
281     public JAXXContext getDelegateContext() {
282         return delegateContext;
283     }
284 
285     @Override
286     public <O extends Container> O getParentContainer(Class<O> clazz) {
287         return SwingUtil.getParentContainer(this, clazz);
288     }
289 
290     @Override
291     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
292         return SwingUtil.getParentContainer(source, clazz);
293     }
294 
295     @Override
296     public <T> void removeContextValue(Class<T> clazz) {
297         delegateContext.removeContextValue(clazz, null);
298     }
299 
300     @Override
301     public <T> void removeContextValue(Class<T> clazz, String name) {
302         delegateContext.removeContextValue(clazz, name);
303     }
304 
305     @Override
306     public <T> void setContextValue(T o) {
307         delegateContext.setContextValue(o, null);
308     }
309 
310     @Override
311     public <T> void setContextValue(T o, String name) {
312         delegateContext.setContextValue(o, name);
313     }
314 
315     /*-----------------------------------------------------------------------*/
316     /*-------------------- JAXXValidator implementation  --------------------*/
317     /*-----------------------------------------------------------------------*/
318 
319     @Override
320     public SwingValidator<?> getValidator(String validatorId) {
321         return (SwingValidator<?>) (validatorIds.contains(validatorId) ? getObjectById(validatorId) : null);
322     }
323 
324     @Override
325     public List<String> getValidatorIds() {
326         return validatorIds;
327     }
328 
329     @Override
330     public void registerValidatorFields() {
331         SwingValidatorUtil.detectValidatorFields(this);
332     }
333 
334     /*-----------------------------------------------------------------------*/
335     /*----------------------- Public acessor methods  -----------------------*/
336     /*-----------------------------------------------------------------------*/
337 
338     public TuttiHelpBroker getBroker() {
339         return broker;
340     }
341 
342     public JButton getCancelButton() {
343         return cancelButton;
344     }
345 
346     public Table getConfigurationPanel() {
347         return configurationPanel;
348     }
349 
350     public CreateMarineLitterBatchUIHandler getHandler() {
351         return handler;
352     }
353 
354     public BeanFilterableComboBox<CaracteristicQualitativeValue> getMarineLitterCategoryComboBox() {
355         return marineLitterCategoryComboBox;
356     }
357 
358     public JLabel getMarineLitterCategoryLabel() {
359         return marineLitterCategoryLabel;
360     }
361 
362     public NumberEditor getMarineLitterNumberField() {
363         return marineLitterNumberField;
364     }
365 
366     public JLabel getMarineLitterNumberLabel() {
367         return marineLitterNumberLabel;
368     }
369 
370     public BeanFilterableComboBox<CaracteristicQualitativeValue> getMarineLitterSizeCategoryComboBox() {
371         return marineLitterSizeCategoryComboBox;
372     }
373 
374     public JLabel getMarineLitterSizeCategoryLabel() {
375         return marineLitterSizeCategoryLabel;
376     }
377 
378     public NumberEditor getMarineLitterWeightField() {
379         return marineLitterWeightField;
380     }
381 
382     public JLabel getMarineLitterWeightLabel() {
383         return marineLitterWeightLabel;
384     }
385 
386     public CreateMarineLitterBatchUIModel getModel() {
387         return model;
388     }
389 
390     public JButton getSaveAndCloseButton() {
391         return saveAndCloseButton;
392     }
393 
394     public JButton getSaveAndContinueButton() {
395         return saveAndContinueButton;
396     }
397 
398     public SwingValidator<CreateMarineLitterBatchUIModel> getValidator() {
399         return validator;
400     }
401 
402     /*-----------------------------------------------------------------------*/
403     /*---------------------------- Other methods ----------------------------*/
404     /*-----------------------------------------------------------------------*/
405 
406     @Override
407     public void registerHelpId(TuttiHelpBroker broker, Component component, String helpId) {
408         broker.installUI(component, helpId);
409     }
410 
411     @Override
412     public void showHelp(String helpId) {
413         getBroker().showHelp(this, helpId);
414     }
415 
416     /*-----------------------------------------------------------------------*/
417     /*--------------------- Protected acessors methods  ---------------------*/
418     /*-----------------------------------------------------------------------*/
419 
420     protected JPanel get$JPanel0() {
421         return $JPanel0;
422     }
423 
424     /*-----------------------------------------------------------------------*/
425     /*--------------------- Components creation methods ---------------------*/
426     /*-----------------------------------------------------------------------*/
427 
428     protected void addChildrenToConfigurationPanel() {
429         if (!allComponentsCreated) {
430             return;
431         }
432         configurationPanel.add(marineLitterCategoryLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 17, 1, new Insets(3, 3, 3, 3), 0, 0));
433         configurationPanel.add(SwingUtil.boxComponentWithJxLayer(marineLitterCategoryComboBox), new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
434         configurationPanel.add(marineLitterSizeCategoryLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 17, 1, new Insets(3, 3, 3, 3), 0, 0));
435         configurationPanel.add(SwingUtil.boxComponentWithJxLayer(marineLitterSizeCategoryComboBox), new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
436         configurationPanel.add(marineLitterNumberLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, 17, 1, new Insets(3, 3, 3, 3), 0, 0));
437         configurationPanel.add(SwingUtil.boxComponentWithJxLayer(marineLitterNumberField), new GridBagConstraints(1, 2, 2, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
438         configurationPanel.add(marineLitterWeightLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, 17, 1, new Insets(3, 3, 3, 3), 0, 0));
439         configurationPanel.add(SwingUtil.boxComponentWithJxLayer(marineLitterWeightField), new GridBagConstraints(1, 3, 2, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
440     }
441 
442     protected void addChildrenToCreateMarineLitterBatchTopPanel() {
443         if (!allComponentsCreated) {
444             return;
445         }
446         add(configurationPanel, BorderLayout.NORTH);
447         add($JPanel0, BorderLayout.SOUTH);
448     }
449 
450     protected void addChildrenToValidator() {
451         if (!allComponentsCreated) {
452             return;
453         }
454         validator.setUiClass(ImageValidationUI.class);
455         validator.setBean(model);
456     }
457 
458     protected void createBroker() {
459         $objectMap.put("broker", broker = new TuttiHelpBroker("tutti.createMarineLitterBatch.help"));
460     }
461 
462     protected void createCancelButton() {
463         $objectMap.put("cancelButton", cancelButton = new JButton());
464         
465         cancelButton.setName("cancelButton");
466         cancelButton.setText(t("tutti.createMarineLitterBatch.action.cancel"));
467         cancelButton.setToolTipText(t("tutti.createMarineLitterBatch.action.cancel.tip"));
468         cancelButton.putClientProperty("help", "tutti.createMarineLitterBatch.action.cancel.help");
469         cancelButton.putClientProperty("simpleAction", fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create.actions.CreateMarineLitterBatchBatchCancelAction.class);
470     }
471 
472     protected void createConfigurationPanel() {
473         $objectMap.put("configurationPanel", configurationPanel = new Table());
474         
475         configurationPanel.setName("configurationPanel");
476     }
477 
478     protected CreateMarineLitterBatchUIHandler createHandler() {
479         return new CreateMarineLitterBatchUIHandler();
480     }
481 
482     protected void createMarineLitterCategoryComboBox() {
483         $objectMap.put("marineLitterCategoryComboBox", marineLitterCategoryComboBox = new BeanFilterableComboBox<CaracteristicQualitativeValue>(this));
484         
485         marineLitterCategoryComboBox.setName("marineLitterCategoryComboBox");
486         marineLitterCategoryComboBox.setProperty("marineLitterCategory");
487         marineLitterCategoryComboBox.setShowReset(true);
488         marineLitterCategoryComboBox.putClientProperty("help", "tutti.createMarineLitterBatch.field.marineLitterCategory.help");
489     }
490 
491     protected void createMarineLitterCategoryLabel() {
492         $objectMap.put("marineLitterCategoryLabel", marineLitterCategoryLabel = new JLabel());
493         
494         marineLitterCategoryLabel.setName("marineLitterCategoryLabel");
495         marineLitterCategoryLabel.setText(t("tutti.createMarineLitterBatch.field.marineLitterCategory"));
496         marineLitterCategoryLabel.setToolTipText(t("tutti.createMarineLitterBatch.field.marineLitterCategory.tip"));
497         marineLitterCategoryLabel.putClientProperty("help", "tutti.createMarineLitterBatch.field.marineLitterCategory.help");
498     }
499 
500     protected void createMarineLitterNumberField() {
501         $objectMap.put("marineLitterNumberField", marineLitterNumberField = new NumberEditor(this));
502         
503         marineLitterNumberField.setName("marineLitterNumberField");
504         marineLitterNumberField.setProperty("number");
505         marineLitterNumberField.setShowReset(true);
506         marineLitterNumberField.putClientProperty("help", "tutti.createMarineLitterBatch.field.number.help");
507     }
508 
509     protected void createMarineLitterNumberLabel() {
510         $objectMap.put("marineLitterNumberLabel", marineLitterNumberLabel = new JLabel());
511         
512         marineLitterNumberLabel.setName("marineLitterNumberLabel");
513         marineLitterNumberLabel.setText(t("tutti.createMarineLitterBatch.field.number"));
514         marineLitterNumberLabel.setToolTipText(t("tutti.createMarineLitterBatch.field.number.tip"));
515         marineLitterNumberLabel.putClientProperty("help", "tutti.createMarineLitterBatch.field.number.help");
516     }
517 
518     protected void createMarineLitterSizeCategoryComboBox() {
519         $objectMap.put("marineLitterSizeCategoryComboBox", marineLitterSizeCategoryComboBox = new BeanFilterableComboBox<CaracteristicQualitativeValue>(this));
520         
521         marineLitterSizeCategoryComboBox.setName("marineLitterSizeCategoryComboBox");
522         marineLitterSizeCategoryComboBox.setProperty("marineLitterSizeCategory");
523         marineLitterSizeCategoryComboBox.setShowReset(true);
524         marineLitterSizeCategoryComboBox.putClientProperty("help", "tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help");
525     }
526 
527     protected void createMarineLitterSizeCategoryLabel() {
528         $objectMap.put("marineLitterSizeCategoryLabel", marineLitterSizeCategoryLabel = new JLabel());
529         
530         marineLitterSizeCategoryLabel.setName("marineLitterSizeCategoryLabel");
531         marineLitterSizeCategoryLabel.setText(t("tutti.createMarineLitterBatch.field.marineLitterSizeCategory"));
532         marineLitterSizeCategoryLabel.setToolTipText(t("tutti.createMarineLitterBatch.field.marineLitterSizeCategory.tip"));
533         marineLitterSizeCategoryLabel.putClientProperty("help", "tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help");
534     }
535 
536     protected void createMarineLitterWeightField() {
537         $objectMap.put("marineLitterWeightField", marineLitterWeightField = new NumberEditor(this));
538         
539         marineLitterWeightField.setName("marineLitterWeightField");
540         marineLitterWeightField.setProperty("weight");
541         marineLitterWeightField.setShowReset(true);
542         marineLitterWeightField.putClientProperty("help", "tutti.createMarineLitterBatch.field.weight.help");
543     }
544 
545     protected void createMarineLitterWeightLabel() {
546         $objectMap.put("marineLitterWeightLabel", marineLitterWeightLabel = new JLabel());
547         
548         marineLitterWeightLabel.setName("marineLitterWeightLabel");
549         marineLitterWeightLabel.setText(t("tutti.createMarineLitterBatch.field.weight"));
550         marineLitterWeightLabel.setToolTipText(t("tutti.createMarineLitterBatch.field.weight.tip"));
551         marineLitterWeightLabel.putClientProperty("help", "tutti.createMarineLitterBatch.field.weight.help");
552         marineLitterWeightLabel.putClientProperty("addWeightUnit", model.getWeightUnit());
553     }
554 
555     protected void createModel() {
556         $objectMap.put("model", model = getContextValue(CreateMarineLitterBatchUIModel.class));
557     }
558 
559     protected void createSaveAndCloseButton() {
560         $objectMap.put("saveAndCloseButton", saveAndCloseButton = new JButton());
561         
562         saveAndCloseButton.setName("saveAndCloseButton");
563         saveAndCloseButton.setText(t("tutti.createMarineLitterBatch.action.saveAndClose"));
564         saveAndCloseButton.setToolTipText(t("tutti.createMarineLitterBatch.action.saveAndClose.tip"));
565         saveAndCloseButton.putClientProperty("help", "tutti.createMarineLitterBatch.action.saveAndClose.help");
566         saveAndCloseButton.putClientProperty("simpleAction", fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create.actions.CreateMarineLitterBatchBatchAndCloseAction.class);
567     }
568 
569     protected void createSaveAndContinueButton() {
570         $objectMap.put("saveAndContinueButton", saveAndContinueButton = new JButton());
571         
572         saveAndContinueButton.setName("saveAndContinueButton");
573         saveAndContinueButton.setText(t("tutti.createMarineLitterBatch.action.saveAndContinue"));
574         saveAndContinueButton.setToolTipText(t("tutti.createMarineLitterBatch.action.saveAndContinue.tip"));
575         saveAndContinueButton.putClientProperty("help", "tutti.createMarineLitterBatch.action.saveAndContinue.help");
576         saveAndContinueButton.putClientProperty("simpleAction", fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create.actions.CreateMarineLitterBatchBatchAndContinueAction.class);
577     }
578 
579     protected void createValidator() {
580         $objectMap.put("validator", validator = SwingValidator.newValidator(CreateMarineLitterBatchUIModel.class, null));
581     }
582 
583     /*-----------------------------------------------------------------------*/
584     /*------------------------ Internal jaxx methods ------------------------*/
585     /*-----------------------------------------------------------------------*/
586 
587     private void $completeSetup() {
588         allComponentsCreated = true;
589         if (log.isDebugEnabled()) {
590             log.debug(this);
591         }
592         addChildrenToCreateMarineLitterBatchTopPanel();
593         addChildrenToValidator();
594         addChildrenToConfigurationPanel();
595         // inline complete setup of $JPanel0
596         $JPanel0.add(cancelButton);
597         $JPanel0.add(saveAndContinueButton);
598         $JPanel0.add(saveAndCloseButton);
599         
600         // apply 7 data bindings
601         JAXXUtil.applyDataBinding(this, $bindings.keySet());
602         
603         // apply 24 property setters
604         marineLitterCategoryComboBox.setBeanType(CaracteristicQualitativeValue.class);
605         marineLitterSizeCategoryComboBox.setBeanType(CaracteristicQualitativeValue.class);
606         marineLitterCategoryLabel.setLabelFor(marineLitterCategoryComboBox);
607         marineLitterCategoryComboBox.setBean(model);
608         marineLitterSizeCategoryLabel.setLabelFor(marineLitterSizeCategoryComboBox);
609         marineLitterSizeCategoryComboBox.setBean(model);
610         marineLitterNumberLabel.setLabelFor(marineLitterNumberField);
611         marineLitterNumberField.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
612         marineLitterNumberField.setNumberType(Integer.class);
613         marineLitterNumberField.setShowPopupButton(handler.getConfig().isShowNumberEditorButton());
614         marineLitterNumberField.setBean(model);
615         marineLitterWeightLabel.setLabelFor(marineLitterWeightField);
616         marineLitterWeightField.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
617         marineLitterWeightField.setNumberType(Float.class);
618         marineLitterWeightField.setShowPopupButton(handler.getConfig().isShowNumberEditorButton());
619         marineLitterWeightField.setBean(model);
620         cancelButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.createMarineLitterBatch.action.cancel.mnemonic"),'Z'));
621         cancelButton.setIcon(SwingUtil.createActionIcon("cancel"));
622         saveAndContinueButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.createMarineLitterBatch.action.saveAndContinue.mnemonic"),'Z'));
623         saveAndContinueButton.setIcon(SwingUtil.createActionIcon("save"));
624         saveAndCloseButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.createMarineLitterBatch.action.saveAndClose.mnemonic"),'Z'));
625         saveAndCloseButton.setIcon(SwingUtil.createActionIcon("save"));
626         // late initializer
627         // help broker setup
628         TuttiHelpBroker _broker = getBroker();
629         registerHelpId(_broker, createMarineLitterBatchTopPanel, "tutti.createMarineLitterBatch.help");
630         registerHelpId(_broker, marineLitterCategoryLabel, "tutti.createMarineLitterBatch.field.marineLitterCategory.help");
631         registerHelpId(_broker, marineLitterCategoryComboBox, "tutti.createMarineLitterBatch.field.marineLitterCategory.help");
632         registerHelpId(_broker, marineLitterSizeCategoryLabel, "tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help");
633         registerHelpId(_broker, marineLitterSizeCategoryComboBox, "tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help");
634         registerHelpId(_broker, marineLitterNumberLabel, "tutti.createMarineLitterBatch.field.number.help");
635         registerHelpId(_broker, marineLitterNumberField, "tutti.createMarineLitterBatch.field.number.help");
636         registerHelpId(_broker, marineLitterWeightLabel, "tutti.createMarineLitterBatch.field.weight.help");
637         registerHelpId(_broker, marineLitterWeightField, "tutti.createMarineLitterBatch.field.weight.help");
638         registerHelpId(_broker, cancelButton, "tutti.createMarineLitterBatch.action.cancel.help");
639         registerHelpId(_broker, saveAndContinueButton, "tutti.createMarineLitterBatch.action.saveAndContinue.help");
640         registerHelpId(_broker, saveAndCloseButton, "tutti.createMarineLitterBatch.action.saveAndClose.help");
641         _broker.prepareUI(this);
642         // register 1 validator(s)
643         validatorIds = SwingValidatorUtil.detectValidators(this);
644         SwingValidatorUtil.installUI(this);
645     }
646 
647     private void $initialize() {
648         if (allComponentsCreated) {
649             return;
650         }
651         if (log.isDebugEnabled()) {
652             log.debug(this);
653         }
654         handler.beforeInit(this);
655         $objectMap.put("createMarineLitterBatchTopPanel", createMarineLitterBatchTopPanel);
656         createModel();
657         createValidator();
658         createBroker();
659         createConfigurationPanel();
660         createMarineLitterCategoryLabel();
661         createMarineLitterCategoryComboBox();
662         createMarineLitterSizeCategoryLabel();
663         createMarineLitterSizeCategoryComboBox();
664         createMarineLitterNumberLabel();
665         createMarineLitterNumberField();
666         createMarineLitterWeightLabel();
667         createMarineLitterWeightField();
668         // inline creation of $JPanel0
669         $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
670         
671         $JPanel0.setName("$JPanel0");
672         $JPanel0.setLayout(new GridLayout(1, 0));
673         SwingUtil.setComponentHeight($JPanel0,50);
674         createCancelButton();
675         createSaveAndContinueButton();
676         createSaveAndCloseButton();
677         // inline creation of createMarineLitterBatchTopPanel
678         setName("createMarineLitterBatchTopPanel");
679         setLayout(new BorderLayout());
680         createMarineLitterBatchTopPanel.putClientProperty("help", "tutti.createMarineLitterBatch.help");
681         
682         // registers 7 data bindings
683         $registerDefaultBindings();
684         $completeSetup();
685         handler.afterInit(this);
686     }
687 
688     private void $registerDefaultBindings() {
689         // register 7 data bindings
690         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MARINE_LITTER_CATEGORY_COMBO_BOX_SELECTED_ITEM, true) {
691         
692             @Override
693             public void applyDataBinding() {
694                 if (model != null) {
695                     model.addPropertyChangeListener("marineLitterCategory", this);
696                 }
697             }
698         
699             @Override
700             public void processDataBinding() {
701                 if (model != null) {
702                     marineLitterCategoryComboBox.setSelectedItem(model.getMarineLitterCategory());
703                 }
704             }
705         
706             @Override
707             public void removeDataBinding() {
708                 if (model != null) {
709                     model.removePropertyChangeListener("marineLitterCategory", this);
710                 }
711             }
712         });
713         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MARINE_LITTER_SIZE_CATEGORY_COMBO_BOX_SELECTED_ITEM, true) {
714         
715             @Override
716             public void applyDataBinding() {
717                 if (model != null) {
718                     model.addPropertyChangeListener("marineLitterSizeCategory", this);
719                 }
720             }
721         
722             @Override
723             public void processDataBinding() {
724                 if (model != null) {
725                     marineLitterSizeCategoryComboBox.setSelectedItem(model.getMarineLitterSizeCategory());
726                 }
727             }
728         
729             @Override
730             public void removeDataBinding() {
731                 if (model != null) {
732                     model.removePropertyChangeListener("marineLitterSizeCategory", this);
733                 }
734             }
735         });
736         registerDataBinding(new SimpleJAXXObjectBinding(this, BINDING_MARINE_LITTER_NUMBER_FIELD_NUMBER_PATTERN, true ,"INT_6_DIGITS_PATTERN") {
737         
738             @Override
739             public void processDataBinding() {
740                 marineLitterNumberField.setNumberPattern(INT_6_DIGITS_PATTERN);
741             }
742         });
743         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MARINE_LITTER_NUMBER_FIELD_NUMBER_VALUE, true) {
744         
745             @Override
746             public void applyDataBinding() {
747                 if (model != null) {
748                     model.addPropertyChangeListener("number", this);
749                 }
750             }
751         
752             @Override
753             public void processDataBinding() {
754                 if (model != null) {
755                     marineLitterNumberField.setNumberValue(model.getNumber());
756                 }
757             }
758         
759             @Override
760             public void removeDataBinding() {
761                 if (model != null) {
762                     model.removePropertyChangeListener("number", this);
763                 }
764             }
765         });
766         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MARINE_LITTER_WEIGHT_FIELD_NUMBER_VALUE, true) {
767         
768             @Override
769             public void applyDataBinding() {
770                 if (model != null) {
771                     model.addPropertyChangeListener("weight", this);
772                 }
773             }
774         
775             @Override
776             public void processDataBinding() {
777                 if (model != null) {
778                     marineLitterWeightField.setNumberValue(model.getWeight());
779                 }
780             }
781         
782             @Override
783             public void removeDataBinding() {
784                 if (model != null) {
785                     model.removePropertyChangeListener("weight", this);
786                 }
787             }
788         });
789         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SAVE_AND_CONTINUE_BUTTON_ENABLED, true) {
790         
791             @Override
792             public void applyDataBinding() {
793                 if (model != null) {
794                     model.addPropertyChangeListener("valid", this);
795                 }
796             }
797         
798             @Override
799             public void processDataBinding() {
800                 if (model != null) {
801                     saveAndContinueButton.setEnabled(model.isValid());
802                 }
803             }
804         
805             @Override
806             public void removeDataBinding() {
807                 if (model != null) {
808                     model.removePropertyChangeListener("valid", this);
809                 }
810             }
811         });
812         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SAVE_AND_CLOSE_BUTTON_ENABLED, true) {
813         
814             @Override
815             public void applyDataBinding() {
816                 if (model != null) {
817                     model.addPropertyChangeListener("valid", this);
818                 }
819             }
820         
821             @Override
822             public void processDataBinding() {
823                 if (model != null) {
824                     saveAndCloseButton.setEnabled(model.isValid());
825                 }
826             }
827         
828             @Override
829             public void removeDataBinding() {
830                 if (model != null) {
831                     model.removePropertyChangeListener("valid", this);
832                 }
833             }
834         });
835     }
836 
837 }