1 package fr.ifremer.dali.ui.swing.content.manage.program.programs.departments;
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 com.google.common.collect.Lists;
27 import fr.ifremer.dali.dto.referential.DepartmentDTO;
28 import fr.ifremer.dali.ui.swing.util.AbstractDaliUIHandler;
29 import org.nuiton.jaxx.application.swing.util.Cancelable;
30
31 import java.util.Collection;
32 import java.util.List;
33
34 import static org.nuiton.i18n.I18n.t;
35
36
37
38
39 public class DepartmentsDialogUIHandler extends AbstractDaliUIHandler<DepartmentsDialogUIModel, DepartmentsDialogUI> implements Cancelable {
40
41
42 public static final String DOUBLE_LIST = "doubleList";
43
44 public static final String LIST = "list";
45
46
47 @Override
48 public void beforeInit(DepartmentsDialogUI ui) {
49 super.beforeInit(ui);
50
51 DepartmentsDialogUIModel model = new DepartmentsDialogUIModel();
52 ui.setContextValue(model);
53 }
54
55
56 @Override
57 @SuppressWarnings("unchecked")
58 public void afterInit(final DepartmentsDialogUI ui) {
59 initUI(ui);
60
61 getUI().getDepartmentsList().setCellRenderer(newListCellRender(DepartmentDTO.class));
62
63 getModel().addPropertyChangeListener(DepartmentsDialogUIModel.PROPERTY_PROGRAM, evt -> {
64
65 if (getModel().getProgram() == null) {
66 return;
67 }
68
69 getUI().setTitle(t("dali.program.program.recorderDepartments.title", decorate(getModel().getProgram())));
70
71 Collection<DepartmentDTO> departments = getModel().getProgram().getRecorderDepartments();
72
73 if (getModel().getProgram().isEditable()) {
74 getUI().getListPanelLayout().setSelected(DOUBLE_LIST);
75
76
77 getUI().getFilterElementDepartmentUI().getFilterDoubleList().getModel().setSelected(Lists.newArrayList(departments));
78 getUI().getFilterElementDepartmentUI().getHandler().enable();
79
80 } else {
81 getUI().getListPanelLayout().setSelected(LIST);
82
83 getUI().getDepartmentsList().setListData(departments.toArray(new DepartmentDTO[departments.size()]));
84 }
85
86 });
87
88 }
89
90
91
92
93 public void valid() {
94
95
96 if (getModel().getProgram().isEditable()) {
97
98 List<DepartmentDTO> departments = getUI().getFilterElementDepartmentUI().getModel().getElements();
99 getModel().getProgram().setRecorderDepartments(departments);
100 }
101
102
103 closeDialog();
104 }
105
106
107 @Override
108 public void cancel() {
109 closeDialog();
110 }
111 }