]> source.dussan.org Git - vaadin-framework.git/commitdiff
Clean DropEvent and DragEndEvent properties (#8925)
authorAdam Wagner <wbadam@users.noreply.github.com>
Fri, 24 Mar 2017 09:28:58 +0000 (11:28 +0200)
committerPekka Hyvönen <pekka@vaadin.com>
Fri, 24 Mar 2017 09:28:58 +0000 (11:28 +0200)
* Add dropEffect parameter to DragEndEvent (#8895)

* Remove drop effect from drop event (#8895)

* Make sure that drop effect is not null

client/src/main/java/com/vaadin/client/extensions/DragSourceExtensionConnector.java
client/src/main/java/com/vaadin/client/extensions/DropTargetExtensionConnector.java
server/src/main/java/com/vaadin/event/dnd/DragEndEvent.java
server/src/main/java/com/vaadin/event/dnd/DragSourceExtension.java
server/src/main/java/com/vaadin/event/dnd/DropEvent.java
server/src/main/java/com/vaadin/event/dnd/DropTargetExtension.java
shared/src/main/java/com/vaadin/shared/ui/dnd/DragSourceRpc.java
shared/src/main/java/com/vaadin/shared/ui/dnd/DropTargetRpc.java
uitest/src/main/java/com/vaadin/tests/dnd/DragAndDropCardShuffle.java

index da144666661657f421bf26db465be62056a4b105..3094042826574743f1e091a313f2f80f345372a4 100644 (file)
@@ -25,6 +25,7 @@ import com.vaadin.event.dnd.DragSourceExtension;
 import com.vaadin.shared.ui.Connect;
 import com.vaadin.shared.ui.dnd.DragSourceRpc;
 import com.vaadin.shared.ui.dnd.DragSourceState;
+import com.vaadin.shared.ui.dnd.DropEffect;
 
 import elemental.events.Event;
 import elemental.events.EventListener;
@@ -113,12 +114,19 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector {
      * event occurs.
      *
      * @param event
+     *         browser event to be handled
      */
     protected void onDragEnd(Event event) {
         // Initiate server start dragend event when there is a DragEndListener
         // attached on the server side
         if (hasEventListener(DragSourceState.EVENT_DRAGEND)) {
-            getRpcProxy(DragSourceRpc.class).dragEnd();
+            String dropEffect = getDropEffect(
+                    ((NativeEvent) event).getDataTransfer());
+
+            assert dropEffect != null : "Drop effect should never be null";
+            
+            getRpcProxy(DragSourceRpc.class)
+                    .dragEnd(DropEffect.valueOf(dropEffect.toUpperCase()));
         }
     }
 
@@ -137,6 +145,10 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector {
         dataTransfer.effectAllowed = effectAllowed;
     }-*/;
 
+    private native String getDropEffect(DataTransfer dataTransfer)/*-{
+        return dataTransfer.dropEffect;
+    }-*/;
+
     @Override
     public DragSourceState getState() {
         return (DragSourceState) super.getState();
index a1ac662987bd1c165353460112f47c92f6c4b71a..5f8ca243c7503608183decc63f2a7f179bfe649f 100644 (file)
@@ -182,8 +182,7 @@ public class DropTargetExtensionConnector extends AbstractExtensionConnector {
             String dataTransferText = nativeEvent.getDataTransfer().getData(
                     DragSourceState.DATA_TYPE_TEXT);
 
-            getRpcProxy(DropTargetRpc.class)
-                    .drop(dataTransferText, getState().dropEffect);
+            getRpcProxy(DropTargetRpc.class).drop(dataTransferText);
         }
 
         removeTargetIndicator(getDropTargetElement());
index f1176e1880728c90a8ef359fedf99ba06ee0e393..57f111e848019607de649af4cb877a0eabf92ccc 100644 (file)
@@ -15,7 +15,7 @@
  */
 package com.vaadin.event.dnd;
 
-import com.vaadin.shared.ui.dnd.EffectAllowed;
+import com.vaadin.shared.ui.dnd.DropEffect;
 import com.vaadin.ui.AbstractComponent;
 import com.vaadin.ui.Component;
 
@@ -30,7 +30,7 @@ import com.vaadin.ui.Component;
  */
 public class DragEndEvent<T extends AbstractComponent> extends Component.Event {
     private final String dataTransferText;
-    private final EffectAllowed effectAllowed;
+    private final DropEffect dropEffect;
 
     /**
      * Creates a server side dragend event.
@@ -40,16 +40,16 @@ public class DragEndEvent<T extends AbstractComponent> extends Component.Event {
      * @param dataTransferText
      *         Data of type {@code "text"} from the {@code DataTransfer}
      *         object.
-     * @param effectAllowed
-     *         Allowed effects from {@code DataTransfer.effectAllowed} object.
+     * @param dropEffect
+     *         Drop effect from {@code DataTransfer.dropEffect} object.
      */
     public DragEndEvent(T source, String dataTransferText,
-            EffectAllowed effectAllowed) {
+            DropEffect dropEffect) {
         super(source);
 
         this.dataTransferText = dataTransferText;
 
-        this.effectAllowed = effectAllowed;
+        this.dropEffect = dropEffect;
     }
 
     /**
@@ -64,12 +64,13 @@ public class DragEndEvent<T extends AbstractComponent> extends Component.Event {
     }
 
     /**
-     * Returns the {@code effectAllowed} parameter of this event.
+     * Get drop effect of the dragend event.
      *
-     * @return This event's {@code effectAllowed} parameter.
+     * @return The {@code DataTransfer.dropEffect} parameter of the client side
+     * dragend event.
      */
-    public EffectAllowed getEffectAllowed() {
-        return effectAllowed;
+    public DropEffect getDropEffect() {
+        return dropEffect;
     }
 
     /**
index 6a6a8a8c645da22fda8bb115461f97bd338b1de6..bce643ffdbc8c9dd3520324b6468dd09a98e0dca 100644 (file)
@@ -21,6 +21,7 @@ import com.vaadin.server.AbstractExtension;
 import com.vaadin.shared.Registration;
 import com.vaadin.shared.ui.dnd.DragSourceRpc;
 import com.vaadin.shared.ui.dnd.DragSourceState;
+import com.vaadin.shared.ui.dnd.DropEffect;
 import com.vaadin.shared.ui.dnd.EffectAllowed;
 import com.vaadin.ui.AbstractComponent;
 
@@ -62,10 +63,9 @@ public class DragSourceExtension<T extends AbstractComponent> extends
             }
 
             @Override
-            public void dragEnd() {
+            public void dragEnd(DropEffect dropEffect) {
                 DragEndEvent<T> event = new DragEndEvent<>(target,
-                        getState(false).dataTransferText,
-                        getState(false).effectAllowed);
+                        getState(false).dataTransferText, dropEffect);
                 fireEvent(event);
             }
         });
index c2b4943d0fcc2748213573643c9a445acfbc889b..932f5577a55c79155ee2f5d7969b1d99ecbcb011 100644 (file)
@@ -32,7 +32,6 @@ import com.vaadin.ui.Component;
  */
 public class DropEvent<T extends AbstractComponent> extends Component.Event {
     private final String dataTransferText;
-    private final DropEffect dropEffect;
     private final DragSourceExtension<? extends AbstractComponent> dragSourceExtension;
     private final AbstractComponent dragSource;
 
@@ -44,20 +43,16 @@ public class DropEvent<T extends AbstractComponent> extends Component.Event {
      * @param dataTransferText
      *         Data of type {@code "text"} from the {@code DataTransfer}
      *         object.
-     * @param dropEffect
-     *         Drop effect from {@code DataTransfer.dropEffect} object.
      * @param dragSourceExtension
      *         Drag source extension of the component that initiated the drop
      *         event.
      */
-    public DropEvent(T target, String dataTransferText, DropEffect dropEffect,
+    public DropEvent(T target, String dataTransferText,
             DragSourceExtension<? extends AbstractComponent> dragSourceExtension) {
         super(target);
 
         this.dataTransferText = dataTransferText;
 
-        this.dropEffect = dropEffect;
-
         this.dragSourceExtension = dragSourceExtension;
         this.dragSource = Optional.ofNullable(dragSourceExtension)
                 .map(DragSourceExtension::getParent).orElse(null);
@@ -74,15 +69,6 @@ public class DropEvent<T extends AbstractComponent> extends Component.Event {
         return dataTransferText;
     }
 
-    /**
-     * Get drop effect set for the current drop target.
-     *
-     * @return {@code dropEffect} parameter set for the current drop target.
-     */
-    public DropEffect getDropEffect() {
-        return dropEffect;
-    }
-
     /**
      * Returns the drag source component if the drag originated from a
      * component in the same UI as the drop target component, or an empty
index 2df43027a11c2caeecc0f5fdb242df7a701adeba..c4a5f981ff9a517c46b6827b1ec382ba06d526c4 100644 (file)
@@ -43,9 +43,9 @@ public class DropTargetExtension<T extends AbstractComponent> extends
      *         Component to be extended.
      */
     public DropTargetExtension(T target) {
-        registerRpc((DropTargetRpc) (dataTransferText, dropEffect) -> {
+        registerRpc((DropTargetRpc) dataTransferText -> {
             DropEvent<T> event = new DropEvent<>(target, dataTransferText,
-                    dropEffect, getUI().getActiveDragSource());
+                    getUI().getActiveDragSource());
 
             fireEvent(event);
         });
index 178028b4236ef42aaedc881e5e9fc46ab97e4981..4faf7ca139998fd7fd1a24a8a5a064cc753fb13f 100644 (file)
@@ -33,6 +33,10 @@ public interface DragSourceRpc extends ServerRpc {
 
     /**
      * Called when dragend event happens on client side.
+     *
+     * @param dropEffect
+     *         Drop effect of the dragend event, extracted from {@code
+     *         DataTransfer.dropEffect} parameter.
      */
-    public void dragEnd();
+    public void dragEnd(DropEffect dropEffect);
 }
index b74fd3a9492f2946ea7065a986bc61e9879c8589..7a608068a1c9f622bcaae20a6ef775f6ca2ff20a 100644 (file)
@@ -32,8 +32,6 @@ public interface DropTargetRpc extends ServerRpc {
      * @param dataTransferText
      *         Data of type {@code "text"} from the {@code DataTransfer}
      *         object.
-     * @param dropEffect
-     *         Drop effect set for the drop target where drop happened.
      */
-    public void drop(String dataTransferText, DropEffect dropEffect);
+    public void drop(String dataTransferText);
 }
index 745297cde8a9def42669e43fac2677132ddbb527..415dbf945dc2e442a2bf74a703d97c531c986e87 100644 (file)
@@ -19,7 +19,6 @@ import com.vaadin.event.dnd.DragSourceExtension;
 import com.vaadin.event.dnd.DropTargetExtension;
 import com.vaadin.server.Page;
 import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.dnd.DropEffect;
 import com.vaadin.tests.components.AbstractTestUIWithLog;
 import com.vaadin.ui.HorizontalLayout;
 import com.vaadin.ui.Label;
@@ -76,7 +75,8 @@ public class DragAndDropCardShuffle extends AbstractTestUIWithLog {
 
         dragSource.addDragEndListener(event -> {
             event.getComponent().removeStyleName("dragged");
-            log(event.getComponent().getValue() + " dragend");
+            log(event.getComponent().getValue() + " dragend, dropEffect="
+                    + event.getDropEffect());
         });
     }
 
@@ -85,8 +85,6 @@ public class DragAndDropCardShuffle extends AbstractTestUIWithLog {
         DropTargetExtension<Label> dropTarget = new DropTargetExtension<>(
                 target);
 
-        dropTarget.setDropEffect(DropEffect.MOVE);
-
         // Add listener
         dropTarget.addDropListener(event -> {
             event.getDragSourceExtension().ifPresent(dragSource -> {