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 AddBenthosProtocolAction extends LongActionSupport<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> {
47
48 public AddBenthosProtocolAction(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 species = null;
60
61 EditProtocolUI ui = getUI();
62
63 BeanFilterableComboBox<Species> benthosComboBox = ui.getBenthosComboBox();
64
65 species = (Species) benthosComboBox.getSelectedItem();
66 Preconditions.checkNotNull(
67 species, "Can't add a benthosProtocol with a null species");
68 Preconditions.checkArgument(species.isReferenceTaxon(),
69 "Can't add a benthosProtocol with a not referent species");
70
71 Integer taxonId = species.getReferenceTaxonId();
72 String taxonIdStr = String.valueOf(taxonId);
73
74
75 Collection<Species> allSynonyms = getModel().getAllSynonyms(taxonIdStr);
76 getModel().getAllSynonyms().removeAll(allSynonyms);
77
78
79 newRow = handler.createNewProtocolSpeciesRow();
80 newRow.setSpecies(species);
81 getModel().getBenthosRow().add(newRow);
82 }
83
84 @Override
85 public void postSuccessAction() {
86 super.postSuccessAction();
87
88
89 getUI().getBenthosComboBox().removeItem(species);
90 getUI().getSpeciesComboBox().removeItem(species);
91 getUI().getCalcifiedPiecesSamplingEditorUI().getSpeciesComboBox().addItem(species);
92
93
94 EditProtocolSpeciesTableModel tableModel = getHandler().getBenthosTableModel();
95 tableModel.fireTableRowsInserted(newRow);
96
97
98 int rowIndex = tableModel.getRowIndex(newRow);
99 SwingUtil.setSelectionInterval(handler.getBenthosTable(), rowIndex);
100
101
102 String speciesStr = decorate(species);
103 sendMessage(t("tutti.flash.info.benthos.add.to.protocol",
104 speciesStr));
105 }
106 }