1 package fr.ifremer.dali.ui.swing.content.manage.referential.user.privileges;
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.PrivilegeDTO;
28 import fr.ifremer.dali.ui.swing.util.AbstractDaliUIHandler;
29 import org.nuiton.jaxx.application.swing.util.Cancelable;
30
31 import java.util.List;
32
33
34
35
36 public class PrivilegesDialogUIHandler extends AbstractDaliUIHandler<PrivilegesDialogUIModel, PrivilegesDialogUI> implements Cancelable {
37
38
39 public static final String DOUBLE_LIST = "doubleList";
40
41 public static final String LIST = "list";
42
43
44 @Override
45 public void beforeInit(PrivilegesDialogUI ui) {
46 super.beforeInit(ui);
47
48 PrivilegesDialogUIModel model = new PrivilegesDialogUIModel();
49 ui.setContextValue(model);
50 }
51
52
53 @Override
54 @SuppressWarnings("unchecked")
55 public void afterInit(final PrivilegesDialogUI ui) {
56 initUI(ui);
57
58 initBeanList(getUI().getPrivilegesDoubleList(), getContext().getUserService().getAvailablePrivileges(), null);
59 getUI().getPrivilegesList().setCellRenderer(newListCellRender(PrivilegeDTO.class));
60
61 getModel().addPropertyChangeListener(PrivilegesDialogUIModel.PROPERTY_USER, evt -> {
62
63
64 List<PrivilegeDTO> privileges = Lists.newArrayList(getModel().getUser().getPrivilege());
65 getUI().getPrivilegesDoubleList().getModel().setSelected(privileges);
66 getUI().getPrivilegesList().setListData(privileges.toArray(new PrivilegeDTO[privileges.size()]));
67 });
68
69 getModel().addPropertyChangeListener(PrivilegesDialogUIModel.PROPERTY_EDITABLE, evt -> {
70
71
72 if (getModel().isEditable()) {
73 getUI().getListPanelLayout().setSelected(DOUBLE_LIST);
74 } else {
75 getUI().getListPanelLayout().setSelected(LIST);
76 }
77
78 });
79 }
80
81
82
83
84 public void valid() {
85
86
87 if (getModel().isEditable()) {
88 getModel().getUser().setPrivilege(getUI().getPrivilegesDoubleList().getModel().getSelected());
89 }
90
91
92 closeDialog();
93 }
94
95
96 @Override
97 public void cancel() {
98 closeDialog();
99 }
100 }