/** * Updates the drop details while dragging. This is needed to ensure client * side criterias can validate the drop location. * * @param event * The drag event */ protected void updateDragDetails(VDragEvent event) { Element over = event.getElementOver(); Widget content = WidgetUtil.findWidget(over, null); if (content != null && content != this) { event.getDropDetails().put(Constants.DROP_DETAIL_OVER_CLASS, content.getClass().getName()); } else { event.getDropDetails().put(Constants.DROP_DETAIL_OVER_CLASS, this.getClass().getName()); } // Add mouse event details MouseEventDetails details = MouseEventDetailsBuilder .buildMouseEventDetails(event.getCurrentGwtEvent(), getElement()); event.getDropDetails().put(Constants.DROP_DETAIL_MOUSE_EVENT, details.serialize()); }
int absoluteLeft = drag.getCurrentGwtEvent().getClientX(); int absoluteTop = drag.getCurrentGwtEvent().getClientY(); drag.getDropDetails().put(Constants.DROP_DETAIL_ABSOLUTE_LEFT, absoluteLeft); drag.getDropDetails().put(Constants.DROP_DETAIL_ABSOLUTE_TOP, absoluteTop); if (drag.getDragImage() != null) { String offsetLeftStr = drag.getDragImage().getStyle() .getMarginLeft(); offsetLeft = Integer.parseInt( .getTouchOrMouseClientX(drag.getCurrentGwtEvent()) - canvas.getAbsoluteLeft() + offsetLeft; if (drag.getDragImage() != null) { String offsetTopStr = drag.getDragImage().getStyle().getMarginTop(); offsetTop = Integer.parseInt( offsetTopStr.substring(0, offsetTopStr.length() - 2)); int relativeTop = Util.getTouchOrMouseClientY(drag.getCurrentGwtEvent()) - canvas.getAbsoluteTop() + offsetTop; drag.getDropDetails().put(Constants.DROP_DETAIL_RELATIVE_LEFT, relativeLeft); drag.getDropDetails().put(Constants.DROP_DETAIL_RELATIVE_TOP, relativeTop);
public void accepted(VDragEvent event) { Slot slot = getSlot(event.getElementOver(), event.getCurrentGwtEvent()); if (slot != null) { getLayout().emphasis(slot, event); } else { getLayout().emphasis(getLayout(), event); } } }, drag);
event.getDropDetails().put( Constants.DROP_DETAIL_HORIZONTAL_DROP_LOCATION, getHorizontalDropLocation(widget, event)); event.getDropDetails().put(Constants.DROP_DETAIL_TO, index); .buildMouseEventDetails(event.getCurrentGwtEvent(), getElement()); event.getDropDetails().put(Constants.DROP_DETAIL_MOUSE_EVENT, details.serialize());
/** * Returns the horizontal location within the cell when hoovering over the * cell. By default the cell is devided into three parts: left,center,right * with the ratios 10%,80%,10%; * * @param rowElement * The row * @param event * The drag event * @return The horizontal drop location */ protected VerticalDropLocation getVerticalDropLocation(Element rowElement, VDragEvent event) { return VDragDropUtil.getVerticalDropLocation( (com.google.gwt.user.client.Element) rowElement, Util.getTouchOrMouseClientY(event.getCurrentGwtEvent()), cellTopBottomDropRatio); }
currentDragEvent.setDragImage(dragImageElement); clone = dragImageElement; } else { currentDragEvent.createDragImage(dragImageElement, true); clone = currentDragEvent.getDragImage();
@Override // Exception squid:S1166 - Hide origin exception // Exception squid:S2221 - This code is trans-coded to JavaScript, hence // Exception semantics changes @SuppressWarnings({ "squid:S1166", "squid:S2221" }) protected boolean accept(VDragEvent drag, UIDL configuration) { try { String component = drag.getTransferable().getDragSource().getWidget().getElement().getId(); int c = configuration.getIntAttribute(COMPONENT_COUNT); String mode = configuration.getStringAttribute(MODE); for (int dragSourceIndex = 0; dragSourceIndex < c; dragSourceIndex++) { String requiredPid = configuration.getStringAttribute(COMPONENT + dragSourceIndex); if ((STRICT_MODE.equals(mode) && component.equals(requiredPid)) || (PREFIX_MODE.equals(mode) && component.startsWith(requiredPid))) { return true; } } } catch (Exception e) { // log and continue LOGGER.log(Level.SEVERE, "Error verifying drop target: " + e.getLocalizedMessage()); } return false; } }
private void updatePlaceHolderStyleProperties(VDragEvent drag) { int width = 0; int height = 0; String className = ""; placeHolderElement.setClassName(DRAG_SHADOW_STYLE_NAME); ComponentConnector draggedConnector = (ComponentConnector) drag .getTransferable() .getData(Constants.TRANSFERABLE_DETAIL_COMPONENT); if (draggedConnector != null) { height = Util.getRequiredHeight(draggedConnector.getWidget()); width = Util.getRequiredWidth(draggedConnector.getWidget()); className = draggedConnector.getWidget().getElement() .getClassName(); className = className.replaceAll( VLayoutDragDropMouseHandler.ACTIVE_DRAG_SOURCE_STYLENAME, ""); placeHolderElement.addClassName(className); } else if (drag.getElementOver() != getElement()) { width = 3; height = drag.getElementOver().getOffsetHeight(); } placeHolderElement.getStyle().setWidth(width, Unit.PX); placeHolderElement.getStyle().setHeight(height, Unit.PX); }
boolean internalDrag = event.getTransferable().getDragSource() == this; .getHorizontalDropLocation(DOM.asOld(element), Util.getTouchOrMouseClientX( event.getCurrentGwtEvent()), tabLeftRightDropRatio);
ev.createDragImage(scrollBody.tBodyElement, true); Element dragImage = ev.getDragImage(); int i = 0; for (Widget next : scrollBody) { ev.createDragImage(getElement(), true);
public void accepted(VDragEvent event) { getLayout().emphasis(event.getElementOver()); } }, drag);
@Override public void onDrop(DropEvent event) { NativeEvent nativeEvent = event.getNativeEvent(); if (validate(nativeEvent) && vaadinDragEvent != null) { nativeEvent.preventDefault(); nativeEvent.stopPropagation(); // event stopped, just notify global handler // Haulmont API if (globalDropHandler != null) { globalDropHandler.onDrop(event); } vaadinDragEvent.setCurrentGwtEvent(nativeEvent); VDragAndDropManager.get().setCurrentDropHandler(dropHandler); // FIXME only text currently supported String data; if (BrowserInfo.get().isIE()) { // IE does not support MIME types // http://www.developerfusion.com/article/144828/the-html5-drag-and-drop-api/ data = event.getData("text"); } else { data = event.getData("text/plain"); } vaadinDragEvent.getTransferable().setData("html5Data", data); VDragAndDropManager.get().endDrag(); vaadinDragEvent = null; } }
private boolean startDrag(NativeEvent event) { VTransferable transferable = new VTransferable(); transferable.setDragSource(ConnectorMap.get(client).getConnector( this)); Element targetElement = (Element) event.getEventTarget().cast(); Paintable paintable; Widget w = WidgetUtil.findWidget(targetElement, null); if(!w.getStyleName().contains("drag-source-enabled")) { return false; } while (w != null && !(w instanceof Paintable)) { w = w.getParent(); } paintable = (Paintable) w; transferable.setData("component", paintable); VDragEvent dragEvent = VDragAndDropManager.get().startDrag( transferable, event, true); transferable.setData("clientX", event.getClientX()); transferable.setData("clientY", event.getClientY()); dragEvent.createDragImage(getElement(), true); return true; }
@Override public void dragOver(VDragEvent drag) { if (drag.getDragImage() != null) { drag.getDragImage().getStyle().setProperty("display", ""); } getLayout().updateDragDetails(drag); getLayout().postOverHook(drag); } }
@Override public void onDragOver(DragOverEvent event) { NativeEvent nativeEvent = event.getNativeEvent(); if (validate(nativeEvent) && vaadinDragEvent != null) { nativeEvent.preventDefault(); nativeEvent.stopPropagation(); // event stopped, just notify global handler // Haulmont API if (globalDragOverHandler != null) { globalDragOverHandler.onDragOver(event); } vaadinDragEvent.setCurrentGwtEvent(nativeEvent); VDragAndDropManager.get().setCurrentDropHandler(dropHandler); dropHandler.dragOver(vaadinDragEvent); } }
public void accepted(VDragEvent event) { Slot slot = getSlot(event.getElementOver(), event.getCurrentGwtEvent()); if (slot != null) { getLayout().emphasis(slot, event); } else { getLayout().emphasis(getLayout(), event); } } }, drag);
event.getDropDetails().put(Constants.DROP_DETAIL_VERTICAL_DROP_LOCATION, getVerticalDropLocation(VDDFormLayout.getRowFromChildElement( widget.getElement(), VDDFormLayout.this.getElement()), event.getDropDetails().put(Constants.DROP_DETAIL_TO, "-1"); for (int i = 0; i < table.getRowCount(); i++) { Widget w = table.getWidget(i, COLUMN_WIDGET); if (widget.equals(w)) { event.getDropDetails().put(Constants.DROP_DETAIL_TO, i); event.getDropDetails().put(Constants.DROP_DETAIL_OVER_CLASS, className); .buildMouseEventDetails(event.getCurrentGwtEvent(), getElement()); event.getDropDetails().put(Constants.DROP_DETAIL_MOUSE_EVENT, details.serialize());
/** * Returns the horizontal location within the cell when hoovering over the * cell. By default the cell is devided into three parts: left,center,right * with the ratios 10%,80%,10%; * * @param rowElement * The row * @param event * The drag event * @return The horizontal drop location */ protected VerticalDropLocation getVerticalDropLocation(Element rowElement, VDragEvent event) { return VDragDropUtil.getVerticalDropLocation( (com.google.gwt.user.client.Element) rowElement, Util.getTouchOrMouseClientY(event.getCurrentGwtEvent()), cellTopBottomDropRatio); }
currentDragEvent.setDragImage(dragImageElement); clone = dragImageElement; } else { currentDragEvent.createDragImage(dragImageElement, true); clone = currentDragEvent.getDragImage();
@Override // Exception squid:S1166 - Hide origin exception // Exception squid:S2221 - This code is trans-coded to JavaScript, hence // Exception semantics changes @SuppressWarnings({ "squid:S1166", "squid:S2221" }) protected boolean accept(VDragEvent drag, UIDL configuration) { try { String component = drag.getTransferable().getDragSource().getWidget().getElement().getId(); int c = configuration.getIntAttribute(COMPONENT_COUNT); String mode = configuration.getStringAttribute(MODE); for (int dragSourceIndex = 0; dragSourceIndex < c; dragSourceIndex++) { String requiredPid = configuration.getStringAttribute(COMPONENT + dragSourceIndex); if ((STRICT_MODE.equals(mode) && component.equals(requiredPid)) || (PREFIX_MODE.equals(mode) && component.startsWith(requiredPid))) { return true; } } } catch (Exception e) { // log and continue LOGGER.log(Level.SEVERE, "Error verifying drop target: " + e.getLocalizedMessage()); } return false; } }