diff options
author | John Alhroos <john.ahlroos@itmill.com> | 2010-06-01 10:57:35 +0000 |
---|---|---|
committer | John Alhroos <john.ahlroos@itmill.com> | 2010-06-01 10:57:35 +0000 |
commit | 7671272aea711c3435d492ff0f14ece4b81ded5b (patch) | |
tree | 2f30acaaa60f745599f37c1a2e0337da9a391846 | |
parent | ef70658224292b4668ffe82391e3b85f51e5f988 (diff) | |
download | vaadin-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.java | 28 |
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; } |