Example usage for com.google.gwt.user.client DOM getCaptureElement

List of usage examples for com.google.gwt.user.client DOM getCaptureElement

Introduction

In this page you can find the example usage for com.google.gwt.user.client DOM getCaptureElement.

Prototype

public static Element getCaptureElement() 

Source Link

Document

Gets the element that currently has mouse capture.

Usage

From source file:asquare.gwt.tk.client.ui.behavior.ControllerSupportDelegate.java

License:Apache License

public void onBrowserEvent(Event event) {
    /*/*from   w  w  w.  j a  va  2  s  .  co  m*/
     * Avoid processing the same event twice (issue with the GWT dispatcher). 
     * If you sink events on a child, but do not set a listener (as in the case of UIObjects), 
     * the following will happen:
     *
     * 1) child element's onXXX event handler is invoked
     * 2) $wnd.__dispatchEvent() is called with the event and child element
     * 3) this crawls up the heirarchy until it finds a GWT event listener (i.e. CComposite)
     * 4) CComposite.onBrowserEvent() is called (e.target = child, e.currentTarget = child)
     * 5) the event bubbles up to the parent element
     * 6) parent element's onXXX event handler is invoked
     * 7) $wnd.__dispatchEvent() is called with the event and the parent element
     * 8) CComposite.onBrowserEvent() is called (e.target = child, e.currentTarget = parent)
     * 
     * @see DOMImplStandard#init()
     * @see Tree#onBrowserEvent(Event)
     * 
     * Note: don't test current target when capturing. DOM.eventGetCurrentTarget() returns $wnd 
     * when capturing in Firefox and $wnd.equals() blows up. 
     * @see http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/41f12a9def68f97a
     * 
     * Note: eventGetCurrentTarget(event) is wrong in FocusImplOld (Safari, old Mozilla, Opera)--it returns the 
     * nested INPUT. Focus events don't bubble anyway, so bypass the check in this case. Bleh. 
     */
    if (m_controllers != null) {
        int eventType = DOM.eventGetType(event);
        if (DOM.getCaptureElement() != null || (eventType & Event.FOCUSEVENTS) != 0
                || DOM.eventGetCurrentTarget(event).equals(m_widget.getElement())) {
            for (int i = 0, size = m_controllers.size(); i < size; i++) {
                Controller controller = m_controllers.get(i);
                if ((controller.getEventBits() & eventType) != 0
                        && (m_enabled || !isControllerDisablable(controller.getId()))) {
                    controller.onBrowserEvent(m_widget, event);
                }
            }
        }
    }
}

From source file:cc.alcina.framework.gwt.client.widget.dialog.RelativePopupPanel.java

License:Apache License

/**
 * Preview the {@link NativePreviewEvent}.
 * //ww  w.j av a2 s  .  c  om
 * @param event
 *            the {@link NativePreviewEvent}
 */
private void previewNativeEvent(NativePreviewEvent event) {
    // If the event has been canceled or consumed, ignore it
    if (event.isCanceled() || (!previewAllNativeEvents && event.isConsumed())) {
        // We need to ensure that we cancel the event even if its been
        // consumed so
        // that popups lower on the stack do not auto hide
        if (modal) {
            event.cancel();
        }
        return;
    }
    // Fire the event hook and return if the event is canceled
    onPreviewNativeEvent(event);
    if (event.isCanceled()) {
        return;
    }
    // If the event targets the popup or the partner, consume it
    Event nativeEvent = Event.as(event.getNativeEvent());
    boolean eventTargetsPopupOrPartner = eventTargetsPopup(nativeEvent) || eventTargetsPartner(nativeEvent);
    if (eventTargetsPopupOrPartner) {
        event.consume();
    }
    // Cancel the event if it doesn't target the modal popup. Note that the
    // event can be both canceled and consumed.
    if (modal) {
        switch (nativeEvent.getType()) {
        case BrowserEvents.KEYDOWN:
        case BrowserEvents.KEYPRESS:
        case BrowserEvents.KEYUP:
            if (nativeEvent.getAltKey() || nativeEvent.getMetaKey() || nativeEvent.getCtrlKey()) {
                return;
            }
        }
        event.cancel();
    }
    // Switch on the event type
    int type = nativeEvent.getTypeInt();
    switch (type) {
    case Event.ONMOUSEDOWN:
    case Event.ONTOUCHSTART:
        // Don't eat events if event capture is enabled, as this can
        // interfere with dialog dragging, for example.
        if (DOM.getCaptureElement() != null) {
            event.consume();
            return;
        }
        if (!eventTargetsPopupOrPartner && autoHide) {
            EventTarget target = nativeEvent.getEventTarget();
            // if (Element.is(target)) {
            // ClientUtils.dumpElementTree(Element.as(target));
            // }
            hide(true);
            return;
        }
        break;
    case Event.ONMOUSEUP:
    case Event.ONMOUSEMOVE:
    case Event.ONCLICK:
    case Event.ONDBLCLICK: {
        // Don't eat events if event capture is enabled, as this can
        // interfere with dialog dragging, for example.
        if (DOM.getCaptureElement() != null) {
            event.consume();
            return;
        }
        break;
    }
    case Event.ONFOCUS: {
        if (nativeEvent.getEventTarget().is(Element.class)) {
            Element target = nativeEvent.getEventTarget().cast();
            if (modal && !eventTargetsPopupOrPartner && (target != null)) {
                blur(target);
                event.cancel();
                return;
            }
        }
        break;
    }
    case Event.ONKEYPRESS: {
        if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE && isHideOnEscape()) {
            hide(false);
            event.cancel();
            return;
        }
        break;
    }
    }
}

From source file:com.bearsoft.gwt.ui.containers.DraggableDecoration.java

public DraggableDecoration(String... aClasses) {
    super();/*w ww.  j av  a2  s  .  c om*/
    Element e = Document.get().createDivElement();
    setElement(e);
    for (String className : aClasses) {
        e.addClassName(className);
    }
    addDomHandler(new MouseDownHandler() {

        @Override
        public void onMouseDown(MouseDownEvent event) {
            DOM.setCapture(getElement());
            event.preventDefault();
            event.stopPropagation();
            mouseScreenX = event.getScreenX();
            mouseScreenY = event.getScreenY();
            event.stopPropagation();
            Widget target = getMovableTarget();
            assert target != null : "movable target widget must present to accept position changes";
            String tLeft = target.getElement().getStyle().getLeft();
            targetScrollLeft = Double.parseDouble(tLeft.substring(0, tLeft.length() - 2));
            String tTop = target.getElement().getStyle().getTop();
            targetScrollTop = Double.parseDouble(tTop.substring(0, tTop.length() - 2));

            target = getResizableTarget();
            assert target != null : "resizable target widget must present to accept size changes";
            String tWidth = target.getElement().getStyle().getWidth();
            targetWidth = Double.parseDouble(tWidth.substring(0, tWidth.length() - 2));
            String tHeight = target.getElement().getStyle().getHeight();
            targetHeight = Double.parseDouble(tHeight.substring(0, tHeight.length() - 2));
            mousePressed();
        }
    }, MouseDownEvent.getType());
    addDomHandler(new MouseUpHandler() {

        @Override
        public void onMouseUp(MouseUpEvent event) {
            DOM.releaseCapture(getElement());
            event.preventDefault();
            event.stopPropagation();
            mouseReleased();
        }
    }, MouseUpEvent.getType());
    addDomHandler(new MouseMoveHandler() {

        @Override
        public void onMouseMove(MouseMoveEvent event) {
            if (DOM.getCaptureElement() == getElement()) {
                int dx = event.getScreenX() - mouseScreenX;
                int dy = event.getScreenY() - mouseScreenY;
                event.preventDefault();
                event.stopPropagation();
                changeTarget(getMovableTarget(), getResizableTarget(), dx, dy, event);
            }
        }

    }, MouseMoveEvent.getType());
}

From source file:com.bearsoft.gwt.ui.containers.window.WindowPanel.java

@Override
public final void setCaptionWidget(HasHTML aCaptionWidget) {
    if (captionWidget != aCaptionWidget) {
        if (captionWidget != null) {
            captionWidget.removeFromParent();
        }//w  ww .  j a  v  a  2s  . c  o  m
        if (mdHandler != null) {
            mdHandler.removeHandler();
        }
        if (muHandler != null) {
            muHandler.removeHandler();
        }
        if (mmHandler != null) {
            mmHandler.removeHandler();
        }
        if (aCaptionWidget instanceof Widget) {
            captionWidget = (Widget) aCaptionWidget;
        } else {
            captionWidget = new Caption(aCaptionWidget.getHTML());
        }
        if (captionWidget != null) {
            mdHandler = captionWidget.addDomHandler(new MouseDownHandler() {

                @Override
                public void onMouseDown(MouseDownEvent event) {
                    event.preventDefault();
                    event.stopPropagation();
                    focus();
                    if (movable && !maximized) {
                        DOM.setCapture(captionWidget.getElement());
                        mouseScreenX = event.getScreenX();
                        mouseScreenY = event.getScreenY();
                        String tLeft = getMovableTarget().getElement().getStyle().getLeft();
                        targetScrollLeft = Integer.parseInt(tLeft.substring(0, tLeft.length() - 2));
                        String tTop = getMovableTarget().getElement().getStyle().getTop();
                        targetScrollTop = Integer.parseInt(tTop.substring(0, tTop.length() - 2));
                        beginMoving();
                    }
                }

            }, MouseDownEvent.getType());
            muHandler = captionWidget.addDomHandler(new MouseUpHandler() {

                @Override
                public void onMouseUp(MouseUpEvent event) {
                    event.preventDefault();
                    event.stopPropagation();
                    if (movable && !maximized) {
                        DOM.releaseCapture(captionWidget.getElement());
                        endMoving();
                    }
                }

            }, MouseUpEvent.getType());
            mmHandler = captionWidget.addDomHandler(new MouseMoveHandler() {

                @Override
                public void onMouseMove(MouseMoveEvent event) {
                    if (movable && !maximized) {
                        if (DOM.getCaptureElement() == captionWidget.getElement()) {
                            event.preventDefault();
                            event.stopPropagation();
                            int dx = event.getScreenX() - mouseScreenX;
                            int dy = event.getScreenY() - mouseScreenY;
                            setPosition(targetScrollLeft + dx >= 0 ? targetScrollLeft + dx : 0,
                                    targetScrollTop + dy >= 0 ? targetScrollTop + dy : 0);
                        }
                    }
                }

            }, MouseMoveEvent.getType());
            verticalPanel.insert(captionWidget, 0);
        }
    }
}

From source file:com.eas.window.DraggableDecoration.java

public DraggableDecoration(String... aClasses) {
    super();//from  ww  w.  j  a v a2 s.co m
    Element e = Document.get().createDivElement();
    setElement(e);
    for (String className : aClasses) {
        e.addClassName(className);
    }
    addDomHandler(new MouseDownHandler() {

        @Override
        public void onMouseDown(MouseDownEvent event) {
            DOM.setCapture(getElement());
            event.preventDefault();
            event.stopPropagation();
            mouseScreenX = event.getScreenX();
            mouseScreenY = event.getScreenY();
            event.stopPropagation();
            Widget target = getMovableTarget();
            assert target != null : "movable target widget must present to accept position changes";
            String tLeft = target.getElement().getStyle().getLeft();
            targetScrollLeft = Double.parseDouble(tLeft.substring(0, tLeft.length() - 2));
            String tTop = target.getElement().getStyle().getTop();
            targetScrollTop = Double.parseDouble(tTop.substring(0, tTop.length() - 2));

            target = getResizableTarget();
            assert target != null : "resizable target widget must present to accept size changes";
            String tWidth = target.getElement().getStyle().getWidth();
            targetWidth = Double.parseDouble(tWidth.substring(0, tWidth.length() - 2));
            String tHeight = target.getElement().getStyle().getHeight();
            targetHeight = Double.parseDouble(tHeight.substring(0, tHeight.length() - 2));
            mousePressed();
        }
    }, MouseDownEvent.getType());
    addDomHandler(new MouseUpHandler() {

        @Override
        public void onMouseUp(MouseUpEvent event) {
            event.preventDefault();
            event.stopPropagation();
            if (DOM.getCaptureElement() == getElement()) {
                DOM.releaseCapture(getElement());
                int dx = event.getScreenX() - mouseScreenX;
                int dy = event.getScreenY() - mouseScreenY;
                changeTarget(getMovableTarget(), getResizableTarget(), dx, dy, event);
            }
            mouseReleased();
        }
    }, MouseUpEvent.getType());
    addDomHandler(new MouseMoveHandler() {

        @Override
        public void onMouseMove(MouseMoveEvent event) {
            if (DOM.getCaptureElement() == getElement()) {
                int dx = event.getScreenX() - mouseScreenX;
                int dy = event.getScreenY() - mouseScreenY;
                event.preventDefault();
                event.stopPropagation();
                if (dx != 0 || dy != 0) {
                    mouseDragged();
                }
                changeTarget(getMovableTarget(), getResizableTarget(), dx, dy, event);
            }
        }

    }, MouseMoveEvent.getType());
}

From source file:com.eas.window.WindowPanel.java

@Override
public final void setCaptionWidget(HasHTML aCaptionWidget) {
    if (captionWidget != aCaptionWidget) {
        if (captionWidget != null) {
            captionWidget.removeFromParent();
        }// w w w  .  ja v  a 2 s.  c  om
        if (mdHandler != null) {
            mdHandler.removeHandler();
        }
        if (muHandler != null) {
            muHandler.removeHandler();
        }
        if (mmHandler != null) {
            mmHandler.removeHandler();
        }
        if (aCaptionWidget instanceof Widget) {
            captionWidget = (Widget) aCaptionWidget;
        } else {
            captionWidget = new Caption(aCaptionWidget.getHTML());
        }
        if (captionWidget != null) {
            mdHandler = captionWidget.addDomHandler(new MouseDownHandler() {

                @Override
                public void onMouseDown(MouseDownEvent event) {
                    event.preventDefault();
                    event.stopPropagation();
                    focus();
                    if (movable && !maximized) {
                        DOM.setCapture(captionWidget.getElement());
                        mouseScreenX = event.getScreenX();
                        mouseScreenY = event.getScreenY();
                        String tLeft = getMovableTarget().getElement().getStyle().getLeft();
                        targetScrollLeft = Integer.parseInt(tLeft.substring(0, tLeft.length() - 2));
                        String tTop = getMovableTarget().getElement().getStyle().getTop();
                        targetScrollTop = Integer.parseInt(tTop.substring(0, tTop.length() - 2));
                    }
                }

            }, MouseDownEvent.getType());
            muHandler = captionWidget.addDomHandler(new MouseUpHandler() {

                @Override
                public void onMouseUp(MouseUpEvent event) {
                    dragged = false;
                    event.preventDefault();
                    event.stopPropagation();
                    if (movable && !maximized) {
                        DOM.releaseCapture(captionWidget.getElement());
                        endMoving();
                    }
                }

            }, MouseUpEvent.getType());
            mmHandler = captionWidget.addDomHandler(new MouseMoveHandler() {

                @Override
                public void onMouseMove(MouseMoveEvent event) {
                    if (movable && !maximized) {
                        if (DOM.getCaptureElement() == captionWidget.getElement()) {
                            event.preventDefault();
                            event.stopPropagation();
                            int dx = event.getScreenX() - mouseScreenX;
                            int dy = event.getScreenY() - mouseScreenY;
                            if (!dragged && (dx != 0 || dy != 0)) {
                                dragged = true;
                                beginMoving();
                            }
                            setPosition(targetScrollLeft + dx >= 0 ? targetScrollLeft + dx : 0,
                                    targetScrollTop + dy >= 0 ? targetScrollTop + dy : 0);
                        }
                    }
                }

            }, MouseMoveEvent.getType());
            verticalPanel.insert(captionWidget, 0);
        }
    }
}

From source file:com.google.appinventor.client.wizards.Wizard.java

License:Open Source License

@Override
public boolean onEventPreview(Event event) {
    // Always allow event if capturing is enabled
    if (DOM.getCaptureElement() != null) {
        return true;
    }//from  w w w.  j  a  v  a  2  s  .co m

    // If this is a modal wizard then only allow it if the target element is a child of this wizard
    if (modal) {
        Element target = DOM.eventGetTarget(event);
        return (target != null && DOM.isOrHasChild(getElement(), target));
    } else {
        return super.onEventPreview(event);
    }
}

From source file:com.lorepo.icplayer.client.module.choice.MyPopupPanel.java

License:Apache License

/**
 * Preview the {@link NativePreviewEvent}.
 *
 * @param event the {@link NativePreviewEvent}
 *///www . j  a  v a 2  s. c  o m
private void previewNativeEvent(NativePreviewEvent event) {
    // If the event has been canceled or consumed, ignore it
    if (event.isCanceled() || (!previewAllNativeEvents && event.isConsumed())) {
        // We need to ensure that we cancel the event even if its been consumed so
        // that popups lower on the stack do not auto hide
        if (modal) {
            event.cancel();
        }
        return;
    }

    // Fire the event hook and return if the event is canceled
    onPreviewNativeEvent(event);
    if (event.isCanceled()) {
        return;
    }

    // If the event targets the popup or the partner, consume it
    Event nativeEvent = Event.as(event.getNativeEvent());
    boolean eventTargetsPopupOrPartner = eventTargetsPopup(nativeEvent) || eventTargetsPartner(nativeEvent);
    if (eventTargetsPopupOrPartner) {
        event.consume();
    }

    // Cancel the event if it doesn't target the modal popup. Note that the
    // event can be both canceled and consumed.
    if (modal) {
        event.cancel();
    }

    // Switch on the event type
    int type = nativeEvent.getTypeInt();
    switch (type) {
    case Event.ONKEYDOWN: {
        if (!onKeyDownPreview((char) nativeEvent.getKeyCode(),
                KeyboardListenerCollection.getKeyboardModifiers(nativeEvent))) {
            event.cancel();
        }
        return;
    }
    case Event.ONKEYUP: {
        if (!onKeyUpPreview((char) nativeEvent.getKeyCode(),
                KeyboardListenerCollection.getKeyboardModifiers(nativeEvent))) {
            event.cancel();
        }
        return;
    }
    case Event.ONKEYPRESS: {
        if (!onKeyPressPreview((char) nativeEvent.getKeyCode(),
                KeyboardListenerCollection.getKeyboardModifiers(nativeEvent))) {
            event.cancel();
        }
        return;
    }

    case Event.ONMOUSEDOWN:
    case Event.ONTOUCHSTART:
        // Don't eat events if event capture is enabled, as this can
        // interfere with dialog dragging, for example.
        if (DOM.getCaptureElement() != null) {
            event.consume();
            return;
        }

        if (!eventTargetsPopupOrPartner && autoHide) {
            hide(true);
            return;
        }
        break;
    case Event.ONMOUSEUP:
    case Event.ONMOUSEMOVE:
    case Event.ONCLICK:
    case Event.ONDBLCLICK: {
        // Don't eat events if event capture is enabled, as this can
        // interfere with dialog dragging, for example.
        if (DOM.getCaptureElement() != null) {
            event.consume();
            return;
        }
        break;
    }

    case Event.ONFOCUS: {
        Element target = nativeEvent.getTarget();
        if (modal && !eventTargetsPopupOrPartner && (target != null)) {
            blur(target);
            event.cancel();
            return;
        }
        break;
    }
    }
}

From source file:com.ponysdk.core.terminal.ui.PTPopupPanel.java

License:Apache License

@Override
public void onMouseDown(final MouseDownEvent event) {
    if (draggable && DOM.getCaptureElement() == null) {
        dragging = true;/*from w w  w.java  2  s .  co  m*/
        DOM.setCapture(uiObject.getElement());
        dragStartX = event.getX();
        dragStartY = event.getY();
    }
}

From source file:com.ponysdk.core.terminal.ui.PTScrollPanel.java

License:Apache License

@Override
public void addHandler(final ReaderBuffer buffer, final HandlerModel handlerModel) {
    if (HandlerModel.HANDLER_SCROLL == handlerModel) {
        uiObject.addScrollHandler(event -> {
            if (!dragging)
                sendScrollPositionEvent();
        });//from  w ww.j  ava2  s. c om
        uiObject.addDomHandler(event -> {
            if (DOM.getCaptureElement() == null) {
                dragging = true;
                DOM.setCapture(uiObject.getElement());
            }
        }, MouseDownEvent.getType());
        uiObject.addDomHandler(event -> {
            dragging = false;
            DOM.releaseCapture(uiObject.getElement());

            sendScrollPositionEvent();
        }, MouseUpEvent.getType());
    } else {
        super.addHandler(buffer, handlerModel);
    }
}