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:
GridDragSourceConnector
public class DragSourceExtensionConnector extends AbstractExtensionConnector
Extension to add drag source functionality to a widget for using HTML5 drag and drop. Client side counterpart ofDragSourceExtension.- Since:
- 8.1
- Author:
- Vaadin Ltd
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected static StringSTYLE_SUFFIX_DRAGGEDStyle suffix for indicating that the element is being dragged.protected static StringSTYLE_SUFFIX_DRAGSOURCEStyle suffix for indicating that the element is a drag source.
-
Constructor Summary
Constructors Constructor Description DragSourceExtensionConnector()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddDraggable(com.google.gwt.dom.client.Element element)Makes the given element draggable and adds class name.protected voidaddDraggedStyle(com.google.gwt.dom.client.NativeEvent event)Add class name to indicate that the drag source element is being dragged.protected voidaddDragListeners(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 theDataTransferobject's data.protected voidextend(ServerConnector target)Called when the extension is attached to its parent.protected voidfixDragImageOffsetsForDesktop(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 voidfixDragImageTransformForMobile(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.ElementgetDraggableElement()Finds the draggable element within the widget.protected static StringgetDropEffect(com.google.gwt.dom.client.DataTransfer dataTransfer)Returns the dropEffect for the given data transfer.DragSourceStategetState()Returns the shared state object for this connector.protected booleanisAndoidChrome()Returns whether the current browser is Android Chrome.protected booleanisNativeDragEvent(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 voidonDragEnd(elemental.events.Event event)Event handler for thedragendevent.protected voidonDragStart(elemental.events.Event event)Event handler for thedragstartevent.voidonUnregister()Event called when connector has been unregistered.protected voidremoveDraggable(com.google.gwt.dom.client.Element element)Removes draggable and class name from the given element.protected voidremoveDraggedStyle(com.google.gwt.dom.client.NativeEvent event)Remove class name that indicated that the drag source element was being dragged.protected voidremoveDragListeners(com.google.gwt.dom.client.Element element)Removes dragstart and dragend event listeners from the given DOM element.protected voidsendDragEndEventToServer(com.google.gwt.dom.client.NativeEvent dragEndEvent, DropEffect dropEffect)Initiates a server RPC for the drag end event.protected voidsendDragStartEventToServer(com.google.gwt.dom.client.NativeEvent dragStartEvent)Initiates a server RPC for the drag start event.protected voidsetDragImage(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:
- Constant Field Values
-
STYLE_SUFFIX_DRAGGED
protected static final String STYLE_SUFFIX_DRAGGED
Style suffix for indicating that the element is being dragged.- See Also:
- Constant Field Values
-
-
Method Detail
-
extend
protected void extend(ServerConnector target)
Description copied from class:AbstractExtensionConnectorCalled 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:
extendin 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:ServerConnectorEvent called when connector has been unregistered.- Specified by:
onUnregisterin interfaceServerConnector- Overrides:
onUnregisterin classAbstractConnector
-
onDragStart
protected void onDragStart(elemental.events.Event event)
Event handler for thedragstartevent. Called whendragstartevent 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 theDataTransferobject's data.- Parameters:
dragStartEvent- The drag start event- Returns:
- The map from type to data, or
nullfor not setting any data. Returningnullwill 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 thedragendevent. Called whendragendevent 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.dropEffectparameter.
-
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 test- Returns:
trueif native event,falseif not (polyfill event)
-
isAndoidChrome
protected boolean isAndoidChrome()
Returns whether the current browser is Android Chrome.- Returns:
trueif Android Chrome,falseif 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 effect- Returns:
- the currently set drop effect
-
getState
public DragSourceState getState()
Description copied from class:AbstractConnectorReturns the shared state object for this connector. Override this method to define the shared state type for your connector.- Specified by:
getStatein interfaceServerConnector- Overrides:
getStatein classAbstractConnector- Returns:
- the current shared state (never null)
-
-