com.vaadin.client.extensions.
Class DragSourceExtensionConnector
- java.lang.Object
-
- com.vaadin.client.ui.AbstractConnector
-
- com.vaadin.client.extensions.AbstractExtensionConnector
-
- com.vaadin.client.extensions.DragSourceExtensionConnector
-
All Implemented Interfaces:
com.google.gwt.event.shared.EventHandler
,StateChangeEvent.StateChangeHandler
,ServerConnector
,Connector
,Serializable
Direct Known Subclasses:
public class DragSourceExtensionConnector extends AbstractExtensionConnector
Extension to add drag source functionality to a widget for using HTML5 drag and drop. Client side counterpart of
DragSourceExtension
.Since:
8.1
Author:
Vaadin Ltd
See Also:
-
-
Field Summary
Fields Modifier and Type Field Description protected static String
STYLE_SUFFIX_DRAGGED
Style suffix for indicating that the element is being dragged.
protected static String
STYLE_SUFFIX_DRAGSOURCE
Style suffix for indicating that the element is a drag source.
-
Constructor Summary
Constructors Constructor Description DragSourceExtensionConnector()
-
Method Summary
All Methods Modifier and Type Method Description protected void
addDraggable(com.google.gwt.dom.client.Element element)
Makes the given element draggable and adds class name.
protected void
addDraggedStyle(com.google.gwt.dom.client.NativeEvent event)
Add class name to indicate that the drag source element is being dragged.
protected void
addDragListeners(com.google.gwt.dom.client.Element element)
Adds dragstart and dragend event listeners to the given DOM element.
protected Map<String,String>
createDataTransferData(com.google.gwt.dom.client.NativeEvent dragStartEvent)
Creates the data map to be set as the
DataTransfer
object's data.protected void
extend(ServerConnector target)
Called when the extension is attached to its parent.
protected void
fixDragImageOffsetsForDesktop(com.google.gwt.dom.client.NativeEvent dragStartEvent, com.google.gwt.dom.client.Element draggedElement)
Fixes missing or offset drag image caused by using css transform: translate (or such) by using a cloned drag image element, for which the property has been cleared.
protected void
fixDragImageTransformForMobile(com.google.gwt.dom.client.Element draggedElement)
Fix drag image offset for touch devices when the dragged image has been offset with css transform: translate/translate3d.
protected com.google.gwt.dom.client.Element
getDraggableElement()
Finds the draggable element within the widget.
protected static String
getDropEffect(com.google.gwt.dom.client.DataTransfer dataTransfer)
Returns the dropEffect for the given data transfer.
DragSourceState
getState()
Returns the shared state object for this connector.
protected boolean
isAndoidChrome()
Returns whether the current browser is Android Chrome.
protected boolean
isNativeDragEvent(com.google.gwt.dom.client.NativeEvent nativeEvent)
Returns whether the given event is a native (android) drag start/end event, and not produced by the drag-drop-polyfill.
protected void
onDragEnd(elemental.events.Event event)
Event handler for the
dragend
event.protected void
onDragStart(elemental.events.Event event)
Event handler for the
dragstart
event.void
onUnregister()
Event called when connector has been unregistered.
protected void
removeDraggable(com.google.gwt.dom.client.Element element)
Removes draggable and class name from the given element.
protected void
removeDraggedStyle(com.google.gwt.dom.client.NativeEvent event)
Remove class name that indicated that the drag source element was being dragged.
protected void
removeDragListeners(com.google.gwt.dom.client.Element element)
Removes dragstart and dragend event listeners from the given DOM element.
protected void
sendDragEndEventToServer(com.google.gwt.dom.client.NativeEvent dragEndEvent, DropEffect dropEffect)
Initiates a server RPC for the drag end event.
protected void
sendDragStartEventToServer(com.google.gwt.dom.client.NativeEvent dragStartEvent)
Initiates a server RPC for the drag start event.
protected void
setDragImage(com.google.gwt.dom.client.NativeEvent dragStartEvent)
Sets the drag image to be displayed.
-
Methods inherited from class com.vaadin.client.extensions.AbstractExtensionConnector
setParent
-
Methods inherited from class com.vaadin.client.ui.AbstractConnector
addStateChangeHandler, addStateChangeHandler, createState, doInit, ensureHandlerManager, fireEvent, forceStateChange, getChildren, getConnection, getConnectorId, getParent, getResourceUrl, getRpcImplementations, getRpcProxy, getStateType, getTag, hasEventListener, init, isEnabled, onStateChanged, registerRpc, removeStateChangeHandler, removeStateChangeHandler, setChildren, setTag, unregisterRpc, updateEnabledState
-
-
-
-
Field Detail
-
STYLE_SUFFIX_DRAGSOURCE
protected static final String STYLE_SUFFIX_DRAGSOURCE
Style suffix for indicating that the element is a drag source.
See Also:
-
STYLE_SUFFIX_DRAGGED
protected static final String STYLE_SUFFIX_DRAGGED
Style suffix for indicating that the element is being dragged.
See Also:
-
-
Method Detail
-
extend
protected void extend(ServerConnector target)
Description copied from class:
AbstractExtensionConnector
Called when the extension is attached to its parent. This method is only called once as an extension cannot be moved from one parent to another.
Specified by:
extend
in classAbstractExtensionConnector
Parameters:
target
- The connector this extension extends
-
addDraggable
protected void addDraggable(com.google.gwt.dom.client.Element element)
Makes the given element draggable and adds class name.
Parameters:
element
- Element to be set draggable.
-
removeDraggable
protected void removeDraggable(com.google.gwt.dom.client.Element element)
Removes draggable and class name from the given element.
Parameters:
element
- Element to remove draggable from.
-
addDragListeners
protected void addDragListeners(com.google.gwt.dom.client.Element element)
Adds dragstart and dragend event listeners to the given DOM element.
Parameters:
element
- DOM element to attach event listeners to.
-
removeDragListeners
protected void removeDragListeners(com.google.gwt.dom.client.Element element)
Removes dragstart and dragend event listeners from the given DOM element.
Parameters:
element
- DOM element to remove event listeners from.
-
onUnregister
public void onUnregister()
Description copied from interface:
ServerConnector
Event called when connector has been unregistered.
Specified by:
onUnregister
in interfaceServerConnector
Overrides:
onUnregister
in classAbstractConnector
-
onDragStart
protected void onDragStart(elemental.events.Event event)
Event handler for the
dragstart
event. Called whendragstart
event occurs.Parameters:
event
- browser event to be handled
-
fixDragImageOffsetsForDesktop
protected void fixDragImageOffsetsForDesktop(com.google.gwt.dom.client.NativeEvent dragStartEvent, com.google.gwt.dom.client.Element draggedElement)
Fixes missing or offset drag image caused by using css transform: translate (or such) by using a cloned drag image element, for which the property has been cleared.
This bug only occurs on Desktop with Safari (gets offset and clips the element for the parts that are not inside the element start & end coordinates) and Firefox (gets offset), and calling this method is NOOP for any other browser.
This fix is not needed if custom drag image has been used.
Parameters:
dragStartEvent
- the drag start eventdraggedElement
- the element being dragged
-
fixDragImageTransformForMobile
protected void fixDragImageTransformForMobile(com.google.gwt.dom.client.Element draggedElement)
Fix drag image offset for touch devices when the dragged image has been offset with css transform: translate/translate3d.
This necessary for e.g grid rows.
This method is NOOP for non-touch browsers.
Parameters:
draggedElement
- the element that forms the drag image
-
createDataTransferData
protected Map<String,String> createDataTransferData(com.google.gwt.dom.client.NativeEvent dragStartEvent)
Creates the data map to be set as the
DataTransfer
object's data.Parameters:
dragStartEvent
- The drag start eventReturns:
The map from type to data, or
null
for not setting any data. Returningnull
will cancel the drag start.
-
sendDragStartEventToServer
protected void sendDragStartEventToServer(com.google.gwt.dom.client.NativeEvent dragStartEvent)
Initiates a server RPC for the drag start event.
This method is called only if there is a server side drag start event handler attached.
Parameters:
dragStartEvent
- Client side dragstart event.
-
setDragImage
protected void setDragImage(com.google.gwt.dom.client.NativeEvent dragStartEvent)
Sets the drag image to be displayed.
Override this method in case you need custom drag image setting. Called from
onDragStart(Event)
.Parameters:
dragStartEvent
- The drag start event.
-
onDragEnd
protected void onDragEnd(elemental.events.Event event)
Event handler for the
dragend
event. Called whendragend
event occurs.Parameters:
event
- browser event to be handled
-
sendDragEndEventToServer
protected void sendDragEndEventToServer(com.google.gwt.dom.client.NativeEvent dragEndEvent, DropEffect dropEffect)
Initiates a server RPC for the drag end event.
Parameters:
dragEndEvent
- Client side dragend event.dropEffect
- Drop effect of the dragend event, extracted fromDataTransfer.dropEffect
parameter.
-
addDraggedStyle
protected void addDraggedStyle(com.google.gwt.dom.client.NativeEvent event)
Add class name to indicate that the drag source element is being dragged. This method is called during the dragstart event.
Parameters:
event
- The drag start event.
-
removeDraggedStyle
protected void removeDraggedStyle(com.google.gwt.dom.client.NativeEvent event)
Remove class name that indicated that the drag source element was being dragged. This method is called during the dragend event.
Parameters:
event
- The drag end element.
-
getDraggableElement
protected com.google.gwt.dom.client.Element getDraggableElement()
Finds the draggable element within the widget. By default, returns the topmost element.
Override this method to make some other than the root element draggable instead.
In case you need to make more than whan element draggable, override
extend(ServerConnector)
instead.Returns:
the draggable element in the parent widget.
-
isNativeDragEvent
protected boolean isNativeDragEvent(com.google.gwt.dom.client.NativeEvent nativeEvent)
Returns whether the given event is a native (android) drag start/end event, and not produced by the drag-drop-polyfill.
Parameters:
nativeEvent
- the event to testReturns:
true
if native event,false
if not (polyfill event)
-
isAndoidChrome
protected boolean isAndoidChrome()
Returns whether the current browser is Android Chrome.
Returns:
true
if Android Chrome,false
if not
-
getDropEffect
protected static String getDropEffect(com.google.gwt.dom.client.DataTransfer dataTransfer)
Returns the dropEffect for the given data transfer.
Parameters:
dataTransfer
- the data transfer with drop effectReturns:
the currently set drop effect
-
getState
public DragSourceState getState()
Description copied from class:
AbstractConnector
Returns the shared state object for this connector. Override this method to define the shared state type for your connector.
Specified by:
getState
in interfaceServerConnector
Overrides:
getState
in classAbstractConnector
Returns:
the current shared state (never null)
-
-