View Javadoc
1   package fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling.actions;
2   
3   /*
4    * #%L
5    * Tutti :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2012 - 2016 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU General Public License as
13   * published by the Free Software Foundation, either version 3 of the
14   * License, or (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 General Public
22   * License along with this program.  If not, see
23   * <http://www.gnu.org/licenses/gpl-3.0.html>.
24   * #L%
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   * @author Kevin Morin (Code Lutin)
38   * @since 4.5
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              // select this new row
81              //        int rowIndex = tableModel.getRowIndex(newRow);
82              //        SwingUtil.setSelectionInterval(cpsTable, rowIndex);
83          }
84      }
85  
86  }