1 package fr.ifremer.quadrige3.ui.swing.table.action;
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.quadrige3.ui.swing.table.AbstractTableUIHandler;
28
29
30
31
32
33
34 public class NextRowSelectionAction extends AbstractCellSelectionAction {
35
36
37
38
39
40
41
42 public NextRowSelectionAction(String name, AbstractTableUIHandler handler, boolean forceStopEditingBeforeAction) {
43 super(name, handler, forceStopEditingBeforeAction);
44 }
45
46
47 @Override
48 public void actionPerformed() {
49
50 int currentRow = getSelectedRow();
51 int currentColumn = getSelectedColumn();
52
53 boolean editing = isTableEditing();
54 if (editing && isForceStopEditingBeforeAction())
55 stopActiveEdition();
56
57 boolean canSelect = !editing;
58 do {
59
60
61 currentRow++;
62
63 if (currentRow >= getRowCount()) {
64
65 if (isCreateNewRow()) {
66
67
68 addNewRow();
69 canSelect = true;
70
71 } else {
72 canSelect = false;
73 }
74 }
75
76
77 if (editing && isCellEditable(currentRow, currentColumn)) {
78 canSelect = true;
79 }
80
81 } while (!canSelect && currentRow < getRowCount());
82
83 if (canSelect) {
84 if (editing) {
85 editCell(currentRow, currentColumn);
86 } else {
87 selectCell(currentRow, currentColumn);
88 }
89 }
90 }
91 }