1 package fr.ifremer.reefdb.ui.swing.content.observation.survey.measurement.grouped;
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.ImmutableList;
27 import fr.ifremer.quadrige3.ui.swing.table.ColumnIdentifier;
28 import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
29 import fr.ifremer.reefdb.dto.data.measurement.MeasurementAware;
30 import fr.ifremer.reefdb.ui.swing.content.observation.shared.AbstractMeasurementsGroupedTableModel;
31 import fr.ifremer.reefdb.ui.swing.content.observation.shared.AbstractMeasurementsGroupedTableUIHandler;
32 import fr.ifremer.reefdb.ui.swing.content.observation.survey.measurement.grouped.multiedit.SurveyMeasurementsMultiEditUI;
33 import jaxx.runtime.SwingUtil;
34 import org.jdesktop.swingx.table.TableColumnExt;
35
36 import javax.swing.BorderFactory;
37 import javax.swing.JPanel;
38 import javax.swing.JToggleButton;
39 import javax.swing.RowFilter;
40 import javax.swing.border.Border;
41 import java.util.List;
42
43
44
45
46 public class SurveyMeasurementsGroupedTableUIHandler
47 extends AbstractMeasurementsGroupedTableUIHandler<SurveyMeasurementsGroupedRowModel, SurveyMeasurementsGroupedTableUIModel, SurveyMeasurementsGroupedTableUI> {
48
49
50 private Border initialToggleButtonBorder;
51
52
53
54
55 public SurveyMeasurementsGroupedTableUIHandler() {
56 super(SurveyMeasurementsGroupedRowModel.PROPERTY_TAXON_GROUP,
57 SurveyMeasurementsGroupedRowModel.PROPERTY_TAXON,
58 SurveyMeasurementsGroupedRowModel.PROPERTY_INDIVIDUAL_PMFMS,
59 SurveyMeasurementsGroupedRowModel.PROPERTY_COMMENT);
60 }
61
62
63
64
65 @Override
66 public AbstractMeasurementsGroupedTableModel<SurveyMeasurementsGroupedRowModel> getTableModel() {
67 return (SurveyMeasurementsGroupedTableModel) getTable().getModel();
68 }
69
70
71
72
73 @Override
74 public SwingTable getTable() {
75 return getUI().getSurveyGroupedMeasurementTable();
76 }
77
78 @Override
79 protected SurveyMeasurementsGroupedTableUIModel createNewModel() {
80 return new SurveyMeasurementsGroupedTableUIModel();
81 }
82
83
84
85
86 @Override
87 public void afterInit(final SurveyMeasurementsGroupedTableUI ui) {
88
89 super.afterInit(ui);
90
91
92 getUI().getDeleteButton().setEnabled(false);
93 getUI().getDuplicateButton().setEnabled(false);
94 SwingUtil.setLayerUI(ui.getTableauBasScrollPane(), ui.getTableBlockLayer());
95
96
97 initialToggleButtonBorder = getUI().getFullScreenToggleButton().getBorder();
98
99 }
100
101 @Override
102 public void toggleFullScreen(JPanel panel, JToggleButton toggleButton) {
103 super.toggleFullScreen(panel, toggleButton);
104
105
106 toggleButton.setBorder(
107 toggleButton.isSelected()
108 ? BorderFactory.createCompoundBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, getConfig().getColorHighlightButtonBorder()), initialToggleButtonBorder)
109 : initialToggleButtonBorder
110 );
111
112 }
113
114 @Override
115 protected void filterMeasurements() {
116
117 getTable().getColumnExt(SurveyMeasurementsGroupedTableModel.TAXON_GROUP).setEditable(getModel().getTaxonGroupFilter() == null);
118 getTable().getColumnExt(SurveyMeasurementsGroupedTableModel.TAXON).setEditable(getModel().getTaxonFilter() == null);
119
120 if (getModel().getTaxonGroupFilter() == null && getModel().getTaxonFilter() == null) {
121
122 getTable().setRowFilter(null);
123 } else {
124
125 getTable().setRowFilter(new RowFilter<SurveyMeasurementsGroupedTableModel, Integer>() {
126 @Override
127 public boolean include(Entry<? extends SurveyMeasurementsGroupedTableModel, ? extends Integer> entry) {
128 return (getModel().getTaxonGroupFilter() == null
129 || getModel().getTaxonGroupFilter().equals(entry.getValue(getTable().getColumnExt(SurveyMeasurementsGroupedTableModel.TAXON_GROUP).getModelIndex())))
130 && (getModel().getTaxonFilter() == null
131 || getModel().getTaxonFilter().equals(entry.getValue(getTable().getColumnExt(SurveyMeasurementsGroupedTableModel.TAXON).getModelIndex())));
132 }
133 });
134 }
135 }
136
137 @Override
138 protected List<? extends MeasurementAware> getMeasurementAwareModels() {
139 return ImmutableList.of(getModel().getSurvey());
140 }
141
142 @Override
143 protected SurveyMeasurementsGroupedRowModel createNewRow(boolean readOnly, MeasurementAware parentBean) {
144 return new SurveyMeasurementsGroupedRowModel(readOnly);
145 }
146
147 @Override
148 protected MeasurementAware getMeasurementAwareModelForRow(SurveyMeasurementsGroupedRowModel row) {
149 return getModel().getSurvey();
150 }
151
152
153
154
155 @Override
156 protected void initTable() {
157
158 if (getConfig().isDebugMode()) {
159 TableColumnExt indivIdCol = addColumn((ColumnIdentifier<SurveyMeasurementsGroupedRowModel>) AbstractMeasurementsGroupedTableModel.INDIVIDUAL_ID);
160 indivIdCol.setSortable(true);
161 setDefaultColumnMinWidth(indivIdCol);
162 }
163
164
165 final TableColumnExt colTaxonGroup = addColumn(
166 taxonGroupCellEditor,
167 newTableCellRender(SurveyMeasurementsGroupedTableModel.TAXON_GROUP),
168 SurveyMeasurementsGroupedTableModel.TAXON_GROUP);
169 colTaxonGroup.setSortable(true);
170 setDefaultColumnMinWidth(colTaxonGroup);
171
172
173 final TableColumnExt colTaxon = addColumn(
174 taxonCellEditor,
175 newTableCellRender(SurveyMeasurementsGroupedTableModel.TAXON),
176 SurveyMeasurementsGroupedTableModel.TAXON);
177 colTaxon.setSortable(true);
178 setDefaultColumnMinWidth(colTaxon);
179
180
181 final TableColumnExt colInputTaxon = addColumn(SurveyMeasurementsGroupedTableModel.INPUT_TAXON_NAME);
182 colInputTaxon.setSortable(true);
183 colInputTaxon.setEditable(false);
184 setDefaultColumnMinWidth(colInputTaxon);
185
186
187 final TableColumnExt colAnalyst = addColumn(
188 departmentCellEditor,
189 newTableCellRender(AbstractMeasurementsGroupedTableModel.ANALYST),
190 (ColumnIdentifier<SurveyMeasurementsGroupedRowModel>) AbstractMeasurementsGroupedTableModel.ANALYST);
191 colAnalyst.setSortable(true);
192 setDefaultColumnMinWidth(colAnalyst);
193
194
195 final TableColumnExt colComment = addCommentColumn(SurveyMeasurementsGroupedTableModel.COMMENT);
196
197
198 final SurveyMeasurementsGroupedTableModel tableModel = new SurveyMeasurementsGroupedTableModel(getTable().getColumnModel(), true);
199 tableModel.setNoneEditableCols();
200 getTable().setModel(tableModel);
201
202
203 initTable(getTable());
204
205 colComment.setVisible(false);
206 colAnalyst.setVisible(false);
207 colInputTaxon.setVisible(false);
208
209
210 addEditionPanelBorder();
211 }
212
213 public void editSelectedMeasurements() {
214
215 editSelectedMeasurements(new SurveyMeasurementsMultiEditUI(getUI()));
216
217 }
218 }