List of usage examples for com.google.gwt.user.client Event getRelatedTarget
@Deprecated public final Element getRelatedTarget()
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; } } }