1 package fr.ifremer.dali.ui.swing.content.manage.referential.user.national;
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.referential.PersonDTO;
27 import fr.ifremer.dali.service.StatusFilter;
28 import fr.ifremer.dali.ui.swing.content.manage.referential.user.menu.UserMenuUIModel;
29 import fr.ifremer.dali.ui.swing.content.manage.referential.user.privileges.PrivilegesDialogUI;
30 import fr.ifremer.dali.ui.swing.content.manage.referential.user.table.UserRowModel;
31 import fr.ifremer.dali.ui.swing.content.manage.referential.user.table.UserTableModel;
32 import fr.ifremer.dali.ui.swing.content.manage.referential.user.table.UserTableUIModel;
33 import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableModel;
34 import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableUIHandler;
35 import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
36 import fr.ifremer.quadrige3.ui.swing.table.editor.ButtonCellEditor;
37 import fr.ifremer.quadrige3.ui.swing.table.renderer.ButtonCellRenderer;
38 import org.jdesktop.swingx.table.TableColumnExt;
39
40 import java.awt.Dimension;
41 import java.util.List;
42
43 import static org.nuiton.i18n.I18n.t;
44
45
46
47
48 public class ManageUsersNationalUIHandler extends AbstractDaliTableUIHandler<UserRowModel, UserTableUIModel, ManageUsersNationalUI> {
49
50
51 @Override
52 public void beforeInit(ManageUsersNationalUI ui) {
53 super.beforeInit(ui);
54
55
56 UserTableUIModel model = new UserTableUIModel();
57 ui.setContextValue(model);
58
59 }
60
61
62 @Override
63 @SuppressWarnings("unchecked")
64 public void afterInit(ManageUsersNationalUI ui) {
65 initUI(ui);
66
67
68 ui.getUserMenuUI().getHandler().enableContextFilter(false);
69
70
71 ui.getUserMenuUI().getModel().addPropertyChangeListener(UserMenuUIModel.PROPERTY_RESULTS, evt -> getModel().setBeans((List<PersonDTO>) evt.getNewValue()));
72
73 initTable();
74
75 }
76
77 private void initTable() {
78
79
80 final SwingTable table = getTable();
81
82
83 TableColumnExt lastnameCol = addColumn(UserTableModel.LASTNAME);
84 lastnameCol.setSortable(true);
85
86
87 TableColumnExt firstnameCol = addColumn(UserTableModel.FIRSTNAME);
88 firstnameCol.setSortable(true);
89
90
91
92 TableColumnExt depCol = addFilterableComboDataColumnToModel(
93 UserTableModel.DEPARTMENT,
94 getContext().getReferentialService().getDepartments(StatusFilter.ALL),
95 true);
96 depCol.setSortable(true);
97
98
99 TableColumnExt emailCol = addColumn(UserTableModel.EMAIL);
100 emailCol.setSortable(true);
101
102
103 TableColumnExt phoneCol = addColumn(UserTableModel.PHONE);
104 phoneCol.setSortable(true);
105
106
107 addCommentColumn(UserTableModel.COMMENT, false);
108 TableColumnExt creationDateCol = addDatePickerColumnToModel(UserTableModel.CREATION_DATE, getConfig().getDateTimeFormat(), false);
109 fixColumnWidth(creationDateCol, 120);
110 TableColumnExt updateDateCol = addDatePickerColumnToModel(UserTableModel.UPDATE_DATE, getConfig().getDateTimeFormat(), false);
111 fixColumnWidth(updateDateCol, 120);
112
113
114 TableColumnExt statusCol = addFilterableComboDataColumnToModel(
115 UserTableModel.STATUS,
116 getContext().getReferentialService().getStatus(StatusFilter.ALL),
117 false);
118 statusCol.setSortable(true);
119
120
121 TableColumnExt privilegesCol = addColumn(
122 new ButtonCellEditor() {
123 @Override
124 public void onButtonCellAction(int row, int column) {
125
126 PrivilegesDialogUI dialog = new PrivilegesDialogUI(getContext());
127 int rowModelIndex = getTable().convertRowIndexToModel(row);
128 UserRowModel rowModel = getTableModel().getEntry(rowModelIndex);
129 dialog.getModel().setUser(rowModel);
130 dialog.getModel().setEditable(false);
131 openDialog(dialog, new Dimension(600, 200));
132 }
133
134 },
135 new ButtonCellRenderer<Integer>(),
136 UserTableModel.PRIVILEGES);
137 privilegesCol.setMaxWidth(100);
138 privilegesCol.setWidth(100);
139 privilegesCol.setSortable(false);
140
141
142
143
144 TableColumnExt idCol = addColumn(UserTableModel.REG_CODE);
145 idCol.setSortable(true);
146 fixColumnWidth(idCol, 80);
147
148
149 TableColumnExt intranetLoginCol = addColumn(UserTableModel.INTRANET_LOGIN);
150 intranetLoginCol.setSortable(true);
151
152
153 TableColumnExt extranetLoginCol = addColumn(UserTableModel.EXTRANET_LOGIN);
154 extranetLoginCol.setSortable(true);
155
156
157 TableColumnExt addressCol = addColumn(UserTableModel.ADDRESS);
158 addressCol.setSortable(true);
159
160
161 TableColumnExt organismCol = addColumn(UserTableModel.ORGANISM);
162 organismCol.setSortable(true);
163
164
165 TableColumnExt adminCenterCol = addColumn(UserTableModel.ADMIN_CENTER);
166 adminCenterCol.setSortable(true);
167
168
169 TableColumnExt siteCol = addColumn(UserTableModel.SITE);
170 siteCol.setSortable(true);
171
172
173 UserTableModel tableModel = new UserTableModel(getTable().getColumnModel(), false);
174 table.setModel(tableModel);
175
176 addExportToCSVAction(t("dali.property.user"), UserTableModel.PRIVILEGES);
177
178
179 initTable(table, true);
180
181
182 tableModel.setNoneEditableCols(
183 UserTableModel.REG_CODE,
184 UserTableModel.FIRSTNAME,
185 UserTableModel.LASTNAME,
186 UserTableModel.DEPARTMENT,
187 UserTableModel.EMAIL,
188 UserTableModel.PHONE,
189 UserTableModel.STATUS,
190 UserTableModel.ADDRESS,
191 UserTableModel.INTRANET_LOGIN,
192 UserTableModel.EXTRANET_LOGIN,
193 UserTableModel.ORGANISM,
194 UserTableModel.ADMIN_CENTER,
195 UserTableModel.SITE);
196
197
198 idCol.setVisible(false);
199 intranetLoginCol.setVisible(false);
200 extranetLoginCol.setVisible(false);
201 addressCol.setVisible(false);
202 organismCol.setVisible(false);
203 adminCenterCol.setVisible(false);
204 siteCol.setVisible(false);
205
206 creationDateCol.setVisible(false);
207 updateDateCol.setVisible(false);
208
209
210 table.setVisibleRowCount(5);
211 }
212
213
214 @Override
215 public AbstractDaliTableModel<UserRowModel> getTableModel() {
216 return (UserTableModel) getTable().getModel();
217 }
218
219
220 @Override
221 public SwingTable getTable() {
222 return ui.getManageUsersNationalTable();
223 }
224
225 }