View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.referential.taxongroup.menu;
2   
3   import fr.ifremer.dali.dto.referential.TaxonGroupDTO;
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.awt.event.KeyEvent;
21  import java.awt.event.KeyListener;
22  import java.util.ArrayList;
23  import java.util.HashMap;
24  import java.util.List;
25  import java.util.Map;
26  import java.util.TreeMap;
27  import javax.swing.BorderFactory;
28  import javax.swing.Box;
29  import javax.swing.BoxLayout;
30  import javax.swing.JButton;
31  import javax.swing.JLabel;
32  import javax.swing.JPanel;
33  import javax.swing.JTextField;
34  import javax.swing.SwingConstants;
35  import jaxx.runtime.JAXXBinding;
36  import jaxx.runtime.JAXXContext;
37  import jaxx.runtime.JAXXObject;
38  import jaxx.runtime.JAXXObjectDescriptor;
39  import jaxx.runtime.JAXXUtil;
40  import jaxx.runtime.SwingUtil;
41  import jaxx.runtime.binding.DefaultJAXXBinding;
42  import jaxx.runtime.context.DefaultJAXXContext;
43  import jaxx.runtime.swing.Table;
44  import jaxx.runtime.swing.help.JAXXHelpUI;
45  import org.apache.commons.logging.Log;
46  import org.apache.commons.logging.LogFactory;
47  import static org.nuiton.i18n.I18n.t;
48  
49  public class TaxonGroupMenuUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, ReferentialMenuUI<TaxonGroupMenuUIModel, TaxonGroupMenuUIHandler>, JAXXObject {
50  
51      /*-----------------------------------------------------------------------*/
52      /*------------------ Constants for all public bindings ------------------*/
53      /*-----------------------------------------------------------------------*/
54  
55      public static final String BINDING_LABEL_EDITOR_TEXT = "labelEditor.text";
56      public static final String BINDING_NAME_EDITOR_TEXT = "nameEditor.text";
57      public static final String BINDING_PARENT_TAXON_GROUP_COMBO_SELECTED_ITEM = "parentTaxonGroupCombo.selectedItem";
58      public static final String BINDING_STATUS_COMBO_SELECTED_ITEM = "statusCombo.selectedItem";
59  
60      /*-----------------------------------------------------------------------*/
61      /*------------------------- Other static fields -------------------------*/
62      /*-----------------------------------------------------------------------*/
63  
64      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAALVXzW8bRRQfm9iJ81HaOAlBDbRNK5GAtGkpH4IU2nzU1FUCUeJKgRxgvDt2pqx3t7OzZC2riD+BPwHuXJC4AQeEBGcOXBASVy4IceCKeG/W3g9nHW+IsOSNZ97X771583ubL/4gBVeQKw+p72vCsyRvMe3+2v7+O/WHTJebzNUFd6QtSPDJ5Un+gEwY4b4rydWDLTRf6ZqvbNgtx7aYFbNe3SLjrmybzD1kTEryTNJCd92VvVC86jue6HkNQaV5/eyvP/OfGp98nifEdwDdLKRyeZhVlMnIFslzQ5JpiPQRXTGp1QQYgltNwDuFexsmdd23aYs9Ih+T0S1SdKgAZ5IsZk9Z+VD2viPJ2LX7O9Ri5nVJag2h8YZgLSY0g5pc87jmHkF0TbctCc60FrVok2mCNRiG5dTUJPVtqylsz9FazPK0Gq7fwvU2LB9UHUfFKkpSaNkGMyV59/8Is42+o1jFurA/ZEKS5wYG24TVPbBZV5qRaQn9q5LAQWDN/a5BUCfUKoXKU9RxzHaFm5KJB1VJqllzaygTjZmgiruY01rcFwaYDuOcc0FTl9y2usjmE10VhKjRusmSdr3TvYHrGXzMh7LZoHeiSm7R+vGk1SZaXBxsCN1WtyV5I5b8I48agjfZzXgFuj2p1Rm1tLs+1MNghjJet/1kjB7wF1OAj5uIKQR2CR9XQ+mEkt41OPS8JHOJZGrMlxXOTCNp0gt2MyVYyYLbloz1fIQEhUEo3FlOSntuX0pxO+FKKj036fh6v1jVBrcWk+LZsB3WPSltyw1bcyZ5/hO6yagIlCQpJ4oR7KLiK6H+pAvq+mEker0rF+RiouOAIbWIISMKyx2QgvBgG1r04Dip7oIooNP5PjpFh0r6z1z5569//arS49B5iD2bqhobAcBtjrAduPEcQz8ZEKgnubmyTZ3VA1IKKqbmw0IKsL2uGMBBvAtorqG5do+6h+CiMPrLd9/PffDTEyRfgQa0qVGhqF8lJXkooAq2afjO7TsK0eTRGDzPw3cEeiS46ng3JayFB3+mQP9ok+m2oKpLCw1qurBfwv1d5uJI6qqO4GWRZLSj2POxD6VbSCldiL9e+vHv8t6Xd3rly0E6Tw9Uj0pYeI8UuWVyi6kh1J0vqUNnwnGZZ9jRHEmbLARmy/n+O95l2XX1rByrVg6J2xYGEvftzrr6FZS5remCUclqXJrMCCRLcmlRcSxQa4M3Aw6VqLC4vAyFwhg7qgL4a5ccY1FnCJw8XGFFJhU8o6c6qbT3GE8KaEWSSwpMtw3bwcRSelpgmIYonYMzAJsMUmFGVbIWvL8E7aE1mdzp87i0DBDHerDgUPpDZsKlcj1dwaY6MSaOylROlknppEGIsfywuLnQ+XRUB2W5lN4I8RlxuqQmOxHlRzlNJ3NClbSw0SzJntGFKCO8ggMSig2i0x5SbNJECc0kEwp0UisZm2Onb9tylNye8tPfrMWhkTM1JtDw9Pv4qsZ1itd/TZEAxt/A+RgsNR3pC+KPU7Wu4isbTLMeHavCPKsKEyhowbDU1IwNGhlgSds2a9ypKfWFgeqSp168+MD+r1nNdPZUpJPSGmlwywizmk+BmZrPXIrigEwSrxIZ+r1o0rYNyuTcLYNKerkOAOE95c1jvnP4LA/1iNvf4OPbdA8LGTCN4fCttR12gp8rZ0Zy7cweXjizhxuZPPxwgoeXz4zh1QwnMg7917Twf6b9Ezy9lgnLbyd4uJWFobkevCSfCcXvQ1D8C/HIx8ESEQAA";
65      private static final Log log = LogFactory.getLog(TaxonGroupMenuUI.class);
66      private static final long serialVersionUID = 1L;
67  
68      /*-----------------------------------------------------------------------*/
69      /*--------------------------- Internal states ---------------------------*/
70      /*-----------------------------------------------------------------------*/
71  
72      protected List<Object> $activeBindings = new ArrayList<Object>();
73      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
74      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
75      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
76      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
77      private boolean allComponentsCreated;
78      protected final JAXXContext delegateContext = new DefaultJAXXContext();
79  
80      /*-----------------------------------------------------------------------*/
81      /*------------------------ Protected components  ------------------------*/
82      /*-----------------------------------------------------------------------*/
83  
84      protected ApplyFilterUI applyFilterUI;
85      protected DaliHelpBroker broker;
86      protected JButton clearButton;
87      protected final TaxonGroupMenuUIHandler handler = createHandler();
88      protected JTextField labelEditor;
89      protected JLabel labelLabel;
90      protected JPanel menuPanel;
91      protected TaxonGroupMenuUIModel model;
92      protected JTextField nameEditor;
93      protected JLabel nameLabel;
94      protected ExtendedComboBox<TaxonGroupDTO> parentTaxonGroupCombo;
95      protected JLabel parentTaxonGroupLabel;
96      protected JButton searchButton;
97      protected JPanel selectionButtonsPanel;
98      protected Table selectionPanel;
99      protected ExtendedComboBox<StatusDTO> statusCombo;
100     protected JLabel statusLabel;
101 
102     /*-----------------------------------------------------------------------*/
103     /*------------------------- Private components  -------------------------*/
104     /*-----------------------------------------------------------------------*/
105 
106     private TaxonGroupMenuUI $JPanel0 = this;
107     private JPanel $JPanel1;
108     private JPanel $JPanel2;
109     private JPanel $JPanel3;
110     private JPanel $JPanel4;
111 
112     /*-----------------------------------------------------------------------*/
113     /*---------------------------- Constructors  ----------------------------*/
114     /*-----------------------------------------------------------------------*/
115 
116     public TaxonGroupMenuUI(ApplicationUI parentUI) {
117         ApplicationUIUtil.setParentUI(this, parentUI);
118             $initialize();
119     }
120 
121     public TaxonGroupMenuUI() {
122         $initialize();
123     }
124 
125     public TaxonGroupMenuUI(JAXXContext parentContext) {
126         JAXXUtil.initContext(this, parentContext);
127         $initialize();
128     }
129 
130     public TaxonGroupMenuUI(boolean param0) {
131         super(param0);
132         $initialize();
133     }
134 
135     public TaxonGroupMenuUI(JAXXContext parentContext, boolean param1) {
136         super(param1);
137         JAXXUtil.initContext(this, parentContext);
138         $initialize();
139     }
140 
141     public TaxonGroupMenuUI(LayoutManager param0) {
142         super(param0);
143         $initialize();
144     }
145 
146     public TaxonGroupMenuUI(JAXXContext parentContext, LayoutManager param1) {
147         super(param1);
148         JAXXUtil.initContext(this, parentContext);
149         $initialize();
150     }
151 
152     public TaxonGroupMenuUI(LayoutManager param0, boolean param1) {
153         super(param0 ,param1);
154         $initialize();
155     }
156 
157     public TaxonGroupMenuUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
158         super(param1 ,param2);
159         JAXXUtil.initContext(this, parentContext);
160         $initialize();
161     }
162 
163     /*-----------------------------------------------------------------------*/
164     /*--------------------------- Statics methods ---------------------------*/
165     /*-----------------------------------------------------------------------*/
166 
167     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
168         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
169     }
170 
171     /*-----------------------------------------------------------------------*/
172     /*---------------------- JAXXObject implementation ----------------------*/
173     /*-----------------------------------------------------------------------*/
174 
175     @Override
176     public void applyDataBinding(String $binding) {
177         if (allComponentsCreated && $bindings.containsKey($binding)) {
178             getDataBinding($binding).applyDataBinding();
179         }
180         processDataBinding($binding);
181     }
182 
183     @Override
184     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
185         super.firePropertyChange(propertyName, oldValue, newValue);
186     }
187 
188     @Override
189     public Map<String, Object> get$objectMap() {
190         return $objectMap;
191     }
192 
193     @Override
194     public JAXXBinding getDataBinding(String bindingId) {
195         return $bindings.get(bindingId);
196     }
197 
198     @Override
199     public JAXXBinding[] getDataBindings() {
200         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
201     }
202 
203     @Override
204     public Object getObjectById(String id) {
205         return $objectMap.get(id);
206     }
207 
208     @Override
209     public void processDataBinding(String $binding, boolean $force) {
210         if (!$force && $activeBindings.contains($binding)) { 
211             return;
212         }
213         $activeBindings.add($binding);
214         try {
215             if (allComponentsCreated && $bindings.containsKey($binding)) {
216                 getDataBinding($binding).processDataBinding();
217             }
218         } finally {
219             $activeBindings.remove($binding);
220         }
221     }
222 
223     @Override
224     public void processDataBinding(String $binding) {
225         processDataBinding($binding, false);
226     }
227 
228     @Override
229     public void registerDataBinding(JAXXBinding binding) {
230         $bindings.put(binding.getId(), binding);
231     }
232 
233     @Override
234     public void removeDataBinding(String $binding) {
235         if (allComponentsCreated && $bindings.containsKey($binding)) {
236             getDataBinding($binding).removeDataBinding();
237         }
238     }
239 
240     /*-----------------------------------------------------------------------*/
241     /*--------------------- JAXXContext implementation  ---------------------*/
242     /*-----------------------------------------------------------------------*/
243 
244     @Override
245     public <T> T getContextValue(Class<T> clazz) {
246         return delegateContext.getContextValue(clazz, null);
247     }
248 
249     @Override
250     public <T> T getContextValue(Class<T> clazz, String name) {
251         return delegateContext.getContextValue(clazz, name);
252     }
253 
254     @Override
255     public JAXXContext getDelegateContext() {
256         return delegateContext;
257     }
258 
259     @Override
260     public <O extends Container> O getParentContainer(Class<O> clazz) {
261         return SwingUtil.getParentContainer(this, clazz);
262     }
263 
264     @Override
265     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
266         return SwingUtil.getParentContainer(source, clazz);
267     }
268 
269     @Override
270     public <T> void removeContextValue(Class<T> clazz) {
271         delegateContext.removeContextValue(clazz, null);
272     }
273 
274     @Override
275     public <T> void removeContextValue(Class<T> clazz, String name) {
276         delegateContext.removeContextValue(clazz, name);
277     }
278 
279     @Override
280     public <T> void setContextValue(T o) {
281         delegateContext.setContextValue(o, null);
282     }
283 
284     @Override
285     public <T> void setContextValue(T o, String name) {
286         delegateContext.setContextValue(o, name);
287     }
288 
289     /*-----------------------------------------------------------------------*/
290     /*---------------------------- Event methods ----------------------------*/
291     /*-----------------------------------------------------------------------*/
292 
293     public void doKeyReleased__on__labelEditor(KeyEvent event) {
294         if (log.isDebugEnabled()) {
295             log.debug(event);
296         }
297         handler.setText(event, "label");
298     }
299 
300     public void doKeyReleased__on__nameEditor(KeyEvent event) {
301         if (log.isDebugEnabled()) {
302             log.debug(event);
303         }
304         handler.setText(event, "name");
305     }
306 
307     /*-----------------------------------------------------------------------*/
308     /*----------------------- Public acessor methods  -----------------------*/
309     /*-----------------------------------------------------------------------*/
310 
311     public ApplyFilterUI getApplyFilterUI() {
312         return applyFilterUI;
313     }
314 
315     public DaliHelpBroker getBroker() {
316         return broker;
317     }
318 
319     public JButton getClearButton() {
320         return clearButton;
321     }
322 
323     public TaxonGroupMenuUIHandler getHandler() {
324         return handler;
325     }
326 
327     public JTextField getLabelEditor() {
328         return labelEditor;
329     }
330 
331     public JLabel getLabelLabel() {
332         return labelLabel;
333     }
334 
335     public JPanel getMenuPanel() {
336         return menuPanel;
337     }
338 
339     public TaxonGroupMenuUIModel getModel() {
340         return model;
341     }
342 
343     public JTextField getNameEditor() {
344         return nameEditor;
345     }
346 
347     public JLabel getNameLabel() {
348         return nameLabel;
349     }
350 
351     public ExtendedComboBox<TaxonGroupDTO> getParentTaxonGroupCombo() {
352         return parentTaxonGroupCombo;
353     }
354 
355     public JLabel getParentTaxonGroupLabel() {
356         return parentTaxonGroupLabel;
357     }
358 
359     public JButton getSearchButton() {
360         return searchButton;
361     }
362 
363     public JPanel getSelectionButtonsPanel() {
364         return selectionButtonsPanel;
365     }
366 
367     public Table getSelectionPanel() {
368         return selectionPanel;
369     }
370 
371     public ExtendedComboBox<StatusDTO> getStatusCombo() {
372         return statusCombo;
373     }
374 
375     public JLabel getStatusLabel() {
376         return statusLabel;
377     }
378 
379     /*-----------------------------------------------------------------------*/
380     /*---------------------------- Other methods ----------------------------*/
381     /*-----------------------------------------------------------------------*/
382 
383     @Override
384     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
385         broker.installUI(component, helpId);
386     }
387 
388     @Override
389     public void showHelp(String helpId) {
390         getBroker().showHelp(this, helpId);
391     }
392 
393     /*-----------------------------------------------------------------------*/
394     /*--------------------- Protected acessors methods  ---------------------*/
395     /*-----------------------------------------------------------------------*/
396 
397     protected JPanel get$JPanel1() {
398         return $JPanel1;
399     }
400 
401     protected JPanel get$JPanel2() {
402         return $JPanel2;
403     }
404 
405     protected JPanel get$JPanel3() {
406         return $JPanel3;
407     }
408 
409     protected JPanel get$JPanel4() {
410         return $JPanel4;
411     }
412 
413     /*-----------------------------------------------------------------------*/
414     /*--------------------- Components creation methods ---------------------*/
415     /*-----------------------------------------------------------------------*/
416 
417     protected void addChildrenToMenuPanel() {
418         if (!allComponentsCreated) {
419             return;
420         }
421         menuPanel.add(applyFilterUI);
422         menuPanel.add(selectionPanel);
423         menuPanel.add(selectionButtonsPanel);
424     }
425 
426     protected void addChildrenToSelectionButtonsPanel() {
427         if (!allComponentsCreated) {
428             return;
429         }
430         selectionButtonsPanel.add(clearButton);
431         selectionButtonsPanel.add(searchButton);
432     }
433 
434     protected void addChildrenToSelectionPanel() {
435         if (!allComponentsCreated) {
436             return;
437         }
438         selectionPanel.add($JPanel1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
439         selectionPanel.add($JPanel2, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
440         selectionPanel.add($JPanel3, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
441         selectionPanel.add($JPanel4, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
442     }
443 
444     protected void createApplyFilterUI() {
445         $objectMap.put("applyFilterUI", applyFilterUI = new ApplyFilterUI(this));
446         
447         applyFilterUI.setName("applyFilterUI");
448     }
449 
450     protected void createBroker() {
451         $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
452     }
453 
454     protected void createClearButton() {
455         $objectMap.put("clearButton", clearButton = new JButton());
456         
457         clearButton.setName("clearButton");
458         clearButton.setText(t("dali.action.search.clear.label"));
459         clearButton.setToolTipText(t("dali.action.search.clear.tip"));
460         clearButton.putClientProperty("applicationAction", ClearAction.class);
461     }
462 
463     protected TaxonGroupMenuUIHandler createHandler() {
464         return new TaxonGroupMenuUIHandler();
465     }
466 
467     protected void createLabelEditor() {
468         $objectMap.put("labelEditor", labelEditor = new JTextField());
469         
470         labelEditor.setName("labelEditor");
471         labelEditor.setColumns(15);
472         labelEditor.addKeyListener(JAXXUtil.getEventListener(KeyListener.class, "keyReleased", this, "doKeyReleased__on__labelEditor"));
473     }
474 
475     protected void createLabelLabel() {
476         $objectMap.put("labelLabel", labelLabel = new JLabel());
477         
478         labelLabel.setName("labelLabel");
479         labelLabel.setText(t("dali.property.label"));
480     }
481 
482     protected void createMenuPanel() {
483         $objectMap.put("menuPanel", menuPanel = new JPanel());
484         
485         menuPanel.setName("menuPanel");
486         menuPanel.setLayout(new BoxLayout(menuPanel, BoxLayout.PAGE_AXIS));
487     }
488 
489     protected void createModel() {
490         $objectMap.put("model", model = getContextValue(TaxonGroupMenuUIModel.class));
491     }
492 
493     protected void createNameEditor() {
494         $objectMap.put("nameEditor", nameEditor = new JTextField());
495         
496         nameEditor.setName("nameEditor");
497         nameEditor.setColumns(15);
498         nameEditor.addKeyListener(JAXXUtil.getEventListener(KeyListener.class, "keyReleased", this, "doKeyReleased__on__nameEditor"));
499     }
500 
501     protected void createNameLabel() {
502         $objectMap.put("nameLabel", nameLabel = new JLabel());
503         
504         nameLabel.setName("nameLabel");
505         nameLabel.setText(t("dali.property.name"));
506     }
507 
508     protected void createParentTaxonGroupCombo() {
509         $objectMap.put("parentTaxonGroupCombo", parentTaxonGroupCombo = new ExtendedComboBox<TaxonGroupDTO>(this));
510         
511         parentTaxonGroupCombo.setName("parentTaxonGroupCombo");
512         parentTaxonGroupCombo.setFilterable(true);
513         parentTaxonGroupCombo.setShowDecorator(false);
514         parentTaxonGroupCombo.setProperty("parentTaxonGroup");
515         parentTaxonGroupCombo.setShowReset(true);
516     }
517 
518     protected void createParentTaxonGroupLabel() {
519         $objectMap.put("parentTaxonGroupLabel", parentTaxonGroupLabel = new JLabel());
520         
521         parentTaxonGroupLabel.setName("parentTaxonGroupLabel");
522         parentTaxonGroupLabel.setText(t("dali.property.taxonGroup.parent"));
523     }
524 
525     protected void createSearchButton() {
526         $objectMap.put("searchButton", searchButton = new JButton());
527         
528         searchButton.setName("searchButton");
529         searchButton.setText(t("dali.action.search.label"));
530         searchButton.setToolTipText(t("dali.action.search.tip"));
531         searchButton.putClientProperty("applicationAction", SearchAction.class);
532     }
533 
534     protected void createSelectionButtonsPanel() {
535         $objectMap.put("selectionButtonsPanel", selectionButtonsPanel = new JPanel());
536         
537         selectionButtonsPanel.setName("selectionButtonsPanel");
538         selectionButtonsPanel.setLayout(new GridLayout(1,0));
539     }
540 
541     protected void createSelectionPanel() {
542         $objectMap.put("selectionPanel", selectionPanel = new Table());
543         
544         selectionPanel.setName("selectionPanel");
545     }
546 
547     protected void createStatusCombo() {
548         $objectMap.put("statusCombo", statusCombo = new ExtendedComboBox<StatusDTO>(this));
549         
550         statusCombo.setName("statusCombo");
551         statusCombo.setFilterable(true);
552         statusCombo.setShowDecorator(false);
553         statusCombo.setProperty("status");
554         statusCombo.setShowReset(true);
555     }
556 
557     protected void createStatusLabel() {
558         $objectMap.put("statusLabel", statusLabel = new JLabel());
559         
560         statusLabel.setName("statusLabel");
561         statusLabel.setText(t("dali.property.status"));
562     }
563 
564     /*-----------------------------------------------------------------------*/
565     /*------------------------ Internal jaxx methods ------------------------*/
566     /*-----------------------------------------------------------------------*/
567 
568     private void $completeSetup() {
569         allComponentsCreated = true;
570         if (log.isDebugEnabled()) {
571             log.debug(this);
572         }
573         // inline complete setup of $JPanel0
574         add(menuPanel);
575         addChildrenToMenuPanel();
576         addChildrenToSelectionPanel();
577         // inline complete setup of $JPanel1
578         $JPanel1.add(parentTaxonGroupLabel, BorderLayout.PAGE_START);
579         $JPanel1.add(parentTaxonGroupCombo, BorderLayout.CENTER);
580         // inline complete setup of $JPanel2
581         $JPanel2.add(labelLabel, BorderLayout.PAGE_START);
582         $JPanel2.add(labelEditor);
583         // inline complete setup of $JPanel3
584         $JPanel3.add(nameLabel, BorderLayout.PAGE_START);
585         $JPanel3.add(nameEditor);
586         // inline complete setup of $JPanel4
587         $JPanel4.add(statusLabel, BorderLayout.PAGE_START);
588         $JPanel4.add(statusCombo, BorderLayout.CENTER);
589         addChildrenToSelectionButtonsPanel();
590         
591         // apply 4 data bindings
592         JAXXUtil.applyDataBinding(this, $bindings.keySet());
593         
594         // apply 19 property setters
595         parentTaxonGroupCombo.setBeanType(TaxonGroupDTO.class);
596         statusCombo.setBeanType(StatusDTO.class);
597         clearButton.setAlignmentX(Component.CENTER_ALIGNMENT);
598         searchButton.setAlignmentX(Component.CENTER_ALIGNMENT);
599         selectionPanel.setBorder(BorderFactory.createTitledBorder(t("dali.config.menu.title")));
600         parentTaxonGroupLabel.setLabelFor(parentTaxonGroupCombo);
601         parentTaxonGroupCombo.setBean(model);
602         labelLabel.setLabelFor(labelEditor);
603         nameLabel.setLabelFor(nameEditor);
604         statusLabel.setLabelFor(statusCombo);
605         statusCombo.setBean(model);
606         clearButton.setIcon(SwingUtil.createActionIcon("reset"));
607         searchButton.setIcon(SwingUtil.createActionIcon("find"));
608     }
609 
610     private void $initialize() {
611         if (allComponentsCreated) {
612             return;
613         }
614         if (log.isDebugEnabled()) {
615             log.debug(this);
616         }
617         handler.beforeInit(this);
618         $objectMap.put("$JPanel0", $JPanel0);
619         createModel();
620         createBroker();
621         createMenuPanel();
622         createApplyFilterUI();
623         createSelectionPanel();
624         // inline creation of $JPanel1
625         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
626         
627         $JPanel1.setName("$JPanel1");
628         $JPanel1.setLayout(new BorderLayout());
629         createParentTaxonGroupLabel();
630         createParentTaxonGroupCombo();
631         // inline creation of $JPanel2
632         $objectMap.put("$JPanel2", $JPanel2 = new JPanel());
633         
634         $JPanel2.setName("$JPanel2");
635         $JPanel2.setLayout(new BorderLayout());
636         createLabelLabel();
637         createLabelEditor();
638         // inline creation of $JPanel3
639         $objectMap.put("$JPanel3", $JPanel3 = new JPanel());
640         
641         $JPanel3.setName("$JPanel3");
642         $JPanel3.setLayout(new BorderLayout());
643         createNameLabel();
644         createNameEditor();
645         // inline creation of $JPanel4
646         $objectMap.put("$JPanel4", $JPanel4 = new JPanel());
647         
648         $JPanel4.setName("$JPanel4");
649         $JPanel4.setLayout(new BorderLayout());
650         createStatusLabel();
651         createStatusCombo();
652         createSelectionButtonsPanel();
653         createClearButton();
654         createSearchButton();
655         // inline creation of $JPanel0
656         setName("$JPanel0");
657         
658         // registers 4 data bindings
659         $registerDefaultBindings();
660         $completeSetup();
661         handler.afterInit(this);
662     }
663 
664     private void $registerDefaultBindings() {
665         // register 4 data bindings
666         registerDataBinding(new DefaultJAXXBinding(this, BINDING_PARENT_TAXON_GROUP_COMBO_SELECTED_ITEM, true) {
667         
668             @Override
669             public void applyDataBinding() {
670                 if (model != null) {
671                     model.addPropertyChangeListener("parentTaxonGroup", this);
672                 }
673             }
674         
675             @Override
676             public void processDataBinding() {
677                 if (model != null) {
678                     parentTaxonGroupCombo.setSelectedItem(model.getParentTaxonGroup());
679                 }
680             }
681         
682             @Override
683             public void removeDataBinding() {
684                 if (model != null) {
685                     model.removePropertyChangeListener("parentTaxonGroup", this);
686                 }
687             }
688         });
689         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LABEL_EDITOR_TEXT, true) {
690         
691             @Override
692             public void applyDataBinding() {
693                 if (model != null) {
694                     model.addPropertyChangeListener("label", this);
695                 }
696             }
697         
698             @Override
699             public void processDataBinding() {
700                 if (model != null) {
701                     SwingUtil.setText(labelEditor, model.getLabel());
702                 }
703             }
704         
705             @Override
706             public void removeDataBinding() {
707                 if (model != null) {
708                     model.removePropertyChangeListener("label", this);
709                 }
710             }
711         });
712         registerDataBinding(new DefaultJAXXBinding(this, BINDING_NAME_EDITOR_TEXT, true) {
713         
714             @Override
715             public void applyDataBinding() {
716                 if (model != null) {
717                     model.addPropertyChangeListener("name", this);
718                 }
719             }
720         
721             @Override
722             public void processDataBinding() {
723                 if (model != null) {
724                     SwingUtil.setText(nameEditor, model.getName());
725                 }
726             }
727         
728             @Override
729             public void removeDataBinding() {
730                 if (model != null) {
731                     model.removePropertyChangeListener("name", this);
732                 }
733             }
734         });
735         registerDataBinding(new DefaultJAXXBinding(this, BINDING_STATUS_COMBO_SELECTED_ITEM, true) {
736         
737             @Override
738             public void applyDataBinding() {
739                 if (model != null) {
740                     model.addPropertyChangeListener("status", this);
741                 }
742             }
743         
744             @Override
745             public void processDataBinding() {
746                 if (model != null) {
747                     statusCombo.setSelectedItem(model.getStatus());
748                 }
749             }
750         
751             @Override
752             public void removeDataBinding() {
753                 if (model != null) {
754                     model.removePropertyChangeListener("status", this);
755                 }
756             }
757         });
758     }
759 
760 }