1 package fr.ifremer.dali.ui.swing.content.manage.referential.taxon.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.TaxonDTO;
27 import fr.ifremer.dali.ui.swing.content.manage.filter.element.menu.ApplyFilterUIModel;
28 import fr.ifremer.dali.ui.swing.content.manage.referential.taxon.menu.TaxonMenuUIModel;
29 import fr.ifremer.dali.ui.swing.content.manage.referential.taxon.table.TaxonTableModel;
30 import fr.ifremer.dali.ui.swing.content.manage.referential.taxon.table.TaxonTableRowModel;
31 import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableModel;
32 import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableUIHandler;
33 import fr.ifremer.dali.ui.swing.util.table.editor.AssociatedTaxonCellEditor;
34 import fr.ifremer.dali.ui.swing.util.table.renderer.AssociatedTaxonCellRenderer;
35 import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
36 import org.jdesktop.swingx.table.TableColumnExt;
37
38 import java.util.List;
39
40 import static org.nuiton.i18n.I18n.t;
41
42
43
44
45 public class TaxonsNationalUIHandler extends AbstractDaliTableUIHandler<TaxonTableRowModel, TaxonsNationalUIModel, TaxonsNationalUI> {
46
47
48 @Override
49 public void beforeInit(TaxonsNationalUI ui) {
50 super.beforeInit(ui);
51
52
53 TaxonsNationalUIModel model = new TaxonsNationalUIModel();
54 ui.setContextValue(model);
55
56 }
57
58
59 @Override
60 @SuppressWarnings("unchecked")
61 public void afterInit(TaxonsNationalUI ui) {
62 initUI(ui);
63
64 TaxonMenuUIModel nationalMenuModel = ui.getTaxonsNationalMenuUI().getModel();
65
66
67 nationalMenuModel.setFullProperties(true);
68
69
70 nationalMenuModel.addPropertyChangeListener(TaxonMenuUIModel.PROPERTY_RESULTS,
71 evt -> getModel().setBeans((List<TaxonDTO>) evt.getNewValue()));
72
73
74
75 ui.getTaxonsNationalMenuUI().getApplyFilterUI().getModel().addPropertyChangeListener(ApplyFilterUIModel.PROPERTY_ELEMENTS, evt -> {
76
77 List<TaxonDTO> taxons = (List<TaxonDTO>) evt.getNewValue();
78
79
80 getContext().getReferentialService().fillTaxonsProperties(taxons);
81
82
83 getModel().setBeans(taxons);
84 });
85
86 initTable();
87
88 }
89
90 private void initTable() {
91
92
93 final SwingTable table = getTable();
94
95
96 TableColumnExt nameCol = addColumn(TaxonTableModel.NAME);
97 nameCol.setSortable(true);
98 nameCol.setEditable(false);
99
100
101 TableColumnExt citationCol = addFilterableComboDataColumnToModel(
102 TaxonTableModel.CITATION,
103 getContext().getReferentialService().getCitations(),
104 false);
105 citationCol.setSortable(true);
106 citationCol.setEditable(false);
107
108
109 TableColumnExt refTaxonCol = addFilterableComboDataColumnToModel(
110 TaxonTableModel.REFERENCE_TAXON,
111 getContext().getReferentialService().getTaxons(null),
112 false);
113 refTaxonCol.setSortable(true);
114 refTaxonCol.setEditable(false);
115
116
117 TableColumnExt parentTaxonCol = addFilterableComboDataColumnToModel(
118 TaxonTableModel.PARENT,
119 getContext().getReferentialService().getTaxons(null),
120 false);
121 parentTaxonCol.setSortable(true);
122 parentTaxonCol.setEditable(false);
123
124
125 TableColumnExt levelCol = addFilterableComboDataColumnToModel(
126 TaxonTableModel.LEVEL,
127 getContext().getReferentialService().getTaxonomicLevels(),
128 false);
129 levelCol.setSortable(true);
130 levelCol.setEditable(false);
131
132
133 addCommentColumn(TaxonTableModel.COMMENT, false);
134 TableColumnExt creationDateCol = addDatePickerColumnToModel(TaxonTableModel.CREATION_DATE, getConfig().getDateTimeFormat(), false);
135 fixColumnWidth(creationDateCol, 120);
136 TableColumnExt updateDateCol = addDatePickerColumnToModel(TaxonTableModel.UPDATE_DATE, getConfig().getDateTimeFormat(), false);
137 fixColumnWidth(updateDateCol, 120);
138
139
140 TableColumnExt temporaryCol = addBooleanColumnToModel(TaxonTableModel.TEMPORARY, table);
141 temporaryCol.setSortable(true);
142 temporaryCol.setEditable(false);
143
144
145 TableColumnExt obsoleteCol = addBooleanColumnToModel(TaxonTableModel.OBSOLETE, table);
146 obsoleteCol.setSortable(true);
147 obsoleteCol.setEditable(false);
148
149
150 TableColumnExt virtualCol = addBooleanColumnToModel(TaxonTableModel.VIRTUAL, table);
151 virtualCol.setSortable(true);
152 virtualCol.setEditable(false);
153
154
155 TableColumnExt compositesCol = addColumn(
156 new AssociatedTaxonCellEditor(getTable(), getUI()),
157 new AssociatedTaxonCellRenderer(),
158 TaxonTableModel.COMPOSITES);
159 compositesCol.setSortable(true);
160
161
162 TableColumnExt taxRefCol = addColumn(TaxonTableModel.TAXREF);
163 taxRefCol.setSortable(true);
164 taxRefCol.setEditable(false);
165
166
167 TableColumnExt wormsCol = addColumn(TaxonTableModel.WORMS);
168 wormsCol.setSortable(true);
169 wormsCol.setEditable(false);
170
171 TaxonTableModel tableModel = new TaxonTableModel(getTable().getColumnModel(), false);
172 table.setModel(tableModel);
173
174 addExportToCSVAction(t("dali.property.taxon"), TaxonTableModel.COMPOSITES);
175
176
177 initTable(table, true);
178
179
180 temporaryCol.setVisible(false);
181 obsoleteCol.setVisible(false);
182 virtualCol.setVisible(false);
183 compositesCol.setVisible(false);
184 taxRefCol.setVisible(false);
185 wormsCol.setVisible(false);
186
187 creationDateCol.setVisible(false);
188 updateDateCol.setVisible(false);
189
190 table.setVisibleRowCount(5);
191
192 }
193
194
195
196 @Override
197 public AbstractDaliTableModel<TaxonTableRowModel> getTableModel() {
198 return (TaxonTableModel) getTable().getModel();
199 }
200
201
202 @Override
203 public SwingTable getTable() {
204 return ui.getTaxonsNationalTable();
205 }
206
207
208 }