summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2009-09-03 13:56:03 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2009-09-03 13:56:03 +0000
commite37a2939222bfdf2af4a5be4efe4f277d9585e5e (patch)
tree5c7975c076f2dcdb663868141fc854049c872ede /src
parent26635650ce15dfa3bfa8f23e1f86f857984f3395 (diff)
downloadvaadin-framework-e37a2939222bfdf2af4a5be4efe4f277d9585e5e.tar.gz
vaadin-framework-e37a2939222bfdf2af4a5be4efe4f277d9585e5e.zip
fixes #3275 (regression from #2603, now solved in another way) + some minor cleaning to code
svn changeset:8658/svn branch:6.1
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VTree.java9
-rw-r--r--src/com/vaadin/ui/Tree.java36
2 files changed, 15 insertions, 30 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTree.java b/src/com/vaadin/terminal/gwt/client/ui/VTree.java
index 6f676441e7..87b98526c5 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VTree.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VTree.java
@@ -141,12 +141,6 @@ public class VTree extends FlowPanel implements Paintable {
}
rootNode.renderChildNodes(uidl.getChildIterator());
}
-
- if (uidl.hasVariable("selected")) {
- // update selection in case selected nodes were not visible
- selectedIds = uidl.getStringArrayVariableAsSet("selected");
- }
-
}
public void setSelected(TreeNode treeNode, boolean selected) {
@@ -309,6 +303,9 @@ public class VTree extends FlowPanel implements Paintable {
if (uidl.getBooleanAttribute("selected")) {
setSelected(true);
+ // ensure that identifier is in selectedIds array (this may be a
+ // partial update)
+ selectedIds.add(key);
}
if (uidl.hasAttribute("icon")) {
diff --git a/src/com/vaadin/ui/Tree.java b/src/com/vaadin/ui/Tree.java
index 0d56384994..cb3f667a4f 100644
--- a/src/com/vaadin/ui/Tree.java
+++ b/src/com/vaadin/ui/Tree.java
@@ -331,8 +331,8 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
* Called when one or more variables handled by the implementing class are
* changed.
*
- * @see com.vaadin.terminal.VariableOwner#changeVariables(Object
- * source, Map variables)
+ * @see com.vaadin.terminal.VariableOwner#changeVariables(Object source, Map
+ * variables)
*/
@Override
public void changeVariables(Object source, Map variables) {
@@ -448,14 +448,11 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
// Initialize variables
final Set<Action> actionSet = new LinkedHashSet<Action>();
- String[] selectedKeys;
- if (isMultiSelect()) {
- selectedKeys = new String[((Set) getValue()).size()];
- } else {
- selectedKeys = new String[(getValue() == null ? 0 : 1)];
- }
- int keyIndex = 0;
- final LinkedList expandedKeys = new LinkedList();
+
+ // rendered selectedKeys
+ LinkedList<String> selectedKeys = new LinkedList<String>();
+
+ final LinkedList<String> expandedKeys = new LinkedList<String>();
// Iterates through hierarchical tree using a stack of iterators
final Stack<Iterator> iteratorStack = new Stack<Iterator>();
@@ -509,12 +506,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
target.addAttribute("key", key);
if (isSelected(itemId)) {
target.addAttribute("selected", true);
- try {
- selectedKeys[keyIndex++] = key;
- } catch (Exception e) {
- // TODO Fix, see TreeExample (featurebrowser)
- e.printStackTrace();
- }
+ selectedKeys.add(key);
}
if (areChildrenAllowed(itemId) && isExpanded(itemId)) {
target.addAttribute("expanded", true);
@@ -577,14 +569,11 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
}
if (partialUpdate) {
- // update tree-level selection information in case some selected
- // node(s) were collapsed
- target.addVariable(this, "selected", selectedKeys);
-
partialUpdate = false;
} else {
// Selected
- target.addVariable(this, "selected", selectedKeys);
+ target.addVariable(this, "selected", selectedKeys
+ .toArray(new String[selectedKeys.size()]));
// Expand and collapse
target.addVariable(this, "expand", new String[] {});
@@ -669,9 +658,8 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
/*
* (non-Javadoc)
*
- * @see
- * com.vaadin.data.Container.Hierarchical#setParent(java.lang.Object
- * , java.lang.Object)
+ * @see com.vaadin.data.Container.Hierarchical#setParent(java.lang.Object ,
+ * java.lang.Object)
*/
public boolean setParent(Object itemId, Object newParentId) {
final boolean success = ((Container.Hierarchical) items).setParent(