View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.campaign.menu;
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.configuration.filter.FilterDTO;
27  import fr.ifremer.dali.dto.enums.SearchDateValues;
28  import fr.ifremer.dali.ui.swing.content.manage.campaign.CampaignsUI;
29  import fr.ifremer.dali.ui.swing.content.manage.filter.element.menu.ApplyFilterUI;
30  import fr.ifremer.dali.ui.swing.content.manage.referential.menu.ReferentialMenuUIHandler;
31  import fr.ifremer.dali.ui.swing.util.DaliUIs;
32  
33  import java.util.List;
34  
35  /**
36   * Controlleur du menu de l'onglet prelevements mesures.
37   */
38  public class CampaignsMenuUIHandler extends ReferentialMenuUIHandler<CampaignsMenuUIModel, CampaignsMenuUI> {
39  
40      /** {@inheritDoc} */
41      @Override
42      public void beforeInit(final CampaignsMenuUI ui) {
43          super.beforeInit(ui);
44  
45          // create model and register to the JAXX context
46          final CampaignsMenuUIModel model = new CampaignsMenuUIModel();
47          ui.setContextValue(model);
48      }
49  
50      /** {@inheritDoc} */
51      @Override
52      public void afterInit(final CampaignsMenuUI ui) {
53          super.afterInit(ui);
54  
55          // Init the combobox
56          initComboBox();
57  
58          initListeners();
59      }
60  
61      /** {@inheritDoc} */
62      @Override
63      public void enableSearch(boolean enabled) {
64          getUI().getNameEditor().setEnabled(enabled);
65          getUI().getStartDateCombo().setEnabled(enabled);
66          getUI().getEndDateCombo().setEnabled(enabled);
67          getUI().getStartDate1Editor().setEnabled(getModel().getSearchStartDate() != null);
68          getUI().getStartDate2Editor().setEnabled(getModel().getSearchStartDate() != null);
69          getUI().getEndDate1Editor().setEnabled(getModel().getSearchEndDate() != null);
70          getUI().getEndDate2Editor().setEnabled(getModel().getSearchEndDate() != null);
71          getUI().getClearButton().setEnabled(enabled);
72          getUI().getSearchButton().setEnabled(enabled);
73          getApplyFilterUI().setEnabled(enabled);
74      }
75  
76      /** {@inheritDoc} */
77      @Override
78      public List<FilterDTO> getFilters() {
79          return getContext().getContextService().getAllCampaignFilter();
80      }
81  
82      /** {@inheritDoc} */
83      @Override
84      public ApplyFilterUI getApplyFilterUI() {
85          return getUI().getApplyFilterUI();
86      }
87  
88      /**
89       * Initialisation des combobox
90       */
91      private void initComboBox() {
92  
93          // Init date search criteria
94          initBeanFilterableComboBox(
95                  getUI().getStartDateCombo(),
96                  getContext().getSystemService().getSearchDates(),
97                  null);
98          initBeanFilterableComboBox(
99                  getUI().getEndDateCombo(),
100                 getContext().getSystemService().getSearchDates(),
101                 null);
102 
103         // disable date editors
104         getUI().getStartDate1Editor().setEnabled(false);
105         getUI().getStartDate2Editor().setEnabled(false);
106         getUI().getStartDate2Editor().setVisible(false);
107         getUI().getAndLabel1().setVisible(false);
108         getUI().getEndDate1Editor().setEnabled(false);
109         getUI().getEndDate2Editor().setEnabled(false);
110         getUI().getEndDate2Editor().setVisible(false);
111         getUI().getAndLabel2().setVisible(false);
112 
113 
114         // Minimal size for components
115         DaliUIs.forceComponentSize(getUI().getNameEditor());
116         DaliUIs.forceComponentSize(getUI().getStartDateCombo(), 82);
117         DaliUIs.forceComponentSize(getUI().getEndDateCombo(), 82);
118         DaliUIs.forceComponentSize(getUI().getStartDate1Editor(), 120);
119         DaliUIs.forceComponentSize(getUI().getStartDate2Editor(), 120);
120         DaliUIs.forceComponentSize(getUI().getEndDate1Editor(), 120);
121         DaliUIs.forceComponentSize(getUI().getEndDate2Editor(), 120);
122 
123     }
124 
125 
126     private void initListeners() {
127 
128         getModel().addPropertyChangeListener(CampaignsMenuUIModel.PROPERTY_SEARCH_START_DATE, evt -> {
129 
130             if (getModel().getSearchStartDate() != null) {
131 
132                 // enabled date editors
133                 getUI().getStartDate1Editor().setEnabled(true);
134                 getUI().getStartDate2Editor().setEnabled(true);
135 
136                 SearchDateValues searchDateValue = SearchDateValues.values()[getModel().getSearchStartDate().getId()];
137                 if (searchDateValue == SearchDateValues.BETWEEN) {
138 
139                     // show 'and' part
140                     getUI().getAndLabel1().setVisible(true);
141                     getUI().getStartDate2Editor().setVisible(true);
142 
143                 } else {
144 
145                     // hide 'and' part
146                     getUI().getAndLabel1().setVisible(false);
147                     getUI().getStartDate2Editor().setVisible(false);
148                     getUI().getStartDate2Editor().setDate(null);
149                 }
150 
151             } else {
152 
153                 // disable date editors
154                 getUI().getStartDate1Editor().setDate(null);
155                 getUI().getStartDate1Editor().setEnabled(false);
156                 getUI().getStartDate2Editor().setDate(null);
157                 getUI().getStartDate2Editor().setEnabled(false);
158                 getUI().getStartDate2Editor().setVisible(false);
159                 getUI().getAndLabel1().setVisible(false);
160             }
161         });
162 
163         getModel().addPropertyChangeListener(CampaignsMenuUIModel.PROPERTY_SEARCH_END_DATE, evt -> {
164 
165             if (getModel().getSearchEndDate() != null) {
166 
167                 // enabled date editors
168                 getUI().getEndDate1Editor().setEnabled(true);
169                 getUI().getEndDate2Editor().setEnabled(true);
170 
171                 SearchDateValues searchDateValue = SearchDateValues.values()[getModel().getSearchEndDate().getId()];
172                 if (searchDateValue == SearchDateValues.BETWEEN) {
173 
174                     // show 'and' part
175                     getUI().getAndLabel2().setVisible(true);
176                     getUI().getEndDate2Editor().setVisible(true);
177 
178                 } else {
179 
180                     // hide 'and' part
181                     getUI().getAndLabel2().setVisible(false);
182                     getUI().getEndDate2Editor().setVisible(false);
183                     getUI().getEndDate2Editor().setDate(null);
184                 }
185 
186             } else {
187 
188                 // disable date editors
189                 getUI().getEndDate1Editor().setDate(null);
190                 getUI().getEndDate1Editor().setEnabled(false);
191                 getUI().getEndDate2Editor().setDate(null);
192                 getUI().getEndDate2Editor().setEnabled(false);
193                 getUI().getEndDate2Editor().setVisible(false);
194                 getUI().getAndLabel2().setVisible(false);
195             }
196         });
197 
198     }
199 
200     public CampaignsUI getCampaignsUI() {
201         return getUI().getParentContainer(CampaignsUI.class);
202     }
203 }