View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.referential.taxongroup.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.TaxonGroupDTO;
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.taxongroup.menu.TaxonGroupMenuUIModel;
30  import fr.ifremer.dali.ui.swing.content.manage.referential.taxongroup.table.TaxonGroupTableModel;
31  import fr.ifremer.dali.ui.swing.content.manage.referential.taxongroup.table.TaxonGroupTableRowModel;
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.AssociatedTaxonCellEditor;
35  import fr.ifremer.dali.ui.swing.util.table.renderer.AssociatedTaxonCellRenderer;
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 groupeTaxons au niveau national
45   */
46  public class TaxonGroupNationalUIHandler extends
47          AbstractDaliTableUIHandler<TaxonGroupTableRowModel, TaxonGroupNationalUIModel, TaxonGroupNationalUI> {
48  
49      /** {@inheritDoc} */
50      @Override
51      public void beforeInit(TaxonGroupNationalUI ui) {
52          super.beforeInit(ui);
53          
54          // create model and register to the JAXX context
55          TaxonGroupNationalUIModel model = new TaxonGroupNationalUIModel();
56          ui.setContextValue(model);
57  
58      }
59  
60      /** {@inheritDoc} */
61      @Override
62      @SuppressWarnings("unchecked")
63      public void afterInit(TaxonGroupNationalUI ui) {
64          initUI(ui);
65  
66          // listen to search results
67          ui.getTaxonGroupNationalMenuUI().getModel().addPropertyChangeListener(TaxonGroupMenuUIModel.PROPERTY_RESULTS,
68                  evt -> getModel().setBeans((List<TaxonGroupDTO>) evt.getNewValue()));
69          
70          // listen to 'apply filter' results
71          ui.getTaxonGroupNationalMenuUI().getApplyFilterUI().getModel().addPropertyChangeListener(ApplyFilterUIModel.PROPERTY_ELEMENTS,
72                  evt -> getModel().setBeans((List<TaxonGroupDTO>) evt.getNewValue()));
73  
74          initTable();
75  
76      }
77  
78      private void initTable() {
79  
80          // Le tableau
81          final SwingTable table = getTable();
82  
83          // parent
84          TableColumnExt parentCol = addFilterableComboDataColumnToModel(
85                  TaxonGroupTableModel.PARENT,
86                  getContext().getReferentialService().getTaxonGroups(),
87                  true);
88          parentCol.setSortable(true);
89          parentCol.setEditable(false);
90  
91          // label
92          TableColumnExt labelCol = addColumn(TaxonGroupTableModel.LABEL);
93          labelCol.setSortable(true);
94          labelCol.setEditable(false);
95  
96          // name
97          TableColumnExt nameCol = addColumn(TaxonGroupTableModel.NAME);
98          nameCol.setSortable(true);
99          nameCol.setEditable(false);
100 
101         // status
102         TableColumnExt statusCol = addFilterableComboDataColumnToModel(
103                 TaxonGroupTableModel.STATUS,
104                 getContext().getReferentialService().getStatus(StatusFilter.ALL),
105                 false);
106         statusCol.setSortable(true);
107         statusCol.setEditable(false);
108 
109         // type
110         TableColumnExt typeCol = addColumn(TaxonGroupTableModel.TYPE);
111         typeCol.setSortable(true);
112         typeCol.setEditable(false);
113 
114         // comment
115         TableColumnExt commentCol = addCommentColumn(TaxonGroupTableModel.COMMENT, false);
116         TableColumnExt creationDateCol = addDatePickerColumnToModel(TaxonGroupTableModel.CREATION_DATE, getConfig().getDateTimeFormat(), false);
117         fixColumnWidth(creationDateCol, 120);
118         TableColumnExt updateDateCol = addDatePickerColumnToModel(TaxonGroupTableModel.UPDATE_DATE, getConfig().getDateTimeFormat(), false);
119         fixColumnWidth(updateDateCol, 120);
120 
121         // taxons
122         TableColumnExt taxonsCol = addColumn(
123                 new AssociatedTaxonCellEditor(getTable(), getUI()),
124                 new AssociatedTaxonCellRenderer(),
125                 TaxonGroupTableModel.TAXONS
126                 );
127         taxonsCol.setSortable(true);
128 
129         TaxonGroupTableModel tableModel = new TaxonGroupTableModel(getTable().getColumnModel(), true);
130         table.setModel(tableModel);
131 
132         addExportToCSVAction(t("dali.property.taxonGroup"), TaxonGroupTableModel.TAXONS);
133 
134         // Initialisation du tableau
135         initTable(table, true);
136 
137         // optionnal columns are hidden
138         typeCol.setVisible(false);
139         commentCol.setVisible(false);
140         taxonsCol.setVisible(false);
141 
142         creationDateCol.setVisible(false);
143         updateDateCol.setVisible(false);
144 
145         // Number rows visible
146         table.setVisibleRowCount(5);
147     }
148 
149 
150     /** {@inheritDoc} */
151     @Override
152     public AbstractDaliTableModel<TaxonGroupTableRowModel> getTableModel() {
153         return (TaxonGroupTableModel) getTable().getModel();
154     }
155 
156     /** {@inheritDoc} */
157     @Override
158     public SwingTable getTable() {
159         return ui.getTaxonGroupNationalTable();
160     }
161 
162 
163 }