Author: rwhitcomb Date: Thu Jan 11 17:44:12 2018 New Revision: 1820905 URL: http://svn.apache.org/viewvc?rev=1820905&view=rev Log: PIVOT-1023: Implement Cmd/Ctrl-A in TableView skin to select all (in multi-select mode), and space to toggle the "current" row selection state.
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java?rev=1820905&r1=1820904&r2=1820905&view=diff ============================================================================== --- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java (original) +++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java Thu Jan 11 17:44:12 2018 @@ -85,6 +85,7 @@ public class TerraTableViewSkin extends private int highlightIndex = -1; private int selectIndex = -1; + private int lastKeyboardSelectIndex = -1; private boolean validateSelection = false; @@ -1264,7 +1265,9 @@ public class TerraTableViewSkin extends * selection size by including the previous enabled row when select mode is * {@link SelectMode#MULTI}<br> {@link Modifier#SHIFT SHIFT} + * {@link KeyCode#DOWN DOWN} Increases the selection size by including the - * next enabled row when select mode is {@link SelectMode#MULTI} + * next enabled row when select mode is {@link SelectMode#MULTI}<br> + * {@code Cmd/Ctrl-A} in {@link SelectMode#MULTI} select mode to select everything<br> + * {@link KeyCode#SPACE SPACE} wil select/unselect the "current" location */ @Override public boolean keyPressed(Component component, int keyCode, Keyboard.KeyLocation keyLocation) { @@ -1289,6 +1292,7 @@ public class TerraTableViewSkin extends } else { tableView.setSelectedIndex(index); } + lastKeyboardSelectIndex = index; } consumed = true; @@ -1313,6 +1317,7 @@ public class TerraTableViewSkin extends } else { tableView.setSelectedIndex(index); } + lastKeyboardSelectIndex = index; } consumed = true; @@ -1321,6 +1326,43 @@ public class TerraTableViewSkin extends break; } + case Keyboard.KeyCode.SPACE: { + if (lastKeyboardSelectIndex != -1 && selectMode != TableView.SelectMode.NONE) { + if (!tableView.isRowDisabled(lastKeyboardSelectIndex)) { + switch (selectMode) { + case SINGLE: + if (tableView.isRowSelected(lastKeyboardSelectIndex)) { + tableView.setSelectedIndex(-1); + } else { + tableView.setSelectedIndex(lastKeyboardSelectIndex); + } + break; + case MULTI: + if (tableView.isRowSelected(lastKeyboardSelectIndex)) { + tableView.removeSelectedIndex(lastKeyboardSelectIndex); + } else { + tableView.addSelectedIndex(lastKeyboardSelectIndex); + } + break; + } + consumed = true; + } + } + break; + } + + case Keyboard.KeyCode.A: { + Modifier cmdModifier = Platform.getCommandModifier(); + if (Keyboard.isPressed(cmdModifier)) { + if (selectMode == TableView.SelectMode.MULTI) { + tableView.selectAll(); + lastKeyboardSelectIndex = tableView.getTableData().getLength() - 1; // TODO: what should it be? + consumed = true; + } + } + break; + } + default: { break; }