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