1 package fr.ifremer.dali.ui.swing.content.manage.rule.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.dto.configuration.control.RuleListDTO;
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.referential.menu.ReferentialMenuUIHandler;
30 import fr.ifremer.dali.ui.swing.content.manage.rule.RulesUI;
31 import fr.ifremer.dali.ui.swing.util.DaliUIs;
32 import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
33
34 import javax.swing.SwingUtilities;
35 import java.util.List;
36
37
38
39
40 public class RulesMenuUIHandler extends ReferentialMenuUIHandler<RulesMenuUIModel, RulesMenuUI> {
41
42
43 @Override
44 public void beforeInit(final RulesMenuUI ui) {
45 super.beforeInit(ui);
46
47
48 final RulesMenuUIModel model = new RulesMenuUIModel();
49 ui.setContextValue(model);
50 }
51
52
53 @Override
54 public void afterInit(final RulesMenuUI ui) {
55 initUI(ui);
56
57 initComboBox();
58 initListeners();
59 }
60
61
62
63
64 private void initComboBox() {
65
66 initBeanFilterableComboBox(
67 getUI().getRuleListComboBox(),
68 getContext().getRuleListService().getAllRuleLists(),
69 null);
70
71 initBeanFilterableComboBox(
72 getUI().getProgramComboBox(),
73 getContext().getProgramStrategyService().getManagedPrograms(),
74 null
75 );
76
77 DaliUIs.forceComponentSize(getUI().getRuleListComboBox());
78 DaliUIs.forceComponentSize(getUI().getProgramComboBox());
79
80 }
81
82 private void initListeners() {
83
84 getModel().addPropertyChangeListener(RulesMenuUIModel.PROPERTY_RULE_LIST, evt -> {
85 if (getModel().isLoading()) return;
86 if (getModel().getRuleList() != null) {
87 getModel().setProgram(null);
88 SwingUtilities.invokeLater(() -> getUI().getSearchButton().getAction().actionPerformed(null));
89 }
90 });
91 }
92
93 @Override
94 public void enableSearch(boolean enabled) {
95 }
96
97 @Override
98 public List<FilterDTO> getFilters() {
99 return null;
100 }
101
102 @Override
103 public ApplyFilterUI getApplyFilterUI() {
104 return null;
105 }
106
107
108
109
110 public void reloadComboBox() {
111 getModel().setLoading(true);
112 BeanFilterableComboBox<RuleListDTO> cb = getUI().getRuleListComboBox();
113 cb.setData(null);
114 List<RuleListDTO> ruleLists = getContext().getRuleListService().getAllRuleLists();
115 cb.setData(ruleLists);
116
117
118 if (cb.getSelectedItem() instanceof RuleListDTO && !ruleLists.contains(cb.getSelectedItem())) {
119 cb.setSelectedItem(null);
120 }
121
122 getModel().setLoading(false);
123 }
124
125
126
127
128
129
130 RulesUI getRulesUI() {
131 return getUI().getParentContainer(RulesUI.class);
132 }
133 }