diff --git a/jfoenix/src/main/java/com/jfoenix/controls/cells/editors/base/GenericEditableTableCell.java b/jfoenix/src/main/java/com/jfoenix/controls/cells/editors/base/GenericEditableTableCell.java index 6c995126c..819a1c042 100644 --- a/jfoenix/src/main/java/com/jfoenix/controls/cells/editors/base/GenericEditableTableCell.java +++ b/jfoenix/src/main/java/com/jfoenix/controls/cells/editors/base/GenericEditableTableCell.java @@ -216,31 +216,37 @@ private void editNext(boolean forward) { //There is no other column that supports editing. int index = getIndex(); int nextIndex = columns.indexOf(getTableColumn()); - if (forward) { - nextIndex++; - if (nextIndex > columns.size() - 1) { - nextIndex = 0; - index += stepFunction.apply(index, 1); - } - } else { - nextIndex--; - if (nextIndex < 0) { - nextIndex = columns.size() - 1; - index += stepFunction.apply(index, -1); + TableColumn nextColumn; + do { + if (forward) { + nextIndex++; + if (nextIndex > columns.size() - 1) { + nextIndex = 0; + index += stepFunction.apply(index, 1); + } + } else { + nextIndex--; + if (nextIndex < 0) { + nextIndex = columns.size() - 1; + index += stepFunction.apply(index, -1); + } } - } - if (columns.size() < 2 && index == getIndex()) { - return; - } - - TableColumn nextColumn = columns.get(nextIndex); + if (columns.size() < 2 && index == getIndex()) { + return; + } + nextColumn = columns.get(nextIndex); + } while (!isValidEdit(index, nextColumn)); if (nextColumn != null) { getTableView().edit(index, nextColumn); getTableView().scrollToColumn(nextColumn); } } + protected boolean isValidEdit(int row, TableColumn column) { + return true; + } + private List> getLeaves(TableColumn rootColumn) { List> columns = new ArrayList<>(); if (rootColumn.getColumns().isEmpty()) { diff --git a/jfoenix/src/main/java/com/jfoenix/controls/cells/editors/base/GenericEditableTreeTableCell.java b/jfoenix/src/main/java/com/jfoenix/controls/cells/editors/base/GenericEditableTreeTableCell.java index 36b27788b..6259def2e 100644 --- a/jfoenix/src/main/java/com/jfoenix/controls/cells/editors/base/GenericEditableTreeTableCell.java +++ b/jfoenix/src/main/java/com/jfoenix/controls/cells/editors/base/GenericEditableTreeTableCell.java @@ -240,31 +240,39 @@ private void editNext(boolean forward) { //There is no other column that supports editing. int index = getIndex(); int nextIndex = columns.indexOf(getTableColumn()); - if (forward) { - nextIndex++; - if (nextIndex > columns.size() - 1) { - nextIndex = 0; - index += stepFunction.apply(index, 1); - } - } else { - nextIndex--; - if (nextIndex < 0) { - nextIndex = columns.size() - 1; - index += stepFunction.apply(index, -1); + + TreeTableColumn nextColumn; + do { + if (forward) { + nextIndex++; + if (nextIndex > columns.size() - 1) { + nextIndex = 0; + index += stepFunction.apply(index, 1); + } + } else { + nextIndex--; + if (nextIndex < 0) { + nextIndex = columns.size() - 1; + index += stepFunction.apply(index, -1); + } } - } - if (columns.size() < 2 && index == getIndex()) { - return; - } + if (columns.size() < 2 && index == getIndex()) { + return; + } + nextColumn = columns.get(nextIndex); + } while (!isValidEdit(index, nextColumn)); - TreeTableColumn nextColumn = columns.get(nextIndex); if (nextColumn != null) { getTreeTableView().edit(index, nextColumn); getTreeTableView().scrollToColumn(nextColumn); } } + protected boolean isValidEdit(int row, TreeTableColumn column) { + return true; + } + private List> getLeaves(TreeTableColumn root) { List> columns = new ArrayList<>();