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;
             }


Reply via email to