1 package fr.ifremer.dali.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.dali.decorator.DecoratorService;
27 import fr.ifremer.dali.dto.configuration.filter.FilterDTO;
28 import fr.ifremer.dali.ui.swing.content.manage.filter.element.menu.ApplyFilterUI;
29 import fr.ifremer.dali.ui.swing.content.manage.program.ProgramsUI;
30 import fr.ifremer.dali.ui.swing.content.manage.referential.menu.ReferentialMenuUIHandler;
31 import fr.ifremer.dali.ui.swing.util.DaliUIs;
32 import jaxx.runtime.swing.model.WillChangeSelectedItemListener;
33
34 import javax.swing.SwingUtilities;
35 import java.util.List;
36
37
38
39
40 public class ProgramsMenuUIHandler extends ReferentialMenuUIHandler<ProgramsMenuUIModel, ProgramsMenuUI> {
41
42
43 @Override
44 public void beforeInit(final ProgramsMenuUI ui) {
45 super.beforeInit(ui);
46
47
48 final ProgramsMenuUIModel model = new ProgramsMenuUIModel();
49 ui.setContextValue(model);
50 }
51
52
53 @Override
54 public void afterInit(final ProgramsMenuUI ui) {
55 super.afterInit(ui);
56
57
58 initComboBox();
59
60 }
61
62
63 @Override
64 public void enableSearch(boolean enabled) {
65 getUI().getProgramCodeCombo().setEnabled(enabled);
66 getUI().getProgramMnemonicCombo().setEnabled(enabled);
67 getUI().getClearButton().setEnabled(enabled);
68 getUI().getSearchButton().setEnabled(enabled);
69 getApplyFilterUI().setEnabled(enabled);
70 }
71
72
73 @Override
74 public List<FilterDTO> getFilters() {
75 return getContext().getContextService().getAllProgramFilter();
76 }
77
78
79 @Override
80 public ApplyFilterUI getApplyFilterUI() {
81 return getUI().getApplyFilterUI();
82 }
83
84
85
86
87 private void initComboBox() {
88
89
90 initBeanFilterableComboBox(
91 getUI().getProgramMnemonicCombo(),
92 getContext().getProgramStrategyService().getWritablePrograms(),
93 null,
94 DecoratorService.NAME);
95
96 initBeanFilterableComboBox(
97 getUI().getProgramCodeCombo(),
98 getContext().getProgramStrategyService().getWritablePrograms(),
99 null,
100 DecoratorService.CODE);
101
102
103 DaliUIs.forceComponentSize(getUI().getProgramMnemonicCombo());
104 DaliUIs.forceComponentSize(getUI().getProgramCodeCombo());
105
106 WillChangeSelectedItemListener listener = event -> {
107 if (getModel().isLoading()) return;
108 if (event.getNextSelectedItem() != null) {
109 SwingUtilities.invokeLater(() -> getUI().getSearchButton().getAction().actionPerformed(null));
110 }
111 };
112 getUI().getProgramMnemonicCombo().getComboBoxModel().addWillChangeSelectedItemListener(listener);
113 getUI().getProgramCodeCombo().getComboBoxModel().addWillChangeSelectedItemListener(listener);
114 }
115
116
117
118
119
120
121 public ProgramsUI getProgramsUI() {
122 return getUI().getParentContainer(ProgramsUI.class);
123 }
124
125 }