View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.program.programs.departments;
2   
3   import fr.ifremer.dali.dto.referential.DepartmentDTO;
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.department.element.FilterElementDepartmentUI;
7   import fr.ifremer.dali.ui.swing.util.DaliUI;
8   import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
9   import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
10  import java.awt.BorderLayout;
11  import java.awt.Container;
12  import java.awt.Dialog;
13  import java.awt.Dialog.ModalityType;
14  import java.awt.Frame;
15  import java.awt.GraphicsConfiguration;
16  import java.awt.GridLayout;
17  import java.awt.Window;
18  import java.awt.event.ActionEvent;
19  import java.awt.event.ActionListener;
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.JButton;
27  import javax.swing.JDialog;
28  import javax.swing.JList;
29  import javax.swing.JPanel;
30  import javax.swing.SwingConstants;
31  import jaxx.runtime.JAXXBinding;
32  import jaxx.runtime.JAXXContext;
33  import jaxx.runtime.JAXXObject;
34  import jaxx.runtime.JAXXObjectDescriptor;
35  import jaxx.runtime.JAXXUtil;
36  import jaxx.runtime.SwingUtil;
37  import jaxx.runtime.binding.DefaultJAXXBinding;
38  import jaxx.runtime.context.DefaultJAXXContext;
39  import jaxx.runtime.swing.CardLayout2Ext;
40  import org.apache.commons.logging.Log;
41  import org.apache.commons.logging.LogFactory;
42  import static org.nuiton.i18n.I18n.t;
43  
44  public class DepartmentsDialogUI extends JDialog implements DaliUI<DepartmentsDialogUIModel, DepartmentsDialogUIHandler>, JAXXObject {
45  
46      /*-----------------------------------------------------------------------*/
47      /*------------------ Constants for all public bindings ------------------*/
48      /*-----------------------------------------------------------------------*/
49  
50      public static final String BINDING_VALIDATE_BUTTON_ENABLED = "validateButton.enabled";
51  
52      /*-----------------------------------------------------------------------*/
53      /*------------------------- Other static fields -------------------------*/
54      /*-----------------------------------------------------------------------*/
55  
56      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAALVVTW8URxCtXbw2awNOMFgQg7AhkUBIvcAFkKME4g9htAaEQbJYRUrvTHvdqKd76O6BIVGi/IT8hHDPJVJuOUU5cObABfEXUJRDrhHVM7Mz+zGLV7Kw5F5vV9WretX1yr+9g5rRsPSYxjHRkbQ8YOT2ze3tu+3HzLOrzHiah1ZpSH8qVai2YMbP742Fc62mC29k4Y0VFYRKMtkTvdyEaWOfC2Z2GbMWTvdHeMY0tnLzchxGuouaF1WG+uu//1R/8X9+UQWIQ6xuBqks7hVVMJloQpX7Fo5ipqe0IajsYBmayw7We9jdrQhqzB0asCfwE0w1YTKkGsEsnB2fcoKRxMehhU99hhg2QF+zyqlQHQvbO5rwHc0CpolPBScRJ+YZlkE8JS16koBK2mEk1KqjadD9NKQHjKwOAj/cCMMk8aSFWqB8Jix8+7FSbTr8It+s4Mbeo5KJJn2uIuxY/4ilOVeo9lP7lbXYFtEHP7+dxF7Ct3HPEGf+6a1zque+9TyTuzjmjqO58eQOF5bpNcGC5HG6ZT/csNAatxUpRk8DCEvxyPoodJf++BCdy3mFhW22p69NZIIT0sfY3TnXz4bQrpTwPeRR6THxDTYcOcBcH1R66zzP5AFHniJzn1pWGM9lHhoW+p4MRUoKkRYqqrSgpiO8tnCiNazr+2hKFX1iQNEOMLH+Pz/3+s+3f6z3yvh4qWvPFkJ54WyGTFvuUs+mGo4sF41NGi63oG7wmbx0RZ0qKWwrM2NxmC/pOnHh5BY1uwhRm3rz19/z3706ANV1mBaK+uvU+W9A3e5q7IISfhx+fSOp6NCzg3h+gr8HcCTRyr+nbYFtmrA6wo+a5dZ9TSdtQFxEM09pn+keXZEswAmXigwnxi6eKuliTqVdf/nf3NbvN7qdrCCzkyPdi27WHsEkl4JLlqzEbNuVrsCZ0LDIV8VWK9tzULbowkzgF5OzMdS5CZxffvma3JQsUJJ7FhaSbnkqwO8kHW0S5NZpfA6u5IaTK0ymZtcoFjsV9YUKZbCXM1Yp8YCHD0Z4xJEr7GrSN/fXdRhQ1F4MakMMTvcm6WptJAfqeSy0OYdjZcGDNEY4TTHpBhD/uy39kOx+0mH2Xjpv5y8QbtZ8bp3H+Qs/lvEeWAx7Ma9g9SLb9Ee+xDi62ObSx73z1RB6xZ3TeyK660fuaJUjzO0bYX4cVu1EmR9AWdh3HftHWByDyQT30gU/AuPsWFVEH0D4AhHeA/DdULpRCgAA";
57      private static final Log log = LogFactory.getLog(DepartmentsDialogUI.class);
58      private static final long serialVersionUID = 1L;
59  
60      /*-----------------------------------------------------------------------*/
61      /*--------------------------- Internal states ---------------------------*/
62      /*-----------------------------------------------------------------------*/
63  
64      protected List<Object> $activeBindings = new ArrayList<Object>();
65      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
66      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
67      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
68      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
69      private boolean allComponentsCreated;
70      protected final JAXXContext delegateContext = new DefaultJAXXContext();
71  
72      /*-----------------------------------------------------------------------*/
73      /*------------------------ Protected components  ------------------------*/
74      /*-----------------------------------------------------------------------*/
75  
76      protected JButton cancelButton;
77      protected DepartmentsDialogUI departmentsDialog = this;
78      protected JList<DepartmentDTO> departmentsList;
79      protected FilterElementDepartmentUI filterElementDepartmentUI;
80      protected final DepartmentsDialogUIHandler handler = createHandler();
81      protected JPanel listPanel;
82      protected CardLayout2Ext listPanelLayout;
83      protected DepartmentsDialogUIModel model;
84      protected JButton validateButton;
85  
86      /*-----------------------------------------------------------------------*/
87      /*------------------------- Private components  -------------------------*/
88      /*-----------------------------------------------------------------------*/
89  
90      private JPanel $JPanel0;
91      private JPanel $JPanel1;
92      private JPanel $JPanel2;
93  
94      /*-----------------------------------------------------------------------*/
95      /*---------------------------- Constructors  ----------------------------*/
96      /*-----------------------------------------------------------------------*/
97  
98      public DepartmentsDialogUI(DaliUIContext context) {
99          super(context.getMainUI());
100         			ApplicationUIUtil.setApplicationContext(this, context);
101             $initialize();
102     }
103 
104     public DepartmentsDialogUI(Window param0) {
105         super(param0);
106         $initialize();
107     }
108 
109     public DepartmentsDialogUI(JAXXContext parentContext, Window param1) {
110         super(param1);
111         JAXXUtil.initContext(this, parentContext);
112         $initialize();
113     }
114 
115     public DepartmentsDialogUI(Dialog param0, String param1, boolean param2, GraphicsConfiguration param3) {
116         super(param0 ,param1 ,param2 ,param3);
117         $initialize();
118     }
119 
120     public DepartmentsDialogUI(JAXXContext parentContext, Dialog param1, String param2, boolean param3, GraphicsConfiguration param4) {
121         super(param1 ,param2 ,param3 ,param4);
122         JAXXUtil.initContext(this, parentContext);
123         $initialize();
124     }
125 
126     public DepartmentsDialogUI(Dialog param0, String param1, boolean param2) {
127         super(param0 ,param1 ,param2);
128         $initialize();
129     }
130 
131     public DepartmentsDialogUI(JAXXContext parentContext, Dialog param1, String param2, boolean param3) {
132         super(param1 ,param2 ,param3);
133         JAXXUtil.initContext(this, parentContext);
134         $initialize();
135     }
136 
137     public DepartmentsDialogUI(Dialog param0, String param1) {
138         super(param0 ,param1);
139         $initialize();
140     }
141 
142     public DepartmentsDialogUI(JAXXContext parentContext, Dialog param1, String param2) {
143         super(param1 ,param2);
144         JAXXUtil.initContext(this, parentContext);
145         $initialize();
146     }
147 
148     public DepartmentsDialogUI(Window param0, String param1, ModalityType param2, GraphicsConfiguration param3) {
149         super(param0 ,param1 ,param2 ,param3);
150         $initialize();
151     }
152 
153     public DepartmentsDialogUI(JAXXContext parentContext, Window param1, String param2, ModalityType param3, GraphicsConfiguration param4) {
154         super(param1 ,param2 ,param3 ,param4);
155         JAXXUtil.initContext(this, parentContext);
156         $initialize();
157     }
158 
159     public DepartmentsDialogUI(Window param0, String param1, ModalityType param2) {
160         super(param0 ,param1 ,param2);
161         $initialize();
162     }
163 
164     public DepartmentsDialogUI(JAXXContext parentContext, Window param1, String param2, ModalityType param3) {
165         super(param1 ,param2 ,param3);
166         JAXXUtil.initContext(this, parentContext);
167         $initialize();
168     }
169 
170     public DepartmentsDialogUI(Window param0, String param1) {
171         super(param0 ,param1);
172         $initialize();
173     }
174 
175     public DepartmentsDialogUI(JAXXContext parentContext, Window param1, String param2) {
176         super(param1 ,param2);
177         JAXXUtil.initContext(this, parentContext);
178         $initialize();
179     }
180 
181     public DepartmentsDialogUI(Window param0, ModalityType param1) {
182         super(param0 ,param1);
183         $initialize();
184     }
185 
186     public DepartmentsDialogUI(JAXXContext parentContext, Window param1, ModalityType param2) {
187         super(param1 ,param2);
188         JAXXUtil.initContext(this, parentContext);
189         $initialize();
190     }
191 
192     public DepartmentsDialogUI(Frame param0, String param1) {
193         super(param0 ,param1);
194         $initialize();
195     }
196 
197     public DepartmentsDialogUI(JAXXContext parentContext, Frame param1, String param2) {
198         super(param1 ,param2);
199         JAXXUtil.initContext(this, parentContext);
200         $initialize();
201     }
202 
203     public DepartmentsDialogUI(Frame param0, boolean param1) {
204         super(param0 ,param1);
205         $initialize();
206     }
207 
208     public DepartmentsDialogUI(JAXXContext parentContext, Frame param1, boolean param2) {
209         super(param1 ,param2);
210         JAXXUtil.initContext(this, parentContext);
211         $initialize();
212     }
213 
214     public DepartmentsDialogUI(Frame param0) {
215         super(param0);
216         $initialize();
217     }
218 
219     public DepartmentsDialogUI(JAXXContext parentContext, Frame param1) {
220         super(param1);
221         JAXXUtil.initContext(this, parentContext);
222         $initialize();
223     }
224 
225     public DepartmentsDialogUI() {
226         $initialize();
227     }
228 
229     public DepartmentsDialogUI(JAXXContext parentContext) {
230         JAXXUtil.initContext(this, parentContext);
231         $initialize();
232     }
233 
234     public DepartmentsDialogUI(Dialog param0, boolean param1) {
235         super(param0 ,param1);
236         $initialize();
237     }
238 
239     public DepartmentsDialogUI(JAXXContext parentContext, Dialog param1, boolean param2) {
240         super(param1 ,param2);
241         JAXXUtil.initContext(this, parentContext);
242         $initialize();
243     }
244 
245     public DepartmentsDialogUI(Dialog param0) {
246         super(param0);
247         $initialize();
248     }
249 
250     public DepartmentsDialogUI(JAXXContext parentContext, Dialog param1) {
251         super(param1);
252         JAXXUtil.initContext(this, parentContext);
253         $initialize();
254     }
255 
256     public DepartmentsDialogUI(Frame param0, String param1, boolean param2, GraphicsConfiguration param3) {
257         super(param0 ,param1 ,param2 ,param3);
258         $initialize();
259     }
260 
261     public DepartmentsDialogUI(JAXXContext parentContext, Frame param1, String param2, boolean param3, GraphicsConfiguration param4) {
262         super(param1 ,param2 ,param3 ,param4);
263         JAXXUtil.initContext(this, parentContext);
264         $initialize();
265     }
266 
267     public DepartmentsDialogUI(Frame param0, String param1, boolean param2) {
268         super(param0 ,param1 ,param2);
269         $initialize();
270     }
271 
272     public DepartmentsDialogUI(JAXXContext parentContext, Frame param1, String param2, boolean param3) {
273         super(param1 ,param2 ,param3);
274         JAXXUtil.initContext(this, parentContext);
275         $initialize();
276     }
277 
278     /*-----------------------------------------------------------------------*/
279     /*--------------------------- Statics methods ---------------------------*/
280     /*-----------------------------------------------------------------------*/
281 
282     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
283         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
284     }
285 
286     /*-----------------------------------------------------------------------*/
287     /*---------------------- JAXXObject implementation ----------------------*/
288     /*-----------------------------------------------------------------------*/
289 
290     @Override
291     public void applyDataBinding(String $binding) {
292         if (allComponentsCreated && $bindings.containsKey($binding)) {
293             getDataBinding($binding).applyDataBinding();
294         }
295         processDataBinding($binding);
296     }
297 
298     @Override
299     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
300         super.firePropertyChange(propertyName, oldValue, newValue);
301     }
302 
303     @Override
304     public Map<String, Object> get$objectMap() {
305         return $objectMap;
306     }
307 
308     @Override
309     public JAXXBinding getDataBinding(String bindingId) {
310         return $bindings.get(bindingId);
311     }
312 
313     @Override
314     public JAXXBinding[] getDataBindings() {
315         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
316     }
317 
318     @Override
319     public Object getObjectById(String id) {
320         return $objectMap.get(id);
321     }
322 
323     @Override
324     public void processDataBinding(String $binding, boolean $force) {
325         if (!$force && $activeBindings.contains($binding)) { 
326             return;
327         }
328         $activeBindings.add($binding);
329         try {
330             if (allComponentsCreated && $bindings.containsKey($binding)) {
331                 getDataBinding($binding).processDataBinding();
332             }
333         } finally {
334             $activeBindings.remove($binding);
335         }
336     }
337 
338     @Override
339     public void processDataBinding(String $binding) {
340         processDataBinding($binding, false);
341     }
342 
343     @Override
344     public void registerDataBinding(JAXXBinding binding) {
345         $bindings.put(binding.getId(), binding);
346     }
347 
348     @Override
349     public void removeDataBinding(String $binding) {
350         if (allComponentsCreated && $bindings.containsKey($binding)) {
351             getDataBinding($binding).removeDataBinding();
352         }
353     }
354 
355     /*-----------------------------------------------------------------------*/
356     /*--------------------- JAXXContext implementation  ---------------------*/
357     /*-----------------------------------------------------------------------*/
358 
359     @Override
360     public <T> T getContextValue(Class<T> clazz) {
361         return delegateContext.getContextValue(clazz, null);
362     }
363 
364     @Override
365     public <T> T getContextValue(Class<T> clazz, String name) {
366         return delegateContext.getContextValue(clazz, name);
367     }
368 
369     @Override
370     public JAXXContext getDelegateContext() {
371         return delegateContext;
372     }
373 
374     @Override
375     public <O extends Container> O getParentContainer(Class<O> clazz) {
376         return SwingUtil.getParentContainer(this, clazz);
377     }
378 
379     @Override
380     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
381         return SwingUtil.getParentContainer(source, clazz);
382     }
383 
384     @Override
385     public <T> void removeContextValue(Class<T> clazz) {
386         delegateContext.removeContextValue(clazz, null);
387     }
388 
389     @Override
390     public <T> void removeContextValue(Class<T> clazz, String name) {
391         delegateContext.removeContextValue(clazz, name);
392     }
393 
394     @Override
395     public <T> void setContextValue(T o) {
396         delegateContext.setContextValue(o, null);
397     }
398 
399     @Override
400     public <T> void setContextValue(T o, String name) {
401         delegateContext.setContextValue(o, name);
402     }
403 
404     /*-----------------------------------------------------------------------*/
405     /*---------------------------- Event methods ----------------------------*/
406     /*-----------------------------------------------------------------------*/
407 
408     public void doActionPerformed__on__cancelButton(ActionEvent event) {
409         if (log.isDebugEnabled()) {
410             log.debug(event);
411         }
412         handler.cancel();
413     }
414 
415     public void doActionPerformed__on__validateButton(ActionEvent event) {
416         if (log.isDebugEnabled()) {
417             log.debug(event);
418         }
419         handler.valid();
420     }
421 
422     /*-----------------------------------------------------------------------*/
423     /*----------------------- Public acessor methods  -----------------------*/
424     /*-----------------------------------------------------------------------*/
425 
426     public JButton getCancelButton() {
427         return cancelButton;
428     }
429 
430     public JList<DepartmentDTO> getDepartmentsList() {
431         return departmentsList;
432     }
433 
434     public FilterElementDepartmentUI getFilterElementDepartmentUI() {
435         return filterElementDepartmentUI;
436     }
437 
438     public DepartmentsDialogUIHandler getHandler() {
439         return handler;
440     }
441 
442     public JPanel getListPanel() {
443         return listPanel;
444     }
445 
446     public CardLayout2Ext getListPanelLayout() {
447         return listPanelLayout;
448     }
449 
450     public DepartmentsDialogUIModel getModel() {
451         return model;
452     }
453 
454     public JButton getValidateButton() {
455         return validateButton;
456     }
457 
458     /*-----------------------------------------------------------------------*/
459     /*--------------------- Protected acessors methods  ---------------------*/
460     /*-----------------------------------------------------------------------*/
461 
462     protected JPanel get$JPanel0() {
463         return $JPanel0;
464     }
465 
466     protected JPanel get$JPanel1() {
467         return $JPanel1;
468     }
469 
470     protected JPanel get$JPanel2() {
471         return $JPanel2;
472     }
473 
474     /*-----------------------------------------------------------------------*/
475     /*--------------------- Components creation methods ---------------------*/
476     /*-----------------------------------------------------------------------*/
477 
478     protected void addChildrenToDepartmentsDialog() {
479         if (!allComponentsCreated) {
480             return;
481         }
482         add($JPanel0);
483     }
484 
485     protected void addChildrenToListPanel() {
486         if (!allComponentsCreated) {
487             return;
488         }
489         listPanel.add(filterElementDepartmentUI, DepartmentsDialogUIHandler.DOUBLE_LIST);
490         listPanel.add($JPanel1, DepartmentsDialogUIHandler.LIST);
491     }
492 
493     protected void createCancelButton() {
494         $objectMap.put("cancelButton", cancelButton = new JButton());
495         
496         cancelButton.setName("cancelButton");
497         cancelButton.setText(t("dali.common.close"));
498         cancelButton.setToolTipText(t("dali.common.close"));
499         cancelButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__cancelButton"));
500     }
501 
502     protected void createDepartmentsList() {
503         $objectMap.put("departmentsList", departmentsList = new JList<DepartmentDTO>());
504         
505         departmentsList.setName("departmentsList");
506     }
507 
508     protected void createFilterElementDepartmentUI() {
509         $objectMap.put("filterElementDepartmentUI", filterElementDepartmentUI = new FilterElementDepartmentUI(this));
510         
511         filterElementDepartmentUI.setName("filterElementDepartmentUI");
512     }
513 
514     protected DepartmentsDialogUIHandler createHandler() {
515         return new DepartmentsDialogUIHandler();
516     }
517 
518     protected void createListPanel() {
519         $objectMap.put("listPanel", listPanel = new JPanel());
520         
521         listPanel.setName("listPanel");
522         listPanel.setLayout(listPanelLayout);
523     }
524 
525     protected void createListPanelLayout() {
526         $objectMap.put("listPanelLayout", listPanelLayout = new CardLayout2Ext(this, "listPanel"));
527     }
528 
529     protected void createModel() {
530         $objectMap.put("model", model = getContextValue(DepartmentsDialogUIModel.class));
531     }
532 
533     protected void createValidateButton() {
534         $objectMap.put("validateButton", validateButton = new JButton());
535         
536         validateButton.setName("validateButton");
537         validateButton.setText(t("dali.common.validate"));
538         validateButton.setToolTipText(t("dali.common.validate"));
539         validateButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__validateButton"));
540     }
541 
542     /*-----------------------------------------------------------------------*/
543     /*------------------------ Internal jaxx methods ------------------------*/
544     /*-----------------------------------------------------------------------*/
545 
546     private void $completeSetup() {
547         allComponentsCreated = true;
548         if (log.isDebugEnabled()) {
549             log.debug(this);
550         }
551         addChildrenToDepartmentsDialog();
552         // inline complete setup of $JPanel0
553         $JPanel0.add(listPanel);
554         $JPanel0.add($JPanel2, BorderLayout.PAGE_END);
555         addChildrenToListPanel();
556         // inline complete setup of $JPanel1
557         $JPanel1.add(departmentsList);
558         // inline complete setup of $JPanel2
559         $JPanel2.add(cancelButton);
560         $JPanel2.add(validateButton);
561         
562         // apply 1 data bindings
563         JAXXUtil.applyDataBinding(this, $bindings.keySet());
564         
565         // apply 10 property setters
566         $JPanel1.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
567         cancelButton.setMnemonic(SwingUtil.getFirstCharAt(t("dali.common.cancel.mnemonic"),'Z'));
568         cancelButton.setIcon(SwingUtil.createActionIcon("cancel"));
569         validateButton.setMnemonic(SwingUtil.getFirstCharAt(t("dali.common.validate.mnemonic"),'Z'));
570         validateButton.setIcon(SwingUtil.createActionIcon("accept"));
571         // late initializer
572         departmentsDialog.pack();
573     }
574 
575     private void $initialize() {
576         if (allComponentsCreated) {
577             return;
578         }
579         if (log.isDebugEnabled()) {
580             log.debug(this);
581         }
582         handler.beforeInit(this);
583         $objectMap.put("departmentsDialog", departmentsDialog);
584         createModel();
585         createListPanelLayout();
586         // inline creation of $JPanel0
587         $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
588         
589         $JPanel0.setName("$JPanel0");
590         $JPanel0.setLayout(new BorderLayout());
591         createListPanel();
592         createFilterElementDepartmentUI();
593         // inline creation of $JPanel1
594         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
595         
596         $JPanel1.setName("$JPanel1");
597         $JPanel1.setLayout(new BorderLayout());
598         createDepartmentsList();
599         // inline creation of $JPanel2
600         $objectMap.put("$JPanel2", $JPanel2 = new JPanel());
601         
602         $JPanel2.setName("$JPanel2");
603         $JPanel2.setLayout(new GridLayout(1,0));
604         createCancelButton();
605         createValidateButton();
606         // inline creation of departmentsDialog
607         setName("departmentsDialog");
608         departmentsDialog.getContentPane().setLayout(new BorderLayout());
609         setResizable(true);
610         setTitle(t("dali.program.program.recorderDepartments.title"));
611         setModal(true);
612         
613         // registers 1 data bindings
614         $registerDefaultBindings();
615         $completeSetup();
616         handler.afterInit(this);
617     }
618 
619     private void $registerDefaultBindings() {
620         // register 1 data bindings
621         registerDataBinding(new DefaultJAXXBinding(this, BINDING_VALIDATE_BUTTON_ENABLED, true) {
622         
623             @Override
624             public void applyDataBinding() {
625                 if (model != null) {
626                     model.addPropertyChangeListener("program", this);
627                 }
628             }
629         
630             @Override
631             public void processDataBinding() {
632                 if (model != null && model.getProgram() != null) {
633                     validateButton.setEnabled(model.getProgram().isEditable());
634                 }
635             }
636         
637             @Override
638             public void removeDataBinding() {
639                 if (model != null) {
640                     model.removePropertyChangeListener("program", this);
641                 }
642             }
643         });
644     }
645 
646 }