1 package fr.ifremer.tutti.ui.swing.content.protocol.actions;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
42
43
44
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
73 Collection<Species> allSynonyms = getModel().getAllSynonyms(taxonIdStr);
74 getModel().getAllSynonyms().removeAll(allSynonyms);
75
76
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
87 getUI().getBenthosComboBox().removeItem(species);
88 getUI().getSpeciesComboBox().removeItem(species);
89 getUI().getCalcifiedPiecesSamplingEditorUI().getSpeciesComboBox().addItem(species);
90
91
92 EditProtocolSpeciesTableModel tableModel = getHandler().getSpeciesTableModel();
93 tableModel.fireTableRowsInserted(newRow);
94
95
96 int rowIndex = tableModel.getRowIndex(newRow);
97 SwingUtil.setSelectionInterval(handler.getSpeciesTable(), rowIndex);
98
99
100 String speciesStr = decorate(species);
101 sendMessage(t("tutti.flash.info.species.add.to.protocol",
102 speciesStr));
103 }
104 }