View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.referential.analysisinstruments.menu;
2   
3   import fr.ifremer.dali.dto.referential.AnalysisInstrumentDTO;
4   import fr.ifremer.dali.ui.swing.DaliHelpBroker;
5   import fr.ifremer.dali.ui.swing.DaliUIContext;
6   import fr.ifremer.dali.ui.swing.content.manage.filter.element.menu.ApplyFilterUI;
7   import fr.ifremer.dali.ui.swing.content.manage.referential.menu.ReferentialMenuUI;
8   import fr.ifremer.dali.ui.swing.util.DaliUI;
9   import fr.ifremer.quadrige3.ui.core.dto.referential.StatusDTO;
10  import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
11  import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
12  import fr.ifremer.quadrige3.ui.swing.component.bean.ExtendedComboBox;
13  import java.awt.BorderLayout;
14  import java.awt.Component;
15  import java.awt.Container;
16  import java.awt.GridBagConstraints;
17  import java.awt.GridLayout;
18  import java.awt.Insets;
19  import java.awt.LayoutManager;
20  import java.util.ArrayList;
21  import java.util.HashMap;
22  import java.util.List;
23  import java.util.Map;
24  import java.util.TreeMap;
25  import javax.swing.BorderFactory;
26  import javax.swing.Box;
27  import javax.swing.BoxLayout;
28  import javax.swing.JButton;
29  import javax.swing.JLabel;
30  import javax.swing.JPanel;
31  import javax.swing.SwingConstants;
32  import jaxx.runtime.JAXXBinding;
33  import jaxx.runtime.JAXXContext;
34  import jaxx.runtime.JAXXObject;
35  import jaxx.runtime.JAXXObjectDescriptor;
36  import jaxx.runtime.JAXXUtil;
37  import jaxx.runtime.SwingUtil;
38  import jaxx.runtime.binding.DefaultJAXXBinding;
39  import jaxx.runtime.context.DefaultJAXXContext;
40  import jaxx.runtime.swing.Table;
41  import jaxx.runtime.swing.help.JAXXHelpUI;
42  import org.apache.commons.logging.Log;
43  import org.apache.commons.logging.LogFactory;
44  import static org.nuiton.i18n.I18n.t;
45  
46  public class AnalysisInstrumentsMenuUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, ReferentialMenuUI<AnalysisInstrumentsMenuUIModel, AnalysisInstrumentsMenuUIHandler>, JAXXObject {
47  
48      /*-----------------------------------------------------------------------*/
49      /*------------------ Constants for all public bindings ------------------*/
50      /*-----------------------------------------------------------------------*/
51  
52      public static final String BINDING_NAME_COMBO_SELECTED_ITEM = "nameCombo.selectedItem";
53      public static final String BINDING_STATUS_COMBO_SELECTED_ITEM = "statusCombo.selectedItem";
54  
55      /*-----------------------------------------------------------------------*/
56      /*------------------------- Other static fields -------------------------*/
57      /*-----------------------------------------------------------------------*/
58  
59      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAL1WzW8bRRSfmHw5TtqSpFFQA23TSk0QjPkQBxSgzUejukqgalIpIgcY746dace725lZslZUxH9Ar9zgirgguHFCHDhz4IL4FxDiwBXx3ux61xtvYpdIWPLE8+b33vu9NzO/yTd/kBGtyNWHLIqoCj0jWpzeXd3b+6D+kDtmg2tHicD4isSfoRIp7ZOKm9q1Idf2t9C9mrhX1/1W4Hvc6/Je2SIT2rQl1wecG0NezHs4Wld30uWVKAhVJ2pKqijql3/9WXrqfvZViZAoAHbnoZQr/byySoa3SEm4hkxDpk9YVTKvCTSU8JrAdwpt65Jp/T5r8cfkUzK2RUYDpiCYIYuDl2xjWP8oMGT8+t17zOPyNUMaDUVFQ/EWV9RlUtBQUH0I2anjewaC0RbzWJNTxRsc0womKVhkWwstPG1U2AKrpjCGdDVZqGUL22B/UAsCm33UkJGW73JpyKP/J/E2Zsuyj9aV/4grQ26cmH4DZnfAZ80iM9cyJrJtg83CfYkSh7iXiCqn4CkWBLK9KaTh6kHNkNqg1TasC+WSt6zVFtcdCxNMp3nOaUA6Rvhewmw+d/LiFLusLnner3MCXsf5LA7zWaEenLUtVu8t1BoRdSkPhpNX9w15t6vIxyFzlWjyN7srTc4nrXPm0dsR1O1y1zqv+VE+bofgGwUEK9owE+qUzWUcrh1ftnHRtJhfvpi2bC00xvd0un2z+R5VHMmZikGGzOQ6EVsRuJziJzXAnYNs6dVkXZFLuV0BpaGZ0mRSMLRPRlQIZtjG/V5xug9LsSzNH5MlDGhX/5mb+fWH37/f7GjRNOS+WAjtklLQiED5AdwKganPx0IUGiGr2yxY2SfluGNWZxcKiO0ky0AO8j2P7hTd6R2mDyDEyNhvP/409/Evz5HSJpmQPnM3GeJrpGwOFHTBl24U3LxlGU0ejsN4Ab7DhkzE1wHPr4G5CuHPFOAPN7jjKwYxQFAaTGqwl9F+n2uU9gQ6jAfNkLEjqzlPImjdQkHrUv718s9/z+x8e6vTviEo54UT4VkLRz4ko8KTwuNWzBOdLhTvSqB56PqZHhcpNAGNvnD8fiRK9JYd3+7p1hCKm69cFLebR2v2V9zmNnUUZ4bvCiO5G68smaVFq0MgPw3RjHXGIGBxeRkahTnWbQfw123SozRBHzoluMISL+gm7lHlKJWJJ7g7PIJNmrYEkqPXpogoSpzJ0QA5J2OW3K0Z3jLkcrzztMlN7wuxtAxcxjv5gQ/rgZzIx5bybD2YOurSpawLs/kuxJiivN2q9+ydmMk6sWPjHK9+tG/mgWqGSzv9ET5+wmF4WFbtkcH866im8ZQ6eNgh/wSz8xo+gqB9nctrG/OSbUwMoLG0UqvIVMZvU8X4vtwVwa6FL5wINyIorKpL3v9rVbNHOzbTaWUNN4TnplXNF9AsrGeuAHhCJbmHp18pqBOStX0Ak3PvuMywK3UgCK/aez2xh3Cc6RsRzZ/j8LQ4wsIAnMZRqnfbAT8lztUzM7k+UIQvTomwdGYOLw/QjQnY+6aHCrR3SqRXBuLy9SkRqgNwGRZO/O/MmVh814fFv3pgQAwEDgAA";
60      private static final Log log = LogFactory.getLog(AnalysisInstrumentsMenuUI.class);
61      private static final long serialVersionUID = 1L;
62  
63      /*-----------------------------------------------------------------------*/
64      /*--------------------------- Internal states ---------------------------*/
65      /*-----------------------------------------------------------------------*/
66  
67      protected List<Object> $activeBindings = new ArrayList<Object>();
68      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
69      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
70      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
71      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
72      private boolean allComponentsCreated;
73      protected final JAXXContext delegateContext = new DefaultJAXXContext();
74  
75      /*-----------------------------------------------------------------------*/
76      /*------------------------ Protected components  ------------------------*/
77      /*-----------------------------------------------------------------------*/
78  
79      protected ApplyFilterUI applyFilterUI;
80      protected DaliHelpBroker broker;
81      protected JButton clearButton;
82      protected final AnalysisInstrumentsMenuUIHandler handler = createHandler();
83      protected JPanel menuPanel;
84      protected AnalysisInstrumentsMenuUIModel model;
85      protected ExtendedComboBox<AnalysisInstrumentDTO> nameCombo;
86      protected JLabel nameLabel;
87      protected JButton searchButton;
88      protected JPanel selectionButtonsPanel;
89      protected Table selectionPanel;
90      protected ExtendedComboBox<StatusDTO> statusCombo;
91      protected JLabel statusLabel;
92  
93      /*-----------------------------------------------------------------------*/
94      /*------------------------- Private components  -------------------------*/
95      /*-----------------------------------------------------------------------*/
96  
97      private AnalysisInstrumentsMenuUI $JPanel0 = this;
98      private JPanel $JPanel1;
99      private JPanel $JPanel2;
100 
101     /*-----------------------------------------------------------------------*/
102     /*---------------------------- Constructors  ----------------------------*/
103     /*-----------------------------------------------------------------------*/
104 
105     public AnalysisInstrumentsMenuUI(ApplicationUI parentUI) {
106         ApplicationUIUtil.setParentUI(this, parentUI);
107             $initialize();
108     }
109 
110     public AnalysisInstrumentsMenuUI() {
111         $initialize();
112     }
113 
114     public AnalysisInstrumentsMenuUI(JAXXContext parentContext) {
115         JAXXUtil.initContext(this, parentContext);
116         $initialize();
117     }
118 
119     public AnalysisInstrumentsMenuUI(boolean param0) {
120         super(param0);
121         $initialize();
122     }
123 
124     public AnalysisInstrumentsMenuUI(JAXXContext parentContext, boolean param1) {
125         super(param1);
126         JAXXUtil.initContext(this, parentContext);
127         $initialize();
128     }
129 
130     public AnalysisInstrumentsMenuUI(LayoutManager param0) {
131         super(param0);
132         $initialize();
133     }
134 
135     public AnalysisInstrumentsMenuUI(JAXXContext parentContext, LayoutManager param1) {
136         super(param1);
137         JAXXUtil.initContext(this, parentContext);
138         $initialize();
139     }
140 
141     public AnalysisInstrumentsMenuUI(LayoutManager param0, boolean param1) {
142         super(param0 ,param1);
143         $initialize();
144     }
145 
146     public AnalysisInstrumentsMenuUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
147         super(param1 ,param2);
148         JAXXUtil.initContext(this, parentContext);
149         $initialize();
150     }
151 
152     /*-----------------------------------------------------------------------*/
153     /*--------------------------- Statics methods ---------------------------*/
154     /*-----------------------------------------------------------------------*/
155 
156     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
157         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
158     }
159 
160     /*-----------------------------------------------------------------------*/
161     /*---------------------- JAXXObject implementation ----------------------*/
162     /*-----------------------------------------------------------------------*/
163 
164     @Override
165     public void applyDataBinding(String $binding) {
166         if (allComponentsCreated && $bindings.containsKey($binding)) {
167             getDataBinding($binding).applyDataBinding();
168         }
169         processDataBinding($binding);
170     }
171 
172     @Override
173     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
174         super.firePropertyChange(propertyName, oldValue, newValue);
175     }
176 
177     @Override
178     public Map<String, Object> get$objectMap() {
179         return $objectMap;
180     }
181 
182     @Override
183     public JAXXBinding getDataBinding(String bindingId) {
184         return $bindings.get(bindingId);
185     }
186 
187     @Override
188     public JAXXBinding[] getDataBindings() {
189         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
190     }
191 
192     @Override
193     public Object getObjectById(String id) {
194         return $objectMap.get(id);
195     }
196 
197     @Override
198     public void processDataBinding(String $binding, boolean $force) {
199         if (!$force && $activeBindings.contains($binding)) { 
200             return;
201         }
202         $activeBindings.add($binding);
203         try {
204             if (allComponentsCreated && $bindings.containsKey($binding)) {
205                 getDataBinding($binding).processDataBinding();
206             }
207         } finally {
208             $activeBindings.remove($binding);
209         }
210     }
211 
212     @Override
213     public void processDataBinding(String $binding) {
214         processDataBinding($binding, false);
215     }
216 
217     @Override
218     public void registerDataBinding(JAXXBinding binding) {
219         $bindings.put(binding.getId(), binding);
220     }
221 
222     @Override
223     public void removeDataBinding(String $binding) {
224         if (allComponentsCreated && $bindings.containsKey($binding)) {
225             getDataBinding($binding).removeDataBinding();
226         }
227     }
228 
229     /*-----------------------------------------------------------------------*/
230     /*--------------------- JAXXContext implementation  ---------------------*/
231     /*-----------------------------------------------------------------------*/
232 
233     @Override
234     public <T> T getContextValue(Class<T> clazz) {
235         return delegateContext.getContextValue(clazz, null);
236     }
237 
238     @Override
239     public <T> T getContextValue(Class<T> clazz, String name) {
240         return delegateContext.getContextValue(clazz, name);
241     }
242 
243     @Override
244     public JAXXContext getDelegateContext() {
245         return delegateContext;
246     }
247 
248     @Override
249     public <O extends Container> O getParentContainer(Class<O> clazz) {
250         return SwingUtil.getParentContainer(this, clazz);
251     }
252 
253     @Override
254     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
255         return SwingUtil.getParentContainer(source, clazz);
256     }
257 
258     @Override
259     public <T> void removeContextValue(Class<T> clazz) {
260         delegateContext.removeContextValue(clazz, null);
261     }
262 
263     @Override
264     public <T> void removeContextValue(Class<T> clazz, String name) {
265         delegateContext.removeContextValue(clazz, name);
266     }
267 
268     @Override
269     public <T> void setContextValue(T o) {
270         delegateContext.setContextValue(o, null);
271     }
272 
273     @Override
274     public <T> void setContextValue(T o, String name) {
275         delegateContext.setContextValue(o, name);
276     }
277 
278     /*-----------------------------------------------------------------------*/
279     /*----------------------- Public acessor methods  -----------------------*/
280     /*-----------------------------------------------------------------------*/
281 
282     public ApplyFilterUI getApplyFilterUI() {
283         return applyFilterUI;
284     }
285 
286     public DaliHelpBroker getBroker() {
287         return broker;
288     }
289 
290     public JButton getClearButton() {
291         return clearButton;
292     }
293 
294     public AnalysisInstrumentsMenuUIHandler getHandler() {
295         return handler;
296     }
297 
298     public JPanel getMenuPanel() {
299         return menuPanel;
300     }
301 
302     public AnalysisInstrumentsMenuUIModel getModel() {
303         return model;
304     }
305 
306     public ExtendedComboBox<AnalysisInstrumentDTO> getNameCombo() {
307         return nameCombo;
308     }
309 
310     public JLabel getNameLabel() {
311         return nameLabel;
312     }
313 
314     public JButton getSearchButton() {
315         return searchButton;
316     }
317 
318     public JPanel getSelectionButtonsPanel() {
319         return selectionButtonsPanel;
320     }
321 
322     public Table getSelectionPanel() {
323         return selectionPanel;
324     }
325 
326     public ExtendedComboBox<StatusDTO> getStatusCombo() {
327         return statusCombo;
328     }
329 
330     public JLabel getStatusLabel() {
331         return statusLabel;
332     }
333 
334     /*-----------------------------------------------------------------------*/
335     /*---------------------------- Other methods ----------------------------*/
336     /*-----------------------------------------------------------------------*/
337 
338     @Override
339     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
340         broker.installUI(component, helpId);
341     }
342 
343     @Override
344     public void showHelp(String helpId) {
345         getBroker().showHelp(this, helpId);
346     }
347 
348     /*-----------------------------------------------------------------------*/
349     /*--------------------- Protected acessors methods  ---------------------*/
350     /*-----------------------------------------------------------------------*/
351 
352     protected JPanel get$JPanel1() {
353         return $JPanel1;
354     }
355 
356     protected JPanel get$JPanel2() {
357         return $JPanel2;
358     }
359 
360     /*-----------------------------------------------------------------------*/
361     /*--------------------- Components creation methods ---------------------*/
362     /*-----------------------------------------------------------------------*/
363 
364     protected void addChildrenToMenuPanel() {
365         if (!allComponentsCreated) {
366             return;
367         }
368         menuPanel.add(applyFilterUI);
369         menuPanel.add(selectionPanel);
370         menuPanel.add(selectionButtonsPanel);
371     }
372 
373     protected void addChildrenToSelectionButtonsPanel() {
374         if (!allComponentsCreated) {
375             return;
376         }
377         selectionButtonsPanel.add(clearButton);
378         selectionButtonsPanel.add(searchButton);
379     }
380 
381     protected void addChildrenToSelectionPanel() {
382         if (!allComponentsCreated) {
383             return;
384         }
385         selectionPanel.add($JPanel1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
386         selectionPanel.add($JPanel2, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
387     }
388 
389     protected void createApplyFilterUI() {
390         $objectMap.put("applyFilterUI", applyFilterUI = new ApplyFilterUI(this));
391         
392         applyFilterUI.setName("applyFilterUI");
393     }
394 
395     protected void createBroker() {
396         $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
397     }
398 
399     protected void createClearButton() {
400         $objectMap.put("clearButton", clearButton = new JButton());
401         
402         clearButton.setName("clearButton");
403         clearButton.setText(t("dali.action.search.clear.label"));
404         clearButton.setToolTipText(t("dali.action.search.clear.tip"));
405         clearButton.putClientProperty("applicationAction", ClearAction.class);
406     }
407 
408     protected AnalysisInstrumentsMenuUIHandler createHandler() {
409         return new AnalysisInstrumentsMenuUIHandler();
410     }
411 
412     protected void createMenuPanel() {
413         $objectMap.put("menuPanel", menuPanel = new JPanel());
414         
415         menuPanel.setName("menuPanel");
416         menuPanel.setLayout(new BoxLayout(menuPanel, BoxLayout.PAGE_AXIS));
417     }
418 
419     protected void createModel() {
420         $objectMap.put("model", model = getContextValue(AnalysisInstrumentsMenuUIModel.class));
421     }
422 
423     protected void createNameCombo() {
424         $objectMap.put("nameCombo", nameCombo = new ExtendedComboBox<AnalysisInstrumentDTO>(this));
425         
426         nameCombo.setName("nameCombo");
427         nameCombo.setFilterable(true);
428         nameCombo.setShowDecorator(false);
429         nameCombo.setProperty("analysisInstrument");
430         nameCombo.setShowReset(true);
431     }
432 
433     protected void createNameLabel() {
434         $objectMap.put("nameLabel", nameLabel = new JLabel());
435         
436         nameLabel.setName("nameLabel");
437         nameLabel.setText(t("dali.property.name"));
438     }
439 
440     protected void createSearchButton() {
441         $objectMap.put("searchButton", searchButton = new JButton());
442         
443         searchButton.setName("searchButton");
444         searchButton.setText(t("dali.action.search.label"));
445         searchButton.setToolTipText(t("dali.action.search.tip"));
446         searchButton.putClientProperty("applicationAction", SearchAction.class);
447     }
448 
449     protected void createSelectionButtonsPanel() {
450         $objectMap.put("selectionButtonsPanel", selectionButtonsPanel = new JPanel());
451         
452         selectionButtonsPanel.setName("selectionButtonsPanel");
453         selectionButtonsPanel.setLayout(new GridLayout(1,0));
454     }
455 
456     protected void createSelectionPanel() {
457         $objectMap.put("selectionPanel", selectionPanel = new Table());
458         
459         selectionPanel.setName("selectionPanel");
460     }
461 
462     protected void createStatusCombo() {
463         $objectMap.put("statusCombo", statusCombo = new ExtendedComboBox<StatusDTO>(this));
464         
465         statusCombo.setName("statusCombo");
466         statusCombo.setFilterable(true);
467         statusCombo.setShowDecorator(false);
468         statusCombo.setProperty("status");
469         statusCombo.setShowReset(true);
470     }
471 
472     protected void createStatusLabel() {
473         $objectMap.put("statusLabel", statusLabel = new JLabel());
474         
475         statusLabel.setName("statusLabel");
476         statusLabel.setText(t("dali.property.status"));
477     }
478 
479     /*-----------------------------------------------------------------------*/
480     /*------------------------ Internal jaxx methods ------------------------*/
481     /*-----------------------------------------------------------------------*/
482 
483     private void $completeSetup() {
484         allComponentsCreated = true;
485         if (log.isDebugEnabled()) {
486             log.debug(this);
487         }
488         // inline complete setup of $JPanel0
489         add(menuPanel);
490         addChildrenToMenuPanel();
491         addChildrenToSelectionPanel();
492         // inline complete setup of $JPanel1
493         $JPanel1.add(nameLabel, BorderLayout.PAGE_START);
494         $JPanel1.add(nameCombo, BorderLayout.CENTER);
495         // inline complete setup of $JPanel2
496         $JPanel2.add(statusLabel, BorderLayout.PAGE_START);
497         $JPanel2.add(statusCombo, BorderLayout.CENTER);
498         addChildrenToSelectionButtonsPanel();
499         
500         // apply 2 data bindings
501         JAXXUtil.applyDataBinding(this, $bindings.keySet());
502         
503         // apply 15 property setters
504         nameCombo.setBeanType(AnalysisInstrumentDTO.class);
505         statusCombo.setBeanType(StatusDTO.class);
506         clearButton.setAlignmentX(Component.CENTER_ALIGNMENT);
507         searchButton.setAlignmentX(Component.CENTER_ALIGNMENT);
508         selectionPanel.setBorder(BorderFactory.createTitledBorder(t("dali.config.menu.title")));
509         nameLabel.setLabelFor(nameCombo);
510         nameCombo.setBean(model);
511         statusLabel.setLabelFor(statusCombo);
512         statusCombo.setBean(model);
513         clearButton.setIcon(SwingUtil.createActionIcon("reset"));
514         searchButton.setIcon(SwingUtil.createActionIcon("find"));
515     }
516 
517     private void $initialize() {
518         if (allComponentsCreated) {
519             return;
520         }
521         if (log.isDebugEnabled()) {
522             log.debug(this);
523         }
524         handler.beforeInit(this);
525         $objectMap.put("$JPanel0", $JPanel0);
526         createModel();
527         createBroker();
528         createMenuPanel();
529         createApplyFilterUI();
530         createSelectionPanel();
531         // inline creation of $JPanel1
532         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
533         
534         $JPanel1.setName("$JPanel1");
535         $JPanel1.setLayout(new BorderLayout());
536         createNameLabel();
537         createNameCombo();
538         // inline creation of $JPanel2
539         $objectMap.put("$JPanel2", $JPanel2 = new JPanel());
540         
541         $JPanel2.setName("$JPanel2");
542         $JPanel2.setLayout(new BorderLayout());
543         createStatusLabel();
544         createStatusCombo();
545         createSelectionButtonsPanel();
546         createClearButton();
547         createSearchButton();
548         // inline creation of $JPanel0
549         setName("$JPanel0");
550         
551         // registers 2 data bindings
552         $registerDefaultBindings();
553         $completeSetup();
554         handler.afterInit(this);
555     }
556 
557     private void $registerDefaultBindings() {
558         // register 2 data bindings
559         registerDataBinding(new DefaultJAXXBinding(this, BINDING_NAME_COMBO_SELECTED_ITEM, true) {
560         
561             @Override
562             public void applyDataBinding() {
563                 if (model != null) {
564                     model.addPropertyChangeListener("analysisInstrument", this);
565                 }
566             }
567         
568             @Override
569             public void processDataBinding() {
570                 if (model != null) {
571                     nameCombo.setSelectedItem(model.getAnalysisInstrument());
572                 }
573             }
574         
575             @Override
576             public void removeDataBinding() {
577                 if (model != null) {
578                     model.removePropertyChangeListener("analysisInstrument", this);
579                 }
580             }
581         });
582         registerDataBinding(new DefaultJAXXBinding(this, BINDING_STATUS_COMBO_SELECTED_ITEM, true) {
583         
584             @Override
585             public void applyDataBinding() {
586                 if (model != null) {
587                     model.addPropertyChangeListener("status", this);
588                 }
589             }
590         
591             @Override
592             public void processDataBinding() {
593                 if (model != null) {
594                     statusCombo.setSelectedItem(model.getStatus());
595                 }
596             }
597         
598             @Override
599             public void removeDataBinding() {
600                 if (model != null) {
601                     model.removePropertyChangeListener("status", this);
602                 }
603             }
604         });
605     }
606 
607 }