Example usage for com.google.gwt.user.client Event getRelatedTarget

List of usage examples for com.google.gwt.user.client Event getRelatedTarget

Introduction

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

Prototype

@Deprecated
public final Element getRelatedTarget() 

Source Link

Document

Gets the related target for this event.

Usage

From source file:com.vaadin.client.ui.VButton.java

License:Apache License

/**
 * Check if the event occurred over an element which is part of this button
 */// www .  j  a va2 s.  c  om
private boolean isTargetInsideButton(Event event) {
    Element to = event.getRelatedTarget();
    return getElement().isOrHasChild(DOM.eventGetTarget(event))
            && (to == null || !getElement().isOrHasChild(to));
}

From source file:com.vaadin.terminal.gwt.client.ui.VButton.java

License:Open Source License

@SuppressWarnings("deprecation")
@Override//  ww w.  ja  v  a 2s.c o m
/*
 * Copy-pasted from GWT CustomButton, some minor modifications done:
 * 
 * -for IE/Opera added CLASSNAME_PRESSED
 * 
 * -event.preventDefault() commented from ONMOUSEDOWN (Firefox won't apply
 * :active styles if it is present)
 * 
 * -Tooltip event handling added
 * 
 * -onload event handler added (for icon handling)
 */
public void onBrowserEvent(Event event) {
    if (client != null) {
        client.handleTooltipEvent(event, this);
    }
    if (DOM.eventGetType(event) == Event.ONLOAD) {
        Util.notifyParentOfSizeChange(this, true);
    }
    // Should not act on button if disabled.
    if (!isEnabled()) {
        // This can happen when events are bubbled up from non-disabled
        // children
        return;
    }

    int type = DOM.eventGetType(event);
    switch (type) {
    case Event.ONCLICK:
        // If clicks are currently disallowed, keep it from bubbling or
        // being passed to the superclass.
        if (disallowNextClick) {
            event.stopPropagation();
            disallowNextClick = false;
            return;
        }
        break;
    case Event.ONMOUSEDOWN:
        if (DOM.isOrHasChild(getElement(), DOM.eventGetTarget(event))) {
            // This was moved from mouseover, which iOS sometimes skips.
            // We're certainly hovering at this point, and we don't actually
            // need that information before this point.
            setHovering(true);
        }
        if (event.getButton() == Event.BUTTON_LEFT) {
            // save mouse position to detect movement before synthesizing
            // event later
            mousedownX = event.getClientX();
            mousedownY = event.getClientY();

            disallowNextClick = true;
            clickPending = true;
            setFocus(true);
            DOM.setCapture(getElement());
            isCapturing = true;
            // Prevent dragging (on some browsers);
            // DOM.eventPreventDefault(event);
            if (BrowserInfo.get().isIE() || BrowserInfo.get().isOpera()) {
                addStyleName(CLASSNAME_PRESSED);
            }
        }
        break;
    case Event.ONMOUSEUP:
        if (isCapturing) {
            isCapturing = false;
            DOM.releaseCapture(getElement());
            if (isHovering() && event.getButton() == Event.BUTTON_LEFT) {
                // Click ok
                disallowNextClick = false;
            }
            if (BrowserInfo.get().isIE() || BrowserInfo.get().isOpera()) {
                removeStyleName(CLASSNAME_PRESSED);
            }
        }
        break;
    case Event.ONMOUSEMOVE:
        clickPending = false;
        if (isCapturing) {
            // Prevent dragging (on other browsers);
            DOM.eventPreventDefault(event);
        }
        break;
    case Event.ONMOUSEOUT:
        Element to = event.getRelatedTarget();
        if (getElement().isOrHasChild(DOM.eventGetTarget(event))
                && (to == null || !getElement().isOrHasChild(to))) {
            if (clickPending && Math.abs(mousedownX - event.getClientX()) < MOVE_THRESHOLD
                    && Math.abs(mousedownY - event.getClientY()) < MOVE_THRESHOLD) {
                onClick();
                break;
            }
            clickPending = false;
            if (isCapturing) {
            }
            setHovering(false);
            if (BrowserInfo.get().isIE() || BrowserInfo.get().isOpera()) {
                removeStyleName(CLASSNAME_PRESSED);
            }
        }
        break;
    case Event.ONBLUR:
        if (isFocusing) {
            isFocusing = false;
        }
        break;
    case Event.ONLOSECAPTURE:
        if (isCapturing) {
            isCapturing = false;
        }
        break;
    }

    super.onBrowserEvent(event);

    // Synthesize clicks based on keyboard events AFTER the normal key
    // handling.
    if ((event.getTypeInt() & Event.KEYEVENTS) != 0) {
        switch (type) {
        case Event.ONKEYDOWN:
            if (event.getKeyCode() == 32 /* space */) {
                isFocusing = true;
                event.preventDefault();
            }
            break;
        case Event.ONKEYUP:
            if (isFocusing && event.getKeyCode() == 32 /* space */) {
                isFocusing = false;

                /*
                 * If click shortcut is space then the shortcut handler will
                 * take care of the click.
                 */
                if (clickShortcut != 32 /* space */) {
                    onClick();
                }

                event.preventDefault();
            }
            break;
        case Event.ONKEYPRESS:
            if (event.getKeyCode() == KeyCodes.KEY_ENTER) {

                /*
                 * If click shortcut is enter then the shortcut handler will
                 * take care of the click.
                 */
                if (clickShortcut != KeyCodes.KEY_ENTER) {
                    onClick();
                }

                event.preventDefault();
            }
            break;
        }
    }
}