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
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
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
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
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
125
126
127 private JPanel $JPanel0;
128 private JPanel $JPanel1;
129
130
131
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
183
184
185 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
186 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
187 }
188
189
190
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
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
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
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
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
454
455
456 protected JPanel get$JPanel0() {
457 return $JPanel0;
458 }
459
460 protected JPanel get$JPanel1() {
461 return $JPanel1;
462 }
463
464
465
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
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
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
781 $JPanel1.add(closeButton);
782 $JPanel1.add(saveButton);
783
784
785 JAXXUtil.applyDataBinding(this, $bindings.keySet());
786
787
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
809
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
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
853 $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
854
855 $JPanel1.setName("$JPanel1");
856 $JPanel1.setLayout(new GridLayout(1,0));
857 createCloseButton();
858 createSaveButton();
859
860 setName("extractionPanel");
861 setLayout(new BorderLayout());
862
863
864 $registerDefaultBindings();
865 $completeSetup();
866 handler.afterInit(this);
867 }
868
869 private void $registerDefaultBindings() {
870
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 }