View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.referential.analysisinstruments.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.dto.referential.AnalysisInstrumentDTO;
27  import fr.ifremer.dali.service.StatusFilter;
28  import fr.ifremer.dali.ui.swing.content.manage.filter.element.menu.ApplyFilterUIModel;
29  import fr.ifremer.dali.ui.swing.content.manage.referential.analysisinstruments.menu.AnalysisInstrumentsMenuUIModel;
30  import fr.ifremer.dali.ui.swing.content.manage.referential.analysisinstruments.table.AnalysisInstrumentsTableModel;
31  import fr.ifremer.dali.ui.swing.content.manage.referential.analysisinstruments.table.AnalysisInstrumentsTableRowModel;
32  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableModel;
33  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableUIHandler;
34  import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
35  import org.jdesktop.swingx.table.TableColumnExt;
36  
37  import java.util.List;
38  
39  import static org.nuiton.i18n.I18n.t;
40  
41  /**
42   * Controlleur pour la gestion des analysisInstruments au niveau national
43   */
44  public class AnalysisInstrumentsNationalUIHandler extends AbstractDaliTableUIHandler<AnalysisInstrumentsTableRowModel, AnalysisInstrumentsNationalUIModel, AnalysisInstrumentsNationalUI> {
45  
46      /** {@inheritDoc} */
47      @Override
48      public void beforeInit(AnalysisInstrumentsNationalUI ui) {
49          super.beforeInit(ui);
50          
51          // create model and register to the JAXX context
52          AnalysisInstrumentsNationalUIModel model = new AnalysisInstrumentsNationalUIModel();
53          ui.setContextValue(model);
54  
55      }
56  
57      /** {@inheritDoc} */
58      @Override
59      @SuppressWarnings("unchecked")
60      public void afterInit(AnalysisInstrumentsNationalUI ui) {
61          initUI(ui);
62  
63          // init listener on found analysis instruments
64          ui.getAnalysisInstrumentsNationalMenuUI().getModel().addPropertyChangeListener(AnalysisInstrumentsMenuUIModel.PROPERTY_RESULTS, evt -> {
65  
66              if (evt.getNewValue() != null) {
67                  getModel().setBeans((List<AnalysisInstrumentDTO>) evt.getNewValue());
68              }
69          });
70          
71          // listen to 'apply filter' results
72          ui.getAnalysisInstrumentsNationalMenuUI().getApplyFilterUI().getModel().addPropertyChangeListener(ApplyFilterUIModel.PROPERTY_ELEMENTS,
73                  evt -> getModel().setBeans((List<AnalysisInstrumentDTO>) evt.getNewValue()));
74  
75          initTable();
76  
77      }
78  
79      private void initTable() {
80  
81          // Le tableau
82          final SwingTable table = getTable();
83  
84          // mnemonic
85          TableColumnExt mnemonicCol = addColumn(AnalysisInstrumentsTableModel.NAME);
86          mnemonicCol.setSortable(true);
87          mnemonicCol.setEditable(false);
88  
89          // description
90          TableColumnExt descriptionCol = addColumn(AnalysisInstrumentsTableModel.DESCRIPTION);
91          descriptionCol.setSortable(true);
92          descriptionCol.setEditable(false);
93  
94          // Comment, creation and update dates
95          addCommentColumn(AnalysisInstrumentsTableModel.COMMENT, false);
96          TableColumnExt creationDateCol = addDatePickerColumnToModel(AnalysisInstrumentsTableModel.CREATION_DATE, getConfig().getDateTimeFormat(), false);
97          fixColumnWidth(creationDateCol, 120);
98          TableColumnExt updateDateCol = addDatePickerColumnToModel(AnalysisInstrumentsTableModel.UPDATE_DATE, getConfig().getDateTimeFormat(), false);
99          fixColumnWidth(updateDateCol, 120);
100 
101         // status
102         TableColumnExt statusCol = addFilterableComboDataColumnToModel(
103                 AnalysisInstrumentsTableModel.STATUS,
104                 getContext().getReferentialService().getStatus(StatusFilter.ACTIVE),
105                 false);
106         statusCol.setSortable(true);
107         statusCol.setEditable(false);
108 
109         AnalysisInstrumentsTableModel tableModel = new AnalysisInstrumentsTableModel(getTable().getColumnModel(), false);
110         table.setModel(tableModel);
111 
112         addExportToCSVAction(t("dali.property.analysisInstrument"));
113 
114         // Initialisation du tableau
115         initTable(table, true);
116 
117         creationDateCol.setVisible(false);
118         updateDateCol.setVisible(false);
119 
120         // Number rows visible
121         table.setVisibleRowCount(5);
122     }
123 
124     /**
125      * <p>clearTable.</p>
126      */
127     public void clearTable() {
128     	getModel().setBeans(null);
129     }
130     
131     /** {@inheritDoc} */
132     @Override
133     public AbstractDaliTableModel<AnalysisInstrumentsTableRowModel> getTableModel() {
134         return (AnalysisInstrumentsTableModel) getTable().getModel();
135     }
136 
137     /** {@inheritDoc} */
138     @Override
139     public SwingTable getTable() {
140         return getUI().getAnalysisInstrumentsNationalTable();
141     }
142 }