View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.referential.pmfm.national;
2   
3   /*
4    * #%L
5    * Dali :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2015 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import fr.ifremer.dali.decorator.DecoratorService;
27  import fr.ifremer.dali.dto.referential.pmfm.PmfmDTO;
28  import fr.ifremer.dali.ui.swing.content.manage.filter.element.menu.ApplyFilterUIModel;
29  import fr.ifremer.dali.ui.swing.content.manage.referential.pmfm.menu.PmfmMenuUIModel;
30  import fr.ifremer.dali.ui.swing.content.manage.referential.pmfm.table.PmfmTableModel;
31  import fr.ifremer.dali.ui.swing.content.manage.referential.pmfm.table.PmfmTableRowModel;
32  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableModel;
33  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableUIHandler;
34  import fr.ifremer.dali.ui.swing.util.table.editor.AssociatedQualitativeValueCellEditor;
35  import fr.ifremer.dali.ui.swing.util.table.renderer.AssociatedQualitativeValueCellRenderer;
36  import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
37  import org.jdesktop.swingx.table.TableColumnExt;
38  
39  import java.util.List;
40  
41  import static org.nuiton.i18n.I18n.t;
42  
43  /**
44   * Controlleur pour la gestion des Quadruplets au niveau national
45   */
46  public class PmfmsNationalUIHandler extends
47          AbstractDaliTableUIHandler<PmfmTableRowModel, PmfmsNationalUIModel, PmfmsNationalUI> {
48  
49      /** {@inheritDoc} */
50      @Override
51      public void beforeInit(PmfmsNationalUI ui) {
52          super.beforeInit(ui);
53          
54          // create model and register to the JAXX context
55          PmfmsNationalUIModel model = new PmfmsNationalUIModel();
56          ui.setContextValue(model);
57  
58      }
59  
60      /** {@inheritDoc} */
61      @Override
62      @SuppressWarnings("unchecked")
63      public void afterInit(PmfmsNationalUI ui) {
64          initUI(ui);
65          
66          // hide 'apply filter'
67          ui.getPmfmsNationalMenuUI().getHandler().enableContextFilter(false);
68  
69          // listen to search results
70          ui.getPmfmsNationalMenuUI().getModel().addPropertyChangeListener(PmfmMenuUIModel.PROPERTY_RESULTS,
71                  evt -> getModel().setBeans((List<PmfmDTO>) evt.getNewValue()));
72          
73          // listen to 'apply filter' results
74          ui.getPmfmsNationalMenuUI().getApplyFilterUI().getModel().addPropertyChangeListener(ApplyFilterUIModel.PROPERTY_ELEMENTS,
75                  evt -> getModel().setBeans((List<PmfmDTO>) evt.getNewValue()));
76  
77          initTable();
78  
79      }
80  
81      private void initTable() {
82  
83          // Le tableau
84          final SwingTable table = getTable();
85  
86          TableColumnExt idCol = addColumn(PmfmTableModel.PMFM_ID);
87          idCol.setSortable(true);
88          idCol.setEditable(false);
89  
90          // name
91          TableColumnExt nameCol = addColumn(PmfmTableModel.NAME);
92          nameCol.setSortable(true);
93          nameCol.setEditable(false);
94  
95          // parameter
96  
97          TableColumnExt parameterCol = addColumn(
98                  null,
99                  newTableCellRender(
100                         PmfmTableModel.PARAMETER.getPropertyType(),
101                         PmfmTableModel.PARAMETER.getDecoratorName(),
102                         DecoratorService.NAME // Transcribed name as tooltip (Mantis #47110)
103                 ),
104                 PmfmTableModel.PARAMETER);
105         parameterCol.setSortable(true);
106         parameterCol.setEditable(false);
107 
108         // support
109         final TableColumnExt supportCol = addColumn(PmfmTableModel.SUPPORT);
110         supportCol.setSortable(true);
111         supportCol.setEditable(false);
112 
113         // fraction
114         final TableColumnExt fractionCol = addColumn(PmfmTableModel.FRACTION);
115         fractionCol.setSortable(true);
116         fractionCol.setEditable(false);
117 
118         // method
119         final TableColumnExt methodCol = addColumn(PmfmTableModel.METHOD);
120         methodCol.setSortable(true);
121         methodCol.setEditable(false);
122 
123         // unit
124         final TableColumnExt unitCol = addColumn(PmfmTableModel.UNIT);
125         unitCol.setSortable(true);
126         unitCol.setEditable(false);
127 
128 //		// threshold
129 //		final TableColumnExt stepCol = addColumnToModel(columnModel, PmfmTableModel.THRESHOLD);
130 //		stepCol.setSortable(true);
131 //		stepCol.setEditable(false);
132 //
133 //		// max decimal number
134 //		final TableColumnExt maxDecimalNumberCol = addColumnToModel(columnModel, PmfmTableModel.MAX_DECIMAL_NUMBER);
135 //		maxDecimalNumberCol.setSortable(true);
136 //		maxDecimalNumberCol.setEditable(false);
137 //
138 //		// significant digits number
139 //		final TableColumnExt significantDigitsNumberCol = addColumnToModel(columnModel, PmfmTableModel.SIGNIFICANT_DIGITS_NUMBER);
140 //		significantDigitsNumberCol.setSortable(true);
141 //		significantDigitsNumberCol.setEditable(false);
142 
143         // Comment, creation and update dates
144         addCommentColumn(PmfmTableModel.COMMENT, false);
145         TableColumnExt creationDateCol = addDatePickerColumnToModel(PmfmTableModel.CREATION_DATE, getConfig().getDateTimeFormat(), false);
146         fixColumnWidth(creationDateCol, 120);
147         TableColumnExt updateDateCol = addDatePickerColumnToModel(PmfmTableModel.UPDATE_DATE, getConfig().getDateTimeFormat(), false);
148         fixColumnWidth(updateDateCol, 120);
149 
150         // status
151         final TableColumnExt statusCol = addColumn(PmfmTableModel.STATUS);
152         statusCol.setSortable(true);
153         statusCol.setEditable(false);
154         fixDefaultColumnWidth(statusCol);
155 
156         // Associated qualitative value
157         final TableColumnExt associatedQualitativeValueCol = addColumn(
158                 new AssociatedQualitativeValueCellEditor(getTable(), getUI(), false),
159                 new AssociatedQualitativeValueCellRenderer(),
160                 PmfmTableModel.QUALITATIVE_VALUES);
161         associatedQualitativeValueCol.setSortable(true);
162         fixColumnWidth(associatedQualitativeValueCol, 120);
163 
164         PmfmTableModel tableModel = new PmfmTableModel(getTable().getColumnModel());
165         table.setModel(tableModel);
166 
167         addExportToCSVAction(t("dali.property.pmfm"), PmfmTableModel.QUALITATIVE_VALUES);
168 
169         // Initialisation du tableau
170         initTable(table, true);
171 
172         // Les colonnes optionnelles sont invisibles
173         associatedQualitativeValueCol.setVisible(false);
174         idCol.setVisible(false);
175 //		stepCol.setVisible(false);
176 //		maxDecimalNumberCol.setVisible(false);
177 //		significantDigitsNumberCol.setVisible(false);
178 
179         creationDateCol.setVisible(false);
180         updateDateCol.setVisible(false);
181 
182         table.setVisibleRowCount(5);
183     }
184 
185 
186 
187     /** {@inheritDoc} */
188     @Override
189     public AbstractDaliTableModel<PmfmTableRowModel> getTableModel() {
190         return (PmfmTableModel) getTable().getModel();
191     }
192 
193     /** {@inheritDoc} */
194     @Override
195     public SwingTable getTable() {
196         return ui.getPmfmsNationalTable();
197     }
198 
199 }