View Javadoc
1   package fr.ifremer.tutti.ui.swing.content.protocol.actions;
2   
3   /*
4    * #%L
5    * Tutti :: UI
6    * %%
7    * Copyright (C) 2012 - 2014 Ifremer
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as
11   * published by the Free Software Foundation, either version 3 of the 
12   * License, or (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 General Public 
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/gpl-3.0.html>.
22   * #L%
23   */
24  
25  import com.google.common.base.Preconditions;
26  import fr.ifremer.tutti.persistence.entities.referential.Species;
27  import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport;
28  import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel;
29  import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesTableModel;
30  import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
31  import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler;
32  import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIModel;
33  import jaxx.runtime.SwingUtil;
34  import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
35  
36  import java.util.Collection;
37  
38  import static org.nuiton.i18n.I18n.t;
39  
40  /**
41   * To add a new protocolSpecies protocol.
42   *
43   * @author Tony Chemit - chemit@codelutin.com
44   * @since 1.0
45   */
46  public class AddSpeciesProtocolAction extends LongActionSupport<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> {
47  
48      public AddSpeciesProtocolAction(EditProtocolUIHandler handler) {
49          super(handler, false);
50      }
51  
52      protected Species species;
53  
54      protected EditProtocolSpeciesRowModel newRow;
55  
56      @Override
57      public void doAction() throws Exception {
58  
59          EditProtocolUI ui = getUI();
60  
61          BeanFilterableComboBox<Species> speciesComboBox = ui.getSpeciesComboBox();
62  
63          species = (Species) speciesComboBox.getSelectedItem();
64          Preconditions.checkNotNull(
65                  species, "Can't add a speciesProtocol with a null species");
66          Preconditions.checkArgument(species.isReferenceTaxon(),
67                                      "Can't add a speciesProtocol with a not referent species");
68  
69          Integer taxonId = species.getReferenceTaxonId();
70          String taxonIdStr = String.valueOf(taxonId);
71  
72          // remove all synonyms of this taxon
73          Collection<Species> allSynonyms = getModel().getAllSynonyms(taxonIdStr);
74          getModel().getAllSynonyms().removeAll(allSynonyms);
75  
76          // add new row to model (do it after combo stuff for ui best display)
77          newRow = handler.createNewProtocolSpeciesRow();
78          newRow.setSpecies(species);
79          getModel().getSpeciesRow().add(newRow);
80      }
81  
82      @Override
83      public void postSuccessAction() {
84          super.postSuccessAction();
85  
86          // update comboboxes
87          getUI().getBenthosComboBox().removeItem(species);
88          getUI().getSpeciesComboBox().removeItem(species);
89          getUI().getCalcifiedPiecesSamplingEditorUI().getSpeciesComboBox().addItem(species);
90  
91          // fire row was inserted in table model
92          EditProtocolSpeciesTableModel tableModel = getHandler().getSpeciesTableModel();
93          tableModel.fireTableRowsInserted(newRow);
94  
95          // select this new row
96          int rowIndex = tableModel.getRowIndex(newRow);
97          SwingUtil.setSelectionInterval(handler.getSpeciesTable(), rowIndex);
98  
99          // add notification
100         String speciesStr = decorate(species);
101         sendMessage(t("tutti.flash.info.species.add.to.protocol",
102                       speciesStr));
103     }
104 }