1 package fr.ifremer.dali.ui.swing.content.manage.program.programs.users;
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.DaliBeans;
28 import fr.ifremer.dali.dto.referential.PersonDTO;
29 import fr.ifremer.dali.ui.swing.util.AbstractDaliUIHandler;
30 import fr.ifremer.quadrige3.core.dao.technical.Assert;
31 import fr.ifremer.quadrige3.core.security.SecurityContextHelper;
32 import org.nuiton.jaxx.application.swing.util.Cancelable;
33
34 import javax.swing.JOptionPane;
35 import java.util.Collection;
36 import java.util.List;
37
38 import static org.nuiton.i18n.I18n.t;
39
40
41
42
43 public class UsersDialogUIHandler extends AbstractDaliUIHandler<UsersDialogUIModel, UsersDialogUI> implements Cancelable {
44
45
46 public static final String DOUBLE_LIST = "doubleList";
47
48 public static final String LIST = "list";
49
50
51 @Override
52 public void beforeInit(UsersDialogUI ui) {
53 super.beforeInit(ui);
54
55 UsersDialogUIModel model = new UsersDialogUIModel();
56 ui.setContextValue(model);
57 }
58
59
60 @Override
61 @SuppressWarnings("unchecked")
62 public void afterInit(final UsersDialogUI ui) {
63 initUI(ui);
64
65 getUI().getUsersList().setCellRenderer(newListCellRender(PersonDTO.class));
66
67 getModel().addPropertyChangeListener(UsersDialogUIModel.PROPERTY_PROGRAM, evt -> {
68
69 if (getModel().getProgram() == null) {
70 return;
71 }
72
73 Assert.notNull(getModel().getManagerList(), "must set the managerList property before program");
74
75 Collection<PersonDTO> users = getModel().getManagerList()
76 ? getModel().getProgram().getManagerPersons()
77 : getModel().getProgram().getRecorderPersons();
78
79 getUI().setTitle(getModel().getManagerList()
80 ? t("dali.program.program.managers.title", decorate(getModel().getProgram()))
81 : t("dali.program.program.recorderPersons.title", decorate(getModel().getProgram())));
82
83 if (getModel().getProgram().isEditable()) {
84 getUI().getListPanelLayout().setSelected(DOUBLE_LIST);
85
86
87 getUI().getFilterElementUserUI().getFilterDoubleList().getModel().setSelected(Lists.newArrayList(users));
88 getUI().getFilterElementUserUI().getHandler().enable();
89
90 } else {
91 getUI().getListPanelLayout().setSelected(LIST);
92
93 getUI().getUsersList().setListData(users.toArray(new PersonDTO[users.size()]));
94 }
95
96 });
97
98 }
99
100
101
102
103 public void valid() {
104
105
106 if (getModel().getProgram().isEditable()) {
107
108 List<PersonDTO> users = getUI().getFilterElementUserUI().getModel().getElements();
109
110 if (getModel().getManagerList()) {
111
112
113 if (DaliBeans.findByProperty(users, PersonDTO.PROPERTY_ID, SecurityContextHelper.getQuadrigeUserId()) == null) {
114
115 if (getContext().getDialogHelper().showConfirmDialog(getUI(),
116 t("dali.program.program.managers.removeCurrent.message", decorate(getModel().getProgram())),
117 t("dali.program.program.managers.title", decorate(getModel().getProgram())),
118 JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION) {
119 closeDialog();
120 return;
121 }
122
123 }
124
125 getModel().getProgram().setManagerPersons(users);
126 } else {
127 getModel().getProgram().setRecorderPersons(users);
128 }
129 }
130
131
132 closeDialog();
133 }
134
135
136 @Override
137 public void cancel() {
138 closeDialog();
139 }
140 }