]> source.dussan.org Git - vaadin-framework.git/commitdiff
renaming criteria
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 24 Mar 2010 15:40:04 +0000 (15:40 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 24 Mar 2010 15:40:04 +0000 (15:40 +0000)
svn changeset:12074/svn branch:6.3

src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java [new file with mode: 0644]
src/com/vaadin/terminal/gwt/client/ui/dd/VTargetNodeIsChildOf.java [deleted file]
src/com/vaadin/ui/Tree.java

diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetInSubtree.java
new file mode 100644 (file)
index 0000000..5456b44
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+@ITMillApache2LicenseForJavaFiles@
+ */
+/**
+ * 
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.google.gwt.user.client.ui.Widget;
+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 VTargetInSubtree extends VAcceptCriterion {
+
+    @Override
+    protected boolean accept(VDragEvent drag, UIDL configuration) {
+
+        VTree tree = (VTree) VDragAndDropManager.get().getCurrentDropHandler()
+                .getPaintable();
+        TreeNode treeNode = tree.getNodeByKey((String) drag.getDropDetails()
+                .get("itemIdOver"));
+        if (treeNode != null) {
+            Widget parent2 = treeNode;
+            int depth = configuration.getIntAttribute("depth");
+            if (depth < 0) {
+                depth = Integer.MAX_VALUE;
+            }
+            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(); // panel -> next level node
+            }
+        }
+
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetNodeIsChildOf.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VTargetNodeIsChildOf.java
deleted file mode 100644 (file)
index 22c0298..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-@ITMillApache2LicenseForJavaFiles@
- */
-/**
- * 
- */
-package com.vaadin.terminal.gwt.client.ui.dd;
-
-import com.google.gwt.user.client.ui.Widget;
-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 {
-
-    @Override
-    protected boolean accept(VDragEvent drag, UIDL configuration) {
-
-        VTree tree = (VTree) VDragAndDropManager.get().getCurrentDropHandler()
-                .getPaintable();
-        TreeNode treeNode = tree.getNodeByKey((String) drag.getDropDetails()
-                .get("itemIdOver"));
-        if (treeNode != null) {
-            Widget parent2 = treeNode.getParent().getParent();
-            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)) {
-                    return true;
-                }
-                parent2 = parent2.getParent().getParent();
-            }
-        }
-
-        return false;
-    }
-}
\ No newline at end of file
index ac4222f8ec09e667891af94faf82ac224f49f07d..670f9d8f2bb4aa1cae424a85a7d09ebbdba3e114 100644 (file)
@@ -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));
         }
 
     }