1 package fr.ifremer.dali.ui.swing.content.manage.program.strategies.duplicate;
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.programStrategy.ProgramDTO;
27 import fr.ifremer.dali.ui.swing.util.AbstractDaliUIHandler;
28 import org.nuiton.jaxx.application.swing.util.Cancelable;
29
30 import javax.swing.JComponent;
31 import java.awt.event.WindowAdapter;
32 import java.awt.event.WindowEvent;
33 import java.util.List;
34
35 import static org.nuiton.i18n.I18n.t;
36
37
38
39
40
41 public class SelectProgramUIHandler extends AbstractDaliUIHandler<SelectProgramUIModel, SelectProgramUI> implements Cancelable {
42
43
44 @Override
45 public void beforeInit(final SelectProgramUI ui) {
46 super.beforeInit(ui);
47
48
49 final SelectProgramUIModel model = new SelectProgramUIModel();
50 ui.setContextValue(model);
51 }
52
53
54 @Override
55 public void afterInit(final SelectProgramUI ui) {
56 initUI(ui);
57
58
59 ui.addWindowListener(new WindowAdapter() {
60 @Override
61 public void windowClosing(WindowEvent e) {
62 getModel().setTargetProgram(null);
63 }
64 });
65
66 getModel().addPropertyChangeListener(evt -> {
67
68 if (SelectProgramUIModel.PROPERTY_SOURCE_PROGRAM.equals(evt.getPropertyName())) {
69 initBeanFilterableComboBox(getUI().getProgramCombo(), getAllowedPrograms(), getModel().getSourceProgram());
70 updateMessageLabel();
71 } else if (SelectProgramUIModel.PROPERTY_SOURCE_STRATEGY.equals(evt.getPropertyName())) {
72 updateMessageLabel();
73 }
74 });
75
76 }
77
78 private List<ProgramDTO> getAllowedPrograms() {
79
80 Integer userId = getContext().getDataContext().getRecorderPersonId();
81 if (userId == null) {
82 return null;
83 }
84
85
86 return getContext().getProgramStrategyService().getManagedProgramsByUser(userId);
87 }
88
89 private void updateMessageLabel() {
90 if (getModel().getSourceProgram() != null && getModel().getSourceStrategy() != null) {
91 getUI().getMessageLabel().setText(t("dali.action.duplicate.strategy.selectProgram.message",
92 decorate(getModel().getSourceStrategy()), decorate(getModel().getSourceProgram())));
93 }
94 }
95
96
97
98
99 public void valid() {
100 closeDialog();
101 }
102
103
104 @Override
105 public void cancel() {
106 getModel().setTargetProgram(null);
107 closeDialog();
108 }
109
110
111 @Override
112 protected JComponent getComponentToFocus() {
113 return getUI().getProgramCombo();
114 }
115
116 }