1 package fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.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
26
27 import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorRowModel;
28 import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorTableModel;
29 import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.CalcifiedPiecesSamplingEditorUI;
30 import fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.MinSizePopupUI;
31 import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport;
32 import org.jdesktop.swingx.JXTable;
33
34 import java.util.List;
35
36
37
38
39
40 public class SplitSpeciesAction extends SimpleActionSupport<CalcifiedPiecesSamplingEditorUI> {
41
42 public SplitSpeciesAction(CalcifiedPiecesSamplingEditorUI ui) {
43 super(ui);
44 }
45
46 @Override
47 protected void onActionPerformed(CalcifiedPiecesSamplingEditorUI ui) {
48
49 JXTable cpsTable = ui.getCpsTable();
50 CalcifiedPiecesSamplingEditorTableModel tableModel = (CalcifiedPiecesSamplingEditorTableModel) cpsTable.getModel();
51
52 int selectedRow = cpsTable.getSelectedRow();
53
54 List<CalcifiedPiecesSamplingEditorRowModel> cpsRows = ui.getModel().getCpsRows();
55
56 CalcifiedPiecesSamplingEditorRowModel row = cpsRows.get(selectedRow);
57
58 int minMinSize = row.getMinSize() + 1;
59 Integer maxMinSize = row.getMaxSize() != null ? row.getMaxSize() - 1 : null;
60
61 MinSizePopupUI minSizePopupUI = new MinSizePopupUI(ui);
62 minSizePopupUI.open(minMinSize, maxMinSize);
63
64 if (minSizePopupUI.getModel().isValid()) {
65
66 Integer minSize = minSizePopupUI.getModel().getMinSize();
67 Integer exMaxSize = row.getMaxSize();
68 row.setMaxSize(minSize - 1);
69
70 CalcifiedPiecesSamplingEditorRowModel newRow = ui.getHandler().createNewRow(row.getProtocolSpecies(),
71 row.getMaturity(),
72 row.isSex(),
73 minSize,
74 exMaxSize);
75 cpsRows.add(selectedRow + 1, newRow);
76
77 tableModel.fireTableRowsUpdated(selectedRow, selectedRow);
78 tableModel.fireTableRowsInserted(newRow);
79
80
81
82
83 }
84 }
85
86 }