View Javadoc
1   package fr.ifremer.dali.ui.swing.action;
2   
3   /*-
4    * #%L
5    * Dali :: UI
6    * %%
7    * Copyright (C) 2014 - 2017 Ifremer
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU Affero General Public License as published by
11   * the Free Software Foundation, either version 3 of the License, or
12   * (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU Affero General Public License
20   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21   * #L%
22   */
23  
24  import fr.ifremer.dali.config.DaliConfiguration;
25  import fr.ifremer.dali.service.control.ControlRuleMessagesBean;
26  import fr.ifremer.dali.ui.swing.DaliUIContext;
27  import fr.ifremer.dali.ui.swing.util.DaliUI;
28  import fr.ifremer.quadrige3.ui.swing.AbstractUIHandler;
29  import fr.ifremer.quadrige3.ui.swing.DialogHelper;
30  import fr.ifremer.quadrige3.ui.swing.action.AbstractAction;
31  import fr.ifremer.quadrige3.ui.swing.model.AbstractBeanUIModel;
32  import fr.ifremer.quadrige3.ui.swing.synchro.action.ImportReferentialSynchroAtOnceAction;
33  
34  import javax.swing.JOptionPane;
35  
36  import static org.nuiton.i18n.I18n.t;
37  
38  /**
39   * @author peck7 on 04/07/2017.
40   */
41  public abstract class AbstractDaliAction<M extends AbstractBeanUIModel, UI extends DaliUI<M, ?>, H extends AbstractUIHandler<M, UI>>
42          extends AbstractAction<M, UI, H> {
43  
44      /**
45       * <p>Constructor for AbstractAction.</p>
46       *
47       * @param handler  a H object.
48       * @param hideBody a boolean.
49       */
50      public AbstractDaliAction(H handler, boolean hideBody) {
51          super(handler, hideBody);
52      }
53  
54      @Override
55      protected DaliConfiguration getConfig() {
56          return (DaliConfiguration) getHandler().getConfig();
57      }
58  
59      @Override
60      public DaliUIContext getContext() {
61          return (DaliUIContext) super.getContext();
62      }
63  
64      /* Utility methods */
65  
66      /**
67       * <p>showControlResult.</p>
68       *
69       * @param messages      a {@link fr.ifremer.dali.service.control.ControlRuleMessagesBean} object.
70       * @param showIfSuccess a boolean.
71       */
72      protected void showControlResult(ControlRuleMessagesBean messages, boolean showIfSuccess) {
73  
74          // TODO show all detailed messages ?
75  
76          if (messages == null || (!messages.isErrorMessages() && !messages.isWarningMessages())) {
77              if (showIfSuccess) {
78                  displayInfoMessage(t("dali.rulesControl.title"), t("dali.rulesControl.noMessage.message"));
79              }
80          } else if (messages.isWarningMessages() && messages.isErrorMessages()) {
81              displayErrorMessage(t("dali.rulesControl.title"), t("dali.rulesControl.errorAndWarningMessages.message"));
82          } else if (messages.isErrorMessages()) {
83              displayErrorMessage(t("dali.rulesControl.title"), t("dali.rulesControl.errorMessages.message"));
84          } else if (messages.isWarningMessages()) {
85              displayWarningMessage(t("dali.rulesControl.title"), t("dali.rulesControl.warningMessages.message"));
86          }
87      }
88  
89      /**
90       * <p>showControlResultAndAskContinue.</p>
91       *
92       * @param messages      a {@link ControlRuleMessagesBean} object.
93       */
94      protected boolean showControlResultAndAskContinue(ControlRuleMessagesBean messages) {
95  
96          // TODO show all detailed messages ?
97          boolean canContinue = true;
98          if (messages != null) {
99              if (messages.isWarningMessages() && messages.isErrorMessages()) {
100                 canContinue = getContext().getDialogHelper().showOptionDialog(null,
101                         t("dali.rulesControl.errorAndWarningMessages.message"),
102                         null,
103                         t("dali.rulesControl.continue.message"),
104                         t("dali.rulesControl.title"),
105                         JOptionPane.ERROR_MESSAGE,
106                         DialogHelper.CUSTOM_OPTION,
107                         t("dali.common.continue"),
108                         t("dali.common.cancel")
109                 ) == JOptionPane.OK_OPTION;
110             } else if (messages.isErrorMessages()) {
111                 canContinue = getContext().getDialogHelper().showOptionDialog(null,
112                         t("dali.rulesControl.errorMessages.message"),
113                         null,
114                         t("dali.rulesControl.continue.message"),
115                         t("dali.rulesControl.title"),
116                         JOptionPane.ERROR_MESSAGE,
117                         DialogHelper.CUSTOM_OPTION,
118                         t("dali.common.continue"),
119                         t("dali.common.cancel")
120                 ) == JOptionPane.OK_OPTION;
121             } else if (messages.isWarningMessages()) {
122                 canContinue = getContext().getDialogHelper().showOptionDialog(null,
123                         t("dali.rulesControl.warningMessages.message"),
124                         null,
125                         t("dali.rulesControl.continue.message"),
126                         t("dali.rulesControl.title"),
127                         JOptionPane.WARNING_MESSAGE,
128                         DialogHelper.CUSTOM_OPTION,
129                         t("dali.common.continue"),
130                         t("dali.common.cancel")
131                 ) == JOptionPane.OK_OPTION;
132             }
133         }
134         return canContinue;
135     }
136 
137     /**
138      * Do an import of referential data
139      */
140     protected void doImportReferential() {
141 
142         getModel().setModify(false); // avoid modified model detection
143 
144         // Will clear the updateDt cache, then reimport referential tables
145         ImportReferentialSynchroAtOnceAction importAction = getContext().getActionFactory().createLogicAction(getContext().getMainUI().getHandler(), ImportReferentialSynchroAtOnceAction.class);
146         importAction.setForceClearUpdateDtCache(true);
147 
148         // force hide body
149         importAction.getContext().setHideBody(false);
150 
151         // override action description
152         forceActionDescription(t("dali.action.synchro.import.referential"));
153 
154         // run internally
155         getContext().getActionEngine().runInternalAction(importAction);
156 
157         // restore body
158         importAction.getContext().setHideBody(true);
159 
160     }
161 
162 }