]> source.dussan.org Git - vaadin-framework.git/commitdiff
Transferrable -> Transferable
authorArtur Signell <artur.signell@itmill.com>
Tue, 2 Feb 2010 14:52:42 +0000 (14:52 +0000)
committerArtur Signell <artur.signell@itmill.com>
Tue, 2 Feb 2010 14:52:42 +0000 (14:52 +0000)
Renamed HasDropHandler to DropTarget
Split DropHandler into DropHandler and DragDropHandler to provide separate drop and drag events
Split Transferable and DragDropDetails from DragRequest

svn changeset:11110/svn branch:6.3_dd

27 files changed:
src/com/vaadin/event/AbstractDropHandler.java
src/com/vaadin/event/DataBindedTransferable.java [new file with mode: 0644]
src/com/vaadin/event/DataBindedTransferrable.java [deleted file]
src/com/vaadin/event/DragDropDataTranslator.java [new file with mode: 0644]
src/com/vaadin/event/DragDropDetails.java [new file with mode: 0644]
src/com/vaadin/event/DragDropDetailsImpl.java [new file with mode: 0644]
src/com/vaadin/event/DragDropHandler.java [new file with mode: 0644]
src/com/vaadin/event/DragRequest.java
src/com/vaadin/event/DropHandler.java
src/com/vaadin/event/DropTarget.java [new file with mode: 0644]
src/com/vaadin/event/HasDropHandler.java [deleted file]
src/com/vaadin/terminal/DragSource.java
src/com/vaadin/terminal/gwt/client/ui/VDragDropPane.java
src/com/vaadin/terminal/gwt/client/ui/VTree.java
src/com/vaadin/terminal/gwt/client/ui/dd/VAbstractDropHandler.java
src/com/vaadin/terminal/gwt/client/ui/dd/VAcceptCriterionImpl.java
src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java
src/com/vaadin/terminal/gwt/client/ui/dd/VDragEvent.java
src/com/vaadin/terminal/gwt/client/ui/dd/VDropHandler.java
src/com/vaadin/terminal/gwt/server/DragAndDropService.java
src/com/vaadin/ui/DragDropPane.java
src/com/vaadin/ui/Table.java
src/com/vaadin/ui/Tree.java
tests/src/com/vaadin/tests/dd/AcceptFromComponent.java
tests/src/com/vaadin/tests/dd/CustomDDImplementation.java
tests/src/com/vaadin/tests/dd/DDTest1.java
tests/src/com/vaadin/tests/dd/DDTest2.java

index ff77a8be30248bfda11440d79ac14993d1435b84..633e7a0c105c1b5d125c5520b46b7593a0882d8b 100644 (file)
@@ -2,7 +2,6 @@ package com.vaadin.event;
 
 import com.vaadin.terminal.PaintException;
 import com.vaadin.terminal.PaintTarget;
-import com.vaadin.terminal.gwt.client.ui.dd.VDragAndDropManager.DragEventType;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.Tree.Location;
 import com.vaadin.ui.Tree.TreeDropDetails;
@@ -16,14 +15,15 @@ import com.vaadin.ui.Tree.TreeDropDetails;
  * {@link #receive(Transferable)} method.
  * 
  */
-public abstract class AbstractDropHandler implements DropHandler {
+public abstract class AbstractDropHandler implements DragDropHandler {
     /**
      * Criterion that can be used create policy to accept/discard dragged
      * content (presented by {@link Transferable}).
      * 
      */
     public interface AcceptCriterion {
-        public boolean accepts(DragRequest request);
+        public boolean accepts(Transferable transferable,
+                DragDropDetails dragDropDetails);
     }
 
     public interface ClientSideVerifiable extends AcceptCriterion {
@@ -40,7 +40,9 @@ public abstract class AbstractDropHandler implements DropHandler {
     }
 
     private static final class AcceptAll implements ClientSideVerifiable {
-        public boolean accepts(DragRequest event) {
+
+        public boolean accepts(Transferable transferable,
+                DragDropDetails dragDropDetails) {
             return true;
         }
 
@@ -64,8 +66,10 @@ public abstract class AbstractDropHandler implements DropHandler {
             this.f2 = f2;
         }
 
-        public boolean accepts(DragRequest event) {
-            return f1.accepts(event) && f2.accepts(event);
+        public boolean accepts(Transferable transferable,
+                DragDropDetails dragDropDetails) {
+            return f1.accepts(transferable, dragDropDetails)
+                    && f2.accepts(transferable, dragDropDetails);
         }
 
         public boolean isClientSideVerifiable() {
@@ -94,9 +98,10 @@ public abstract class AbstractDropHandler implements DropHandler {
             this.component = component;
         }
 
-        public boolean accepts(DragRequest event) {
-            if (event.getTransferable() instanceof ComponentTransferable) {
-                return ((ComponentTransferable) event.getTransferable())
+        public boolean accepts(Transferable transferable,
+                DragDropDetails dragDropDetails) {
+            if (transferable instanceof ComponentTransferable) {
+                return ((ComponentTransferable) transferable)
                         .getSourceComponent() == component;
             } else {
                 return false;
@@ -116,10 +121,10 @@ public abstract class AbstractDropHandler implements DropHandler {
     }
 
     private static final class IsDataBinded implements ClientSideVerifiable {
-        public boolean accepts(DragRequest event) {
-            Transferable transferable = event.getTransferable();
-            if (transferable instanceof DataBindedTransferrable) {
-                return ((DataBindedTransferrable) transferable).getItemId() != null;
+        public boolean accepts(Transferable transferable,
+                DragDropDetails dragDropDetails) {
+            if (transferable instanceof DataBindedTransferable) {
+                return ((DataBindedTransferable) transferable).getItemId() != null;
             }
             return false;
         }
@@ -142,8 +147,9 @@ public abstract class AbstractDropHandler implements DropHandler {
             this.acceptCriterion = acceptCriterion;
         }
 
-        public boolean accepts(DragRequest event) {
-            return !acceptCriterion.accepts(event);
+        public boolean accepts(Transferable transferable,
+                DragDropDetails dragDropDetails) {
+            return !acceptCriterion.accepts(transferable, dragDropDetails);
         }
 
     }
@@ -157,17 +163,19 @@ public abstract class AbstractDropHandler implements DropHandler {
             this.f2 = f2;
         }
 
-        public boolean accepts(DragRequest event) {
-            return f1.accepts(event) || f2.accepts(event);
+        public boolean accepts(Transferable transferable,
+                DragDropDetails dragDropDetails) {
+            return f1.accepts(transferable, dragDropDetails)
+                    || f2.accepts(transferable, dragDropDetails);
         }
     }
 
     public static class OverTreeNode implements ClientSideVerifiable {
 
-        public boolean accepts(DragRequest event) {
+        public boolean accepts(Transferable transferable,
+                DragDropDetails dragDropDetails) {
             try {
-                TreeDropDetails eventDetails = (TreeDropDetails) event
-                        .getEventDetails();
+                TreeDropDetails eventDetails = (TreeDropDetails) dragDropDetails;
                 return eventDetails.getDropLocation() == Location.MIDDLE;
             } catch (Exception e) {
                 return false;
@@ -195,11 +203,12 @@ public abstract class AbstractDropHandler implements DropHandler {
     /*
      * (non-Javadoc)
      * 
-     * @seecom.vaadin.event.DropHandler#acceptTransferrable(com.vaadin.event.
+     * @seecom.vaadin.event.DropHandler#acceptTransferable(com.vaadin.event.
      * Transferable)
      */
-    public boolean acceptTransferrable(DragRequest request) {
-        return acceptCriterion.accepts(request);
+    public boolean acceptTransferable(Transferable transferable,
+            DragDropDetails dragDropDetails) {
+        return acceptCriterion.accepts(transferable, dragDropDetails);
     }
 
     private boolean clientSideVerifiable() {
@@ -210,16 +219,24 @@ public abstract class AbstractDropHandler implements DropHandler {
         return false;
     }
 
-    public void handleDragRequest(DragRequest event) {
-        boolean acceptTransferrable = acceptTransferrable(event);
-        if (acceptTransferrable) {
-            if (event.getType() == DragEventType.DROP) {
-                receive(event.getTransferable(), event.getEventDetails());
-            } else {
-                event.setResponseParameter("accepted", true);
-            }
+    public void handleDragRequest(DragRequest event, Transferable transferable,
+            DragDropDetails dragDropDetails) {
+        boolean acceptTransferable = acceptTransferable(transferable,
+                dragDropDetails);
+        if (acceptTransferable) {
+            event.setResponseParameter("accepted", true);
+        }
+    }
 
+    public boolean drop(Transferable transferable,
+            DragDropDetails dragDropDetails) {
+        boolean acceptTransferable = acceptTransferable(transferable,
+                dragDropDetails);
+        if (acceptTransferable) {
+            receive(transferable, dragDropDetails);
+            return true;
         }
+        return false;
     }
 
     public void paint(PaintTarget target) throws PaintException {
@@ -237,7 +254,8 @@ public abstract class AbstractDropHandler implements DropHandler {
      * 
      * @see com.vaadin.event.DropHandler#receive(com.vaadin.event.Transferable)
      */
-    public abstract void receive(Transferable transferable, Object dropDetails);
+    public abstract void receive(Transferable transferable,
+            DragDropDetails dropDetails);
 
     public void setAcceptCriterion(AcceptCriterion acceptCriterion) {
         this.acceptCriterion = acceptCriterion;
diff --git a/src/com/vaadin/event/DataBindedTransferable.java b/src/com/vaadin/event/DataBindedTransferable.java
new file mode 100644 (file)
index 0000000..6e76756
--- /dev/null
@@ -0,0 +1,9 @@
+package com.vaadin.event;
+
+public interface DataBindedTransferable extends ComponentTransferable {
+
+    public Object getItemId();
+
+    public Object getPropertyId();
+
+}
diff --git a/src/com/vaadin/event/DataBindedTransferrable.java b/src/com/vaadin/event/DataBindedTransferrable.java
deleted file mode 100644 (file)
index 9a2908b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.vaadin.event;
-
-public interface DataBindedTransferrable extends ComponentTransferable {
-
-    public Object getItemId();
-
-    public Object getPropertyId();
-
-}
diff --git a/src/com/vaadin/event/DragDropDataTranslator.java b/src/com/vaadin/event/DragDropDataTranslator.java
new file mode 100644 (file)
index 0000000..dbb5141
--- /dev/null
@@ -0,0 +1,26 @@
+package com.vaadin.event;
+
+import java.util.Map;
+
+/**
+ * DragDropDataTranslator provides a method for translating drop data from a
+ * client side widget to server side values. This interface is optional for drop
+ * operations and only need to be implemented if translation is necessary. If
+ * this is not implemented the data will be passed through as-is without
+ * conversion.
+ */
+public interface DragDropDataTranslator {
+    /**
+     * Called before a drop operation to translate the drop data provided by the
+     * client widget. Should return a DropData implementation with the new
+     * values. If null is returned the {@link DragDropHandler} will
+     * automatically create a DropData with all the client variables.
+     * 
+     * @param rawVariables
+     *            Parameters passed from the client side widget.
+     * @return A DropData object with the translated data or null.
+     */
+    public DragDropDetails translateDragDropDetails(
+            Map<String, Object> clientVariables);
+
+}
\ No newline at end of file
diff --git a/src/com/vaadin/event/DragDropDetails.java b/src/com/vaadin/event/DragDropDetails.java
new file mode 100644 (file)
index 0000000..f617411
--- /dev/null
@@ -0,0 +1,12 @@
+package com.vaadin.event;
+
+import com.vaadin.ui.Component;
+
+public interface DragDropDetails {
+
+    public Object get(String key);
+
+    public Object put(String key, Object value);
+
+    public Component getTarget();
+}
diff --git a/src/com/vaadin/event/DragDropDetailsImpl.java b/src/com/vaadin/event/DragDropDetailsImpl.java
new file mode 100644 (file)
index 0000000..1a2ffb2
--- /dev/null
@@ -0,0 +1,28 @@
+package com.vaadin.event;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.vaadin.terminal.gwt.server.DragAndDropService;
+import com.vaadin.ui.Component;
+
+public class DragDropDetailsImpl implements DragDropDetails {
+
+    private HashMap<String, Object> data = new HashMap<String, Object>();
+
+    public DragDropDetailsImpl(Map<String, Object> rawDropData) {
+        data.putAll(rawDropData);
+    }
+
+    public Object get(String key) {
+        return data.get(key);
+    }
+
+    public Object put(String key, Object value) {
+        return data.put(key, value);
+    }
+
+    public Component getTarget() {
+        return (Component) data.get(DragAndDropService.DROPTARGET_KEY);
+    }
+}
diff --git a/src/com/vaadin/event/DragDropHandler.java b/src/com/vaadin/event/DragDropHandler.java
new file mode 100644 (file)
index 0000000..259dec8
--- /dev/null
@@ -0,0 +1,8 @@
+package com.vaadin.event;
+
+public interface DragDropHandler extends DropHandler {
+
+    public void handleDragRequest(DragRequest event, Transferable transferable,
+            DragDropDetails dragDropDetails);
+
+}
index c1d2763b7f97979d8311842fef9bd4616049df58..21c75926fc97eb6cdd31d25cf39c400ebb734f76 100644 (file)
@@ -8,17 +8,10 @@ import com.vaadin.terminal.gwt.client.ui.dd.VDragAndDropManager.DragEventType;
 public class DragRequest {
 
     private DragEventType dragEventType;
-    private Transferable transferable;
     private Map<String, Object> responseData;
-    private Object eventDetails;
 
-    public DragRequest(DragEventType dragEventType, Transferable transferable) {
+    public DragRequest(DragEventType dragEventType) {
         this.dragEventType = dragEventType;
-        this.transferable = transferable;
-    }
-
-    public Transferable getTransferable() {
-        return transferable;
     }
 
     public DragEventType getType() {
@@ -44,12 +37,4 @@ public class DragRequest {
         responseData.put(key, value);
     }
 
-    public void setEventDetails(Object eventDetails) {
-        this.eventDetails = eventDetails;
-    }
-
-    public Object getEventDetails() {
-        return eventDetails;
-    }
-
 }
index f44ca1556913cf1be13cd8c4f004335b4c950e24..f5ee8bc2d748d4fed6822965a8dde360680a8717 100644 (file)
@@ -2,6 +2,6 @@ package com.vaadin.event;
 
 public interface DropHandler {
 
-    public void handleDragRequest(DragRequest event);
+    public boolean drop(Transferable transferable, DragDropDetails dropDetails);
 
 }
\ No newline at end of file
diff --git a/src/com/vaadin/event/DropTarget.java b/src/com/vaadin/event/DropTarget.java
new file mode 100644 (file)
index 0000000..8519774
--- /dev/null
@@ -0,0 +1,15 @@
+package com.vaadin.event;
+
+import com.vaadin.ui.Component;
+
+/**
+ * DropTarget is a marker interface for components supporting drop operations. A
+ * component that wants to receive drop events should implement this interface
+ * and provide a DropHandler which will handle the actual drop event.
+ * 
+ */
+public interface DropTarget extends Component {
+
+    public DropHandler getDropHandler();
+
+}
\ No newline at end of file
diff --git a/src/com/vaadin/event/HasDropHandler.java b/src/com/vaadin/event/HasDropHandler.java
deleted file mode 100644 (file)
index 8326e5f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.vaadin.event;
-
-import java.util.Map;
-
-import com.vaadin.ui.Component;
-
-/**
- * Implementing component most commonly has also setDropHandler method, but not
- * polluting interface here as component might also have internal
- * AbstractDropHandler implementation.
- * 
- */
-public interface HasDropHandler extends Component {
-    public DropHandler getDropHandler();
-
-    /**
-     * TODO Consider using map-like type as return type that would be auto
-     * created by terminal in case this implementation would return null. Would
-     * enable using simple event details without server side class. Should at
-     * least include the component that {@link HasDropHandler} -> would make it
-     * possible for one drophandler to be used on multiple components.
-     * 
-     * @param rawVariables
-     * @return
-     */
-    public Object getDragEventDetails(Map<String, Object> rawVariables);
-}
\ No newline at end of file
index ee4006e742cbe0394b1518e0376da54191f78d97..ece7a79e0c8462411b1be56007079b9f904c47e0 100644 (file)
@@ -24,7 +24,7 @@ public interface DragSource {
      * @param rawVariables
      * @return
      */
-    public Transferable getTransferrable(Transferable transferable,
+    public Transferable getTransferable(Transferable transferable,
             Map<String, Object> rawVariables);
 
 }
index 5d3f4ae40ab4ffb1cc391f020aee24dd4a2d8068..c5c10c4155e13f733a06cfc416ed800c83ac6f3e 100644 (file)
@@ -46,7 +46,7 @@ public class VDragDropPane extends VAbsoluteLayout implements Container,
                 VDragEvent drag = VDragAndDropManager.get().startDrag(
                         transferable, event.getNativeEvent(), true);
                 drag.createDragImage(((Widget) paintable).getElement(), true);
-                drag.getEventDetails().put(
+                drag.getDropDetails().put(
                         "mouseDown",
                         new MouseEventDetails(event.getNativeEvent())
                                 .serialize());
@@ -141,7 +141,7 @@ public class VDragDropPane extends VAbsoluteLayout implements Container,
 
     public boolean html5DragDrop(VHtml5DragEvent event) {
         ApplicationConnection.getConsole().log("HTML 5 Drag Drop");
-        VTransferable transferable = vaadinDragEvent.getTransferrable();
+        VTransferable transferable = vaadinDragEvent.getTransferable();
 
         JsArrayString types = event.getTypes();
         for (int i = 0; i < types.length(); i++) {
@@ -214,7 +214,7 @@ public class VDragDropPane extends VAbsoluteLayout implements Container,
                         return false;
                     }
 
-                    Map<String, Object> transferable = drag.getEventDetails();
+                    Map<String, Object> transferable = drag.getDropDetails();
 
                     // this is absolute layout based, and we may want to set
                     // component
index 745ec31878ea3ef1d4b296e463c42407a142f02c..dd91fcdcea36436b8a5492907bdc1c3bea5312f7 100644 (file)
@@ -164,7 +164,7 @@ public class VTree extends FlowPanel implements Paintable, VHasDropHandler {
 
         currentMouseOverKey = findCurrentMouseOverKey(drag.getElementOver());
 
-        drag.getEventDetails().put("itemIdOver", currentMouseOverKey);
+        drag.getDropDetails().put("itemIdOver", currentMouseOverKey);
 
         if (currentMouseOverKey != null) {
             String detail = getDropDetail(drag.getCurrentGwtEvent());
@@ -173,8 +173,8 @@ public class VTree extends FlowPanel implements Paintable, VHasDropHandler {
                     && "Center".equals(detail)) {
                 overTreeNode = true;
             }
-            drag.getEventDetails().put("itemIdOverIsNode", overTreeNode);
-            drag.getEventDetails().put("detail", detail);
+            drag.getDropDetails().put("itemIdOverIsNode", overTreeNode);
+            drag.getDropDetails().put("detail", detail);
 
         }
     }
@@ -218,10 +218,10 @@ public class VTree extends FlowPanel implements Paintable, VHasDropHandler {
 
                 @Override
                 public void dragOver(final VDragEvent currentDrag) {
-                    final Object oldIdOver = currentDrag.getEventDetails().get(
+                    final Object oldIdOver = currentDrag.getDropDetails().get(
                             "itemIdOver");
                     final String oldDetail = (String) currentDrag
-                            .getEventDetails().get("detail");
+                            .getDropDetails().get("detail");
 
                     updateTreeRelatedDragData(currentDrag);
                     final String detail = getDropDetail(currentDrag
index 81331f334e3a69c718781a57f9c936b480ff6a28..42602dd3be3360ef2e1e21b7b70b51c7540466c3 100644 (file)
@@ -44,7 +44,7 @@ public abstract class VAbstractDropHandler implements VDropHandler {
     }
 
     /**
-     * If transferrable is accepted (either via server visit or client side
+     * If transferable is accepted (either via server visit or client side
      * rules) the default implementation calls {@link #dragAccepted(VDragEvent)}
      * method.
      */
index f8905443cfa7996b584189a8068f5bdb372703e0..e2cd4b6a5b4797163be2784158b7802f062f297a 100644 (file)
@@ -10,7 +10,7 @@ public class VAcceptCriterionImpl {
 
     private final class OverTreeNode implements VAcceptCriteria {
         public boolean accept(VDragEvent drag, UIDL configuration) {
-            Boolean containsKey = (Boolean) drag.getEventDetails().get(
+            Boolean containsKey = (Boolean) drag.getDropDetails().get(
                     "itemIdOverIsNode");
             if (containsKey != null && containsKey.booleanValue()) {
                 return true;
@@ -22,7 +22,7 @@ public class VAcceptCriterionImpl {
     private final class ComponentCriteria implements VAcceptCriteria {
         public boolean accept(VDragEvent drag, UIDL configuration) {
             try {
-                Paintable component = drag.getTransferrable().getComponent();
+                Paintable component = drag.getTransferable().getComponent();
                 String requiredPid = configuration
                         .getStringAttribute("component");
                 Paintable paintable = VDragAndDropManager.get()
@@ -62,7 +62,7 @@ public class VAcceptCriterionImpl {
 
     private final class HasItemId implements VAcceptCriteria {
         public boolean accept(VDragEvent drag, UIDL configuration) {
-            return drag.getTransferrable().getItemId() != null;
+            return drag.getTransferable().getItemId() != null;
         }
     }
 
index fd17d7c4d073e6fe86640cdfa4a9dacb43053bb3..8dab257e29241bdd9e324e2ce7ffb75c517b40c9 100644 (file)
@@ -395,9 +395,9 @@ public class VDragAndDropManager {
         }
         if (currentDropHandler != null) {
             // we have dropped on a drop target
-            boolean sendTransferrableToServer = currentDropHandler
+            boolean sendTransferableToServer = currentDropHandler
                     .drop(currentDrag);
-            if (sendTransferrableToServer) {
+            if (sendTransferableToServer) {
                 doRequest(DragEventType.DROP);
             }
             currentDropHandler = null;
@@ -451,7 +451,7 @@ public class VDragAndDropManager {
                 false);
         client.updateVariable(DD_SERVICE, "dhowner", paintable, false);
 
-        VTransferable transferable = currentDrag.getTransferrable();
+        VTransferable transferable = currentDrag.getTransferable();
 
         if (transferable.getItemId() != null) {
             client.updateVariable(DD_SERVICE, "itemId", transferable
@@ -471,7 +471,7 @@ public class VDragAndDropManager {
             try {
                 MouseEventDetails mouseEventDetails = new MouseEventDetails(
                         currentDrag.currentGwtEvent);
-                currentDrag.getEventDetails().put("mouseEvent",
+                currentDrag.getDropDetails().put("mouseEvent",
                         mouseEventDetails.serialize());
             } catch (Exception e) {
                 // NOP, (at least oophm on Safari) can't serialize html dd event
@@ -479,9 +479,9 @@ public class VDragAndDropManager {
                 // mouseevent
             }
         } else {
-            currentDrag.getEventDetails().put("mouseEvent", null);
+            currentDrag.getDropDetails().put("mouseEvent", null);
         }
-        client.updateVariable(DD_SERVICE, "evt", currentDrag.getEventDetails(),
+        client.updateVariable(DD_SERVICE, "evt", currentDrag.getDropDetails(),
                 false);
 
         client.updateVariable(DD_SERVICE, "tra", transferable.getVariableMap(),
index 0da6fbabda6b2350671f5ea23fe92e0085900448..a35a4a7e0cec2d8da31b5f6dc9ff65a7e62e8d36 100644 (file)
@@ -45,7 +45,7 @@ public class VDragEvent {
         start = new Date();
     }
 
-    public VTransferable getTransferrable() {
+    public VTransferable getTransferable() {
         return transferable;
     }
 
@@ -109,7 +109,7 @@ public class VDragEvent {
      * 
      * @return
      */
-    public Map<String, Object> getEventDetails() {
+    public Map<String, Object> getDropDetails() {
         return dropDetails;
     }
 
index 5a4701fd9f0ada6fed3ab289426d28c8d7dda4b2..a13227128372f89f4b3d21de655692374cd12ba7 100644 (file)
@@ -10,26 +10,37 @@ import com.vaadin.terminal.gwt.client.Paintable;
 public interface VDropHandler {
 
     /**
-     * Called by D'D' manager when drag gets over this drop handler.
+     * Called by DragAndDropManager when a drag operation is in progress and the
+     * cursor enters the area occupied by this Paintable.
      * 
-     * @param drag
+     * @param dragEvent
+     *            DragEvent which contains the transferable and other
+     *            information for the operation
      */
-    public void dragEnter(VDragEvent drag);
+    public void dragEnter(VDragEvent dragEvent);
 
     /**
-     * Called by D'D' manager when drag gets out this drop handler.
+     * Called by DragAndDropManager when a drag operation is in progress and the
+     * cursor leaves the area occupied by this Paintable.
      * 
-     * @param drag
+     * @param dragEvent
+     *            DragEvent which contains the transferable and other
+     *            information for the operation
      */
-    public void dragLeave(VDragEvent drag);
+    public void dragLeave(VDragEvent dragEvent);
 
     /**
-     * The actual drop happened on this drop handler.
+     * Called by DragAndDropManager when a drag operation was in progress and a
+     * drop was performed on this Paintable.
      * 
-     * @param drag
-     * @return true if Tranferrable of this drag event needs to be sent to
-     *         server, false if drop was finally canceled or no server visit is
-     *         needed
+     * 
+     * @param dragEvent
+     *            DragEvent which contains the transferable and other
+     *            information for the operation
+     * 
+     * @return true if the Tranferrable of this drag event needs to be sent to
+     *         the server, false if drop is rejected or no server side event
+     *         should be sent
      */
     public boolean drop(VDragEvent drag);
 
@@ -45,7 +56,7 @@ public interface VDropHandler {
     public void dragOver(VDragEvent currentDrag);
 
     /**
-     * Returns the Paintable into which this DragHandler is assosiated
+     * Returns the Paintable into which this DragHandler is associated
      */
     public Paintable getPaintable();
 
index 91efd6824d58a5f980f27c65a7f0d2688968b5a8..eafda3c38a5c75cdb7a920413d6aceb4ca5695b1 100644 (file)
@@ -6,9 +6,13 @@ import java.util.HashMap;
 import java.util.Map;
 
 import com.vaadin.event.ComponentTransferable;
+import com.vaadin.event.DragDropDataTranslator;
+import com.vaadin.event.DragDropDetails;
+import com.vaadin.event.DragDropDetailsImpl;
+import com.vaadin.event.DragDropHandler;
 import com.vaadin.event.DragRequest;
 import com.vaadin.event.DropHandler;
-import com.vaadin.event.HasDropHandler;
+import com.vaadin.event.DropTarget;
 import com.vaadin.event.Transferable;
 import com.vaadin.terminal.DragSource;
 import com.vaadin.terminal.VariableOwner;
@@ -18,7 +22,9 @@ import com.vaadin.ui.Component;
 public class DragAndDropService implements VariableOwner {
 
     private static final long serialVersionUID = -4745268869323400203L;
-
+    
+    public static final String DROPTARGET_KEY = "target";
+    
     private int lastVisitId;
 
     private DragRequest currentRequest;
@@ -28,46 +34,143 @@ public class DragAndDropService implements VariableOwner {
     private Transferable transferable;
 
     public void changeVariables(Object source, Map<String, Object> variables) {
-        HasDropHandler dropHandlerOwner = (HasDropHandler) variables
-                .get("dhowner");
-        if (dropHandlerOwner == null) {
+        Object owner = variables.get("dhowner");
+
+        // Validate drop handler owner
+        if (!(owner instanceof DropTarget)) {
+            System.err.println("DropHandler owner " + owner
+                    + " must implement DropTarget");
             return;
         }
+        if (owner == null) {
+            System.err.println("DropHandler owner is null");
+            return;
+        }
+
+        DropTarget dropTarget = (DropTarget) owner;
         lastVisitId = (Integer) variables.get("visitId");
 
-        currentRequest = constructDragRequest(variables, dropHandlerOwner);
+        // Is this a drop request or a drag/move request?
+        boolean dropRequest = isDropRequest(variables);
+        if (dropRequest) {
+            handleDropRequest(dropTarget, variables);
+        } else {
+            handleDragRequest(dropTarget, variables);
+        }
 
-        DropHandler dropHandler = (dropHandlerOwner).getDropHandler();
+    }
 
-        Object eventDetails = dropHandlerOwner
-                .getDragEventDetails((Map<String, Object>) variables.get("evt"));
+    /**
+     * Handles a drop request from the VDragAndDropManager.
+     * 
+     * @param dropTarget
+     * @param variables
+     */
+    private void handleDropRequest(DropTarget dropTarget,
+            Map<String, Object> variables) {
+        DropHandler dropHandler = (dropTarget).getDropHandler();
+        if (dropHandler == null) {
+            // No dropHandler returned so no drop can be performed.
+            System.err
+                    .println("DropTarget.getDropHandler() returned null for owner: "
+                            + dropTarget);
+            return;
+        }
 
-        currentRequest.setEventDetails(eventDetails);
+        /*
+         * Construct the Transferable and the DragDropDetails for the drop
+         * operation based on the info passed from the client widgets (drag
+         * source for Transferable, drop target for DragDropDetails).
+         */
+        Transferable transferable = constructTransferable(dropTarget, variables);
+        DragDropDetails dropData = constructDragDropDetails(dropTarget,
+                variables);
 
-        dropHandler.handleDragRequest(currentRequest);
-        if (currentRequest.getType() == DragEventType.DROP) {
-            // TODO transferable should also be cleaned on each non-dnd
-            // variable change (if visited server, but drop did not happen ->
-            // should do cleanup to release memory)
-            transferable = null;
+        dropHandler.drop(transferable, dropData);
+    }
+
+    /**
+     * Handles a drag/move request from the VDragAndDropManager.
+     * 
+     * @param dropTarget
+     * @param variables
+     */
+    private void handleDragRequest(DropTarget dropTarget,
+            Map<String, Object> variables) {
+        lastVisitId = (Integer) variables.get("visitId");
+
+        DropHandler dropHandler = (dropTarget).getDropHandler();
+        if (!(dropHandler instanceof DragDropHandler)) {
+            System.err
+                    .println("DragRequest could not be send to handler as DropHandle does not implement DragDropHandler");
+            return;
         }
 
+        DragDropHandler dragDropHandler = (DragDropHandler) dropHandler;
+        /*
+         * Construct the Transferable and the DragDropDetails for the drag
+         * operation based on the info passed from the client widgets (drag
+         * source for Transferable, current target for DragDropDetails).
+         */
+        Transferable transferable = constructTransferable(dropTarget, variables);
+        DragDropDetails dragDropDetails = constructDragDropDetails(dropTarget,
+                variables);
+
+        dragDropHandler.handleDragRequest(constructDragRequest(variables,
+                transferable), transferable, dragDropDetails);
     }
 
-    private DragRequest constructDragRequest(Map<String, Object> variables,
-            HasDropHandler dropHandlerOwner) {
-        Transferable transferable = constructTransferrable(variables,
-                dropHandlerOwner);
+    private static DragRequest constructDragRequest(
+            Map<String, Object> variables, Transferable transferable) {
 
         int type = (Integer) variables.get("type");
-        DragRequest dragRequest = new DragRequest(DragEventType.values()[type],
-                transferable);
+        DragRequest dragRequest = new DragRequest(DragEventType.values()[type]);
         return dragRequest;
     }
 
+    /**
+     * Construct DragDropDetails based on variables from client drop target.
+     * Uses DragDropDetailsTranslator if available, otherwise a default
+     * DragDropDetails implementation is used.
+     * 
+     * @param dropTarget
+     * @param variables
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    private DragDropDetails constructDragDropDetails(DropTarget dropTarget,
+            Map<String, Object> variables) {
+        Map<String, Object> rawDragDropDetails = (Map<String, Object>) variables
+                .get("evt");
+
+        DragDropDetails dropData = null;
+        if (dropTarget instanceof DragDropDataTranslator) {
+            dropData = ((DragDropDataTranslator) dropTarget)
+                    .translateDragDropDetails(rawDragDropDetails);
+        }
+
+        if (dropData == null) {
+            // Create a default DragDropDetails with all the raw variables
+            dropData = new DragDropDetailsImpl(rawDragDropDetails);
+        }
+
+        dropData.put(DROPTARGET_KEY, dropTarget);
+
+        return dropData;
+    }
+
+    private boolean isDropRequest(Map<String, Object> variables) {
+        return getRequestType(variables) == DragEventType.DROP;
+    }
+
+    private DragEventType getRequestType(Map<String, Object> variables) {
+        int type = (Integer) variables.get("type");
+        return DragEventType.values()[type];
+    }
+
     @SuppressWarnings("unchecked")
-    private Transferable constructTransferrable(Map<String, Object> variables,
-            HasDropHandler dropHandlerOwner) {
+    private Transferable constructTransferable(DropTarget dropHandlerOwner,
+            Map<String, Object> variables) {
         int eventId = (Integer) variables.get("eventId");
         if (currentEventId != eventId) {
             transferable = null;
@@ -79,10 +182,9 @@ public class DragAndDropService implements VariableOwner {
 
         variables = (Map<String, Object>) variables.get("tra");
 
-        if (sourceComponent != null
-                && sourceComponent instanceof DragSource) {
-            transferable = ((DragSource) sourceComponent)
-                    .getTransferrable(transferable, variables);
+        if (sourceComponent != null && sourceComponent instanceof DragSource) {
+            transferable = ((DragSource) sourceComponent).getTransferable(
+                    transferable, variables);
         } else {
             if (transferable == null) {
                 if (sourceComponent != null) {
index 861354754281e297cb93b05a8144a7c5115834ed..070f7a5c8fce9b1acd36ad117852798e07cd7b80 100644 (file)
@@ -4,8 +4,11 @@ import java.util.Map;
 
 import com.vaadin.event.AbstractDropHandler;
 import com.vaadin.event.ComponentTransferable;
-import com.vaadin.event.DataBindedTransferrable;
-import com.vaadin.event.HasDropHandler;
+import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DragDropDataTranslator;
+import com.vaadin.event.DragDropDetails;
+import com.vaadin.event.DragDropDetailsImpl;
+import com.vaadin.event.DropTarget;
 import com.vaadin.event.Transferable;
 import com.vaadin.terminal.PaintException;
 import com.vaadin.terminal.PaintTarget;
@@ -34,7 +37,8 @@ import com.vaadin.terminal.gwt.client.MouseEventDetails;
  */
 @SuppressWarnings("serial")
 @ClientWidget(com.vaadin.terminal.gwt.client.ui.VDragDropPane.class)
-public class DragDropPane extends AbsoluteLayout implements HasDropHandler {
+public class DragDropPane extends AbsoluteLayout implements DropTarget,
+        DragDropDataTranslator {
 
     private AbstractDropHandler abstractDropHandler;
 
@@ -46,7 +50,7 @@ public class DragDropPane extends AbsoluteLayout implements HasDropHandler {
             dropHandler = new AbstractDropHandler() {
                 @Override
                 public void receive(Transferable transferable,
-                        Object dropDetails) {
+                        DragDropDetails dropDetails) {
 
                     DragEventDetails ed = (DragEventDetails) dropDetails;
                     if (transferable instanceof ComponentTransferable) {
@@ -54,14 +58,14 @@ public class DragDropPane extends AbsoluteLayout implements HasDropHandler {
                         Component component = ctr.getSourceComponent();
 
                         if (component.getParent() != DragDropPane.this) {
-                            if (transferable instanceof DataBindedTransferrable) {
+                            if (transferable instanceof DataBindedTransferable) {
                                 // Item has been dragged, construct a Label from
                                 // Item id
                                 Label l = new Label();
                                 l.setSizeUndefined();
                                 l
                                         .setValue("ItemId : "
-                                                + ((DataBindedTransferrable) transferable)
+                                                + ((DataBindedTransferable) transferable)
                                                         .getItemId());
                                 DragDropPane.this.addComponent(l);
                                 component = l;
@@ -159,36 +163,33 @@ public class DragDropPane extends AbsoluteLayout implements HasDropHandler {
         return abstractDropHandler;
     }
 
-    class DragEventDetails {
-
-        private Map<String, Object> vars;
+    class DragEventDetails extends DragDropDetailsImpl {
 
         public DragEventDetails(Map<String, Object> rawVariables) {
-            vars = rawVariables;
+            super(rawVariables);
         }
 
         public Integer getAbsoluteTop() {
-            return (Integer) vars.get("absoluteTop");
+            return (Integer) get("absoluteTop");
         }
 
         public Integer getAbsoluteLeft() {
-            return (Integer) vars.get("absoluteLeft");
+            return (Integer) get("absoluteLeft");
         }
 
         public MouseEventDetails getMouseDownEvent() {
-            return MouseEventDetails
-                    .deSerialize((String) vars.get("mouseDown"));
+            return MouseEventDetails.deSerialize((String) get("mouseDown"));
         }
 
         public MouseEventDetails getMouseEvent() {
-            return MouseEventDetails.deSerialize((String) vars
-                    .get("mouseEvent"));
+            return MouseEventDetails.deSerialize((String) get("mouseEvent"));
         }
 
     }
 
-    public Object getDragEventDetails(Map<String, Object> rawVariables) {
-        return new DragEventDetails(rawVariables);
+    public DragDropDetails translateDragDropDetails(
+            Map<String, Object> clientVariables) {
+        return new DragEventDetails(clientVariables);
     }
 
 }
index 8babc68e1a0b2b95a4a85e58e2968ee03428d5e3..41cf86750ff90d23a4008f4bc2f641e76851ed76 100644 (file)
@@ -23,17 +23,17 @@ 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.DataBindedTransferrable;
+import com.vaadin.event.DataBindedTransferable;
 import com.vaadin.event.ItemClickEvent;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.Action.Handler;
 import com.vaadin.event.ItemClickEvent.ItemClickListener;
 import com.vaadin.event.ItemClickEvent.ItemClickSource;
+import com.vaadin.terminal.DragSource;
 import com.vaadin.terminal.KeyMapper;
 import com.vaadin.terminal.PaintException;
 import com.vaadin.terminal.PaintTarget;
 import com.vaadin.terminal.Resource;
-import com.vaadin.terminal.DragSource;
 import com.vaadin.terminal.gwt.client.MouseEventDetails;
 import com.vaadin.terminal.gwt.client.ui.VScrollTable;
 
@@ -57,8 +57,7 @@ import com.vaadin.terminal.gwt.client.ui.VScrollTable;
 @SuppressWarnings("serial")
 @ClientWidget(VScrollTable.class)
 public class Table extends AbstractSelect implements Action.Container,
-        Container.Ordered, Container.Sortable, ItemClickSource,
-        DragSource {
+        Container.Ordered, Container.Sortable, ItemClickSource, DragSource {
 
     /**
      * Modes that Table support as drag sourse.
@@ -3322,7 +3321,7 @@ public class Table extends AbstractSelect implements Action.Container,
         requestRepaint();
     }
 
-    class TableTransferrable implements DataBindedTransferrable {
+    class TableTransferable implements DataBindedTransferable {
 
         private final HashMap<String, Object> data = new HashMap<String, Object>();
 
@@ -3352,8 +3351,7 @@ public class Table extends AbstractSelect implements Action.Container,
 
     }
 
-    private void updateTransferrable(Map<String, Object> payload,
-            Transferable tr) {
+    private void updateTransferable(Map<String, Object> payload, Transferable tr) {
         Object object = payload.get("itemId");
         if (object != null) {
             tr.setData("itemId", itemIdMapper.get((String) object));
@@ -3361,12 +3359,12 @@ public class Table extends AbstractSelect implements Action.Container,
         }
     }
 
-    public Transferable getTransferrable(Transferable transferable,
+    public TableTransferable getTransferable(Transferable transferable,
             Map<String, Object> rawVariables) {
         if (transferable == null) {
-            transferable = new TableTransferrable();
+            transferable = new TableTransferable();
         }
-        updateTransferrable(rawVariables, transferable);
-        return transferable;
+        updateTransferable(rawVariables, transferable);
+        return (TableTransferable) transferable;
     }
 }
index 61c667cde0d711acd493bee42e4c8e11651b3f25..566d8ed4ea55079d2d144211765d7dae7ad8a236 100644 (file)
@@ -24,9 +24,11 @@ import com.vaadin.data.util.ContainerHierarchicalWrapper;
 import com.vaadin.data.util.IndexedContainer;
 import com.vaadin.event.AbstractDropHandler;
 import com.vaadin.event.Action;
-import com.vaadin.event.DataBindedTransferrable;
+import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DragDropDataTranslator;
+import com.vaadin.event.DragDropDetailsImpl;
 import com.vaadin.event.DropHandler;
-import com.vaadin.event.HasDropHandler;
+import com.vaadin.event.DropTarget;
 import com.vaadin.event.ItemClickEvent;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.ItemClickEvent.ItemClickListener;
@@ -51,7 +53,8 @@ import com.vaadin.terminal.gwt.client.ui.VTree;
 @SuppressWarnings("serial")
 @ClientWidget(VTree.class)
 public class Tree extends AbstractSelect implements Container.Hierarchical,
-        Action.Container, ItemClickSource, DragSource, HasDropHandler {
+        Action.Container, ItemClickSource, DragSource, DropTarget,
+        DragDropDataTranslator {
 
     private static final Method EXPAND_METHOD;
 
@@ -115,7 +118,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
 
     private int itemDragModes = DRAG_OUT;
 
-    class TreeTransferrable implements DataBindedTransferrable {
+    class TreeTransferable implements DataBindedTransferable {
 
         private final HashMap<String, Object> data = new HashMap<String, Object>();
 
@@ -144,10 +147,10 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
         }
     }
 
-    public Transferable getTransferrable(Transferable transferable,
+    public Transferable getTransferable(Transferable transferable,
             Map<String, Object> payload) {
         if (transferable == null) {
-            transferable = new TreeTransferrable();
+            transferable = new TreeTransferable();
         }
         // updating drag source variables
         Object object = payload.get("itemId");
@@ -641,8 +644,8 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
             // New items
             target.addVariable(this, "newitem", new String[] {});
 
-            if (abstractDropHandler != null) {
-                abstractDropHandler.paint(target);
+            if (dropHandler instanceof AbstractDropHandler) {
+                ((AbstractDropHandler) dropHandler).paint(target);
             }
 
         }
@@ -1085,7 +1088,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
 
     private ItemStyleGenerator itemStyleGenerator;
 
-    private AbstractDropHandler abstractDropHandler;
+    private DropHandler dropHandler;
 
     public void addListener(ItemClickListener listener) {
         addListener(VTree.ITEM_CLICK_EVENT_ID, ItemClickEvent.class, listener,
@@ -1144,30 +1147,25 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
     }
 
     public DropHandler getDropHandler() {
-        return abstractDropHandler;
+        return dropHandler;
     }
 
-    public void setDropHandler(AbstractDropHandler abstractDropHandler) {
-        this.abstractDropHandler = abstractDropHandler;
-    }
-
-    public Object getDragEventDetails(Map<String, Object> rawVariables) {
-        return new TreeDropDetails(rawVariables);
+    public void setDropHandler(DropHandler dropHandler) {
+        this.dropHandler = dropHandler;
     }
 
     public enum Location {
         TOP, BOTTOM, MIDDLE
     }
 
-    public class TreeDropDetails {
+    public class TreeDropDetails extends DragDropDetailsImpl {
 
-        private Map<String, Object> vars;
         private Object idOver;
 
         TreeDropDetails(Map<String, Object> rawVariables) {
-            vars = rawVariables;
+            super(rawVariables);
             // eagar fetch itemid, mapper may be emptied
-            String keyover = (String) vars.get("itemIdOver");
+            String keyover = (String) get("itemIdOver");
             if (keyover != null) {
                 idOver = itemIdMapper.get(keyover);
             }
@@ -1178,7 +1176,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
         }
 
         public Location getDropLocation() {
-            String s = (String) vars.get("detail");
+            String s = (String) get("detail");
             if ("Top".equals(s)) {
                 return Location.TOP;
             } else if ("Bottom".equals(s)) {
@@ -1190,4 +1188,9 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
 
     }
 
+    public TreeDropDetails translateDragDropDetails(
+            Map<String, Object> clientVariables) {
+        return new TreeDropDetails(clientVariables);
+    }
+
 }
index 75d516faf6702ab419d9080ee252df91cacda0b9..a2a8d83d47d3a8e1ad228bd6370c26c81737f07d 100644 (file)
@@ -1,7 +1,7 @@
 package com.vaadin.tests.dd;
 
 import com.vaadin.event.ComponentTransferable;
-import com.vaadin.event.DragRequest;
+import com.vaadin.event.DragDropDetails;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.AbstractDropHandler.AcceptCriterion;
 import com.vaadin.ui.DragDropPane;
@@ -16,8 +16,8 @@ public class AcceptFromComponent extends Window {
         DragDropPane pane = new DragDropPane();
         setContent(pane);
         pane.getDropHandler().setAcceptCriterion(new AcceptCriterion() {
-            public boolean accepts(DragRequest request) {
-                Transferable transferable = request.getTransferable();
+            public boolean accepts(Transferable transferable,
+                    DragDropDetails dragDropDetails) {
                 if (transferable instanceof ComponentTransferable) {
                     ComponentTransferable componentTransferrable = (ComponentTransferable) transferable;
                     if (componentTransferrable.getSourceComponent() == tree1) {
index fb1d70855d1fd15a272ce9f0cbfd7e02ba8bd5e4..d0c1aa7d4675fed15ab731074908ebc09f674273 100644 (file)
@@ -1,11 +1,11 @@
 package com.vaadin.tests.dd;
 
-import java.util.Map;
-
 import com.vaadin.event.AbstractDropHandler;
+import com.vaadin.event.DragDropDetails;
+import com.vaadin.event.DragDropHandler;
 import com.vaadin.event.DragRequest;
 import com.vaadin.event.DropHandler;
-import com.vaadin.event.HasDropHandler;
+import com.vaadin.event.DropTarget;
 import com.vaadin.event.Transferable;
 import com.vaadin.terminal.gwt.client.ui.dd.VDragAndDropManager.DragEventType;
 import com.vaadin.ui.AbstractComponent;
@@ -39,18 +39,14 @@ public class CustomDDImplementation extends CustomComponent {
      * 
      */
     @ClientWidget(VMyDropTarget.class)
-    class MyDropTarget extends AbstractComponent implements HasDropHandler {
-
+    class MyDropTarget extends AbstractComponent implements DropTarget {
         public DropHandler getDropHandler() {
-            return new DropHandler() {
-                public void handleDragRequest(DragRequest dragRequest) {
-                    Transferable transferable = dragRequest.getTransferable();
+            return new DragDropHandler() {
+                public void handleDragRequest(DragRequest dragRequest,
+                        Transferable transferable,
+                        DragDropDetails dragDropDetails) {
                     DragEventType type = dragRequest.getType();
                     switch (type) {
-                    case DROP:
-                        // Do something with data
-
-                        break;
 
                     case ENTER:
                         // eg. validate transferrable
@@ -71,16 +67,13 @@ public class CustomDDImplementation extends CustomComponent {
                     }
 
                 }
-            };
-        }
 
-        public Object getDragEventDetails(Map<String, Object> rawVariables) {
-            /*
-             * If client side sets some event details, translate them to desired
-             * server side presentation here. The returned object will be passed
-             * for drop handler.
-             */
-            return null;
+                public boolean drop(Transferable transferable,
+                        DragDropDetails dropDetails) {
+                    // Do something with data
+                    return true;
+                }
+            };
         }
 
     }
index 2eac9b67a05a4fb71e0e97f576935585c20798eb..eb68daf762eefc79502607f4a84dae19437d7265 100644 (file)
@@ -6,8 +6,8 @@ import com.vaadin.data.Item;
 import com.vaadin.data.util.HierarchicalContainer;
 import com.vaadin.event.AbstractDropHandler;
 import com.vaadin.event.ComponentTransferable;
-import com.vaadin.event.DataBindedTransferrable;
-import com.vaadin.event.DragRequest;
+import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DragDropDetails;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.AbstractDropHandler.AcceptCriterion;
 import com.vaadin.terminal.ExternalResource;
@@ -60,8 +60,8 @@ public class DDTest1 extends TestBase {
                 .setCaption("Pane2 (accept needs server side visit, only \"Bar\")");
 
         AcceptCriterion f = new AcceptCriterion() {
-            public boolean accepts(DragRequest request) {
-                Transferable transferable = request.getTransferable();
+            public boolean accepts(Transferable transferable,
+                    DragDropDetails dragDropDetails) {
                 // System.out.println("Simulating 500ms processing...");
                 // try {
                 // Thread.sleep(200);
@@ -116,11 +116,12 @@ public class DDTest1 extends TestBase {
         AbstractDropHandler itemSorter = new AbstractDropHandler() {
 
             @Override
-            public void receive(Transferable transferable, Object dropdetails) {
+            public void receive(Transferable transferable,
+                    DragDropDetails dropdetails) {
                 TreeDropDetails details = (TreeDropDetails) dropdetails;
                 // TODO set properties, so same sorter could be used in Table
-                if (transferable instanceof DataBindedTransferrable) {
-                    DataBindedTransferrable transferrable2 = (DataBindedTransferrable) transferable;
+                if (transferable instanceof DataBindedTransferable) {
+                    DataBindedTransferable transferrable2 = (DataBindedTransferable) transferable;
 
                     Object itemId = transferrable2.getItemId();
 
index 04162045f71cacdfc7bd3507a60c294ff354ddc9..02458240bf8c544ba83dda514b6bde509801b653 100644 (file)
@@ -7,7 +7,8 @@ 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.AbstractDropHandler;
-import com.vaadin.event.DataBindedTransferrable;
+import com.vaadin.event.DataBindedTransferable;
+import com.vaadin.event.DragDropDetails;
 import com.vaadin.event.Transferable;
 import com.vaadin.event.AbstractDropHandler.AcceptCriterion;
 import com.vaadin.event.AbstractDropHandler.And;
@@ -54,12 +55,13 @@ public class DDTest2 extends TestBase {
 
         AbstractDropHandler dropHandler = new AbstractDropHandler() {
             @Override
-            public void receive(Transferable transferable, Object dropdetails) {
+            public void receive(Transferable transferable,
+                    DragDropDetails dropdetails) {
                 /*
                  * We know transferrable is from table, so it is of type
                  * DataBindedTransferrable
                  */
-                DataBindedTransferrable tr = (DataBindedTransferrable) transferable;
+                DataBindedTransferable tr = (DataBindedTransferable) transferable;
                 Object itemId = tr.getItemId();
                 Table fromTable = (Table) tr.getSourceComponent();
                 String name = fromTable.getItem(itemId).getItemProperty("Name")
@@ -102,11 +104,12 @@ public class DDTest2 extends TestBase {
 
         dropHandler = new AbstractDropHandler() {
             @Override
-            public void receive(Transferable transferable, Object dropdetails) {
+            public void receive(Transferable transferable,
+                    DragDropDetails dropdetails) {
                 TreeDropDetails details = (TreeDropDetails) dropdetails;
 
-                if (transferable instanceof DataBindedTransferrable) {
-                    DataBindedTransferrable tr = (DataBindedTransferrable) transferable;
+                if (transferable instanceof DataBindedTransferable) {
+                    DataBindedTransferable tr = (DataBindedTransferable) transferable;
 
                     Object itemId = tree2.addItem();
                     tree2.setParent(itemId, details.getItemIdOver());