View Javadoc
1   package fr.ifremer.dali.ui.swing.content.extraction;
2   
3   import fr.ifremer.dali.dto.configuration.context.ContextDTO;
4   import fr.ifremer.dali.dto.configuration.programStrategy.ProgramDTO;
5   import fr.ifremer.dali.dto.system.extraction.ExtractionDTO;
6   import fr.ifremer.dali.ui.swing.DaliHelpBroker;
7   import fr.ifremer.dali.ui.swing.DaliUIContext;
8   import fr.ifremer.dali.ui.swing.content.extraction.config.ExtractionConfigUI;
9   import fr.ifremer.dali.ui.swing.content.extraction.filters.ExtractionFiltersUI;
10  import fr.ifremer.dali.ui.swing.content.extraction.list.ExtractionsTableUI;
11  import fr.ifremer.dali.ui.swing.util.DaliUI;
12  import fr.ifremer.dali.ui.swing.util.image.BackgroundPanel;
13  import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
14  import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
15  import fr.ifremer.quadrige3.ui.swing.component.bean.ExtendedComboBox;
16  import java.awt.BorderLayout;
17  import java.awt.Component;
18  import java.awt.Container;
19  import java.awt.GridBagConstraints;
20  import java.awt.GridLayout;
21  import java.awt.Insets;
22  import java.awt.LayoutManager;
23  import java.util.ArrayList;
24  import java.util.HashMap;
25  import java.util.List;
26  import java.util.Map;
27  import java.util.TreeMap;
28  import javax.swing.BorderFactory;
29  import javax.swing.Box;
30  import javax.swing.BoxLayout;
31  import javax.swing.JButton;
32  import javax.swing.JLabel;
33  import javax.swing.JPanel;
34  import javax.swing.JScrollPane;
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.JAXXValidator;
41  import jaxx.runtime.SwingUtil;
42  import jaxx.runtime.binding.DefaultJAXXBinding;
43  import jaxx.runtime.context.DefaultJAXXContext;
44  import jaxx.runtime.swing.Table;
45  import jaxx.runtime.swing.help.JAXXHelpUI;
46  import jaxx.runtime.validator.swing.SwingValidator;
47  import jaxx.runtime.validator.swing.SwingValidatorUtil;
48  import jaxx.runtime.validator.swing.meta.Validator;
49  import jaxx.runtime.validator.swing.meta.ValidatorField;
50  import jaxx.runtime.validator.swing.ui.ImageValidationUI;
51  import org.apache.commons.logging.Log;
52  import org.apache.commons.logging.LogFactory;
53  import static org.nuiton.i18n.I18n.t;
54  
55  public class ExtractionUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<ExtractionUIModel, ExtractionUIHandler>, JAXXObject, JAXXValidator {
56  
57      /*-----------------------------------------------------------------------*/
58      /*------------------ Constants for all public bindings ------------------*/
59      /*-----------------------------------------------------------------------*/
60  
61      public static final String BINDING_CONTEXT_COMBO_BOX_SELECTED_ITEM = "contextComboBox.selectedItem";
62      public static final String BINDING_SAVE_BUTTON_ENABLED = "saveButton.enabled";
63      public static final String BINDING_SELECT_EXTRACTION_COMBO_SELECTED_ITEM = "selectExtractionCombo.selectedItem";
64      public static final String BINDING_SELECT_PROGRAM_COMBO_SELECTED_ITEM = "selectProgramCombo.selectedItem";
65  
66      /*-----------------------------------------------------------------------*/
67      /*------------------------- Other static fields -------------------------*/
68      /*-----------------------------------------------------------------------*/
69  
70      private static final String $jaxxObjectDescriptor = "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";
71      private static final Log log = LogFactory.getLog(ExtractionUI.class);
72      private static final long serialVersionUID = 1L;
73  
74      /*-----------------------------------------------------------------------*/
75      /*--------------------------- Internal states ---------------------------*/
76      /*-----------------------------------------------------------------------*/
77  
78      protected List<Object> $activeBindings = new ArrayList<Object>();
79      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
80      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
81      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
82      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
83      private boolean allComponentsCreated;
84      protected final JAXXContext delegateContext = new DefaultJAXXContext();
85  
86      /*-----------------------------------------------------------------------*/
87      /*------------------------ Protected components  ------------------------*/
88      /*-----------------------------------------------------------------------*/
89  
90      protected JPanel bottomPanel;
91      protected DaliHelpBroker broker;
92      protected JButton clearButton;
93      protected JButton closeButton;
94      protected ExtractionConfigUI configUI;
95      protected ExtendedComboBox<ContextDTO> contextComboBox;
96      protected JPanel extractionMenu;
97      protected ExtractionUI extractionPanel = this;
98      protected JPanel extractionsPanel;
99      @ValidatorField( validatorId = "validator",  propertyName = "extractionsTableUIModel",  editorName = "extractionsTable")
100     protected ExtractionsTableUI extractionsTable;
101     @ValidatorField( validatorId = "validator",  propertyName = "extractionFiltersUIModel",  editorName = "filtersTable")
102     protected ExtractionFiltersUI filtersTable;
103     protected final ExtractionUIHandler handler = createHandler();
104     protected BackgroundPanel leftImage;
105     protected JPanel mainPanel;
106     protected JPanel menuContextPanel;
107     protected Table menuSelectionPanel;
108     protected ExtractionUIModel model;
109     protected JButton saveButton;
110     protected JScrollPane scrollPane;
111     protected JButton searchButton;
112     protected JPanel selectButtonsPanel;
113     protected ExtendedComboBox<ExtractionDTO> selectExtractionCombo;
114     protected JLabel selectExtractionLabel;
115     protected JPanel selectExtractionPanel;
116     protected ExtendedComboBox<ProgramDTO> selectProgramCombo;
117     protected JLabel selectProgramLabel;
118     protected JPanel selectProgramPanel;
119     @Validator( validatorId = "validator")
120     protected SwingValidator<ExtractionUIModel> validator;
121     protected List<String> validatorIds = new ArrayList<String>();
122 
123     /*-----------------------------------------------------------------------*/
124     /*------------------------- Private components  -------------------------*/
125     /*-----------------------------------------------------------------------*/
126 
127     private JPanel $JPanel0;
128     private JPanel $JPanel1;
129 
130     /*-----------------------------------------------------------------------*/
131     /*---------------------------- Constructors  ----------------------------*/
132     /*-----------------------------------------------------------------------*/
133 
134     public ExtractionUI(ApplicationUI parentUI) {
135         ApplicationUIUtil.setParentUI(this, parentUI);
136             $initialize();
137     }
138 
139     public ExtractionUI() {
140         $initialize();
141     }
142 
143     public ExtractionUI(JAXXContext parentContext) {
144         JAXXUtil.initContext(this, parentContext);
145         $initialize();
146     }
147 
148     public ExtractionUI(boolean param0) {
149         super(param0);
150         $initialize();
151     }
152 
153     public ExtractionUI(JAXXContext parentContext, boolean param1) {
154         super(param1);
155         JAXXUtil.initContext(this, parentContext);
156         $initialize();
157     }
158 
159     public ExtractionUI(LayoutManager param0) {
160         super(param0);
161         $initialize();
162     }
163 
164     public ExtractionUI(JAXXContext parentContext, LayoutManager param1) {
165         super(param1);
166         JAXXUtil.initContext(this, parentContext);
167         $initialize();
168     }
169 
170     public ExtractionUI(LayoutManager param0, boolean param1) {
171         super(param0 ,param1);
172         $initialize();
173     }
174 
175     public ExtractionUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
176         super(param1 ,param2);
177         JAXXUtil.initContext(this, parentContext);
178         $initialize();
179     }
180 
181     /*-----------------------------------------------------------------------*/
182     /*--------------------------- Statics methods ---------------------------*/
183     /*-----------------------------------------------------------------------*/
184 
185     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
186         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
187     }
188 
189     /*-----------------------------------------------------------------------*/
190     /*---------------------- JAXXObject implementation ----------------------*/
191     /*-----------------------------------------------------------------------*/
192 
193     @Override
194     public void applyDataBinding(String $binding) {
195         if (allComponentsCreated && $bindings.containsKey($binding)) {
196             getDataBinding($binding).applyDataBinding();
197         }
198         processDataBinding($binding);
199     }
200 
201     @Override
202     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
203         super.firePropertyChange(propertyName, oldValue, newValue);
204     }
205 
206     @Override
207     public Map<String, Object> get$objectMap() {
208         return $objectMap;
209     }
210 
211     @Override
212     public JAXXBinding getDataBinding(String bindingId) {
213         return $bindings.get(bindingId);
214     }
215 
216     @Override
217     public JAXXBinding[] getDataBindings() {
218         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
219     }
220 
221     @Override
222     public Object getObjectById(String id) {
223         return $objectMap.get(id);
224     }
225 
226     @Override
227     public void processDataBinding(String $binding, boolean $force) {
228         if (!$force && $activeBindings.contains($binding)) { 
229             return;
230         }
231         $activeBindings.add($binding);
232         try {
233             if (allComponentsCreated && $bindings.containsKey($binding)) {
234                 getDataBinding($binding).processDataBinding();
235             }
236         } finally {
237             $activeBindings.remove($binding);
238         }
239     }
240 
241     @Override
242     public void processDataBinding(String $binding) {
243         processDataBinding($binding, false);
244     }
245 
246     @Override
247     public void registerDataBinding(JAXXBinding binding) {
248         $bindings.put(binding.getId(), binding);
249     }
250 
251     @Override
252     public void removeDataBinding(String $binding) {
253         if (allComponentsCreated && $bindings.containsKey($binding)) {
254             getDataBinding($binding).removeDataBinding();
255         }
256     }
257 
258     /*-----------------------------------------------------------------------*/
259     /*--------------------- JAXXContext implementation  ---------------------*/
260     /*-----------------------------------------------------------------------*/
261 
262     @Override
263     public <T> T getContextValue(Class<T> clazz) {
264         return delegateContext.getContextValue(clazz, null);
265     }
266 
267     @Override
268     public <T> T getContextValue(Class<T> clazz, String name) {
269         return delegateContext.getContextValue(clazz, name);
270     }
271 
272     @Override
273     public JAXXContext getDelegateContext() {
274         return delegateContext;
275     }
276 
277     @Override
278     public <O extends Container> O getParentContainer(Class<O> clazz) {
279         return SwingUtil.getParentContainer(this, clazz);
280     }
281 
282     @Override
283     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
284         return SwingUtil.getParentContainer(source, clazz);
285     }
286 
287     @Override
288     public <T> void removeContextValue(Class<T> clazz) {
289         delegateContext.removeContextValue(clazz, null);
290     }
291 
292     @Override
293     public <T> void removeContextValue(Class<T> clazz, String name) {
294         delegateContext.removeContextValue(clazz, name);
295     }
296 
297     @Override
298     public <T> void setContextValue(T o) {
299         delegateContext.setContextValue(o, null);
300     }
301 
302     @Override
303     public <T> void setContextValue(T o, String name) {
304         delegateContext.setContextValue(o, name);
305     }
306 
307     /*-----------------------------------------------------------------------*/
308     /*-------------------- JAXXValidator implementation  --------------------*/
309     /*-----------------------------------------------------------------------*/
310 
311     @Override
312     public SwingValidator<?> getValidator(String validatorId) {
313         return (SwingValidator<?>) (validatorIds.contains(validatorId) ? getObjectById(validatorId) : null);
314     }
315 
316     @Override
317     public List<String> getValidatorIds() {
318         return validatorIds;
319     }
320 
321     @Override
322     public void registerValidatorFields() {
323         SwingValidatorUtil.detectValidatorFields(this);
324     }
325 
326     /*-----------------------------------------------------------------------*/
327     /*----------------------- Public acessor methods  -----------------------*/
328     /*-----------------------------------------------------------------------*/
329 
330     public JPanel getBottomPanel() {
331         return bottomPanel;
332     }
333 
334     public DaliHelpBroker getBroker() {
335         return broker;
336     }
337 
338     public JButton getClearButton() {
339         return clearButton;
340     }
341 
342     public JButton getCloseButton() {
343         return closeButton;
344     }
345 
346     public ExtractionConfigUI getConfigUI() {
347         return configUI;
348     }
349 
350     public ExtendedComboBox<ContextDTO> getContextComboBox() {
351         return contextComboBox;
352     }
353 
354     public JPanel getExtractionMenu() {
355         return extractionMenu;
356     }
357 
358     public JPanel getExtractionsPanel() {
359         return extractionsPanel;
360     }
361 
362     public ExtractionsTableUI getExtractionsTable() {
363         return extractionsTable;
364     }
365 
366     public ExtractionFiltersUI getFiltersTable() {
367         return filtersTable;
368     }
369 
370     public ExtractionUIHandler getHandler() {
371         return handler;
372     }
373 
374     public BackgroundPanel getLeftImage() {
375         return leftImage;
376     }
377 
378     public JPanel getMainPanel() {
379         return mainPanel;
380     }
381 
382     public JPanel getMenuContextPanel() {
383         return menuContextPanel;
384     }
385 
386     public Table getMenuSelectionPanel() {
387         return menuSelectionPanel;
388     }
389 
390     public ExtractionUIModel getModel() {
391         return model;
392     }
393 
394     public JButton getSaveButton() {
395         return saveButton;
396     }
397 
398     public JScrollPane getScrollPane() {
399         return scrollPane;
400     }
401 
402     public JButton getSearchButton() {
403         return searchButton;
404     }
405 
406     public JPanel getSelectButtonsPanel() {
407         return selectButtonsPanel;
408     }
409 
410     public ExtendedComboBox<ExtractionDTO> getSelectExtractionCombo() {
411         return selectExtractionCombo;
412     }
413 
414     public JLabel getSelectExtractionLabel() {
415         return selectExtractionLabel;
416     }
417 
418     public JPanel getSelectExtractionPanel() {
419         return selectExtractionPanel;
420     }
421 
422     public ExtendedComboBox<ProgramDTO> getSelectProgramCombo() {
423         return selectProgramCombo;
424     }
425 
426     public JLabel getSelectProgramLabel() {
427         return selectProgramLabel;
428     }
429 
430     public JPanel getSelectProgramPanel() {
431         return selectProgramPanel;
432     }
433 
434     public SwingValidator<ExtractionUIModel> getValidator() {
435         return validator;
436     }
437 
438     /*-----------------------------------------------------------------------*/
439     /*---------------------------- Other methods ----------------------------*/
440     /*-----------------------------------------------------------------------*/
441 
442     @Override
443     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
444         broker.installUI(component, helpId);
445     }
446 
447     @Override
448     public void showHelp(String helpId) {
449         getBroker().showHelp(this, helpId);
450     }
451 
452     /*-----------------------------------------------------------------------*/
453     /*--------------------- Protected acessors methods  ---------------------*/
454     /*-----------------------------------------------------------------------*/
455 
456     protected JPanel get$JPanel0() {
457         return $JPanel0;
458     }
459 
460     protected JPanel get$JPanel1() {
461         return $JPanel1;
462     }
463 
464     /*-----------------------------------------------------------------------*/
465     /*--------------------- Components creation methods ---------------------*/
466     /*-----------------------------------------------------------------------*/
467 
468     protected void addChildrenToBottomPanel() {
469         if (!allComponentsCreated) {
470             return;
471         }
472         bottomPanel.add(SwingUtil.boxComponentWithJxLayer(filtersTable));
473         bottomPanel.add(configUI);
474     }
475 
476     protected void addChildrenToExtractionMenu() {
477         if (!allComponentsCreated) {
478             return;
479         }
480         extractionMenu.add(menuContextPanel);
481         extractionMenu.add(menuSelectionPanel);
482         extractionMenu.add(selectButtonsPanel);
483     }
484 
485     protected void addChildrenToExtractionPanel() {
486         if (!allComponentsCreated) {
487             return;
488         }
489         add(scrollPane);
490         add($JPanel1, BorderLayout.PAGE_END);
491     }
492 
493     protected void addChildrenToExtractionsPanel() {
494         if (!allComponentsCreated) {
495             return;
496         }
497         extractionsPanel.add($JPanel0, BorderLayout.LINE_START);
498         extractionsPanel.add(SwingUtil.boxComponentWithJxLayer(extractionsTable), BorderLayout.CENTER);
499     }
500 
501     protected void addChildrenToMainPanel() {
502         if (!allComponentsCreated) {
503             return;
504         }
505         mainPanel.add(extractionsPanel, BorderLayout.CENTER);
506         mainPanel.add(bottomPanel, BorderLayout.PAGE_END);
507     }
508 
509     protected void addChildrenToMenuContextPanel() {
510         if (!allComponentsCreated) {
511             return;
512         }
513         menuContextPanel.add(contextComboBox);
514     }
515 
516     protected void addChildrenToMenuSelectionPanel() {
517         if (!allComponentsCreated) {
518             return;
519         }
520         menuSelectionPanel.add(selectExtractionPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 0, new Insets(3, 3, 3, 3), 0, 0));
521         menuSelectionPanel.add(selectProgramPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 0, new Insets(3, 3, 3, 3), 0, 0));
522     }
523 
524     protected void addChildrenToScrollPane() {
525         if (!allComponentsCreated) {
526             return;
527         }
528         scrollPane.getViewport().add(mainPanel);
529     }
530 
531     protected void addChildrenToSelectButtonsPanel() {
532         if (!allComponentsCreated) {
533             return;
534         }
535         selectButtonsPanel.add(clearButton);
536         selectButtonsPanel.add(searchButton);
537     }
538 
539     protected void addChildrenToSelectExtractionPanel() {
540         if (!allComponentsCreated) {
541             return;
542         }
543         selectExtractionPanel.add(selectExtractionLabel, BorderLayout.PAGE_START);
544         selectExtractionPanel.add(selectExtractionCombo);
545     }
546 
547     protected void addChildrenToSelectProgramPanel() {
548         if (!allComponentsCreated) {
549             return;
550         }
551         selectProgramPanel.add(selectProgramLabel, BorderLayout.PAGE_START);
552         selectProgramPanel.add(selectProgramCombo);
553     }
554 
555     protected void addChildrenToValidator() {
556         if (!allComponentsCreated) {
557             return;
558         }
559         validator.setUiClass(ImageValidationUI.class);
560         validator.setBean(model);
561     }
562 
563     protected void createBottomPanel() {
564         $objectMap.put("bottomPanel", bottomPanel = new JPanel());
565         
566         bottomPanel.setName("bottomPanel");
567         bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.PAGE_AXIS));
568     }
569 
570     protected void createBroker() {
571         $objectMap.put("broker", broker = new DaliHelpBroker("dali.extraction.help"));
572     }
573 
574     protected void createClearButton() {
575         $objectMap.put("clearButton", clearButton = new JButton());
576         
577         clearButton.setName("clearButton");
578         clearButton.setText(t("dali.action.search.clear.label"));
579         clearButton.setToolTipText(t("dali.action.search.clear.tip"));
580         clearButton.putClientProperty("applicationAction", ClearAction.class);
581     }
582 
583     protected void createCloseButton() {
584         $objectMap.put("closeButton", closeButton = new JButton());
585         
586         closeButton.setName("closeButton");
587         closeButton.setText(t("dali.common.close"));
588         closeButton.putClientProperty("applicationActionKey", fr.ifremer.dali.ui.swing.util.DaliKeyStrokes.CANCEL);
589         closeButton.putClientProperty("applicationAction", CloseAction.class);
590     }
591 
592     protected void createConfigUI() {
593         $objectMap.put("configUI", configUI = new ExtractionConfigUI(this));
594         
595         configUI.setName("configUI");
596         configUI.putClientProperty("validatorLabel", t("dali.extraction.config.title"));
597     }
598 
599     protected void createContextComboBox() {
600         $objectMap.put("contextComboBox", contextComboBox = new ExtendedComboBox<ContextDTO>(this));
601         
602         contextComboBox.setName("contextComboBox");
603         contextComboBox.setFilterable(true);
604         contextComboBox.setShowDecorator(false);
605         contextComboBox.setProperty("context");
606         contextComboBox.setShowReset(true);
607     }
608 
609     protected void createExtractionMenu() {
610         $objectMap.put("extractionMenu", extractionMenu = new JPanel());
611         
612         extractionMenu.setName("extractionMenu");
613         extractionMenu.setLayout(new BoxLayout(extractionMenu, BoxLayout.PAGE_AXIS));
614     }
615 
616     protected void createExtractionsPanel() {
617         $objectMap.put("extractionsPanel", extractionsPanel = new JPanel());
618         
619         extractionsPanel.setName("extractionsPanel");
620         extractionsPanel.setLayout(new BorderLayout());
621     }
622 
623     protected void createExtractionsTable() {
624         $objectMap.put("extractionsTable", extractionsTable = new ExtractionsTableUI(this));
625         
626         extractionsTable.setName("extractionsTable");
627         extractionsTable.putClientProperty("validatorLabel", t("dali.extraction.list.title"));
628     }
629 
630     protected void createFiltersTable() {
631         $objectMap.put("filtersTable", filtersTable = new ExtractionFiltersUI(this));
632         
633         filtersTable.setName("filtersTable");
634         filtersTable.putClientProperty("validatorLabel", t("dali.extraction.filters.title"));
635     }
636 
637     protected ExtractionUIHandler createHandler() {
638         return new ExtractionUIHandler();
639     }
640 
641     protected void createLeftImage() {
642         $objectMap.put("leftImage", leftImage = new BackgroundPanel());
643         
644         leftImage.setName("leftImage");
645     }
646 
647     protected void createMainPanel() {
648         $objectMap.put("mainPanel", mainPanel = new JPanel());
649         
650         mainPanel.setName("mainPanel");
651         mainPanel.setLayout(new BorderLayout());
652     }
653 
654     protected void createMenuContextPanel() {
655         $objectMap.put("menuContextPanel", menuContextPanel = new JPanel());
656         
657         menuContextPanel.setName("menuContextPanel");
658         menuContextPanel.putClientProperty("panelType", DaliUI.CONTEXT_PANEL_TYPE);
659     }
660 
661     protected void createMenuSelectionPanel() {
662         $objectMap.put("menuSelectionPanel", menuSelectionPanel = new Table());
663         
664         menuSelectionPanel.setName("menuSelectionPanel");
665         menuSelectionPanel.putClientProperty("panelType", DaliUI.SELECTION_PANEL_TYPE);
666     }
667 
668     protected void createModel() {
669         $objectMap.put("model", model = getContextValue(ExtractionUIModel.class));
670     }
671 
672     protected void createSaveButton() {
673         $objectMap.put("saveButton", saveButton = new JButton());
674         
675         saveButton.setName("saveButton");
676         saveButton.setText(t("dali.common.save"));
677         saveButton.setToolTipText(t("dali.action.save.extractions"));
678         saveButton.putClientProperty("applicationActionKey", fr.ifremer.dali.ui.swing.util.DaliKeyStrokes.SAVE);
679         saveButton.putClientProperty("applicationAction", SaveAction.class);
680     }
681 
682     protected void createScrollPane() {
683         $objectMap.put("scrollPane", scrollPane = new JScrollPane());
684         
685         scrollPane.setName("scrollPane");
686     }
687 
688     protected void createSearchButton() {
689         $objectMap.put("searchButton", searchButton = new JButton());
690         
691         searchButton.setName("searchButton");
692         searchButton.setText(t("dali.action.search.label"));
693         searchButton.setToolTipText(t("dali.action.search.tip"));
694         searchButton.putClientProperty("applicationAction", SearchAction.class);
695     }
696 
697     protected void createSelectButtonsPanel() {
698         $objectMap.put("selectButtonsPanel", selectButtonsPanel = new JPanel());
699         
700         selectButtonsPanel.setName("selectButtonsPanel");
701         selectButtonsPanel.setLayout(new GridLayout(1,0));
702     }
703 
704     protected void createSelectExtractionCombo() {
705         $objectMap.put("selectExtractionCombo", selectExtractionCombo = new ExtendedComboBox<ExtractionDTO>(this));
706         
707         selectExtractionCombo.setName("selectExtractionCombo");
708         selectExtractionCombo.setFilterable(true);
709         selectExtractionCombo.setShowDecorator(false);
710         selectExtractionCombo.setProperty("extraction");
711         selectExtractionCombo.setShowReset(true);
712     }
713 
714     protected void createSelectExtractionLabel() {
715         $objectMap.put("selectExtractionLabel", selectExtractionLabel = new JLabel());
716         
717         selectExtractionLabel.setName("selectExtractionLabel");
718         selectExtractionLabel.setText(t("dali.extraction.selection.extraction.label"));
719     }
720 
721     protected void createSelectExtractionPanel() {
722         $objectMap.put("selectExtractionPanel", selectExtractionPanel = new JPanel());
723         
724         selectExtractionPanel.setName("selectExtractionPanel");
725         selectExtractionPanel.setLayout(new BorderLayout());
726     }
727 
728     protected void createSelectProgramCombo() {
729         $objectMap.put("selectProgramCombo", selectProgramCombo = new ExtendedComboBox<ProgramDTO>(this));
730         
731         selectProgramCombo.setName("selectProgramCombo");
732         selectProgramCombo.setFilterable(true);
733         selectProgramCombo.setShowDecorator(false);
734         selectProgramCombo.setProperty("program");
735         selectProgramCombo.setShowReset(true);
736     }
737 
738     protected void createSelectProgramLabel() {
739         $objectMap.put("selectProgramLabel", selectProgramLabel = new JLabel());
740         
741         selectProgramLabel.setName("selectProgramLabel");
742         selectProgramLabel.setText(t("dali.extraction.selection.program.label"));
743     }
744 
745     protected void createSelectProgramPanel() {
746         $objectMap.put("selectProgramPanel", selectProgramPanel = new JPanel());
747         
748         selectProgramPanel.setName("selectProgramPanel");
749         selectProgramPanel.setLayout(new BorderLayout());
750     }
751 
752     protected void createValidator() {
753         $objectMap.put("validator", validator = SwingValidator.newValidator(ExtractionUIModel.class, null));
754     }
755 
756     /*-----------------------------------------------------------------------*/
757     /*------------------------ Internal jaxx methods ------------------------*/
758     /*-----------------------------------------------------------------------*/
759 
760     private void $completeSetup() {
761         allComponentsCreated = true;
762         if (log.isDebugEnabled()) {
763             log.debug(this);
764         }
765         addChildrenToExtractionPanel();
766         addChildrenToValidator();
767         addChildrenToScrollPane();
768         addChildrenToMainPanel();
769         addChildrenToExtractionsPanel();
770         // inline complete setup of $JPanel0
771         $JPanel0.add(extractionMenu, BorderLayout.PAGE_START);
772         $JPanel0.add(leftImage, BorderLayout.PAGE_END);
773         addChildrenToExtractionMenu();
774         addChildrenToMenuContextPanel();
775         addChildrenToMenuSelectionPanel();
776         addChildrenToSelectExtractionPanel();
777         addChildrenToSelectProgramPanel();
778         addChildrenToSelectButtonsPanel();
779         addChildrenToBottomPanel();
780         // inline complete setup of $JPanel1
781         $JPanel1.add(closeButton);
782         $JPanel1.add(saveButton);
783         
784         // apply 4 data bindings
785         JAXXUtil.applyDataBinding(this, $bindings.keySet());
786         
787         // apply 30 property setters
788         scrollPane.setBorder(null);
789         contextComboBox.setBeanType(ContextDTO.class);
790         selectExtractionCombo.setBeanType(ExtractionDTO.class);
791         selectProgramCombo.setBeanType(ProgramDTO.class);
792         clearButton.setAlignmentX(Component.CENTER_ALIGNMENT);
793         searchButton.setAlignmentX(Component.CENTER_ALIGNMENT);
794         closeButton.setAlignmentX(Component.CENTER_ALIGNMENT);
795         saveButton.setAlignmentX(Component.CENTER_ALIGNMENT);
796         menuContextPanel.setBorder(BorderFactory.createTitledBorder(t("dali.extraction.context.title")));
797         contextComboBox.setBean(model);
798         menuSelectionPanel.setBorder(BorderFactory.createTitledBorder(t("dali.extraction.selection.title")));
799         selectExtractionLabel.setLabelFor(selectExtractionCombo);
800         selectExtractionCombo.setBean(model);
801         selectProgramLabel.setLabelFor(selectProgramCombo);
802         selectProgramCombo.setBean(model);
803         clearButton.setIcon(SwingUtil.createActionIcon("reset"));
804         searchButton.setIcon(SwingUtil.createActionIcon("find"));
805         leftImage.setImage(handler.getResourceImage("extraction","jpg").getImage());
806         closeButton.setIcon(SwingUtil.createActionIcon("cancel"));
807         saveButton.setIcon(SwingUtil.createActionIcon("save"));
808         // late initializer
809         // register 1 validator(s)
810         validatorIds = SwingValidatorUtil.detectValidators(this);
811         SwingValidatorUtil.installUI(this);
812     }
813 
814     private void $initialize() {
815         if (allComponentsCreated) {
816             return;
817         }
818         if (log.isDebugEnabled()) {
819             log.debug(this);
820         }
821         handler.beforeInit(this);
822         $objectMap.put("extractionPanel", extractionPanel);
823         createModel();
824         createBroker();
825         createValidator();
826         createScrollPane();
827         createMainPanel();
828         createExtractionsPanel();
829         // inline creation of $JPanel0
830         $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
831         
832         $JPanel0.setName("$JPanel0");
833         $JPanel0.setLayout(new BorderLayout());
834         createExtractionMenu();
835         createMenuContextPanel();
836         createContextComboBox();
837         createMenuSelectionPanel();
838         createSelectExtractionPanel();
839         createSelectExtractionLabel();
840         createSelectExtractionCombo();
841         createSelectProgramPanel();
842         createSelectProgramLabel();
843         createSelectProgramCombo();
844         createSelectButtonsPanel();
845         createClearButton();
846         createSearchButton();
847         createLeftImage();
848         createExtractionsTable();
849         createBottomPanel();
850         createFiltersTable();
851         createConfigUI();
852         // inline creation of $JPanel1
853         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
854         
855         $JPanel1.setName("$JPanel1");
856         $JPanel1.setLayout(new GridLayout(1,0));
857         createCloseButton();
858         createSaveButton();
859         // inline creation of extractionPanel
860         setName("extractionPanel");
861         setLayout(new BorderLayout());
862         
863         // registers 4 data bindings
864         $registerDefaultBindings();
865         $completeSetup();
866         handler.afterInit(this);
867     }
868 
869     private void $registerDefaultBindings() {
870         // register 4 data bindings
871         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CONTEXT_COMBO_BOX_SELECTED_ITEM, true) {
872         
873             @Override
874             public void applyDataBinding() {
875                 if (model != null) {
876                     model.addPropertyChangeListener("context", this);
877                 }
878             }
879         
880             @Override
881             public void processDataBinding() {
882                 if (model != null) {
883                     contextComboBox.setSelectedItem(model.getContext());
884                 }
885             }
886         
887             @Override
888             public void removeDataBinding() {
889                 if (model != null) {
890                     model.removePropertyChangeListener("context", this);
891                 }
892             }
893         });
894         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SELECT_EXTRACTION_COMBO_SELECTED_ITEM, true) {
895         
896             @Override
897             public void applyDataBinding() {
898                 if (model != null) {
899                     model.addPropertyChangeListener("extraction", this);
900                 }
901             }
902         
903             @Override
904             public void processDataBinding() {
905                 if (model != null) {
906                     selectExtractionCombo.setSelectedItem(model.getExtraction());
907                 }
908             }
909         
910             @Override
911             public void removeDataBinding() {
912                 if (model != null) {
913                     model.removePropertyChangeListener("extraction", this);
914                 }
915             }
916         });
917         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SELECT_PROGRAM_COMBO_SELECTED_ITEM, true) {
918         
919             @Override
920             public void applyDataBinding() {
921                 if (model != null) {
922                     model.addPropertyChangeListener("program", this);
923                 }
924             }
925         
926             @Override
927             public void processDataBinding() {
928                 if (model != null) {
929                     selectProgramCombo.setSelectedItem(model.getProgram());
930                 }
931             }
932         
933             @Override
934             public void removeDataBinding() {
935                 if (model != null) {
936                     model.removePropertyChangeListener("program", this);
937                 }
938             }
939         });
940         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SAVE_BUTTON_ENABLED, true, true) {
941         
942             @Override
943             public void applyDataBinding() {
944                 if (model != null) {
945                     model.addPropertyChangeListener("valid", this);
946                 }
947                 if (model != null) {
948                     model.addPropertyChangeListener("modify", this);
949                 }
950             }
951         
952             @Override
953             public void processDataBinding() {
954                 if (model != null) {
955                     saveButton.setEnabled(model.isValid() && model.isModify());
956                 }
957             }
958         
959             @Override
960             public void removeDataBinding() {
961                 if (model != null) {
962                     model.removePropertyChangeListener("valid", this);
963                 }
964                 if (model != null) {
965                     model.removePropertyChangeListener("modify", this);
966                 }
967             }
968         });
969     }
970 
971 }