List of usage examples for com.google.gwt.dom.client NativeEvent getScreenY
public final int getScreenY()
From source file:com.allen_sauer.gwt.dnd.client.MouseDragHandler.java
License:Apache License
private void synthesizeAsyncMouseUp(MouseUpEvent event) { final Element elem = mouseDownWidget.getElement(); NativeEvent n = event.getNativeEvent(); // One click, see https://developer.mozilla.org/en-US/docs/DOM/event.detail final int detail = 1; final int screenX = n.getScreenX(); final int screenY = n.getScreenY(); final int clientX = n.getClientX(); final int clientY = n.getClientY(); final boolean ctrlKey = n.getCtrlKey(); final boolean altKey = n.getAltKey(); final boolean shiftKey = n.getShiftKey(); final boolean metaKey = n.getMetaKey(); final int button = n.getButton(); Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override/*ww w. j av a 2 s . co m*/ public void execute() { // TODO determine if we need to set additional event properties elem.dispatchEvent(Document.get().createMouseUpEvent(detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button)); } }); }
From source file:com.haulmont.cuba.web.widgets.client.addons.dragdroplayouts.ui.VDragDropUtil.java
License:Apache License
private static NativeEvent createMouseDownEvent(NativeEvent e) { return Document.get().createMouseDownEvent(0, e.getScreenX(), e.getScreenY(), e.getClientX(), e.getClientY(), e.getCtrlKey(), e.getAltKey(), e.getShiftKey(), e.getMetaKey(), e.getButton()); }
From source file:fi.jasoft.dragdroplayouts.client.ui.VLayoutDragDropMouseHandler.java
License:Apache License
/** * Called when the dragging a component should be initiated by both a mouse * down event as well as a touch start event * // ww w . ja v a2 s . c o m * @param event */ protected void initiateDrag(NativeEvent event) { // Check that dragging is enabled if (dragMode == LayoutDragMode.NONE) { return; } // Dragging can only be done with left mouse button and no modifier keys if (!isMouseDragEvent(event) && !Util.isTouchEvent(event)) { return; } // Create the transfarable VTransferable transferable = VDragDropUtil.createLayoutTransferableFromMouseDown(event, root); // Are we trying to drag the root layout if (transferable == null) { VConsole.error("Creating transferable on mouse down returned null"); return; } // Resolve the component final Widget w; if (root instanceof VDDAccordion && transferable.getData(Constants.TRANSFERABLE_DETAIL_CAPTION) != null) { w = (Widget) transferable.getData(Constants.TRANSFERABLE_DETAIL_CAPTION); } else if (transferable.getData(Constants.TRANSFERABLE_DETAIL_COMPONENT) != null) { w = (Widget) transferable.getData(Constants.TRANSFERABLE_DETAIL_COMPONENT); } else { // Failsafe if no widget was found w = root; VConsole.log("Could not resolve component, using root as component"); } // Announce drag start to listeners for (DragStartListener dl : dragStartListeners) { if (!dl.dragStart(w, dragMode)) { VDragAndDropManager.get().interruptDrag(); return; } } /* * A hack to remove slider popup when dragging. This is done by first * focusing the slider and then unfocusing so we get a blur event which * will remove the popup. */ if (w instanceof VSlider) { VSlider slider = (VSlider) w; slider.setFocus(true); slider.setFocus(false); } currentDraggedWidget = w; // Announce to handler that we are starting a drag operation VDragEvent currentDragEvent = VDragAndDropManager.get().startDrag(transferable, event, true); if (w instanceof VButton && BrowserInfo.get().isIE()) { /* * Due to Buttons crazy implementation we need to simulate a mouse * move to get the drag going in IE without first focusing the * button. Crazy shit. */ VButton button = (VButton) w; NativeEvent evt = Document.get().createMouseMoveEvent(1, event.getScreenX(), event.getScreenY(), Util.getTouchOrMouseClientX(event), Util.getTouchOrMouseClientY(event), false, false, false, false, 0); button.getElement().dispatchEvent(evt); } // Create the drag image if (root instanceof VCssLayout) { /* * CSS Layout does not have an enclosing div so we just use the * component dov */ currentDragEvent.createDragImage((Element) w.getElement().cast(), true); } else { /* * Other layouts uses a enclosing div so we use it. */ currentDragEvent.createDragImage((Element) w.getElement().getParentNode().cast(), true); } if (BrowserInfo.get().isIE7() && w instanceof VTextField) { currentDragEvent.createDragImage(w.getElement(), true); // Capture something so focus is not applied to elements Event.setCapture(RootPanel.getBodyElement()); } Element clone = currentDragEvent.getDragImage(); Style cloneStyle = clone.getStyle(); if (BrowserInfo.get().isIE()) { // Fix IE not aligning the drag image correctly when dragging // layouts cloneStyle.setPosition(Position.ABSOLUTE); } currentDraggedWidget.addStyleName(ACTIVE_DRAG_SOURCE_STYLENAME); // Listen to mouse up for cleanup mouseUpHandlerReg = Event.addNativePreviewHandler(new Event.NativePreviewHandler() { public void onPreviewNativeEvent(NativePreviewEvent event) { if (event.getTypeInt() == Event.ONMOUSEUP || event.getTypeInt() == Event.ONTOUCHEND || event.getTypeInt() == Event.ONTOUCHCANCEL) { if (mouseUpHandlerReg != null) { mouseUpHandlerReg.removeHandler(); if (currentDraggedWidget != null) { currentDraggedWidget.removeStyleName(ACTIVE_DRAG_SOURCE_STYLENAME); currentDraggedWidget = null; } } // Ensure capturing is turned off at mouse up Event.releaseCapture(RootPanel.getBodyElement()); } } }); }