View Javadoc
1   package fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.parameter.national;
2   
3   /*
4    * #%L
5    * Reef DB :: 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.quadrige3.ui.swing.table.SwingTable;
27  import fr.ifremer.reefdb.dto.referential.pmfm.ParameterDTO;
28  import fr.ifremer.reefdb.service.StatusFilter;
29  import fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.parameter.menu.ManageParametersMenuUIModel;
30  import fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.parameter.table.ParameterTableModel;
31  import fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.parameter.table.ParameterTableRowModel;
32  import fr.ifremer.reefdb.ui.swing.util.table.AbstractReefDbTableModel;
33  import fr.ifremer.reefdb.ui.swing.util.table.AbstractReefDbTableUIHandler;
34  import fr.ifremer.reefdb.ui.swing.util.table.editor.AssociatedQualitativeValueCellEditor;
35  import fr.ifremer.reefdb.ui.swing.util.table.renderer.AssociatedQualitativeValueCellRenderer;
36  import org.apache.commons.logging.Log;
37  import org.apache.commons.logging.LogFactory;
38  import org.jdesktop.swingx.table.TableColumnExt;
39  
40  import java.util.Collection;
41  
42  import static org.nuiton.i18n.I18n.t;
43  
44  /**
45   * Controlleur pour la gestion des Parameters au niveau national
46   */
47  public class ManageParametersNationalUIHandler extends
48          AbstractReefDbTableUIHandler<ParameterTableRowModel, ManageParametersNationalUIModel, ManageParametersNationalUI> {
49  
50      /**
51       * Logger.
52       */
53      private static final Log LOG = LogFactory.getLog(ManageParametersNationalUIHandler.class);
54  
55      /** {@inheritDoc} */
56      @Override
57      public void beforeInit(ManageParametersNationalUI ui) {
58          super.beforeInit(ui);
59  
60          // create model and register to the JAXX context
61          ManageParametersNationalUIModel model = new ManageParametersNationalUIModel();
62          ui.setContextValue(model);
63  
64      }
65  
66      /** {@inheritDoc} */
67      @Override
68      public void afterInit(ManageParametersNationalUI ui) {
69          initUI(ui);
70  
71          ManageParametersMenuUIModel menuUIModel = getUI().getMenuUI().getModel();
72          menuUIModel.setLocal(false);
73  
74          //listen to results
75          menuUIModel.addPropertyChangeListener(ManageParametersMenuUIModel.PROPERTY_RESULTS, evt -> getModel().setBeans((Collection<ParameterDTO>) evt.getNewValue()));
76  
77          initTable();
78  
79      }
80  
81      private void initTable() {
82  
83          // code
84          final TableColumnExt codeCol = addColumn(ParameterTableModel.CODE);
85          codeCol.setSortable(true);
86          codeCol.setEditable(false);
87  
88          // mnemonic
89          final TableColumnExt mnemonicCol = addColumn(ParameterTableModel.NAME);
90          mnemonicCol.setSortable(true);
91          mnemonicCol.setEditable(false);
92  
93          // description
94          final TableColumnExt descriptionCol = addColumn(ParameterTableModel.DESCRIPTION);
95          descriptionCol.setSortable(true);
96          descriptionCol.setEditable(false);
97  
98          // qualitative
99          final TableColumnExt qualitativeCol = addBooleanColumnToModel(ParameterTableModel.IS_QUALITATIVE, getTable());
100         qualitativeCol.setSortable(true);
101         qualitativeCol.setEditable(false);
102 
103         // calculated
104         final TableColumnExt calculatedCol = addBooleanColumnToModel(ParameterTableModel.IS_CALCULATED, getTable());
105         calculatedCol.setSortable(true);
106         calculatedCol.setEditable(false);
107 
108         // taxonomic
109         final TableColumnExt taxonomicCol = addBooleanColumnToModel(ParameterTableModel.IS_TAXONOMIC, getTable());
110         taxonomicCol.setSortable(true);
111         taxonomicCol.setEditable(false);
112 
113         // Associated qualitative value
114         final TableColumnExt associatedQualitativeValueCol = addColumn(
115                 new AssociatedQualitativeValueCellEditor(getTable(), getUI(), false),
116                 new AssociatedQualitativeValueCellRenderer(),
117                 ParameterTableModel.ASSOCIATED_QUALITATIVE_VALUE);
118         associatedQualitativeValueCol.setSortable(true);
119 
120         // Comment, creation and update dates
121         addCommentColumn(ParameterTableModel.COMMENT, false);
122         TableColumnExt creationDateCol = addDatePickerColumnToModel(ParameterTableModel.CREATION_DATE, getConfig().getDateTimeFormat(), false);
123         fixColumnWidth(creationDateCol, 120);
124         TableColumnExt updateDateCol = addDatePickerColumnToModel(ParameterTableModel.UPDATE_DATE, getConfig().getDateTimeFormat(), false);
125         fixColumnWidth(updateDateCol, 120);
126 
127         // status
128         final TableColumnExt statusCol = addFilterableComboDataColumnToModel(
129                 ParameterTableModel.STATUS,
130                 getContext().getReferentialService().getStatus(StatusFilter.NATIONAL),
131                 false);
132         statusCol.setSortable(true);
133         statusCol.setEditable(false);
134         fixDefaultColumnWidth(statusCol);
135 
136         // parameter group
137         final TableColumnExt parameterGroupCol = addFilterableComboDataColumnToModel(
138                 ParameterTableModel.PARAMETER_GROUP,
139                 getContext().getReferentialService().getParameterGroup(StatusFilter.ACTIVE),
140                 false);
141         parameterGroupCol.setSortable(true);
142         parameterGroupCol.setEditable(false);
143 
144         ParameterTableModel tableModel = new ParameterTableModel(getTable().getColumnModel(), false);
145         getTable().setModel(tableModel);
146 
147         // Add extraction action
148         addExportToCSVAction(t("reefdb.property.pmfm.parameters.national", ParameterTableModel.ASSOCIATED_QUALITATIVE_VALUE));
149 
150         // Initialisation du tableau
151         initTable(getTable(), true);
152 
153         // hidden columns
154         parameterGroupCol.setVisible(false);
155 
156         creationDateCol.setVisible(false);
157         updateDateCol.setVisible(false);
158 
159         getTable().setVisibleRowCount(5);
160     }
161 
162     /** {@inheritDoc} */
163     @Override
164     public AbstractReefDbTableModel<ParameterTableRowModel> getTableModel() {
165         return (ParameterTableModel) getTable().getModel();
166     }
167 
168     /** {@inheritDoc} */
169     @Override
170     public SwingTable getTable() {
171         return ui.getTable();
172     }
173 
174 }