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.Widget;
import com.vaadin.client.ComponentConnector;
import com.vaadin.client.ServerConnector;
import com.vaadin.event.dnd.DragSourceExtension;
private final EventListener dragStartListener = this::onDragStart;
private final EventListener dragEndListener = this::onDragEnd;
+ /**
+ * Widget of the drag source component.
+ */
+ private Widget dragSourceWidget;
+
@Override
protected void extend(ServerConnector target) {
+ dragSourceWidget = ((ComponentConnector) target).getWidget();
+
Element dragSourceElement = getDraggableElement();
dragSourceElement.setDraggable(Element.DRAGGABLE_TRUE);
* @return the draggable element in the parent widget.
*/
protected Element getDraggableElement() {
- return ((ComponentConnector) getParent()).getWidget().getElement();
+ return dragSourceWidget.getElement();
}
private native void setEffectAllowed(DataTransfer dataTransfer,
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.Widget;
import com.vaadin.client.ComponentConnector;
import com.vaadin.client.ServerConnector;
import com.vaadin.event.dnd.DropTargetExtension;
private final EventListener dragLeaveListener = this::onDragLeave;
private final EventListener dropListener = this::onDrop;
+ /**
+ * Widget of the drop target component.
+ */
+ private Widget dropTargetWidget;
+
@Override
protected void extend(ServerConnector target) {
+ dropTargetWidget = ((ComponentConnector) target).getWidget();
+
EventTarget dropTarget = getDropTargetElement().cast();
// dragenter event
* @return the drop target element in the parent widget.
*/
protected Element getDropTargetElement() {
- return ((ComponentConnector) getParent()).getWidget().getElement();
+ return dropTargetWidget.getElement();
}
/**