View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.program.strategiesByLocation.strategies;
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.decorator.DecoratorService;
27  import fr.ifremer.dali.dto.configuration.programStrategy.ProgramDTO;
28  import fr.ifremer.dali.dto.referential.LocationDTO;
29  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableModel;
30  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableUIHandler;
31  import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
32  import org.jdesktop.swingx.table.TableColumnExt;
33  
34  import javax.swing.BorderFactory;
35  import javax.swing.SortOrder;
36  
37  import static org.nuiton.i18n.I18n.t;
38  
39  /**
40   * Controleur pour la zone des programmes.
41   */
42  public class StrategiesLieuTableUIHandler extends AbstractDaliTableUIHandler<StrategiesLieuTableRowModel, StrategiesLieuTableUIModel, StrategiesLieuTableUI> {
43  
44      /** {@inheritDoc} */
45      @Override
46      public AbstractDaliTableModel<StrategiesLieuTableRowModel> getTableModel() {
47          return (StrategiesLieuTableModel) getTable().getModel();
48      }
49  
50      /** {@inheritDoc} */
51      @Override
52      public SwingTable getTable() {
53          return getUI().getTableau();
54      }
55  
56      /** {@inheritDoc} */
57      @Override
58      public void beforeInit(final StrategiesLieuTableUI ui) {
59          super.beforeInit(ui);
60  
61          // create model and register to the JAXX context
62          final StrategiesLieuTableUIModel model = new StrategiesLieuTableUIModel();
63          ui.setContextValue(model);
64      }
65  
66      /** {@inheritDoc} */
67      @Override
68      public void afterInit(StrategiesLieuTableUI ui) {
69  
70          // Initialiser l UI
71          initUI(ui);
72  
73          // Initialiser le tableau
74          initialiserTableau();
75      }
76  
77      /**
78       * Chargement des strategies suivant le lieu.
79       *
80       * @param lieu Le lieu
81       */
82      public void load(final LocationDTO lieu) {
83  
84          // Load les strategies dans le model
85          getModel().setBeans(getContext().getProgramStrategyService().getStrategyUsageByLocationId(lieu.getId()));
86  
87          // Initialiser le titre du panel
88          getUI().setBorder(BorderFactory.createTitledBorder(
89                  t("dali.program.strategies.strategy.title", lieu.getName())));
90      }
91  
92      /**
93       * Initialisation de le tableau.
94       */
95      private void initialiserTableau() {
96  
97          // La table des prelevements
98          final SwingTable table = getTable();
99  
100         // Colonne programme
101         final TableColumnExt colonneProgramme = addColumn(
102                 null,
103                 newTableCellRender(ProgramDTO.class, DecoratorService.CODE),
104                 StrategiesLieuTableModel.PROGRAM);
105         colonneProgramme.setSortable(true);
106         colonneProgramme.setMinWidth(200);
107 
108 //        // Colonne etat
109 //        final TableColumnExt colonneEtat = addColumnToModel(modeleColonnes, StrategiesLieuTableModel.STATE);
110 //        colonneEtat.setSortable(true);
111 //        colonneEtat.setMinWidth(80);
112 //        colonneEtat.setMaxWidth(80);
113 
114         // Colonne libelle
115         final TableColumnExt colonneLibelle = addColumn(
116                 StrategiesLieuTableModel.NAME);
117         colonneLibelle.setSortable(true);
118         colonneLibelle.setMinWidth(200);
119 
120         // Colonne date debut
121         final TableColumnExt colonneStartDate = addLocalDatePickerColumnToModel(
122                 StrategiesLieuTableModel.START_DATE, getConfig().getDateFormat(), false);
123         colonneStartDate.setSortable(true);
124         colonneStartDate.setMinWidth(100);
125 
126         // Colonne date fin
127         final TableColumnExt colonneEndDate = addLocalDatePickerColumnToModel(
128                 StrategiesLieuTableModel.END_DATE, getConfig().getDateFormat(), false);
129         colonneEndDate.setSortable(true);
130         colonneEndDate.setMinWidth(100);
131 
132         // Modele de la table
133         final StrategiesLieuTableModel tableModel = new StrategiesLieuTableModel(getTable().getColumnModel());
134         table.setModel(tableModel);
135 
136         // Le tableau n est pas editable
137         table.setEditable(false);
138 
139         // Initialisation de la table
140         initTable(table, true);
141 
142         // Tri par defaut
143         table.setSortOrder(StrategiesLieuTableModel.PROGRAM, SortOrder.ASCENDING);
144 
145         // Les colonnes obligatoire sont toujours presentes
146         colonneProgramme.setHideable(false);
147 //		colonneEtat.setHideable(false);
148         colonneLibelle.setHideable(false);
149         colonneStartDate.setHideable(false);
150         colonneEndDate.setHideable(false);
151     }
152 }