Example usage for com.google.gwt.dom.client NativeEvent getScreenX

List of usage examples for com.google.gwt.dom.client NativeEvent getScreenX

Introduction

In this page you can find the example usage for com.google.gwt.dom.client NativeEvent getScreenX.

Prototype

public final int getScreenX() 

Source Link

Document

Gets the mouse x-position on the user's display.

Usage

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/*from  w w w .j  a  va 2s  . c  o 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
 * //from  ww w .j  a v  a2 s .  com
 * @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());
            }
        }
    });

}