1 package fr.ifremer.reefdb.ui.swing.content.manage.program.menu;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import fr.ifremer.reefdb.decorator.DecoratorService;
27 import fr.ifremer.reefdb.dto.configuration.filter.FilterDTO;
28 import fr.ifremer.reefdb.ui.swing.content.manage.filter.element.menu.ApplyFilterUI;
29 import fr.ifremer.reefdb.ui.swing.content.manage.program.ProgramsUI;
30 import fr.ifremer.reefdb.ui.swing.content.manage.referential.menu.ReferentialMenuUIHandler;
31 import fr.ifremer.reefdb.ui.swing.util.ReefDbUIs;
32 import jaxx.runtime.swing.model.WillChangeSelectedItemListener;
33 import org.apache.commons.logging.Log;
34 import org.apache.commons.logging.LogFactory;
35
36 import javax.swing.*;
37 import java.util.List;
38
39
40
41
42 public class ProgramsMenuUIHandler extends ReferentialMenuUIHandler<ProgramsMenuUIModel, ProgramsMenuUI> {
43
44
45
46
47 private static final Log LOG = LogFactory.getLog(ProgramsMenuUIHandler.class);
48
49
50 @Override
51 public void beforeInit(final ProgramsMenuUI ui) {
52 super.beforeInit(ui);
53
54
55 final ProgramsMenuUIModel model = new ProgramsMenuUIModel();
56 ui.setContextValue(model);
57 }
58
59
60 @Override
61 public void afterInit(final ProgramsMenuUI ui) {
62 super.afterInit(ui);
63
64
65 initComboBox();
66
67 }
68
69
70 @Override
71 public void enableSearch(boolean enabled) {
72 getUI().getLocalCombo().setEnabled(enabled);
73 getUI().getProgramCodeCombo().setEnabled(enabled);
74 getUI().getProgramMnemonicCombo().setEnabled(enabled);
75 getUI().getClearButton().setEnabled(enabled);
76 getUI().getSearchButton().setEnabled(enabled);
77 getApplyFilterUI().setEnabled(enabled);
78 }
79
80
81 @Override
82 public List<FilterDTO> getFilters() {
83 return getContext().getContextService().getAllProgramFilter();
84 }
85
86
87 @Override
88 public ApplyFilterUI getApplyFilterUI() {
89 return getUI().getApplyFilterUI();
90 }
91
92
93 @Override
94 public JComponent getLocalFilterPanel() {
95 return getUI().getLocalPanel();
96 }
97
98
99
100
101 private void initComboBox() {
102
103 initBeanFilterableComboBox(
104 getUI().getLocalCombo(),
105 getContext().getSystemService().getBooleanValues(),
106 null);
107
108
109 initBeanFilterableComboBox(
110 getUI().getProgramMnemonicCombo(),
111 getModel().isOnlyManagedPrograms()
112 ? getContext().getProgramStrategyService().getManagedPrograms()
113 : getContext().getProgramStrategyService().getWritablePrograms(),
114 null,
115 DecoratorService.NAME);
116
117 initBeanFilterableComboBox(
118 getUI().getProgramCodeCombo(),
119 getModel().isOnlyManagedPrograms()
120 ? getContext().getProgramStrategyService().getManagedPrograms()
121 : getContext().getProgramStrategyService().getWritablePrograms(),
122 null,
123 DecoratorService.CODE);
124
125
126 ReefDbUIs.forceComponentSize(getUI().getLocalCombo());
127 ReefDbUIs.forceComponentSize(getUI().getProgramMnemonicCombo());
128 ReefDbUIs.forceComponentSize(getUI().getProgramCodeCombo());
129
130 WillChangeSelectedItemListener listener = event -> {
131 if (getModel().isLoading()) return;
132 if (event.getNextSelectedItem() != null) SwingUtilities.invokeLater(() -> getUI().getSearchButton().getAction().actionPerformed(null));
133 };
134 getUI().getProgramMnemonicCombo().getComboBoxModel().addWillChangeSelectedItemListener(listener);
135 getUI().getProgramCodeCombo().getComboBoxModel().addWillChangeSelectedItemListener(listener);
136 }
137
138
139
140
141
142
143 public ProgramsUI getProgramsUI() {
144 return getUI().getParentContainer(ProgramsUI.class);
145 }
146
147 }