View Javadoc
1   package fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.parameter.menu;
2   
3   /*-
4    * #%L
5    * Reef DB :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2022 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (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 Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  
27  import fr.ifremer.quadrige3.ui.core.dto.referential.StatusDTO;
28  import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
29  import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
30  import fr.ifremer.quadrige3.ui.swing.component.bean.ExtendedComboBox;
31  import fr.ifremer.reefdb.dto.referential.pmfm.ParameterDTO;
32  import fr.ifremer.reefdb.dto.referential.pmfm.ParameterGroupDTO;
33  import fr.ifremer.reefdb.ui.swing.ReefDbHelpBroker;
34  import fr.ifremer.reefdb.ui.swing.ReefDbUIContext;
35  import fr.ifremer.reefdb.ui.swing.util.ReefDbUI;
36  import java.awt.BorderLayout;
37  import java.awt.Component;
38  import java.awt.Container;
39  import java.awt.FlowLayout;
40  import java.awt.GridBagConstraints;
41  import java.awt.GridLayout;
42  import java.awt.Insets;
43  import java.awt.LayoutManager;
44  import java.util.ArrayList;
45  import java.util.HashMap;
46  import java.util.List;
47  import java.util.Map;
48  import java.util.TreeMap;
49  import javax.swing.BorderFactory;
50  import javax.swing.Box;
51  import javax.swing.BoxLayout;
52  import javax.swing.JButton;
53  import javax.swing.JLabel;
54  import javax.swing.JPanel;
55  import javax.swing.SwingConstants;
56  import jaxx.runtime.JAXXBinding;
57  import jaxx.runtime.JAXXContext;
58  import jaxx.runtime.JAXXObject;
59  import jaxx.runtime.JAXXObjectDescriptor;
60  import jaxx.runtime.JAXXUtil;
61  import jaxx.runtime.SwingUtil;
62  import jaxx.runtime.binding.DefaultJAXXBinding;
63  import jaxx.runtime.context.DefaultJAXXContext;
64  import jaxx.runtime.swing.Table;
65  import jaxx.runtime.swing.help.JAXXHelpUI;
66  import org.apache.commons.logging.Log;
67  import org.apache.commons.logging.LogFactory;
68  import static org.nuiton.i18n.I18n.t;
69  
70  public class ManageParametersMenuUI extends JPanel implements JAXXHelpUI<ReefDbHelpBroker>, ReefDbUI<ManageParametersMenuUIModel, ManageParametersMenuUIHandler>, JAXXObject {
71  
72      /*-----------------------------------------------------------------------*/
73      /*------------------ Constants for all public bindings ------------------*/
74      /*-----------------------------------------------------------------------*/
75  
76      public static final String BINDING_CODE_COMBO_ENABLED = "codeCombo.enabled";
77      public static final String BINDING_CODE_COMBO_SELECTED_ITEM = "codeCombo.selectedItem";
78      public static final String BINDING_LABEL_COMBO_ENABLED = "labelCombo.enabled";
79      public static final String BINDING_LABEL_COMBO_SELECTED_ITEM = "labelCombo.selectedItem";
80      public static final String BINDING_PARAMETER_GROUP_COMBO_SELECTED_ITEM = "parameterGroupCombo.selectedItem";
81      public static final String BINDING_STATUS_COMBO_SELECTED_ITEM = "statusCombo.selectedItem";
82  
83      /*-----------------------------------------------------------------------*/
84      /*------------------------- Other static fields -------------------------*/
85      /*-----------------------------------------------------------------------*/
86  
87      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAL1XW28bRRSeuLk5TkLJTWkbihtoSFS6oQ0gpJDSXAhN5ZQqDlJEHuh4d+xMGe9uZ2eJI6uIn8BPgHdekHjjhYoHJN544AXxDxBClcor4szsei/2xHZqQaRsszPn8p1vzn5n+s2faMDj6MpDXKsZ3LcFrRLj7vrBwYelh8QUW8QzOXWFw1Hw05dBmUOUs6J1T6BXDgvSfTl0X950qq5jEzvhvVpAI544YcQ7IkQI9FLaw/S85WK0vVpzfd6IGoHSRf3q6V+ZL60vvs4gVHMB3RSUku/kFVfSX0AZagk0AZk+w8sM2xWAwaldAbxjcm2TYc+7h6vkEfocDRXQoIs5BBNovvuSVQzlX3MFGn717n1sE/aGQA/K3KBlTqqEG5yQslUyfGp4x5DfMB1bQDijim1cIbBdJjIxxcxwq+WqATgAlQDPKrF9Y1eZ3W8seruw+NGO66q8gwINVB2LMIHIf51yV+aJ8w6WuPMp4QJda5N4D963SnfAb0NZx+5ZmUnRBYckz6MWugQcSqtsZDzuEQYtSx079JhNdULguI9LTB3mROTXOJEb8n1KPqZjACbUU8ClVgBqUVrNpo2hE0qOQGuJeh/52OK0QlaSXIf9YpQIto33a8C8RSzlvOHU0nEbAG9qAI4wiSMCMycf+aZdFVWuvJzebcRd0cTNeQIL30sHXmjeTkdeaIn8pibyZNRHH3DHd9MZXj/NLJ0pNpuODn3DF8KxvagxptKnnDMZwTwwguipswxWpeHNyH7UA3PzKN56O9zn6FKqr0C7jFi7YnHpO0QD3IdlaMTDVrnbg61A6GabhE4GVLv/zEz++v3v32031O0i5J7WmibEGVTH5Y4L3xyVqV8IpM0XlC3vYnf1EGUDxpRyz2mAFcNtAAf5XpTuhnQ37mDvCEIMDP325MeZB7+cQ5ltaDAHW9tY2u+grDjiwILDrJr73m2FaPR4GJ7n4bcfurFMGZyn/AIFvHMf/hkD++MtYjocQwwQqjJmHqxn5foe8eSwCE375aci0FBdadnjGlA3p6Euwl/K/vT3ZPHb2w36+qCcC6eaxxQOfIwGqc2oTdR4CJVfOw5yrkd8y4kVXqf5CFT/fPMXHmrcLfXcaGGrT0qnwy0pnev1DfVXQPOJYXKCBdmnghEr2FkUi/OhqIKIl2klUGghTeaXloAqmaWgOJB/3UMtaul2AJSBj1qJybY8pVw9krrH8nxIDY5pKoQQth8ABRtd6lhUO2U9p75DiZNYO4JUBZoJTt+oEBGNnsUlADHcSAvxI+mAbiG27DcY8gv1WAylezERd3Epv7aWt33GtFzFwn42mkYTKdvwZANYXdqEtv+fRF2ND/eMPCXGzdmIGqsn5knM1EwzU4GVLnVyXnWRu4msyZisoorTzNRgx8zPUfV0XTPj4uqvN1ffdAtLO+ug6Ubt2cm5pOkkFa+ZpPEzI+qKNJgcE59g12XUxFKv1pVqyUPblCM9eDVMqbiAZwSr9x15m4UB3JggitF8yGhgYgQT3lAXA4MFl7yccBy2T9195XC5jYOg2gqT94znrWyqXlSZ2pXWX6a2FVV2UQtUW9Os1vSUalK3oE7lyKHF8IkDxmj8XQsLnC8BSLhi3WqJ3Sefkx0jyuUf5OOJPsKFLjANy3vD/olL2sS53DOSK11F+LlNhKs9Y3itZwzXesZwvWcMN3rGsNJFV4xgRis23JPEQZtIb3WF5Y82Ed7pAks/NYP/Y/SE4lkHFP8CtHuj5OsRAAA=";
88      private static final Log log = LogFactory.getLog(ManageParametersMenuUI.class);
89      private static final long serialVersionUID = 1L;
90  
91      /*-----------------------------------------------------------------------*/
92      /*--------------------------- Internal states ---------------------------*/
93      /*-----------------------------------------------------------------------*/
94  
95      protected List<Object> $activeBindings = new ArrayList<Object>();
96      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
97      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
98      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
99      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
100     private boolean allComponentsCreated;
101     protected final JAXXContext delegateContext = new DefaultJAXXContext();
102 
103     /*-----------------------------------------------------------------------*/
104     /*------------------------ Protected components  ------------------------*/
105     /*-----------------------------------------------------------------------*/
106 
107     protected ReefDbHelpBroker broker;
108     protected JButton clearButton;
109     protected ExtendedComboBox<ParameterDTO> codeCombo;
110     protected JLabel codeLabel;
111     protected final ManageParametersMenuUIHandler handler = createHandler();
112     protected ExtendedComboBox<ParameterDTO> labelCombo;
113     protected JLabel labelLabel;
114     protected JPanel menuPanel;
115     protected ManageParametersMenuUIModel model;
116     protected ExtendedComboBox<ParameterGroupDTO> parameterGroupCombo;
117     protected JLabel parameterGroupLabel;
118     protected JButton searchButton;
119     protected JPanel selectionButtonsPanel;
120     protected Table selectionPanel;
121     protected ExtendedComboBox<StatusDTO> statusCombo;
122     protected JLabel statusLabel;
123 
124     /*-----------------------------------------------------------------------*/
125     /*------------------------- Private components  -------------------------*/
126     /*-----------------------------------------------------------------------*/
127 
128     private ManageParametersMenuUI $JPanel0 = this;
129     private JPanel $JPanel1;
130     private JPanel $JPanel2;
131     private JPanel $JPanel3;
132     private JPanel $JPanel4;
133 
134     /*-----------------------------------------------------------------------*/
135     /*---------------------------- Constructors  ----------------------------*/
136     /*-----------------------------------------------------------------------*/
137 
138     public ManageParametersMenuUI(ApplicationUI parentUI) {
139         ApplicationUIUtil.setParentUI(this, parentUI);
140             $initialize();
141     }
142 
143     public ManageParametersMenuUI(LayoutManager param0, boolean param1) {
144         super(param0 ,param1);
145         $initialize();
146     }
147 
148     public ManageParametersMenuUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
149         super(param1 ,param2);
150         JAXXUtil.initContext(this, parentContext);
151         $initialize();
152     }
153 
154     public ManageParametersMenuUI(boolean param0) {
155         super(param0);
156         $initialize();
157     }
158 
159     public ManageParametersMenuUI(JAXXContext parentContext, boolean param1) {
160         super(param1);
161         JAXXUtil.initContext(this, parentContext);
162         $initialize();
163     }
164 
165     public ManageParametersMenuUI() {
166         $initialize();
167     }
168 
169     public ManageParametersMenuUI(JAXXContext parentContext) {
170         JAXXUtil.initContext(this, parentContext);
171         $initialize();
172     }
173 
174     public ManageParametersMenuUI(LayoutManager param0) {
175         super(param0);
176         $initialize();
177     }
178 
179     public ManageParametersMenuUI(JAXXContext parentContext, LayoutManager param1) {
180         super(param1);
181         JAXXUtil.initContext(this, parentContext);
182         $initialize();
183     }
184 
185     /*-----------------------------------------------------------------------*/
186     /*--------------------------- Statics methods ---------------------------*/
187     /*-----------------------------------------------------------------------*/
188 
189     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
190         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
191     }
192 
193     /*-----------------------------------------------------------------------*/
194     /*---------------------- JAXXObject implementation ----------------------*/
195     /*-----------------------------------------------------------------------*/
196 
197     @Override
198     public void applyDataBinding(String $binding) {
199         if (allComponentsCreated && $bindings.containsKey($binding)) {
200             getDataBinding($binding).applyDataBinding();
201         }
202         processDataBinding($binding);
203     }
204 
205     @Override
206     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
207         super.firePropertyChange(propertyName, oldValue, newValue);
208     }
209 
210     @Override
211     public Map<String, Object> get$objectMap() {
212         return $objectMap;
213     }
214 
215     @Override
216     public JAXXBinding getDataBinding(String bindingId) {
217         return $bindings.get(bindingId);
218     }
219 
220     @Override
221     public JAXXBinding[] getDataBindings() {
222         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
223     }
224 
225     @Override
226     public Object getObjectById(String id) {
227         return $objectMap.get(id);
228     }
229 
230     @Override
231     public void processDataBinding(String $binding, boolean $force) {
232         if (!$force && $activeBindings.contains($binding)) { 
233             return;
234         }
235         $activeBindings.add($binding);
236         try {
237             if (allComponentsCreated && $bindings.containsKey($binding)) {
238                 getDataBinding($binding).processDataBinding();
239             }
240         } finally {
241             $activeBindings.remove($binding);
242         }
243     }
244 
245     @Override
246     public void processDataBinding(String $binding) {
247         processDataBinding($binding, false);
248     }
249 
250     @Override
251     public void registerDataBinding(JAXXBinding binding) {
252         $bindings.put(binding.getId(), binding);
253     }
254 
255     @Override
256     public void removeDataBinding(String $binding) {
257         if (allComponentsCreated && $bindings.containsKey($binding)) {
258             getDataBinding($binding).removeDataBinding();
259         }
260     }
261 
262     /*-----------------------------------------------------------------------*/
263     /*--------------------- JAXXContext implementation  ---------------------*/
264     /*-----------------------------------------------------------------------*/
265 
266     @Override
267     public <T> T getContextValue(Class<T> clazz) {
268         return delegateContext.getContextValue(clazz, null);
269     }
270 
271     @Override
272     public <T> T getContextValue(Class<T> clazz, String name) {
273         return delegateContext.getContextValue(clazz, name);
274     }
275 
276     @Override
277     public JAXXContext getDelegateContext() {
278         return delegateContext;
279     }
280 
281     @Override
282     public <O extends Container> O getParentContainer(Class<O> clazz) {
283         return SwingUtil.getParentContainer(this, clazz);
284     }
285 
286     @Override
287     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
288         return SwingUtil.getParentContainer(source, clazz);
289     }
290 
291     @Override
292     public <T> void removeContextValue(Class<T> clazz) {
293         delegateContext.removeContextValue(clazz, null);
294     }
295 
296     @Override
297     public <T> void removeContextValue(Class<T> clazz, String name) {
298         delegateContext.removeContextValue(clazz, name);
299     }
300 
301     @Override
302     public <T> void setContextValue(T o) {
303         delegateContext.setContextValue(o, null);
304     }
305 
306     @Override
307     public <T> void setContextValue(T o, String name) {
308         delegateContext.setContextValue(o, name);
309     }
310 
311     /*-----------------------------------------------------------------------*/
312     /*----------------------- Public acessor methods  -----------------------*/
313     /*-----------------------------------------------------------------------*/
314 
315     public ReefDbHelpBroker getBroker() {
316         return broker;
317     }
318 
319     public JButton getClearButton() {
320         return clearButton;
321     }
322 
323     public ExtendedComboBox<ParameterDTO> getCodeCombo() {
324         return codeCombo;
325     }
326 
327     public JLabel getCodeLabel() {
328         return codeLabel;
329     }
330 
331     public ManageParametersMenuUIHandler getHandler() {
332         return handler;
333     }
334 
335     public ExtendedComboBox<ParameterDTO> getLabelCombo() {
336         return labelCombo;
337     }
338 
339     public JLabel getLabelLabel() {
340         return labelLabel;
341     }
342 
343     public JPanel getMenuPanel() {
344         return menuPanel;
345     }
346 
347     public ManageParametersMenuUIModel getModel() {
348         return model;
349     }
350 
351     public ExtendedComboBox<ParameterGroupDTO> getParameterGroupCombo() {
352         return parameterGroupCombo;
353     }
354 
355     public JLabel getParameterGroupLabel() {
356         return parameterGroupLabel;
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(ReefDbHelpBroker 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(selectionPanel);
422         menuPanel.add(selectionButtonsPanel);
423     }
424 
425     protected void addChildrenToSelectionButtonsPanel() {
426         if (!allComponentsCreated) {
427             return;
428         }
429         selectionButtonsPanel.add(clearButton);
430         selectionButtonsPanel.add(searchButton);
431     }
432 
433     protected void addChildrenToSelectionPanel() {
434         if (!allComponentsCreated) {
435             return;
436         }
437         selectionPanel.add($JPanel1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
438         selectionPanel.add($JPanel2, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
439         selectionPanel.add($JPanel3, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
440         selectionPanel.add($JPanel4, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
441     }
442 
443     protected void createBroker() {
444         $objectMap.put("broker", broker = new ReefDbHelpBroker("reefdb.home.help"));
445     }
446 
447     protected void createClearButton() {
448         $objectMap.put("clearButton", clearButton = new JButton());
449         
450         clearButton.setName("clearButton");
451         clearButton.setText(t("reefdb.action.search.clear.label"));
452         clearButton.setToolTipText(t("reefdb.action.search.clear.tip"));
453         clearButton.putClientProperty("applicationAction", ClearAction.class);
454     }
455 
456     protected void createCodeCombo() {
457         $objectMap.put("codeCombo", codeCombo = new ExtendedComboBox<ParameterDTO>(this));
458         
459         codeCombo.setName("codeCombo");
460         codeCombo.setFilterable(true);
461         codeCombo.setShowDecorator(false);
462         codeCombo.setProperty("parameter");
463         codeCombo.setShowReset(true);
464     }
465 
466     protected void createCodeLabel() {
467         $objectMap.put("codeLabel", codeLabel = new JLabel());
468         
469         codeLabel.setName("codeLabel");
470         codeLabel.setText(t("reefdb.property.code"));
471     }
472 
473     protected ManageParametersMenuUIHandler createHandler() {
474         return new ManageParametersMenuUIHandler();
475     }
476 
477     protected void createLabelCombo() {
478         $objectMap.put("labelCombo", labelCombo = new ExtendedComboBox<ParameterDTO>(this));
479         
480         labelCombo.setName("labelCombo");
481         labelCombo.setFilterable(true);
482         labelCombo.setShowDecorator(false);
483         labelCombo.setProperty("parameter");
484         labelCombo.setShowReset(true);
485     }
486 
487     protected void createLabelLabel() {
488         $objectMap.put("labelLabel", labelLabel = new JLabel());
489         
490         labelLabel.setName("labelLabel");
491         labelLabel.setText(t("reefdb.property.name"));
492     }
493 
494     protected void createMenuPanel() {
495         $objectMap.put("menuPanel", menuPanel = new JPanel());
496         
497         menuPanel.setName("menuPanel");
498         menuPanel.setLayout(new BoxLayout(menuPanel, BoxLayout.PAGE_AXIS));
499     }
500 
501     protected void createModel() {
502         $objectMap.put("model", model = getContextValue(ManageParametersMenuUIModel.class));
503     }
504 
505     protected void createParameterGroupCombo() {
506         $objectMap.put("parameterGroupCombo", parameterGroupCombo = new ExtendedComboBox<ParameterGroupDTO>(this));
507         
508         parameterGroupCombo.setName("parameterGroupCombo");
509         parameterGroupCombo.setFilterable(true);
510         parameterGroupCombo.setShowDecorator(false);
511         parameterGroupCombo.setProperty("parameterGroup");
512         parameterGroupCombo.setShowReset(true);
513     }
514 
515     protected void createParameterGroupLabel() {
516         $objectMap.put("parameterGroupLabel", parameterGroupLabel = new JLabel());
517         
518         parameterGroupLabel.setName("parameterGroupLabel");
519         parameterGroupLabel.setText(t("reefdb.property.pmfm.parameter.parameterGroup"));
520     }
521 
522     protected void createSearchButton() {
523         $objectMap.put("searchButton", searchButton = new JButton());
524         
525         searchButton.setName("searchButton");
526         searchButton.setText(t("reefdb.action.search.label"));
527         searchButton.setToolTipText(t("reefdb.action.search.tip"));
528         searchButton.putClientProperty("applicationAction", SearchAction.class);
529     }
530 
531     protected void createSelectionButtonsPanel() {
532         $objectMap.put("selectionButtonsPanel", selectionButtonsPanel = new JPanel());
533         
534         selectionButtonsPanel.setName("selectionButtonsPanel");
535         selectionButtonsPanel.setLayout(new GridLayout(1,0));
536     }
537 
538     protected void createSelectionPanel() {
539         $objectMap.put("selectionPanel", selectionPanel = new Table());
540         
541         selectionPanel.setName("selectionPanel");
542     }
543 
544     protected void createStatusCombo() {
545         $objectMap.put("statusCombo", statusCombo = new ExtendedComboBox<StatusDTO>(this));
546         
547         statusCombo.setName("statusCombo");
548         statusCombo.setFilterable(true);
549         statusCombo.setShowDecorator(false);
550         statusCombo.setProperty("status");
551         statusCombo.setShowReset(true);
552     }
553 
554     protected void createStatusLabel() {
555         $objectMap.put("statusLabel", statusLabel = new JLabel());
556         
557         statusLabel.setName("statusLabel");
558         statusLabel.setText(t("reefdb.property.status"));
559     }
560 
561     /*-----------------------------------------------------------------------*/
562     /*------------------------ Internal jaxx methods ------------------------*/
563     /*-----------------------------------------------------------------------*/
564 
565     private void $completeSetup() {
566         allComponentsCreated = true;
567         if (log.isDebugEnabled()) {
568             log.debug(this);
569         }
570         // inline complete setup of $JPanel0
571         add(menuPanel);
572         addChildrenToMenuPanel();
573         addChildrenToSelectionPanel();
574         // inline complete setup of $JPanel1
575         $JPanel1.add(codeLabel, BorderLayout.PAGE_START);
576         $JPanel1.add(codeCombo, BorderLayout.CENTER);
577         // inline complete setup of $JPanel2
578         $JPanel2.add(labelLabel, BorderLayout.PAGE_START);
579         $JPanel2.add(labelCombo, BorderLayout.CENTER);
580         // inline complete setup of $JPanel3
581         $JPanel3.add(statusLabel, BorderLayout.PAGE_START);
582         $JPanel3.add(statusCombo, BorderLayout.CENTER);
583         // inline complete setup of $JPanel4
584         $JPanel4.add(parameterGroupLabel, BorderLayout.PAGE_START);
585         $JPanel4.add(parameterGroupCombo, BorderLayout.CENTER);
586         addChildrenToSelectionButtonsPanel();
587         
588         // apply 6 data bindings
589         JAXXUtil.applyDataBinding(this, $bindings.keySet());
590         
591         // apply 23 property setters
592         codeCombo.setBeanType(ParameterDTO.class);
593         labelCombo.setBeanType(ParameterDTO.class);
594         statusCombo.setBeanType(StatusDTO.class);
595         parameterGroupCombo.setBeanType(ParameterGroupDTO.class);
596         clearButton.setAlignmentX(Component.CENTER_ALIGNMENT);
597         searchButton.setAlignmentX(Component.CENTER_ALIGNMENT);
598         selectionPanel.setBorder(BorderFactory.createTitledBorder(t("reefdb.config.menu.title")));
599         codeLabel.setLabelFor(codeCombo);
600         codeCombo.setBean(model);
601         labelLabel.setLabelFor(labelCombo);
602         labelCombo.setBean(model);
603         statusLabel.setLabelFor(statusCombo);
604         statusCombo.setBean(model);
605         parameterGroupLabel.setLabelFor(parameterGroupCombo);
606         parameterGroupCombo.setBean(model);
607         clearButton.setIcon(SwingUtil.createActionIcon("reset"));
608         searchButton.setIcon(SwingUtil.createActionIcon("find"));
609     }
610 
611     private void $initialize() {
612         if (allComponentsCreated) {
613             return;
614         }
615         if (log.isDebugEnabled()) {
616             log.debug(this);
617         }
618         handler.beforeInit(this);
619         $objectMap.put("$JPanel0", $JPanel0);
620         createModel();
621         createBroker();
622         createMenuPanel();
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         createCodeLabel();
630         createCodeCombo();
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         createLabelCombo();
638         // inline creation of $JPanel3
639         $objectMap.put("$JPanel3", $JPanel3 = new JPanel());
640         
641         $JPanel3.setName("$JPanel3");
642         $JPanel3.setLayout(new BorderLayout());
643         createStatusLabel();
644         createStatusCombo();
645         // inline creation of $JPanel4
646         $objectMap.put("$JPanel4", $JPanel4 = new JPanel());
647         
648         $JPanel4.setName("$JPanel4");
649         $JPanel4.setLayout(new BorderLayout());
650         createParameterGroupLabel();
651         createParameterGroupCombo();
652         createSelectionButtonsPanel();
653         createClearButton();
654         createSearchButton();
655         // inline creation of $JPanel0
656         setName("$JPanel0");
657         
658         // registers 6 data bindings
659         $registerDefaultBindings();
660         $completeSetup();
661         handler.afterInit(this);
662     }
663 
664     private void $registerDefaultBindings() {
665         // register 6 data bindings
666         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CODE_COMBO_SELECTED_ITEM, true) {
667         
668             @Override
669             public void applyDataBinding() {
670                 if (model != null) {
671                     model.addPropertyChangeListener("parameter", this);
672                 }
673             }
674         
675             @Override
676             public void processDataBinding() {
677                 if (model != null) {
678                     codeCombo.setSelectedItem(model.getParameter());
679                 }
680             }
681         
682             @Override
683             public void removeDataBinding() {
684                 if (model != null) {
685                     model.removePropertyChangeListener("parameter", this);
686                 }
687             }
688         });
689         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CODE_COMBO_ENABLED, true) {
690         
691             @Override
692             public void applyDataBinding() {
693                 if (labelCombo != null) {
694                     labelCombo.addPropertyChangeListener("selectedItem", this);
695                 }
696             }
697         
698             @Override
699             public void processDataBinding() {
700                 if (labelCombo != null) {
701                     codeCombo.setEnabled(labelCombo.getSelectedItem() == null);
702                 }
703             }
704         
705             @Override
706             public void removeDataBinding() {
707                 if (labelCombo != null) {
708                     labelCombo.removePropertyChangeListener("selectedItem", this);
709                 }
710             }
711         });
712         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LABEL_COMBO_SELECTED_ITEM, true) {
713         
714             @Override
715             public void applyDataBinding() {
716                 if (model != null) {
717                     model.addPropertyChangeListener("parameter", this);
718                 }
719             }
720         
721             @Override
722             public void processDataBinding() {
723                 if (model != null) {
724                     labelCombo.setSelectedItem(model.getParameter());
725                 }
726             }
727         
728             @Override
729             public void removeDataBinding() {
730                 if (model != null) {
731                     model.removePropertyChangeListener("parameter", this);
732                 }
733             }
734         });
735         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LABEL_COMBO_ENABLED, true) {
736         
737             @Override
738             public void applyDataBinding() {
739                 if (codeCombo != null) {
740                     codeCombo.addPropertyChangeListener("selectedItem", this);
741                 }
742             }
743         
744             @Override
745             public void processDataBinding() {
746                 if (codeCombo != null) {
747                     labelCombo.setEnabled(codeCombo.getSelectedItem() == null);
748                 }
749             }
750         
751             @Override
752             public void removeDataBinding() {
753                 if (codeCombo != null) {
754                     codeCombo.removePropertyChangeListener("selectedItem", this);
755                 }
756             }
757         });
758         registerDataBinding(new DefaultJAXXBinding(this, BINDING_STATUS_COMBO_SELECTED_ITEM, true) {
759         
760             @Override
761             public void applyDataBinding() {
762                 if (model != null) {
763                     model.addPropertyChangeListener("status", this);
764                 }
765             }
766         
767             @Override
768             public void processDataBinding() {
769                 if (model != null) {
770                     statusCombo.setSelectedItem(model.getStatus());
771                 }
772             }
773         
774             @Override
775             public void removeDataBinding() {
776                 if (model != null) {
777                     model.removePropertyChangeListener("status", this);
778                 }
779             }
780         });
781         registerDataBinding(new DefaultJAXXBinding(this, BINDING_PARAMETER_GROUP_COMBO_SELECTED_ITEM, true) {
782         
783             @Override
784             public void applyDataBinding() {
785                 if (model != null) {
786                     model.addPropertyChangeListener("parameterGroup", this);
787                 }
788             }
789         
790             @Override
791             public void processDataBinding() {
792                 if (model != null) {
793                     parameterGroupCombo.setSelectedItem(model.getParameterGroup());
794                 }
795             }
796         
797             @Override
798             public void removeDataBinding() {
799                 if (model != null) {
800                     model.removePropertyChangeListener("parameterGroup", this);
801                 }
802             }
803         });
804     }
805 
806 }