View Javadoc
1   package fr.ifremer.reefdb.ui.swing.content.manage.referential.department.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.DepartmentDTO;
28  import fr.ifremer.reefdb.service.StatusFilter;
29  import fr.ifremer.reefdb.ui.swing.content.manage.referential.department.menu.DepartmentMenuUIModel;
30  import fr.ifremer.reefdb.ui.swing.content.manage.referential.department.table.DepartmentRowModel;
31  import fr.ifremer.reefdb.ui.swing.content.manage.referential.department.table.DepartmentTableModel;
32  import fr.ifremer.reefdb.ui.swing.util.table.AbstractReefDbTableModel;
33  import fr.ifremer.reefdb.ui.swing.util.table.AbstractReefDbTableUIHandler;
34  import org.apache.commons.logging.Log;
35  import org.apache.commons.logging.LogFactory;
36  import org.jdesktop.swingx.table.TableColumnExt;
37  
38  import java.util.List;
39  
40  import static org.nuiton.i18n.I18n.t;
41  
42  /**
43   * Controlleur pour la gestion des Departments au niveau national
44   */
45  public class ManageDepartmentsNationalUIHandler extends AbstractReefDbTableUIHandler<DepartmentRowModel, ManageDepartmentsNationalUIModel, ManageDepartmentsNationalUI> {
46  
47      /**
48       * Logger.
49       */
50      private static final Log LOG = LogFactory.getLog(ManageDepartmentsNationalUIHandler.class);
51  
52      /** {@inheritDoc} */
53      @Override
54      public void beforeInit(ManageDepartmentsNationalUI ui) {
55          super.beforeInit(ui);
56  
57          // create model and register to the JAXX context
58          ManageDepartmentsNationalUIModel model = new ManageDepartmentsNationalUIModel();
59          ui.setContextValue(model);
60  
61      }
62  
63      /** {@inheritDoc} */
64      @Override
65      public void afterInit(ManageDepartmentsNationalUI ui) {
66          initUI(ui);
67  
68          // hide 'apply filter'
69          ui.getDepartmentMenuUI().getHandler().enableContextFilter(false);
70  
71          // force national
72          ui.getDepartmentMenuUI().getHandler().forceLocal(false);
73  
74          // listen to search results
75          ui.getDepartmentMenuUI().getModel().addPropertyChangeListener(DepartmentMenuUIModel.PROPERTY_RESULTS, evt -> getModel().setBeans((List<DepartmentDTO>) evt.getNewValue()));
76  
77          initTable();
78  
79      }
80  
81      private void initTable() {
82  
83          // code
84          TableColumnExt codeCol = addColumn(DepartmentTableModel.CODE);
85          codeCol.setSortable(true);
86  
87          // name
88          TableColumnExt nameCol = addColumn(DepartmentTableModel.NAME);
89          nameCol.setSortable(true);
90  
91          // description
92          TableColumnExt descCol = addColumn(DepartmentTableModel.DESCRIPTION);
93          descCol.setSortable(true);
94  
95          // parent
96          TableColumnExt parentCol = addFilterableComboDataColumnToModel(
97                  DepartmentTableModel.PARENT_DEPARTMENT,
98                  getContext().getReferentialService().getDepartments(),
99                  true);
100         parentCol.setSortable(true);
101 
102         // email
103         TableColumnExt emailCol = addColumn(DepartmentTableModel.EMAIL);
104         emailCol.setSortable(true);
105 
106         // phone
107         TableColumnExt phoneCol = addColumn(DepartmentTableModel.PHONE);
108         phoneCol.setSortable(true);
109 
110         // status
111         TableColumnExt statusCol = addFilterableComboDataColumnToModel(
112                 DepartmentTableModel.STATUS,
113                 getContext().getReferentialService().getStatus(StatusFilter.ALL),
114                 false);
115         statusCol.setSortable(true);
116 
117         // address
118         TableColumnExt addressCol = addColumn(DepartmentTableModel.ADDRESS);
119         addressCol.setSortable(true);
120 
121         // Comment, creation and update dates
122         addCommentColumn(DepartmentTableModel.COMMENT, false);
123         TableColumnExt creationDateCol = addDatePickerColumnToModel(DepartmentTableModel.CREATION_DATE, getConfig().getDateTimeFormat(), false);
124         fixColumnWidth(creationDateCol, 120);
125         TableColumnExt updateDateCol = addDatePickerColumnToModel(DepartmentTableModel.UPDATE_DATE, getConfig().getDateTimeFormat(), false);
126         fixColumnWidth(updateDateCol, 120);
127 
128         DepartmentTableModel tableModel = new DepartmentTableModel(getTable().getColumnModel(), false);
129         getTable().setModel(tableModel);
130 
131         // Add extraction action
132         addExportToCSVAction(t("reefdb.property.departments.national"));
133 
134         // Initialisation du tableau
135         initTable(getTable(), true);
136 
137         // optionnal columns are hidden
138         addressCol.setVisible(false);
139 
140         creationDateCol.setVisible(false);
141         updateDateCol.setVisible(false);
142 
143         getTable().setVisibleRowCount(5);
144     }
145 
146     /** {@inheritDoc} */
147     @Override
148     public AbstractReefDbTableModel<DepartmentRowModel> getTableModel() {
149         return (DepartmentTableModel) getTable().getModel();
150     }
151 
152     /** {@inheritDoc} */
153     @Override
154     public SwingTable getTable() {
155         return getUI().getDepartmentsNationalTable();
156     }
157 }