|
|
@@ -18,9 +18,11 @@ package com.vaadin.client.extensions; |
|
|
|
import com.google.gwt.dom.client.DataTransfer; |
|
|
|
import com.google.gwt.dom.client.Element; |
|
|
|
import com.google.gwt.dom.client.NativeEvent; |
|
|
|
import com.google.gwt.user.client.ui.Image; |
|
|
|
import com.google.gwt.user.client.ui.Widget; |
|
|
|
import com.vaadin.client.ComponentConnector; |
|
|
|
import com.vaadin.client.ServerConnector; |
|
|
|
import com.vaadin.client.annotations.OnStateChange; |
|
|
|
import com.vaadin.event.dnd.DragSourceExtension; |
|
|
|
import com.vaadin.shared.ui.Connect; |
|
|
|
import com.vaadin.shared.ui.dnd.DragSourceRpc; |
|
|
@@ -118,6 +120,15 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector { |
|
|
|
removeDragListeners(dragSource); |
|
|
|
} |
|
|
|
|
|
|
|
@OnStateChange("resources") |
|
|
|
private void prefetchDragImage() { |
|
|
|
String dragImageUrl = getResourceUrl( |
|
|
|
DragSourceState.RESOURCE_DRAG_IMAGE); |
|
|
|
if (dragImageUrl != null && !dragImageUrl.isEmpty()) { |
|
|
|
Image.prefetch(getConnection().translateVaadinUri(dragImageUrl)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Event handler for the {@code dragstart} event. Called when {@code |
|
|
|
* dragstart} event occurs. |
|
|
@@ -135,6 +146,9 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector { |
|
|
|
getState().effectAllowed.getValue()); |
|
|
|
} |
|
|
|
|
|
|
|
// Set drag image |
|
|
|
setDragImage(event); |
|
|
|
|
|
|
|
// Set text data parameter |
|
|
|
nativeEvent.getDataTransfer().setData(DragSourceState.DATA_TYPE_TEXT, |
|
|
|
createDataTransferText(event)); |
|
|
@@ -174,6 +188,22 @@ public class DragSourceExtensionConnector extends AbstractExtensionConnector { |
|
|
|
getRpcProxy(DragSourceRpc.class).dragStart(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Sets the drag image to be displayed. |
|
|
|
* |
|
|
|
* @param dragStartEvent |
|
|
|
* The drag start event. |
|
|
|
*/ |
|
|
|
protected void setDragImage(Event dragStartEvent) { |
|
|
|
String imageUrl = getResourceUrl(DragSourceState.RESOURCE_DRAG_IMAGE); |
|
|
|
if (imageUrl != null && !imageUrl.isEmpty()) { |
|
|
|
Image dragImage = new Image( |
|
|
|
getConnection().translateVaadinUri(imageUrl)); |
|
|
|
((NativeEvent) dragStartEvent).getDataTransfer() |
|
|
|
.setDragImage(dragImage.getElement(), 0, 0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Event handler for the {@code dragend} event. Called when {@code dragend} |
|
|
|
* event occurs. |