]> source.dussan.org Git - vaadin-framework.git/commitdiff
small changes
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Mon, 15 Feb 2010 12:00:39 +0000 (12:00 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Mon, 15 Feb 2010 12:00:39 +0000 (12:00 +0000)
svn changeset:11321/svn branch:6.3_dd

21 files changed:
src/com/vaadin/event/DataBindedTransferable.java [deleted file]
src/com/vaadin/event/DataBoundTransferable.java [new file with mode: 0644]
src/com/vaadin/event/dd/acceptCriteria/AcceptAll.java
src/com/vaadin/event/dd/acceptCriteria/And.java
src/com/vaadin/event/dd/acceptCriteria/ClientSideCriterion.java
src/com/vaadin/event/dd/acceptCriteria/ComponentFilter.java
src/com/vaadin/event/dd/acceptCriteria/IsDataBinded.java [deleted file]
src/com/vaadin/event/dd/acceptCriteria/IsDatabound.java [new file with mode: 0644]
src/com/vaadin/event/dd/acceptCriteria/Not.java
src/com/vaadin/event/dd/acceptCriteria/Or.java
src/com/vaadin/event/dd/acceptCriteria/OverTreeNode.java
src/com/vaadin/terminal/gwt/client/ui/dd/And.java
src/com/vaadin/terminal/gwt/client/ui/dd/ComponentCriteria.java
src/com/vaadin/terminal/gwt/client/ui/dd/HasItemId.java
src/com/vaadin/terminal/gwt/client/ui/dd/Not.java [new file with mode: 0644]
src/com/vaadin/terminal/gwt/client/ui/dd/Or.java [new file with mode: 0644]
src/com/vaadin/ui/DragDropPane.java
src/com/vaadin/ui/Table.java
src/com/vaadin/ui/Tree.java
tests/src/com/vaadin/tests/dd/DDTest1.java
tests/src/com/vaadin/tests/dd/DDTest2.java

diff --git a/src/com/vaadin/event/DataBindedTransferable.java b/src/com/vaadin/event/DataBindedTransferable.java
deleted file mode 100644 (file)
index 6e76756..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.vaadin.event;
-
-public interface DataBindedTransferable extends ComponentTransferable {
-
-    public Object getItemId();
-
-    public Object getPropertyId();
-
-}
diff --git a/src/com/vaadin/event/DataBoundTransferable.java b/src/com/vaadin/event/DataBoundTransferable.java
new file mode 100644 (file)
index 0000000..fd259f0
--- /dev/null
@@ -0,0 +1,9 @@
+package com.vaadin.event;
+
+public interface DataBoundTransferable extends ComponentTransferable {
+
+    public Object getItemId();
+
+    public Object getPropertyId();
+
+}
index 8a6129130cde4994416c5d280296969ee5edfcd7..4424447d97df5619252b2428d761b64879466519 100644 (file)
@@ -4,26 +4,14 @@
 package com.vaadin.event.dd.acceptCriteria;
 
 import com.vaadin.event.dd.DragAndDropEvent;
-import com.vaadin.terminal.PaintException;
-import com.vaadin.terminal.PaintTarget;
 
-public final class AcceptAll implements AcceptCriterion {
+public final class AcceptAll extends ClientSideCriterion {
 
     private static AcceptCriterion singleton = new AcceptAll();
 
     private AcceptAll() {
     }
 
-    public boolean isClientSideVerifiable() {
-        return true;
-    }
-
-    public void paint(PaintTarget target) throws PaintException {
-        target.startTag("-ac");
-        target.addAttribute("name", getClass().getCanonicalName());
-        target.endTag("-ac");
-    }
-
     public static AcceptCriterion get() {
         return singleton;
     }
@@ -31,9 +19,4 @@ public final class AcceptAll implements AcceptCriterion {
     public boolean accepts(DragAndDropEvent dragEvent) {
         return true;
     }
-
-    public void paintResponse(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
-
-    }
 }
\ No newline at end of file
index 9517688f35c92971c66c7439ab3f1770b364f176..29a4a6aa2e3ca1f5fa109892c8ca63351bfb153e 100644 (file)
@@ -7,37 +7,41 @@ import com.vaadin.event.dd.DragAndDropEvent;
 import com.vaadin.terminal.PaintException;
 import com.vaadin.terminal.PaintTarget;
 
-public class And implements AcceptCriterion {
+/**
+ * TODO consider replacing this with Union
+ * 
+ */
+public class And extends ClientSideCriterion {
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
     private AcceptCriterion f1;
     private AcceptCriterion f2;
 
-    public And(AcceptCriterion f1, AcceptCriterion f2) {
+    public And(ClientSideCriterion f1, ClientSideCriterion f2) {
         this.f1 = f1;
         this.f2 = f2;
     }
 
-    public boolean isClientSideVerifiable() {
-        boolean a1 = f1 instanceof AcceptCriterion ? (f1)
-                .isClientSideVerifiable() : false;
-        boolean a2 = f2 instanceof AcceptCriterion ? (f2)
-                .isClientSideVerifiable() : false;
-        return a1 && a2;
-    }
-
-    public void paint(PaintTarget target) throws PaintException {
-        target.startTag("-ac");
-        target.addAttribute("name", getClass().getCanonicalName());
+    // @Override
+    // public boolean isClientSideVerifiable() {
+    // boolean a1 = f1 instanceof AcceptCriterion ? (f1)
+    // .isClientSideVerifiable() : false;
+    // boolean a2 = f2 instanceof AcceptCriterion ? (f2)
+    // .isClientSideVerifiable() : false;
+    // return a1 && a2;
+    // }
+
+    @Override
+    public void paintContent(PaintTarget target) throws PaintException {
+        super.paintContent(target);
         (f1).paint(target);
         (f2).paint(target);
-        target.endTag("-ac");
     }
 
     public boolean accepts(DragAndDropEvent dragEvent) {
         return f1.accepts(dragEvent) && f2.accepts(dragEvent);
     }
 
-    public void paintResponse(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
-
-    }
 }
\ No newline at end of file
index b221fb69cd29f8b8900d9735553dceb65a090b42..eaba934c106d90602805f2916d208b66a80c913e 100644 (file)
@@ -13,7 +13,7 @@ public abstract class ClientSideCriterion implements Serializable,
      */
     private static final long serialVersionUID = 1L;
 
-    public final boolean isClientSideVerifiable() {
+    public boolean isClientSideVerifiable() {
         return true;
     }
 
@@ -24,10 +24,12 @@ public abstract class ClientSideCriterion implements Serializable,
         target.endTag("-ac");
     }
 
-    public void paintContent(PaintTarget target) {
+    public void paintContent(PaintTarget target) throws PaintException {
     }
 
-    abstract protected String getIdentifier();
+    protected String getIdentifier() {
+        return getClass().getCanonicalName();
+    }
 
     public void paintResponse(PaintTarget target) throws PaintException {
         // NOP, nothing to do as this is client side verified criterion
index dbaaac6ac807dc44a04caa22269e6fae0157501e..85b0a953e310a5ca5199e47dac587c6b59e85622 100644 (file)
@@ -9,35 +9,34 @@ import com.vaadin.terminal.PaintException;
 import com.vaadin.terminal.PaintTarget;
 import com.vaadin.ui.Component;
 
-public class ComponentFilter implements AcceptCriterion {
-    private Component component;
+public class ComponentFilter extends ClientSideCriterion {
+    private Component[] component;
 
-    public ComponentFilter(Component component) {
+    public ComponentFilter(Component... component) {
         this.component = component;
     }
 
-    public boolean isClientSideVerifiable() {
-        return true;
-    }
-
-    public void paint(PaintTarget target) throws PaintException {
-        target.startTag("-ac");
-        target.addAttribute("name", getClass().getCanonicalName());
-        target.addAttribute("component", component);
-        target.endTag("-ac");
+    @Override
+    public void paintContent(PaintTarget target) throws PaintException {
+        super.paintContent(target);
+        target.addAttribute("c", component.length);
+        for (int i = 0; i < component.length; i++) {
+            target.addAttribute("component" + i, component[i]);
+        }
     }
 
     public boolean accepts(DragAndDropEvent dragEvent) {
         if (dragEvent.getTransferable() instanceof ComponentTransferable) {
-            return ((ComponentTransferable) dragEvent.getTransferable())
-                    .getSourceComponent() == component;
-        } else {
-            return false;
+            Component sourceComponent = ((ComponentTransferable) dragEvent
+                    .getTransferable()).getSourceComponent();
+            for (Component c : component) {
+                if (c == sourceComponent) {
+                    return true;
+                }
+            }
         }
-    }
-
-    public void paintResponse(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
 
+        return false;
     }
+
 }
\ No newline at end of file
diff --git a/src/com/vaadin/event/dd/acceptCriteria/IsDataBinded.java b/src/com/vaadin/event/dd/acceptCriteria/IsDataBinded.java
deleted file mode 100644 (file)
index bbda232..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * 
- */
-package com.vaadin.event.dd.acceptCriteria;
-
-import com.vaadin.event.DataBindedTransferable;
-import com.vaadin.event.dd.DragAndDropEvent;
-import com.vaadin.terminal.PaintException;
-import com.vaadin.terminal.PaintTarget;
-
-public final class IsDataBinded implements AcceptCriterion {
-    private static IsDataBinded singleton = new IsDataBinded();
-
-    private IsDataBinded() {
-    }
-
-    public boolean isClientSideVerifiable() {
-        return true;
-    }
-
-    public void paint(PaintTarget target) throws PaintException {
-        target.startTag("-ac");
-        target.addAttribute("name", getClass().getCanonicalName());
-        target.endTag("-ac");
-    }
-
-    public static IsDataBinded get() {
-        return singleton;
-    }
-
-    public boolean accepts(DragAndDropEvent dragEvent) {
-        if (dragEvent.getTransferable() instanceof DataBindedTransferable) {
-            return ((DataBindedTransferable) dragEvent.getTransferable())
-                    .getItemId() != null;
-        }
-        return false;
-    }
-
-    public void paintResponse(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
-
-    }
-}
\ No newline at end of file
diff --git a/src/com/vaadin/event/dd/acceptCriteria/IsDatabound.java b/src/com/vaadin/event/dd/acceptCriteria/IsDatabound.java
new file mode 100644 (file)
index 0000000..4b40296
--- /dev/null
@@ -0,0 +1,26 @@
+/**
+ * 
+ */
+package com.vaadin.event.dd.acceptCriteria;
+
+import com.vaadin.event.DataBoundTransferable;
+import com.vaadin.event.dd.DragAndDropEvent;
+
+public final class IsDatabound extends ClientSideCriterion {
+    private static IsDatabound singleton = new IsDatabound();
+
+    private IsDatabound() {
+    }
+
+    public static IsDatabound get() {
+        return singleton;
+    }
+
+    public boolean accepts(DragAndDropEvent dragEvent) {
+        if (dragEvent.getTransferable() instanceof DataBoundTransferable) {
+            return ((DataBoundTransferable) dragEvent.getTransferable())
+                    .getItemId() != null;
+        }
+        return false;
+    }
+}
\ No newline at end of file
index 2408d6b6a3dd163c42ddeef35cdae29d489f8c3a..58d1aed5dfd8368f2f086814532da4afff42d480 100644 (file)
@@ -4,33 +4,17 @@
 package com.vaadin.event.dd.acceptCriteria;
 
 import com.vaadin.event.dd.DragAndDropEvent;
-import com.vaadin.terminal.PaintException;
-import com.vaadin.terminal.PaintTarget;
 
-public class Not implements AcceptCriterion {
+public class Not extends ClientSideCriterion {
+
     private AcceptCriterion acceptCriterion;
 
-    public Not(AcceptCriterion acceptCriterion) {
+    public Not(ClientSideCriterion acceptCriterion) {
         this.acceptCriterion = acceptCriterion;
     }
 
-    public boolean isClientSideVerifiable() {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    public void paint(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
-
-    }
-
     public boolean accepts(DragAndDropEvent dragEvent) {
         return !acceptCriterion.accepts(dragEvent);
     }
 
-    public void paintResponse(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
-
-    }
-
 }
\ No newline at end of file
index 6537f86b30cf130bc9130578af87e9026a658bcb..59f4de90f228b7167a4ff33c90f2aaa2cc512e44 100644 (file)
@@ -7,31 +7,32 @@ import com.vaadin.event.dd.DragAndDropEvent;
 import com.vaadin.terminal.PaintException;
 import com.vaadin.terminal.PaintTarget;
 
-public class Or implements AcceptCriterion {
+/**
+ * TODO consider replacing this with intersection
+ * 
+ */
+public class Or extends ClientSideCriterion {
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
     private AcceptCriterion f1;
     private AcceptCriterion f2;
 
-    Or(AcceptCriterion f1, AcceptCriterion f2) {
+    public Or(ClientSideCriterion f1, ClientSideCriterion f2) {
         this.f1 = f1;
         this.f2 = f2;
     }
 
-    public boolean isClientSideVerifiable() {
-        // TODO Auto-generated method stub
-        return false;
-    }
-
-    public void paint(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
-
+    @Override
+    public void paintContent(PaintTarget target) throws PaintException {
+        super.paintContent(target);
+        f1.paint(target);
+        f2.paint(target);
     }
 
     public boolean accepts(DragAndDropEvent dragEvent) {
         return f1.accepts(dragEvent) || f2.accepts(dragEvent);
     }
 
-    public void paintResponse(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
-
-    }
 }
\ No newline at end of file
index 1241bf6cb399052dde922198d9e6893004780292..e1bcf506b82cef6dc3130ebbc1cecf3719181262 100644 (file)
@@ -4,36 +4,39 @@
 package com.vaadin.event.dd.acceptCriteria;
 
 import com.vaadin.event.dd.DragAndDropEvent;
-import com.vaadin.terminal.PaintException;
-import com.vaadin.terminal.PaintTarget;
+import com.vaadin.ui.Tree;
 import com.vaadin.ui.Tree.Location;
 import com.vaadin.ui.Tree.TreeDropDetails;
 
-public class OverTreeNode implements AcceptCriterion {
-
-    public boolean isClientSideVerifiable() {
-        return true;
-    }
+/**
+ * Accepts transferable only on tree Node (middle of the node + can has child)
+ * 
+ * TODO relocate close to {@link Tree} as this is tree specifif
+ * 
+ */
+public class OverTreeNode extends ClientSideCriterion {
 
-    public void paint(PaintTarget target) throws PaintException {
-        target.startTag("-ac");
-        target.addAttribute("name", getClass().getCanonicalName());
-        target.endTag("-ac");
-    }
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
 
     public boolean accepts(DragAndDropEvent dragEvent) {
         try {
+            // must be over tree node and in the middle of it (not top or bottom
+            // part)
             TreeDropDetails eventDetails = (TreeDropDetails) dragEvent
                     .getDropTargetData();
+
+            Object itemIdOver = eventDetails.getItemIdOver();
+            if (!eventDetails.getTarget().areChildrenAllowed(itemIdOver)) {
+                return false;
+            }
+
             return eventDetails.getDropLocation() == Location.MIDDLE;
         } catch (Exception e) {
             return false;
         }
     }
 
-    public void paintResponse(PaintTarget target) throws PaintException {
-        // TODO Auto-generated method stub
-
-    }
-
 }
\ No newline at end of file
index 6eea108a4233e279bbfc959c2a484c1d1a105e6a..42a341d7e33ae57d4c0187a5aa7dfed0666e73ac 100644 (file)
@@ -40,7 +40,7 @@ final class And implements VAcceptCriteria {
         };
 
         crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
-        crit2.accept(drag, configuration.getChildUIDL(0), accept2cb);
+        crit2.accept(drag, configuration.getChildUIDL(1), accept2cb);
         if (b1 && b2) {
             callback.accepted(drag);
         }
index 198e58018eb825348e763385f56eb413bc4926e5..860653b67ab9f80cc4cdcf22ede79123dbbf35eb 100644 (file)
@@ -12,12 +12,16 @@ final class ComponentCriteria implements VAcceptCriteria {
             VAcceptCallback callback) {
         try {
             Paintable component = drag.getTransferable().getComponent();
-            String requiredPid = configuration.getStringAttribute("component");
-            Paintable paintable = VDragAndDropManager.get()
-                    .getCurrentDropHandler().getApplicationConnection()
-                    .getPaintable(requiredPid);
-            if (paintable == component) {
-                callback.accepted(drag);
+            int c = configuration.getIntAttribute("c");
+            for (int i = 0; i < c; i++) {
+                String requiredPid = configuration
+                        .getStringAttribute("component" + i);
+                Paintable paintable = VDragAndDropManager.get()
+                        .getCurrentDropHandler().getApplicationConnection()
+                        .getPaintable(requiredPid);
+                if (paintable == component) {
+                    callback.accepted(drag);
+                }
             }
         } catch (Exception e) {
         }
index 8c2bbee46fab56094f873ff2c51bf568cf2e9872..30716b43a58776baf6ecab8123b3362301ba3438 100644 (file)
@@ -5,7 +5,7 @@ package com.vaadin.terminal.gwt.client.ui.dd;
 
 import com.vaadin.terminal.gwt.client.UIDL;
 
-@ServerCriterion("com.vaadin.event.dd.acceptCriteria.IsDataBinded")
+@ServerCriterion("com.vaadin.event.dd.acceptCriteria.IsDatabound")
 final class HasItemId implements VAcceptCriteria {
     public void accept(VDragEvent drag, UIDL configuration,
             VAcceptCallback callback) {
diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/Not.java b/src/com/vaadin/terminal/gwt/client/ui/dd/Not.java
new file mode 100644 (file)
index 0000000..3b5915c
--- /dev/null
@@ -0,0 +1,48 @@
+/**
+ * 
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.UIDL;
+
+@ServerCriterion("com.vaadin.event.dd.acceptCriteria.Or")
+final class Not implements VAcceptCriteria {
+    private boolean b1;
+    private VAcceptCriteria crit1;
+
+    public void accept(VDragEvent drag, UIDL configuration,
+            VAcceptCallback callback) {
+        if (crit1 == null) {
+            crit1 = getCriteria(drag, configuration, 0);
+            if (crit1 == null) {
+                ApplicationConnection.getConsole().log(
+                        "Not criteria didn't found a child criteria");
+                return;
+            }
+        }
+
+        b1 = false;
+
+        VAcceptCallback accept1cb = new VAcceptCallback() {
+            public void accepted(VDragEvent event) {
+                b1 = true;
+            }
+        };
+
+        crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
+        if (!b1) {
+            callback.accepted(drag);
+        }
+    }
+
+    private VAcceptCriteria getCriteria(VDragEvent drag, UIDL configuration,
+            int i) {
+        UIDL childUIDL = configuration.getChildUIDL(i);
+        return VAcceptCriterion.get(childUIDL.getStringAttribute("name"));
+    }
+
+    public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+        return false; // TODO enforce on server side
+    }
+}
\ No newline at end of file
diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/Or.java b/src/com/vaadin/terminal/gwt/client/ui/dd/Or.java
new file mode 100644 (file)
index 0000000..ea79edc
--- /dev/null
@@ -0,0 +1,59 @@
+/**
+ * 
+ */
+package com.vaadin.terminal.gwt.client.ui.dd;
+
+import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.UIDL;
+
+@ServerCriterion("com.vaadin.event.dd.acceptCriteria.Or")
+final class Or implements VAcceptCriteria {
+    private boolean b1;
+    private boolean b2;
+    private VAcceptCriteria crit1;
+    private VAcceptCriteria crit2;
+
+    public void accept(VDragEvent drag, UIDL configuration,
+            VAcceptCallback callback) {
+        if (crit1 == null) {
+            crit1 = getCriteria(drag, configuration, 0);
+            crit2 = getCriteria(drag, configuration, 1);
+            if (crit1 == null || crit2 == null) {
+                ApplicationConnection.getConsole().log(
+                        "Or criteria didn't found a chidl criteria");
+                return;
+            }
+        }
+
+        b1 = false;
+        b2 = false;
+
+        VAcceptCallback accept1cb = new VAcceptCallback() {
+            public void accepted(VDragEvent event) {
+                b1 = true;
+            }
+        };
+        VAcceptCallback accept2cb = new VAcceptCallback() {
+            public void accepted(VDragEvent event) {
+                b2 = true;
+            }
+        };
+
+        crit1.accept(drag, configuration.getChildUIDL(0), accept1cb);
+        crit2.accept(drag, configuration.getChildUIDL(1), accept2cb);
+        if (b1 || b2) {
+            callback.accepted(drag);
+        }
+    }
+
+    private VAcceptCriteria getCriteria(VDragEvent drag, UIDL configuration,
+            int i) {
+        UIDL childUIDL = configuration.getChildUIDL(i);
+        return VAcceptCriterion.get(childUIDL.getStringAttribute("name"));
+    }
+
+    public boolean needsServerSideCheck(VDragEvent drag, UIDL criterioUIDL) {
+        return false; // TODO enforce on server side
+    }
+
+}
\ No newline at end of file
index ec8443e23740a71e3de10e24345d1a41f5b9b6d1..24c366156cfdaa89a3324564daef772baf5162ff 100644 (file)
@@ -3,7 +3,7 @@ package com.vaadin.ui;
 import java.util.Map;
 
 import com.vaadin.event.ComponentTransferable;
-import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DataBoundTransferable;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.dd.DropEvent;
 import com.vaadin.event.dd.DropHandler;
@@ -81,13 +81,13 @@ public class DragDropPane extends AbsoluteLayout implements DropTarget {
                 Component component = ctr.getSourceComponent();
 
                 if (component.getParent() != pane) {
-                    if (transferable instanceof DataBindedTransferable) {
+                    if (transferable instanceof DataBoundTransferable) {
                         // Item has been dragged, construct a Label from
                         // Item id
                         Label l = new Label();
                         l.setSizeUndefined();
                         l.setValue("ItemId : "
-                                + ((DataBindedTransferable) transferable)
+                                + ((DataBoundTransferable) transferable)
                                         .getItemId());
                         pane.addComponent(l);
                         component = l;
index 0ef69509366fdcf124d310b5499ed59f2b925685..afc91d7bcfd56155e164c862ffb6cbfdabd363a5 100644 (file)
@@ -23,7 +23,7 @@ import com.vaadin.data.Property;
 import com.vaadin.data.util.ContainerOrderedWrapper;
 import com.vaadin.data.util.IndexedContainer;
 import com.vaadin.event.Action;
-import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DataBoundTransferable;
 import com.vaadin.event.ItemClickEvent;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.Action.Handler;
@@ -3321,7 +3321,7 @@ public class Table extends AbstractSelect implements Action.Container,
         requestRepaint();
     }
 
-    class TableTransferable implements DataBindedTransferable {
+    class TableTransferable implements DataBoundTransferable {
 
         private final HashMap<String, Object> data = new HashMap<String, Object>();
 
index c235405b36b390b382afd613f5e80302e73b431c..15990500d69f4342b9f980430216ab724fea0f4c 100644 (file)
@@ -23,7 +23,7 @@ import com.vaadin.data.Item;
 import com.vaadin.data.util.ContainerHierarchicalWrapper;
 import com.vaadin.data.util.IndexedContainer;
 import com.vaadin.event.Action;
-import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DataBoundTransferable;
 import com.vaadin.event.ItemClickEvent;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.ItemClickEvent.ItemClickListener;
@@ -117,7 +117,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
 
     private int itemDragModes = DRAG_OUT;
 
-    class TreeTransferable implements DataBindedTransferable {
+    class TreeTransferable implements DataBoundTransferable {
 
         private final HashMap<String, Object> data = new HashMap<String, Object>();
 
@@ -1188,6 +1188,11 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
             }
         }
 
+        @Override
+        public Tree getTarget() {
+            return (Tree) super.getTarget();
+        }
+
     }
 
     public TreeDropDetails translateDragDropDetails(
index 33b2af641b0f588f496456ccde39cd51cb6359ad..49f47da436d9f7c07c5ed03f0af501d57ecb8ac4 100644 (file)
@@ -5,13 +5,13 @@ import java.util.Collection;
 import com.vaadin.data.Item;
 import com.vaadin.data.util.HierarchicalContainer;
 import com.vaadin.event.ComponentTransferable;
-import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DataBoundTransferable;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.dd.DragAndDropEvent;
 import com.vaadin.event.dd.DropEvent;
 import com.vaadin.event.dd.DropHandler;
 import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;
-import com.vaadin.event.dd.acceptCriteria.IsDataBinded;
+import com.vaadin.event.dd.acceptCriteria.IsDatabound;
 import com.vaadin.event.dd.acceptCriteria.ServerSideCriterion;
 import com.vaadin.terminal.ExternalResource;
 import com.vaadin.tests.components.TestBase;
@@ -191,8 +191,8 @@ public class DDTest1 extends TestBase {
                         .getDropTargetData();
                 // TODO set properties, so same sorter could be used in Table
                 Transferable transferable = event.getTransferable();
-                if (transferable instanceof DataBindedTransferable) {
-                    DataBindedTransferable transferrable2 = (DataBindedTransferable) transferable;
+                if (transferable instanceof DataBoundTransferable) {
+                    DataBoundTransferable transferrable2 = (DataBoundTransferable) transferable;
 
                     Object itemId = transferrable2.getItemId();
 
@@ -237,7 +237,7 @@ public class DDTest1 extends TestBase {
 
             public AcceptCriterion getAcceptCriterion() {
                 // TODO should actually check that source is same as target
-                return IsDataBinded.get();
+                return IsDatabound.get();
             }
 
         };
index 49ba8780e8f0eea0bbb1c7826365cbf78c61e234..ab24955f2ed6bc1f303c501f1f8b34da708d0578 100644 (file)
@@ -4,11 +4,12 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
+import com.vaadin.data.Container;
 import com.vaadin.data.Item;
 import com.vaadin.data.util.HierarchicalContainer;
 import com.vaadin.demo.tutorial.addressbook.data.Person;
 import com.vaadin.demo.tutorial.addressbook.data.PersonContainer;
-import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DataBoundTransferable;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.dd.DragAndDropEvent;
 import com.vaadin.event.dd.DropEvent;
@@ -16,7 +17,8 @@ import com.vaadin.event.dd.DropHandler;
 import com.vaadin.event.dd.acceptCriteria.AcceptCriterion;
 import com.vaadin.event.dd.acceptCriteria.And;
 import com.vaadin.event.dd.acceptCriteria.ComponentFilter;
-import com.vaadin.event.dd.acceptCriteria.IsDataBinded;
+import com.vaadin.event.dd.acceptCriteria.IsDatabound;
+import com.vaadin.event.dd.acceptCriteria.Or;
 import com.vaadin.event.dd.acceptCriteria.OverTreeNode;
 import com.vaadin.terminal.Resource;
 import com.vaadin.terminal.ThemeResource;
@@ -105,9 +107,12 @@ public class DDTest2 extends TestBase {
          */
         table.setDragMode(Table.DragModes.ROWS);
 
-        AcceptCriterion onNode = new OverTreeNode();
-        AcceptCriterion fromTree = new ComponentFilter(table);
-        final And and = new And(fromTree, onNode);
+        OverTreeNode onNode = new OverTreeNode();
+        ComponentFilter fromTable = new ComponentFilter(table);
+
+        ComponentFilter fromTree = new ComponentFilter(tree1);
+        final Or fromTree1OrTable = new Or(fromTable, fromTree);
+        final And and = new And(fromTree1OrTable, onNode);
 
         DropHandler dropHandler = new DropHandler() {
 
@@ -116,15 +121,28 @@ public class DDTest2 extends TestBase {
                  * We know transferrable is from table, so it is of type
                  * DataBindedTransferrable
                  */
-                DataBindedTransferable tr = (DataBindedTransferable) event
+                DataBoundTransferable tr = (DataBoundTransferable) event
                         .getTransferable();
                 Object itemId = tr.getItemId();
-                Table fromTable = (Table) tr.getSourceComponent();
-                String name = fromTable.getItem(itemId).getItemProperty("Name")
-                        .toString();
+                Container sourceContainer = (Container) tr.getSourceComponent();
+                if (sourceContainer != tree1) {
+                    // if the source is from table (not from tree1 itself),
+                    // transfer Name property and use it as an indentifier in
+                    // tree1
+                    String name = sourceContainer.getItem(itemId)
+                            .getItemProperty("Name").toString();
+
+                    tree1.addItem(name);
+                    tree1.setChildrenAllowed(name, false);
 
-                tree1.addItem(name);
-                tree1.setChildrenAllowed(name, false);
+                    /*
+                     * Remove the item from table
+                     */
+                    sourceContainer.removeItem(itemId);
+
+                    itemId = name;
+
+                }
 
                 /*
                  * As we also accept only drops on folders, we know dropDetails
@@ -133,12 +151,8 @@ public class DDTest2 extends TestBase {
                 TreeDropDetails details = (TreeDropDetails) event
                         .getDropTargetData();
                 Object idOver = details.getItemIdOver();
-                tree1.setParent(name, idOver);
+                tree1.setParent(itemId, idOver);
 
-                /*
-                 * Remove the item from table
-                 */
-                table.removeItem(itemId);
             }
 
             public AcceptCriterion getAcceptCriterion() {
@@ -163,8 +177,8 @@ public class DDTest2 extends TestBase {
                         .getDropTargetData();
                 Transferable transferable = event.getTransferable();
 
-                if (transferable instanceof DataBindedTransferable) {
-                    DataBindedTransferable tr = (DataBindedTransferable) transferable;
+                if (transferable instanceof DataBoundTransferable) {
+                    DataBoundTransferable tr = (DataBoundTransferable) transferable;
 
                     Object itemId = tree2.addItem();
                     tree2.setParent(itemId, details.getItemIdOver());
@@ -198,7 +212,7 @@ public class DDTest2 extends TestBase {
             }
 
             public AcceptCriterion getAcceptCriterion() {
-                return IsDataBinded.get();
+                return IsDatabound.get();
             }
         };