aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java (renamed from src/com/vaadin/terminal/gwt/client/ui/dd/VTargetNodeIsChildOf.java)12
-rw-r--r--src/com/vaadin/ui/Tree.java48
2 files changed, 30 insertions, 30 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetNodeIsChildOf.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java
index 22c0298e65..5456b449e1 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetNodeIsChildOf.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java
@@ -11,7 +11,7 @@ import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.ui.VTree;
import com.vaadin.terminal.gwt.client.ui.VTree.TreeNode;
-final public class VTargetNodeIsChildOf extends VAcceptCriterion {
+final public class VTargetInSubtree extends VAcceptCriterion {
@Override
protected boolean accept(VDragEvent drag, UIDL configuration) {
@@ -21,17 +21,17 @@ final public class VTargetNodeIsChildOf extends VAcceptCriterion {
TreeNode treeNode = tree.getNodeByKey((String) drag.getDropDetails()
.get("itemIdOver"));
if (treeNode != null) {
- Widget parent2 = treeNode.getParent().getParent();
+ Widget parent2 = treeNode;
int depth = configuration.getIntAttribute("depth");
if (depth < 0) {
depth = Integer.MAX_VALUE;
}
- for (int i = 0; i < depth && parent2 instanceof TreeNode; i++) {
- if (configuration.getStringAttribute("key").equals(
- ((TreeNode) parent2).key)) {
+ final String searchedKey = configuration.getStringAttribute("key");
+ for (int i = 0; i <= depth && parent2 instanceof TreeNode; i++) {
+ if (searchedKey.equals(((TreeNode) parent2).key)) {
return true;
}
- parent2 = parent2.getParent().getParent();
+ parent2 = parent2.getParent().getParent(); // panel -> next level node
}
}
diff --git a/src/com/vaadin/ui/Tree.java b/src/com/vaadin/ui/Tree.java
index ac4222f8ec..670f9d8f2b 100644
--- a/src/com/vaadin/ui/Tree.java
+++ b/src/com/vaadin/ui/Tree.java
@@ -44,7 +44,7 @@ import com.vaadin.terminal.Resource;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.ui.VTree;
import com.vaadin.terminal.gwt.client.ui.dd.VLazyInitItemIdentifiers;
-import com.vaadin.terminal.gwt.client.ui.dd.VTargetNodeIsChildOf;
+import com.vaadin.terminal.gwt.client.ui.dd.VTargetInSubtree;
import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation;
import com.vaadin.tools.ReflectTools;
@@ -1411,41 +1411,41 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
/**
* An accept criterion that checks the parent node (or parent hierarchy) for
* the item identifier given in constructor. If the parent is found, content
- * is accepted. Criterion can be used to accepts drags on a select sub tree
- * only.
- *
- * TODO consider renaming and starting traversing from "itemIdInto".
+ * is accepted. Criterion can be used to accepts drags on a specific sub
+ * tree only.
+ * <p>
+ * The root items is also consider to be valid target.
*/
- @ClientCriterion(VTargetNodeIsChildOf.class)
- public class TargetNodeIsChildOf extends ClientSideCriterion {
+ @ClientCriterion(VTargetInSubtree.class)
+ public class TargetInSubtree extends ClientSideCriterion {
- private Object parentItemId;
- private int depthToCheck = 1;
+ private Object rootId;
+ private int depthToCheck = -1;
/**
- * Constructs a criteria that accepts the drag if the targeted item is a
- * direct descendant of Item identified by given id
+ * Constructs a criteria that accepts the drag if the targeted Item is a
+ * descendant of Item identified by given id
*
* @param parentItemId
* the item identifier of the parent node
*/
- public TargetNodeIsChildOf(Object parentItemId) {
- this.parentItemId = parentItemId;
+ public TargetInSubtree(Object parentItemId) {
+ rootId = parentItemId;
}
/**
- * Constructs a criteria that accepts drops at any level below the item
- * identified by given id
+ * Constructs a criteria that accepts drops within given level below the
+ * subtree root identified by given id.
*
- * @param parentItemId
+ * @param rootId
* the item identifier to be sought for
* @param depthToCheck
* the depth that tree is traversed upwards to seek for the
* parent, -1 means that the whole structure should be
* checked
*/
- public TargetNodeIsChildOf(Object parentItemId, int depthToCheck) {
- this.parentItemId = parentItemId;
+ public TargetInSubtree(Object rootId, int depthToCheck) {
+ this.rootId = rootId;
this.depthToCheck = depthToCheck;
}
@@ -1455,14 +1455,14 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
.getDropTargetDetails();
if (eventDetails.getItemIdOver() != null) {
- Object itemIdOver = eventDetails.getItemIdOver();
- Object parent2 = getParent(itemIdOver);
+ Object itemId = eventDetails.getItemIdOver();
int i = 0;
- while (parent2 != null
- && (depthToCheck == -1 || i < depthToCheck)) {
- if (parent2.equals(parentItemId)) {
+ while (itemId != null
+ && (depthToCheck == -1 || i <= depthToCheck)) {
+ if (itemId.equals(rootId)) {
return true;
}
+ itemId = getParent(itemId);
i++;
}
}
@@ -1476,7 +1476,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
public void paintContent(PaintTarget target) throws PaintException {
super.paintContent(target);
target.addAttribute("depth", depthToCheck);
- target.addAttribute("key", key(parentItemId));
+ target.addAttribute("key", key(rootId));
}
}