aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Alhroos <john.ahlroos@itmill.com>2010-06-01 10:57:35 +0000
committerJohn Alhroos <john.ahlroos@itmill.com>2010-06-01 10:57:35 +0000
commit7671272aea711c3435d492ff0f14ece4b81ded5b (patch)
tree2f30acaaa60f745599f37c1a2e0337da9a391846
parentef70658224292b4668ffe82391e3b85f51e5f988 (diff)
downloadvaadin-framework-7671272aea711c3435d492ff0f14ece4b81ded5b.tar.gz
vaadin-framework-7671272aea711c3435d492ff0f14ece4b81ded5b.zip
Fixed left/right keyboard movement in tree #1086
svn changeset:13460/svn branch:6.4
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VTree.java28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTree.java b/src/com/vaadin/terminal/gwt/client/ui/VTree.java
index a8db7c6dd5..9f5202cb68 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VTree.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VTree.java
@@ -61,7 +61,7 @@ public class VTree extends SimpleFocusablePanel implements Paintable,
public static final int MULTISELECT_MODE_DEFAULT = 0;
public static final int MULTISELECT_MODE_SIMPLE = 1;
- private FlowPanel body = new FlowPanel();
+ private final FlowPanel body = new FlowPanel();
private Set<String> selectedIds = new HashSet<String>();
private ApplicationConnection client;
@@ -1554,6 +1554,20 @@ public class VTree extends SimpleFocusablePanel implements Paintable,
if (keycode == getNavigationLeftKey()) {
if (!focusedNode.isLeaf() && focusedNode.getState()) {
focusedNode.setState(false, true);
+ } else if (focusedNode.getParentNode() != null
+ && (focusedNode.isLeaf() || !focusedNode.getState())) {
+
+ if (ctrl) {
+ setFocusedNode(focusedNode.getParentNode());
+ } else if (shift) {
+ doRelationSelection(focusedNode.getParentNode(),
+ focusedNode);
+ setFocusedNode(focusedNode.getParentNode());
+ } else {
+ setSelected(focusedNode, false);
+ setFocusedNode(focusedNode.getParentNode());
+ setSelected(focusedNode, true);
+ }
}
return true;
}
@@ -1562,6 +1576,18 @@ public class VTree extends SimpleFocusablePanel implements Paintable,
if (keycode == getNavigationRightKey()) {
if (!focusedNode.isLeaf() && !focusedNode.getState()) {
focusedNode.setState(true, true);
+ } else if (!focusedNode.isLeaf()) {
+ if (ctrl) {
+ setFocusedNode(focusedNode.getChildren().get(0));
+ } else if (shift) {
+ setSelected(focusedNode, true);
+ setFocusedNode(focusedNode.getChildren().get(0));
+ setSelected(focusedNode, true);
+ } else {
+ setSelected(focusedNode, false);
+ setFocusedNode(focusedNode.getChildren().get(0));
+ setSelected(focusedNode, true);
+ }
}
return true;
}