View Javadoc
1   package fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.local;
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 com.google.common.collect.Lists;
27  import fr.ifremer.reefdb.dto.referential.pmfm.PmfmDTO;
28  import fr.ifremer.reefdb.service.StatusFilter;
29  import fr.ifremer.reefdb.service.referential.ReferentialService;
30  import fr.ifremer.reefdb.ui.swing.action.AbstractReefDbAction;
31  import fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.ManagePmfmsUI;
32  import fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.local.replace.ReplacePmfmUI;
33  import fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.local.replace.ReplacePmfmUIModel;
34  import fr.ifremer.reefdb.ui.swing.content.manage.referential.replace.AbstractOpenReplaceUIAction;
35  import jaxx.runtime.context.JAXXInitialContext;
36  
37  import java.util.List;
38  
39  import static org.nuiton.i18n.I18n.t;
40  
41  /**
42   * Created on 7/6/14.
43   *
44   * @since 3.6
45   */
46  public class OpenReplacePmfmAction extends AbstractReefDbAction<PmfmsLocalUIModel, PmfmsLocalUI, PmfmsLocalUIHandler> {
47  
48      /**
49       * <p>Constructor for OpenReplacePmfmAction.</p>
50       *
51       * @param handler a {@link fr.ifremer.reefdb.ui.swing.content.manage.referential.pmfm.local.PmfmsLocalUIHandler} object.
52       */
53      public OpenReplacePmfmAction(PmfmsLocalUIHandler handler) {
54          super(handler, false);
55      }
56  
57      /** {@inheritDoc} */
58      @Override
59      public void doAction() {
60  
61          AbstractOpenReplaceUIAction<PmfmDTO, ReplacePmfmUIModel, ReplacePmfmUI> openAction =
62                  new AbstractOpenReplaceUIAction<PmfmDTO, ReplacePmfmUIModel, ReplacePmfmUI>(getContext().getMainUI().getHandler()) {
63  
64                      @Override
65                      protected String getEntityLabel() {
66                          return t("reefdb.property.pmfm");
67                      }
68  
69                      @Override
70                      protected ReplacePmfmUIModel createNewModel() {
71                          return new ReplacePmfmUIModel();
72                      }
73  
74                      @Override
75                      protected ReplacePmfmUI createUI(JAXXInitialContext ctx) {
76                          return new ReplacePmfmUI(ctx);
77                      }
78  
79                      @Override
80                      protected List<PmfmDTO> getReferentialList(ReferentialService referentialService) {
81                          return Lists.newArrayList(referentialService.getPmfms(StatusFilter.ACTIVE));
82                      }
83  
84                      @Override
85                      protected PmfmDTO getSelectedSource() {
86                          List<PmfmDTO> selectedBeans = OpenReplacePmfmAction.this.getModel().getSelectedBeans();
87                          return selectedBeans.size() == 1 ? selectedBeans.get(0) : null;
88                      }
89  
90                      @Override
91                      protected PmfmDTO getSelectedTarget() {
92                          ManagePmfmsUI ui = OpenReplacePmfmAction.this.getUI().getParentContainer(ManagePmfmsUI.class);
93                          List<PmfmDTO> selectedBeans = ui.getPmfmsNationalUI().getModel().getSelectedBeans();
94                          return selectedBeans.size() == 1 ? selectedBeans.get(0) : null;
95                      }
96                  };
97  
98          getActionEngine().runFullInternalAction(openAction);
99      }
100 }