Adding NativeEvent to gwt 1.6 Desk review:jlabanca git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4515 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/common/SimpleLogger.java b/reference/code-museum/src/com/google/gwt/museum/client/common/SimpleLogger.java index eeba505..4642cdd 100644 --- a/reference/code-museum/src/com/google/gwt/museum/client/common/SimpleLogger.java +++ b/reference/code-museum/src/com/google/gwt/museum/client/common/SimpleLogger.java
@@ -25,13 +25,10 @@ import com.google.gwt.user.client.ui.VerticalPanel; /** - * Helper class to create visual tests. - * - * @param <V> value type - * @param <T> target type + * Simple logging class. */ @SuppressWarnings("deprecation") -public class SimpleLogger<V, T> extends Composite { +public class SimpleLogger extends Composite { private VerticalPanel panel = new VerticalPanel();
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue1932.java b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue1932.java index e51c222..4a13b2f 100644 --- a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue1932.java +++ b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue1932.java
@@ -16,6 +16,7 @@ package com.google.gwt.museum.client.defaultmuseum; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.museum.client.common.AbstractIssue; @@ -120,15 +121,15 @@ Event.addNativePreviewHandler(new NativePreviewHandler() { public void onPreviewNativeEvent(NativePreviewEvent event) { // Ignore events outside of the sandbox - Event nativeEvent = event.getNativeEvent(); + NativeEvent nativeEvent = event.getNativeEvent(); Element target = nativeEvent.getTarget(); if (!sandbox.getElement().isOrHasChild(target) && !positioner.getElement().isOrHasChild(target)) { positioner.removeFromParent(); return; } - - switch (nativeEvent.getTypeInt()) { + + switch (Event.as(nativeEvent).getTypeInt()) { case Event.ONMOUSEMOVE: int absX = nativeEvent.getClientX() + Window.getScrollLeft(); int absY = nativeEvent.getClientY() + Window.getScrollTop();
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForEventsFiring.java b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForEventsFiring.java index 07efe27..fe1c5c3 100644 --- a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForEventsFiring.java +++ b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForEventsFiring.java
@@ -15,6 +15,7 @@ */ package com.google.gwt.museum.client.defaultmuseum; +import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; import com.google.gwt.event.dom.client.ChangeEvent; @@ -134,7 +135,7 @@ prepMouseEvents(); prepKeyboardEvents(); - prepSrollAndMouseWheelEvents(); + prepScrollAndMouseWheelEvents(); prepLoadEvents(); prepWindowEvents(); @@ -213,8 +214,8 @@ * * @param event the event that was triggered */ - private void passTest(Event event) { - passTest(event.getTypeInt()); + private void passTest(NativeEvent event) { + passTest(Event.as(event).getTypeInt())); } /** @@ -247,7 +248,7 @@ // Add event handlers textBox.addKeyDownHandler(new KeyDownHandler() { public void onKeyDown(KeyDownEvent event) { - event.isAutoRepeat(); + event.isAltKeyDown(); event.isControlKeyDown(); event.isShiftKeyDown(); @@ -332,7 +333,7 @@ private void prepMouseEvents() { // Create a button to trigger events - Button button = new Button("Click me") { + final Button button = new Button("Click me, move over me") { @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); @@ -386,19 +387,28 @@ public void onMouseOut(MouseOutEvent event) { assert event.getFromElement() != null; assert event.getToElement() != null; - passTest(event.getNativeEvent()); + if (button.getElement().equals(event.getFromElement()) + && button.getElement().getParentElement().equals( + event.getToElement())) { + passTest(event.getNativeEvent()); + } } }); button.addMouseOverHandler(new MouseOverHandler() { public void onMouseOver(MouseOverEvent event) { assert event.getFromElement() != null; assert event.getToElement() != null; - passTest(event.getNativeEvent()); + + if (button.getElement().equals(event.getToElement()) + && button.getElement().getParentElement().equals( + event.getFromElement())) { + passTest(event.getNativeEvent()); + } } }); } - private void prepSrollAndMouseWheelEvents() { + private void prepScrollAndMouseWheelEvents() { // Create a widget to trigger events String scrollableMessage = "Scroll to the bottom<br>(using mouse wheel<br>" + "if supported)";
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTree.java b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTree.java index 8a280c1..c317aa2 100644 --- a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTree.java +++ b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTree.java
@@ -76,9 +76,11 @@ TreeItem d = new TreeItem(new RadioButton("myradio", "I should line up nicely")); TreeItem e = new TreeItem(new CheckBox("I should line up nicely")); + TreeItem f = new TreeItem(new CheckBox("I should also line up nicely")); + f.addItem(new CheckBox("me to")); SimplePanel panel = new SimplePanel(); panel.setWidget(new Label("There should not be any space above me")); - TreeItem f = new TreeItem(panel); + TreeItem g = new TreeItem(panel); tree.setSelectedItem(b); tree.addItem(a); @@ -87,6 +89,7 @@ tree.addItem(d); tree.addItem(e); tree.addItem(f); + tree.addItem(g); b.addItem(ba); b.addItem(bb); bb.addItem(bba);
diff --git a/user/src/com/google/gwt/dom/client/DOMImpl.java b/user/src/com/google/gwt/dom/client/DOMImpl.java index c4a10d1..d5d86af 100644 --- a/user/src/com/google/gwt/dom/client/DOMImpl.java +++ b/user/src/com/google/gwt/dom/client/DOMImpl.java
@@ -47,6 +47,71 @@ return select; } + public native boolean eventGetAltKey(NativeEvent evt) /*-{ + return !!evt.altKey; + }-*/; + + public native int eventGetButton(NativeEvent evt) /*-{ + return evt.button || 0; + }-*/; + + public native int eventGetClientX(NativeEvent evt) /*-{ + return evt.clientX || 0; + }-*/; + + public native int eventGetClientY(NativeEvent evt) /*-{ + return evt.clientY || 0; + }-*/; + + public native boolean eventGetCtrlKey(NativeEvent evt) /*-{ + return !!evt.ctrlKey; + }-*/; + + public final native int eventGetKeyCode(NativeEvent evt) /*-{ + // 'which' gives the right key value, except when it doesn't -- in which + // case, keyCode gives the right value on all browsers. + // If all else fails, return an error code + return evt.which || evt.keyCode || 0; + }-*/; + + public native boolean eventGetMetaKey(NativeEvent evt) /*-{ + return !!evt.metaKey; + }-*/; + + public abstract int eventGetMouseWheelVelocityY(NativeEvent evt); + + public abstract Element eventGetRelatedTarget(NativeEvent nativeEvent); + + public native int eventGetScreenX(NativeEvent evt) /*-{ + return evt.screenX || 0; + }-*/; + + public native int eventGetScreenY(NativeEvent evt) /*-{ + return evt.screenY || 0; + }-*/; + + public native boolean eventGetShiftKey(NativeEvent evt) /*-{ + return !!evt.shiftKey; + }-*/; + + public abstract Element eventGetTarget(NativeEvent evt); + + public final native String eventGetType(NativeEvent evt) /*-{ + return evt.type; + }-*/; + + public abstract void eventPreventDefault(NativeEvent evt); + + public native void eventSetKeyCode(NativeEvent evt, char key) /*-{ + evt.keyCode = key; + }-*/; + + public native void eventStopPropagation(NativeEvent evt) /*-{ + evt.cancelBubble = cancel; + }-*/; + + public abstract String eventToString(NativeEvent evt); + public native int getAbsoluteLeft(Element elem) /*-{ var left = 0; var curr = elem; @@ -210,4 +275,4 @@ public native String toString(Element elem) /*-{ return elem.outerHTML; }-*/; -} +} \ No newline at end of file
diff --git a/user/src/com/google/gwt/dom/client/DOMImplIE6.java b/user/src/com/google/gwt/dom/client/DOMImplIE6.java index ba1dfaa..f95a5f0 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplIE6.java +++ b/user/src/com/google/gwt/dom/client/DOMImplIE6.java
@@ -37,6 +37,32 @@ public native SelectElement createSelectElement(boolean multiple) /*-{ var html = multiple ? "<SELECT MULTIPLE>" : "<SELECT>"; return $doc.createElement(html); + }-*/; + + @Override + public native int eventGetMouseWheelVelocityY(NativeEvent evt) /*-{ + return Math.round(-evt.wheelDelta / 40) || 0; + }-*/; + + @Override + public native Element eventGetRelatedTarget(NativeEvent evt) /*-{ + return evt.type == "mouseout"? evt.toElement:evt.fromElement; + }-*/; + + @Override + public native Element eventGetTarget(NativeEvent evt) /*-{ + return evt.srcElement; + }-*/; + + @Override + public native void eventPreventDefault(NativeEvent evt) /*-{ + evt.returnValue = false; + }-*/; + + @Override + public native String eventToString(NativeEvent evt) /*-{ + if (evt.toString) return evt.toString(); + return "[event" + evt.type + "]"; }-*/; @Override @@ -128,8 +154,8 @@ }-*/; /** - * Get the zoom multiple based on the current IE zoom level. A multiple of - * 2.0 means that the user has zoomed in to 200%. + * Get the zoom multiple based on the current IE zoom level. A multiple of 2.0 + * means that the user has zoomed in to 200%. * * @return the zoom multiple */ @@ -137,4 +163,5 @@ private native double getZoomMultiple() /*-{ return $doc.body.parentElement.offsetWidth / $doc.body.offsetWidth; }-*/; + }
diff --git a/user/src/com/google/gwt/dom/client/DOMImplMozilla.java b/user/src/com/google/gwt/dom/client/DOMImplMozilla.java index 0d1d36b..49519e0 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplMozilla.java +++ b/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
@@ -1,12 +1,12 @@ /* * Copyright 2008 Google Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -21,6 +21,11 @@ class DOMImplMozilla extends DOMImplStandard { @Override + public native int eventGetMouseWheelVelocityY(NativeEvent evt) /*-{ + return evt.detail || 0; + }-*/; + + @Override public native int getAbsoluteLeft(Element elem) /*-{ // Firefox 3 is actively throwing errors when getBoxObjectFor() is called, // so we use getBoundingClientRect() whenever possible (but it's not @@ -67,13 +72,13 @@ var style = $wnd.getComputedStyle($doc.documentElement, ''); return parseInt(style.marginLeft) + parseInt(style.borderLeftWidth); }-*/; - + @Override public native int getBodyOffsetTop() /*-{ var style = $wnd.getComputedStyle($doc.documentElement, ''); return parseInt(style.marginTop) + parseInt(style.borderTopWidth); }-*/; - + @Override public native String getInnerText(Element elem) /*-{ return elem.textContent; @@ -83,9 +88,9 @@ public native boolean isOrHasChild(Element parent, Element child) /*-{ // For more information about compareDocumentPosition, see: // http://www.quirksmode.org/blog/archives/2006/01/contains_for_mo.html - return (parent === child) || !!(parent.compareDocumentPosition(child) & 16); + return (parent === child) || !!(parent.compareDocumentPosition(child) & 16); }-*/; - + @Override public native void setInnerText(Element elem, String text) /*-{ elem.textContent = text || '';
diff --git a/user/src/com/google/gwt/dom/client/DOMImplOpera.java b/user/src/com/google/gwt/dom/client/DOMImplOpera.java index e8c27e4..58f1d69 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplOpera.java +++ b/user/src/com/google/gwt/dom/client/DOMImplOpera.java
@@ -21,6 +21,11 @@ class DOMImplOpera extends DOMImplStandard { @Override + public native int eventGetMouseWheelVelocityY(NativeEvent evt) /*-{ + return evt.detail * 4 || 0; + }-*/; + + @Override public native int getAbsoluteLeft(Element elem) /*-{ var left = 0; @@ -63,7 +68,7 @@ } return top; }-*/; - + @Override public native void scrollIntoView(Element elem) /*-{ elem.scrollIntoView();
diff --git a/user/src/com/google/gwt/dom/client/DOMImplSafari.java b/user/src/com/google/gwt/dom/client/DOMImplSafari.java index 2265d48..6a34c1e 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplSafari.java +++ b/user/src/com/google/gwt/dom/client/DOMImplSafari.java
@@ -14,6 +14,7 @@ * the License. */ package com.google.gwt.dom.client; + /** * Safari implementation of {@link com.google.gwt.user.client.impl.DOMImpl}. @@ -30,6 +31,43 @@ } @Override + public native int eventGetClientX(NativeEvent evt) /*-{ + // In Safari2: clientX is wrong and pageX is returned instead. + // $wnd.devicePixelRatio identifies Safari 3 from Safari 2 + if ($wnd.devicePixelRatio) { + return evt.clientX || 0; + } else { + // Subtract the margin and border of the HTML element in Safari 2 + // TODO: Remove this code when we drop Safari 2 support + var style = document.defaultView.getComputedStyle($doc.getElementsByTagName('html')[0], ''); + return evt.pageX - $doc.body.scrollLeft + - parseInt(style.getPropertyValue('margin-left')) + - parseInt(style.getPropertyValue('border-left-width')) || 0; + } + }-*/; + + @Override + public native int eventGetClientY(NativeEvent evt) /*-{ + // In Safari2: clientY is wrong and pageY is returned instead. + // $wnd.devicePixelRatio identifies Safari 3 from Safari 2 + if ($wnd.devicePixelRatio) { + return evt.clientY || 0; + } else { + // Subtract the margin and border of the HTML element in Safari 2 + // TODO: Remove this code when we drop Safari 2 support + var style = document.defaultView.getComputedStyle($doc.getElementsByTagName('html')[0], ''); + return evt.pageY - $doc.body.scrollTop + - parseInt(style.getPropertyValue('margin-top')) + - parseInt(style.getPropertyValue('border-top-width')) || 0; + } + }-*/; + + @Override + public native int eventGetMouseWheelVelocityY(NativeEvent evt) /*-{ + return Math.round(-evt.wheelDelta / 40) || 0; + }-*/; + + @Override public native int getAbsoluteLeft(Element elem) /*-{ // Unattached elements and elements (or their ancestors) with style // 'display: none' have no offsetLeft. @@ -68,7 +106,7 @@ } return left; }-*/; - + @Override public native int getAbsoluteTop(Element elem) /*-{ // Unattached elements and elements (or their ancestors) with style
diff --git a/user/src/com/google/gwt/dom/client/DOMImplStandard.java b/user/src/com/google/gwt/dom/client/DOMImplStandard.java index 847b7d3..7f2767f 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplStandard.java +++ b/user/src/com/google/gwt/dom/client/DOMImplStandard.java
@@ -31,7 +31,40 @@ }-*/; @Override + public native int eventGetButton(NativeEvent evt) /*-{ + // Standard browsers and IE disagree on what the button codes for buttons + // should be. Translating to match IE standard. + var button = evt.which; + if(button == 2) { + return 4; + } else if (button == 3) { + return 2; + } + return button || 0; + }-*/; + + @Override + public native Element eventGetRelatedTarget(NativeEvent evt) /*-{ + return evt.relatedTarget; + }-*/; + + @Override + public native Element eventGetTarget(NativeEvent evt) /*-{ + return evt.target; + }-*/; + + @Override + public native void eventPreventDefault(NativeEvent evt) /*-{ + evt.preventDefault(); + }-*/; + + @Override + public native String eventToString(NativeEvent evt) /*-{ + return evt.toString(); + }-*/; + + @Override public native boolean isOrHasChild(Element parent, Element child) /*-{ - return parent.contains(child); + return parent.contains(child); }-*/; }
diff --git a/user/src/com/google/gwt/dom/client/NativeEvent.java b/user/src/com/google/gwt/dom/client/NativeEvent.java new file mode 100644 index 0000000..217f067 --- /dev/null +++ b/user/src/com/google/gwt/dom/client/NativeEvent.java
@@ -0,0 +1,214 @@ +/* + * Copyright 2009 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.dom.client; + +import com.google.gwt.core.client.JavaScriptObject; + +/** + * The native dom event. + */ +public class NativeEvent extends JavaScriptObject { + + /** + * The left mouse button. + */ + public static final int BUTTON_LEFT = 1; + /** + * The middle mouse button. + */ + public static final int BUTTON_MIDDLE = 4; + + /** + * The right mouse button. + */ + public static final int BUTTON_RIGHT = 2; + + /** + * Required constructor for GWT compiler to function. + */ + protected NativeEvent() { + } + + /** + * Gets whether the ALT key was depressed when the given event occurred. + * + * @return <code>true</code> if ALT was depressed when the event occurred + */ + public final boolean getAltKey() { + return DOMImpl.impl.eventGetAltKey(this); + } + + /** + * Gets the mouse buttons that were depressed when the given event occurred. + * + * @return a bit-field, defined by {@link NativeEvent#BUTTON_LEFT}, + * {@link NativeEvent#BUTTON_MIDDLE}, and + * {@link NativeEvent#BUTTON_RIGHT} + */ + public final int getButton() { + return DOMImpl.impl.eventGetButton(this); + } + + /** + * Gets the mouse x-position within the browser window's client area. + * + * @return the mouse x-position + */ + public final int getClientX() { + return DOMImpl.impl.eventGetClientX(this); + } + + /** + * Gets the mouse y-position within the browser window's client area. + * + * @return the mouse y-position + */ + public final int getClientY() { + return DOMImpl.impl.eventGetClientY(this); + } + + /** + * Gets whether the CTRL key was depressed when the given event occurred. + * + * @return <code>true</code> if CTRL was depressed when the event occurred + */ + public final boolean getCtrlKey() { + return DOMImpl.impl.eventGetCtrlKey(this); + } + + /** + * Gets the key code associated with this event. + * + * <p> + * For key press events, this method returns the Unicode value of the + * character generated. For key down and key up events, it returns the code + * associated with the physical key. + * </p> + * + * @return the Unicode character or key code. + * @see com.google.gwt.event.dom.client.KeyCodes + */ + public final int getKeyCode() { + return DOMImpl.impl.eventGetKeyCode(this); + } + + /** + * Gets whether the META key was depressed when the given event occurred. + * + * @return <code>true</code> if META was depressed when the event occurred + */ + public final boolean getMetaKey() { + return DOMImpl.impl.eventGetMetaKey(this); + } + + /** + * Gets the velocity of the mouse wheel associated with the event along the Y + * axis. + * <p> + * The velocity of the event is an artifical measurement for relative + * comparisons of wheel activity. It is affected by some non-browser factors, + * including choice of input hardware and mouse acceleration settings. The + * sign of the velocity measurement agrees with the screen coordinate system; + * negative values are towards the origin and positive values are away from + * the origin. Standard scrolling speed is approximately ten units per event. + * </p> + * + * @return The velocity of the mouse wheel. + */ + public final int getMouseWheelVelocityY() { + return DOMImpl.impl.eventGetMouseWheelVelocityY(this); + } + + /** + * Gets the related target for this event. + * @return the related target + */ + public final Element getRelatedTarget() { + return DOMImpl.impl.eventGetRelatedTarget(this); + } + + /** + * Gets the mouse x-position on the user's display. + * + * @return the mouse x-position + */ + public final int getScreenX() { + return DOMImpl.impl.eventGetScreenX(this); + } + + /** + * Gets the mouse y-position on the user's display. + * + * @return the mouse y-position + */ + public final int getScreenY() { + return DOMImpl.impl.eventGetScreenY(this); + } + + /** + * Gets whether the shift key was depressed when the given event occurred. + * + * @return <code>true</code> if shift was depressed when the event occurred + */ + public final boolean getShiftKey() { + return DOMImpl.impl.eventGetShiftKey(this); + } + + /** + * Gets a string representation of this event. + * + * We do not override {@link #toString()} because it is final in + * {@link com.google.gwt.core.client.JavaScriptObject }. + * + * @return the string representation of this event + */ + public final String getString() { + return DOMImpl.impl.eventToString(this); + } + + /** + * Returns the element that was the actual target of the given event. + * + * @return the target element + */ + public final Element getTarget() { + return DOMImpl.impl.eventGetTarget(this); + } + + /** + * Gets the enumerated type of this event. + * + * @return the event's enumerated type + */ + public final String getType() { + return DOMImpl.impl.eventGetType(this); + } + + /** + * Prevents the browser from taking its default action for the given event. + */ + public final void preventDefault() { + DOMImpl.impl.eventPreventDefault(this); + } + + /** + * Stops the event from being propagated to parent elements. + */ + public final void stopPropagation() { + DOMImpl.impl.eventStopPropagation(this); + } + +}
diff --git a/user/src/com/google/gwt/event/dom/DomEvent.gwt.xml b/user/src/com/google/gwt/event/dom/DomEvent.gwt.xml index c5434ae..1e761c5 100644 --- a/user/src/com/google/gwt/event/dom/DomEvent.gwt.xml +++ b/user/src/com/google/gwt/event/dom/DomEvent.gwt.xml
@@ -1,6 +1,5 @@ <module> <inherits name="com.google.gwt.event.EventBase" /> - <inherits name="com.google.gwt.user.DOM" /> - + <inherits name="com.google.gwt.dom.DOM" /> <source path="client"/> </module>
diff --git a/user/src/com/google/gwt/event/dom/client/BlurEvent.java b/user/src/com/google/gwt/event/dom/client/BlurEvent.java index acbd82c..db0d326 100644 --- a/user/src/com/google/gwt/event/dom/client/BlurEvent.java +++ b/user/src/com/google/gwt/event/dom/client/BlurEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native blur event. */ @@ -26,8 +24,8 @@ * Event type for blur events. Represents the meta-data associated with this * event. */ - private static final Type<BlurHandler> TYPE = new Type<BlurHandler>( - Event.ONBLUR, "blur", new BlurEvent()); + private static final Type<BlurHandler> TYPE = new Type<BlurHandler>("blur", + new BlurEvent()); /** * Gets the event type associated with blur events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire blur events. */ protected BlurEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/ChangeEvent.java b/user/src/com/google/gwt/event/dom/client/ChangeEvent.java index f66f3cd..7a2ec49 100644 --- a/user/src/com/google/gwt/event/dom/client/ChangeEvent.java +++ b/user/src/com/google/gwt/event/dom/client/ChangeEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native change event. */ @@ -27,7 +25,7 @@ * event. */ private static final Type<ChangeHandler> TYPE = new Type<ChangeHandler>( - Event.ONCHANGE, "change", new ChangeEvent()); + "change", new ChangeEvent()); /** * Gets the event type associated with change events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire change events. */ protected ChangeEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/ClickEvent.java b/user/src/com/google/gwt/event/dom/client/ClickEvent.java index 805c956..74fc74e 100644 --- a/user/src/com/google/gwt/event/dom/client/ClickEvent.java +++ b/user/src/com/google/gwt/event/dom/client/ClickEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native click event. */ @@ -27,7 +25,7 @@ * event. */ private static final Type<ClickHandler> TYPE = new Type<ClickHandler>( - Event.ONCLICK, "click", new ClickEvent()); + "click", new ClickEvent()); /** * Gets the event type associated with click events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire click events. */ protected ClickEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/ContextMenuEvent.java b/user/src/com/google/gwt/event/dom/client/ContextMenuEvent.java index 513fd2b..ff801d3 100644 --- a/user/src/com/google/gwt/event/dom/client/ContextMenuEvent.java +++ b/user/src/com/google/gwt/event/dom/client/ContextMenuEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native context menu event. */ @@ -27,7 +25,7 @@ * with this event. */ private static final Type<ContextMenuHandler> TYPE = new Type<ContextMenuHandler>( - Event.ONCONTEXTMENU, "contextmenu", new ContextMenuEvent()); + "contextmenu", new ContextMenuEvent()); /** * Gets the event type associated with context menu events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire context menu events. */ protected ContextMenuEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/DomEvent.java b/user/src/com/google/gwt/event/dom/client/DomEvent.java index c4ff6f4..bf279db 100644 --- a/user/src/com/google/gwt/event/dom/client/DomEvent.java +++ b/user/src/com/google/gwt/event/dom/client/DomEvent.java
@@ -15,14 +15,13 @@ */ package com.google.gwt.event.dom.client; +import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.HasHandlers; -import com.google.gwt.user.client.Event; /** * {@link DomEvent} is a subclass of {@link GwtEvent} that provides events that - * map to DOM Level 2 Events. It provides an additional method to access the * underlying native browser event object as well as a subclass of {@link Type} * that understands GWT event bits used by sinkEvents(). * @@ -39,38 +38,25 @@ * @param <H> handler type */ public static class Type<H extends EventHandler> extends GwtEvent.Type<H> { - private final int eventToSink; private DomEvent<H> flyweight; - - /** - * Constructor. - * - * @param eventToSink the native event type to sink - * - */ - public Type(int eventToSink) { - this.eventToSink = eventToSink; - } + private String name; /** * This constructor allows dom event types to be triggered by the - * {@link DomEvent#fireNativeEvent(Event, HasHandlers)} method. It should - * only be used by implementors supporting new dom events. + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, HasHandlers)} + * method. It should only be used by implementors supporting new dom events. + * * <p> * Any such dom event type must act as a flyweight around a native event * object. * </p> * - * - * @param eventToSink the integer value used by sink events to set up event - * handling for this dom type * @param eventName the raw native event name * @param flyweight the instance that will be used as a flyweight to wrap a * native event */ - protected Type(int eventToSink, String eventName, DomEvent<H> flyweight) { + public Type(String eventName, DomEvent<H> flyweight) { this.flyweight = flyweight; - this.eventToSink = eventToSink; // Until we have eager clinits implemented, we are manually initializing // DomEvent here. @@ -78,26 +64,16 @@ init(); } registered.unsafePut(eventName, this); - } - - Type(int nativeEventTypeInt, String eventName, DomEvent<H> cached, - String... auxNames) { - this(nativeEventTypeInt, eventName, cached); - for (int i = 0; i < auxNames.length; i++) { - registered.unsafePut(auxNames[i], this); - } + name = eventName; } /** - * Gets the integer defined by the native {@link Event} type needed to hook - * up event handling when the user calls - * {@link com.google.gwt.user.client.DOM#sinkEvents(com.google.gwt.user.client.Element, int)} - * . + * Gets the name associated with this event type. * - * @return the native event type + * @return the name of this event typ */ - public int getEventToSink() { - return eventToSink; + public String getName() { + return name; } } @@ -107,19 +83,19 @@ * Fires the given native event on the specified handlers. * * @param nativeEvent the native event - * @param handlers the event manager containing the handlers to fire (may be - * null) + * @param handlerSource the source of the handlers to fire */ - public static void fireNativeEvent(Event nativeEvent, HasHandlers handlers) { + public static void fireNativeEvent(NativeEvent nativeEvent, + HasHandlers handlerSource) { assert nativeEvent != null : "nativeEvent must not be null"; - if (registered != null && handlers != null) { + if (registered != null) { final DomEvent.Type<?> typeKey = registered.unsafeGet(nativeEvent.getType()); if (typeKey != null) { // Store and restore native event just in case we are in recursive // loop. - Event currentNative = typeKey.flyweight.nativeEvent; + NativeEvent currentNative = typeKey.flyweight.nativeEvent; typeKey.flyweight.setNativeEvent(nativeEvent); - handlers.fireEvent(typeKey.flyweight); + handlerSource.fireEvent(typeKey.flyweight); typeKey.flyweight.setNativeEvent(currentNative); } } @@ -130,12 +106,12 @@ registered = new PrivateMap<Type<?>>(); } - private Event nativeEvent; + private NativeEvent nativeEvent; @Override public abstract DomEvent.Type<H> getAssociatedType(); - public final Event getNativeEvent() { + public final NativeEvent getNativeEvent() { assertLive(); return nativeEvent; } @@ -154,7 +130,7 @@ * * @param nativeEvent the native event */ - public final void setNativeEvent(Event nativeEvent) { + public final void setNativeEvent(NativeEvent nativeEvent) { this.nativeEvent = nativeEvent; } @@ -163,6 +139,6 @@ */ public void stopPropagation() { assertLive(); - nativeEvent.cancelBubble(true); + nativeEvent.stopPropagation(); } }
diff --git a/user/src/com/google/gwt/event/dom/client/DoubleClickEvent.java b/user/src/com/google/gwt/event/dom/client/DoubleClickEvent.java index 972b645..20cdf8e 100644 --- a/user/src/com/google/gwt/event/dom/client/DoubleClickEvent.java +++ b/user/src/com/google/gwt/event/dom/client/DoubleClickEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native double click event. */ @@ -27,7 +25,7 @@ * with this event. */ private static final Type<DoubleClickHandler> TYPE = new Type<DoubleClickHandler>( - Event.ONDBLCLICK, "dblclick", new DoubleClickEvent()); + "dblclick", new DoubleClickEvent()); /** * Gets the event type associated with double click events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire double click events. */ protected DoubleClickEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/ErrorEvent.java b/user/src/com/google/gwt/event/dom/client/ErrorEvent.java index 0c9a007..40a3771 100644 --- a/user/src/com/google/gwt/event/dom/client/ErrorEvent.java +++ b/user/src/com/google/gwt/event/dom/client/ErrorEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native error event. */ @@ -27,7 +25,7 @@ * event. */ private static final Type<ErrorHandler> TYPE = new Type<ErrorHandler>( - Event.ONERROR, "error", new ErrorEvent()); + "error", new ErrorEvent()); /** * Gets the event type associated with error events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire error events. */ protected ErrorEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/FocusEvent.java b/user/src/com/google/gwt/event/dom/client/FocusEvent.java index c2ca7bd..16df375 100644 --- a/user/src/com/google/gwt/event/dom/client/FocusEvent.java +++ b/user/src/com/google/gwt/event/dom/client/FocusEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native focus event. */ @@ -27,7 +25,7 @@ * event. */ private static final Type<FocusHandler> TYPE = new Type<FocusHandler>( - Event.ONFOCUS, "focus", new FocusEvent()); + "focus", new FocusEvent()); /** * Gets the event type associated with focus events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire focus events. */ protected FocusEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/HasNativeEvent.java b/user/src/com/google/gwt/event/dom/client/HasNativeEvent.java index 510c273..88aaf36 100644 --- a/user/src/com/google/gwt/event/dom/client/HasNativeEvent.java +++ b/user/src/com/google/gwt/event/dom/client/HasNativeEvent.java
@@ -16,7 +16,7 @@ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; +import com.google.gwt.dom.client.NativeEvent; /** * An object that implements this interface has a native event associated with @@ -28,5 +28,5 @@ * * @return the native event */ - Event getNativeEvent(); + NativeEvent getNativeEvent(); }
diff --git a/user/src/com/google/gwt/event/dom/client/KeyDownEvent.java b/user/src/com/google/gwt/event/dom/client/KeyDownEvent.java index 1b58b03..d1175a2 100644 --- a/user/src/com/google/gwt/event/dom/client/KeyDownEvent.java +++ b/user/src/com/google/gwt/event/dom/client/KeyDownEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native key down event. */ @@ -27,7 +25,7 @@ * this event. */ private static final Type<KeyDownHandler> TYPE = new Type<KeyDownHandler>( - Event.ONKEYDOWN, "keydown", new KeyDownEvent()); + "keydown", new KeyDownEvent()); /** * Gets the event type associated with key down events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire key down events. */ protected KeyDownEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/KeyEvent.java b/user/src/com/google/gwt/event/dom/client/KeyEvent.java index c6367e2..535995f 100644 --- a/user/src/com/google/gwt/event/dom/client/KeyEvent.java +++ b/user/src/com/google/gwt/event/dom/client/KeyEvent.java
@@ -47,15 +47,6 @@ } /** - * Gets the key-repeat state of this event. - * - * @return <code>true</code> if this key event was an auto-repeat - */ - public boolean isAutoRepeat() { - return getNativeEvent().getRepeat(); - } - - /** * Is the <code>control</code> key down? * * @return whether the control key is down
diff --git a/user/src/com/google/gwt/event/dom/client/KeyPressEvent.java b/user/src/com/google/gwt/event/dom/client/KeyPressEvent.java index f955e3c..496aa6c 100644 --- a/user/src/com/google/gwt/event/dom/client/KeyPressEvent.java +++ b/user/src/com/google/gwt/event/dom/client/KeyPressEvent.java
@@ -15,7 +15,7 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; +import com.google.gwt.dom.client.NativeEvent; /** * Represents a native key press event. @@ -27,7 +27,7 @@ * this event. */ private static final Type<KeyPressHandler> TYPE = new Type<KeyPressHandler>( - Event.ONKEYPRESS, "keypress", new KeyPressEvent()); + "keypress", new KeyPressEvent()); /** * Gets the event type associated with key press events. @@ -40,7 +40,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire key press events. */ protected KeyPressEvent() { @@ -70,8 +70,8 @@ handler.onKeyPress(this); } - private native char getCharCode(Event e)/*-{ - return e.charCode || e.keyCode; - }-*/; + private native char getCharCode(NativeEvent e)/*-{ + return e.charCode || e.keyCode; + }-*/; }
diff --git a/user/src/com/google/gwt/event/dom/client/KeyUpEvent.java b/user/src/com/google/gwt/event/dom/client/KeyUpEvent.java index 5a07977..f728468 100644 --- a/user/src/com/google/gwt/event/dom/client/KeyUpEvent.java +++ b/user/src/com/google/gwt/event/dom/client/KeyUpEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native key up event. */ @@ -27,7 +25,7 @@ * event. */ private static final Type<KeyUpHandler> TYPE = new Type<KeyUpHandler>( - Event.ONKEYUP, "keyup", new KeyUpEvent()); + "keyup", new KeyUpEvent()); /** * Gets the event type associated with key up events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire key up events. */ protected KeyUpEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/LoadEvent.java b/user/src/com/google/gwt/event/dom/client/LoadEvent.java index 3255c4b..00397fb 100644 --- a/user/src/com/google/gwt/event/dom/client/LoadEvent.java +++ b/user/src/com/google/gwt/event/dom/client/LoadEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native load event. */ @@ -26,8 +24,8 @@ * Event type for load events. Represents the meta-data associated with this * event. */ - private static final Type<LoadHandler> TYPE = new Type<LoadHandler>( - Event.ONLOAD, "load", new LoadEvent()); + private static final Type<LoadHandler> TYPE = new Type<LoadHandler>("load", + new LoadEvent()); /** * Gets the event type associated with load events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire load events. */ protected LoadEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/LoseCaptureEvent.java b/user/src/com/google/gwt/event/dom/client/LoseCaptureEvent.java index 857e8d0..eef6843 100644 --- a/user/src/com/google/gwt/event/dom/client/LoseCaptureEvent.java +++ b/user/src/com/google/gwt/event/dom/client/LoseCaptureEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native lose capture event. */ @@ -27,7 +25,7 @@ * with this event. */ private static final Type<LoseCaptureHandler> TYPE = new Type<LoseCaptureHandler>( - Event.ONLOSECAPTURE, "losecapture", new LoseCaptureEvent()); + "losecapture", new LoseCaptureEvent()); /** * Gets the event type associated with lose capture events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire lose capture events. */ protected LoseCaptureEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/MouseDownEvent.java b/user/src/com/google/gwt/event/dom/client/MouseDownEvent.java index dd36ec2..5dcfff6 100644 --- a/user/src/com/google/gwt/event/dom/client/MouseDownEvent.java +++ b/user/src/com/google/gwt/event/dom/client/MouseDownEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native mouse down event. */ @@ -27,7 +25,7 @@ * this event. */ private static final Type<MouseDownHandler> TYPE = new Type<MouseDownHandler>( - Event.ONMOUSEDOWN, "mousedown", new MouseDownEvent()); + "mousedown", new MouseDownEvent()); /** * Gets the event type associated with mouse down events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire mouse down events. */ protected MouseDownEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/MouseEvent.java b/user/src/com/google/gwt/event/dom/client/MouseEvent.java index 424b138..1357261 100644 --- a/user/src/com/google/gwt/event/dom/client/MouseEvent.java +++ b/user/src/com/google/gwt/event/dom/client/MouseEvent.java
@@ -15,10 +15,7 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.dom.client.Element; import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.Window; /** * Abstract class representing mouse events. @@ -28,30 +25,6 @@ */ public abstract class MouseEvent<H extends EventHandler> extends DomEvent<H> { /** - * Gets the x coordinate relative to the given element. - * - * @param nativeEvent the native event - * @param relativeTo the relative element - * @return the relative x - */ - public static int getRelativeX(Event nativeEvent, Element relativeTo) { - return nativeEvent.getClientX() - relativeTo.getAbsoluteLeft() - + relativeTo.getScrollLeft() + Window.getScrollLeft(); - } - - /** - * Gets the y coordinate relative to the given element. - * - * @param nativeEvent the native event - * @param relativeTo the relative element - * @return the relative y - */ - public static int getRelativeY(Event nativeEvent, Element relativeTo) { - return nativeEvent.getClientY() - relativeTo.getAbsoluteTop() - + relativeTo.getScrollTop() + Window.getScrollTop(); - } - - /** * Gets the mouse x-position within the browser window's client area. * * @return the mouse x-position @@ -70,8 +43,10 @@ } /** - * Gets the button value. Compare it to {@link Event#BUTTON_LEFT}, - * {@link Event#BUTTON_RIGHT}, {@link Event#BUTTON_MIDDLE} + * Gets the button value. Compare it to + * {@link com.google.gwt.dom.client.NativeEvent#BUTTON_LEFT}, + * {@link com.google.gwt.dom.client.NativeEvent#BUTTON_RIGHT}, + * {@link com.google.gwt.dom.client.NativeEvent#BUTTON_MIDDLE} * * @return the button value */ @@ -80,27 +55,6 @@ } /** - * Gets the x coordinate relative to the given element. - * - * @param relativeTo the relative element - * @return the relative x - */ - public int getRelativeX(Element relativeTo) { - return getRelativeX(getNativeEvent(), relativeTo); - } - - /** - * Gets the y coordinate relative to the given element. - * - * - * @param relativeTo the relative element - * @return the relative y - */ - public int getRelativeY(Element relativeTo) { - return getRelativeY(getNativeEvent(), relativeTo); - } - - /** * Gets the mouse x-position on the user's display. * * @return the mouse x-position
diff --git a/user/src/com/google/gwt/event/dom/client/MouseMoveEvent.java b/user/src/com/google/gwt/event/dom/client/MouseMoveEvent.java index cafa24c..cefd26c 100644 --- a/user/src/com/google/gwt/event/dom/client/MouseMoveEvent.java +++ b/user/src/com/google/gwt/event/dom/client/MouseMoveEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native mouse move event. */ @@ -27,7 +25,7 @@ * this event. */ private static final Type<MouseMoveHandler> TYPE = new Type<MouseMoveHandler>( - Event.ONMOUSEMOVE, "mousemove", new MouseMoveEvent()); + "mousemove", new MouseMoveEvent()); /** * Gets the event type associated with mouse move events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire mouse move events. */ protected MouseMoveEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/MouseOutEvent.java b/user/src/com/google/gwt/event/dom/client/MouseOutEvent.java index 7b1d47e..9b89c91 100644 --- a/user/src/com/google/gwt/event/dom/client/MouseOutEvent.java +++ b/user/src/com/google/gwt/event/dom/client/MouseOutEvent.java
@@ -16,7 +16,6 @@ package com.google.gwt.event.dom.client; import com.google.gwt.dom.client.Element; -import com.google.gwt.user.client.Event; /** * Represents a native mouse out event. @@ -28,7 +27,7 @@ * this event. */ private static final Type<MouseOutHandler> TYPE = new Type<MouseOutHandler>( - Event.ONMOUSEOUT, "mouseout", new MouseOutEvent()); + "mouseout", new MouseOutEvent()); /** * Gets the event type associated with mouse out events. @@ -41,7 +40,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire mouse out events. */ protected MouseOutEvent() { @@ -58,8 +57,7 @@ * @return the element from which the mouse pointer was moved */ public Element getFromElement() { - // Use a deferred binding instead of DOMImpl's inefficient switch statement - return getNativeEvent().getFromElement(); + return getNativeEvent().getTarget(); } /** @@ -69,7 +67,7 @@ */ public Element getToElement() { // Use a deferred binding instead of DOMImpl's inefficient switch statement - return getNativeEvent().getToElement(); + return getNativeEvent().getRelatedTarget(); } @Override
diff --git a/user/src/com/google/gwt/event/dom/client/MouseOverEvent.java b/user/src/com/google/gwt/event/dom/client/MouseOverEvent.java index 90a664c..3306151 100644 --- a/user/src/com/google/gwt/event/dom/client/MouseOverEvent.java +++ b/user/src/com/google/gwt/event/dom/client/MouseOverEvent.java
@@ -16,7 +16,6 @@ package com.google.gwt.event.dom.client; import com.google.gwt.dom.client.Element; -import com.google.gwt.user.client.Event; /** * Represents a native mouse over event. @@ -28,7 +27,7 @@ * this event. */ private static final Type<MouseOverHandler> TYPE = new Type<MouseOverHandler>( - Event.ONMOUSEOVER, "mouseover", new MouseOverEvent()); + "mouseover", new MouseOverEvent()); /** * Gets the event type associated with mouse over events. @@ -41,7 +40,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire mouse over events. */ protected MouseOverEvent() { @@ -58,8 +57,7 @@ * @return the element from which the mouse pointer was moved */ public Element getFromElement() { - // Use a deferred binding instead of DOMImpl's inefficient switch statement - return getNativeEvent().getFromElement(); + return getNativeEvent().getRelatedTarget(); } /** @@ -68,8 +66,7 @@ * @return the element to which the mouse pointer was moved */ public Element getToElement() { - // Use a deferred binding instead of DOMImpl's inefficient switch statement - return getNativeEvent().getToElement(); + return getNativeEvent().getTarget(); } @Override
diff --git a/user/src/com/google/gwt/event/dom/client/MouseUpEvent.java b/user/src/com/google/gwt/event/dom/client/MouseUpEvent.java index 9817f07..a098ff0 100644 --- a/user/src/com/google/gwt/event/dom/client/MouseUpEvent.java +++ b/user/src/com/google/gwt/event/dom/client/MouseUpEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native mouse up event. */ @@ -27,7 +25,7 @@ * this event. */ private static final Type<MouseUpHandler> TYPE = new Type<MouseUpHandler>( - Event.ONMOUSEUP, "mouseup", new MouseUpEvent()); + "mouseup", new MouseUpEvent()); /** * Gets the event type associated with mouse up events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire mouse up events. */ protected MouseUpEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/MouseWheelEvent.java b/user/src/com/google/gwt/event/dom/client/MouseWheelEvent.java index d8fed04..8120a1b 100644 --- a/user/src/com/google/gwt/event/dom/client/MouseWheelEvent.java +++ b/user/src/com/google/gwt/event/dom/client/MouseWheelEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native mouse wheel event. */ @@ -27,7 +25,7 @@ * this event. */ private static final Type<MouseWheelHandler> TYPE = new Type<MouseWheelHandler>( - Event.ONMOUSEWHEEL, "mousewheel", new MouseWheelEvent(), "DOMMouseScroll"); + "mousewheel", new MouseWheelEvent()); /** * Gets the event type associated with mouse wheel events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire mouse wheel events. */ protected MouseWheelEvent() {
diff --git a/user/src/com/google/gwt/event/dom/client/PrivateMap.java b/user/src/com/google/gwt/event/dom/client/PrivateMap.java index 2b136b3..9f264bf 100644 --- a/user/src/com/google/gwt/event/dom/client/PrivateMap.java +++ b/user/src/com/google/gwt/event/dom/client/PrivateMap.java
@@ -89,12 +89,12 @@ public final V safeGet(String key) { return unsafeGet(":" + key); } - + // ONLY use this for values that will be accessed with safeGet. public final void safePut(String key, V value) { unsafePut(":" + key, value); } - + // ONLY use this for values put with unsafePut. public final V unsafeGet(String key) { if (GWT.isScript()) { @@ -103,7 +103,7 @@ return javaMap.get(key); } } - + // ONLY use this for values that will be accessed with unsafeGet. public final void unsafePut(String key, V value) { if (GWT.isScript()) {
diff --git a/user/src/com/google/gwt/event/dom/client/ScrollEvent.java b/user/src/com/google/gwt/event/dom/client/ScrollEvent.java index 21910e9..8451ce9 100644 --- a/user/src/com/google/gwt/event/dom/client/ScrollEvent.java +++ b/user/src/com/google/gwt/event/dom/client/ScrollEvent.java
@@ -15,8 +15,6 @@ */ package com.google.gwt.event.dom.client; -import com.google.gwt.user.client.Event; - /** * Represents a native scroll event. */ @@ -27,7 +25,7 @@ * event. */ private static final Type<ScrollHandler> TYPE = new Type<ScrollHandler>( - Event.ONSCROLL, "scroll", new ScrollEvent()); + "scroll", new ScrollEvent()); /** * Gets the event type associated with scroll events. @@ -40,7 +38,7 @@ /** * Protected constructor, use - * {@link DomEvent#fireNativeEvent(Event, com.google.gwt.event.shared.HandlerManager)} + * {@link DomEvent#fireNativeEvent(com.google.gwt.dom.client.NativeEvent, com.google.gwt.event.shared.HasHandlers)} * to fire scroll events. */ protected ScrollEvent() {
diff --git a/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java b/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java index a482ae6..3514c6a 100644 --- a/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java +++ b/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java
@@ -34,7 +34,6 @@ * manager.If no such handlers exist, this method will do nothing. * * @param <I> the selected item type - * @param <S> The event source * @param source the source of the handlers * @param selectedItem the selected item */
diff --git a/user/src/com/google/gwt/event/shared/HandlerManager.java b/user/src/com/google/gwt/event/shared/HandlerManager.java index 4123dab..f180f96 100644 --- a/user/src/com/google/gwt/event/shared/HandlerManager.java +++ b/user/src/com/google/gwt/event/shared/HandlerManager.java
@@ -16,7 +16,6 @@ package com.google.gwt.event.shared; import com.google.gwt.event.shared.GwtEvent.Type; -import com.google.gwt.user.client.Command; import java.util.ArrayList; import java.util.HashMap; @@ -28,6 +27,14 @@ * handlers on passed in events. */ public class HandlerManager { + + /** + * Interface for queued add/remove operations. + */ + private interface AddOrRemoveCommand { + public void execute(); + } + /** * Inner class used to actually contain the handlers. */ @@ -77,9 +84,16 @@ return l == null ? 0 : l.size(); } + private boolean isEventHandled(GwtEvent.Type<?> eventKey) { + return map.containsKey(eventKey); + } + private <H> void removeHandler(GwtEvent.Type<H> eventKey, H handler) { ArrayList<H> l = get(eventKey); boolean result = l.remove(handler); + if (l.size() == 0) { + map.remove(eventKey); + } assert result : "Tried to remove unknown handler: " + handler + " from " + eventKey; } @@ -95,7 +109,7 @@ private final Object source; // Add and remove operations received during dispatch. - private List<Command> deferredDeltas; + private List<AddOrRemoveCommand> deferredDeltas; /** * Creates a handler manager with the given source. Handlers will be fired in @@ -204,6 +218,16 @@ } /** + * Does this handler manager handle the given event type? + * + * @param e the event type + * @return whether the given event type is handled + */ + public boolean isEventHandled(Type<?> e) { + return registry.isEventHandled(e); + } + + /** * Removes the given handler from the specified event type. Normally, * applications should call {@link HandlerRegistration#removeHandler()} * instead. @@ -236,9 +260,9 @@ return registry.map; } - private void defer(Command command) { + private void defer(AddOrRemoveCommand command) { if (deferredDeltas == null) { - deferredDeltas = new ArrayList<Command>(); + deferredDeltas = new ArrayList<AddOrRemoveCommand>(); } deferredDeltas.add(command); } @@ -255,7 +279,7 @@ private <H extends EventHandler> void enqueueAdd(final GwtEvent.Type<H> type, final H handler) { - defer(new Command() { + defer(new AddOrRemoveCommand() { public void execute() { doAdd(type, handler); } @@ -264,7 +288,7 @@ private <H extends EventHandler> void enqueueRemove( final GwtEvent.Type<H> type, final H handler) { - defer(new Command() { + defer(new AddOrRemoveCommand() { public void execute() { doRemove(type, handler); } @@ -274,7 +298,7 @@ private void handleQueuedAddsAndRemoves() { if (deferredDeltas != null) { try { - for (Command c : deferredDeltas) { + for (AddOrRemoveCommand c : deferredDeltas) { c.execute(); } } finally {
diff --git a/user/src/com/google/gwt/user/client/BaseListenerWrapper.java b/user/src/com/google/gwt/user/client/BaseListenerWrapper.java index 686cf20..a196bb2 100644 --- a/user/src/com/google/gwt/user/client/BaseListenerWrapper.java +++ b/user/src/com/google/gwt/user/client/BaseListenerWrapper.java
@@ -63,7 +63,7 @@ // The legacy EventHandler should only fire if it is on the top of the // stack (ie. the last one added). if (event.isFirstHandler()) { - if (!listener.onEventPreview(event.getNativeEvent())) { + if (!listener.onEventPreview(Event.as(event.getNativeEvent()))) { event.cancel(); } }
diff --git a/user/src/com/google/gwt/user/client/DOM.java b/user/src/com/google/gwt/user/client/DOM.java index 7840ff3..c781bd1 100644 --- a/user/src/com/google/gwt/user/client/DOM.java +++ b/user/src/com/google/gwt/user/client/DOM.java
@@ -32,7 +32,7 @@ public class DOM { // The current event being fired private static Event currentEvent = null; - private static final DOMImpl impl = GWT.create(DOMImpl.class); + static final DOMImpl impl = GWT.create(DOMImpl.class); private static Element sCaptureElem; /** @@ -393,7 +393,7 @@ * @return <code>true</code> if ALT was depressed when the event occurred */ public static boolean eventGetAltKey(Event evt) { - return impl.eventGetAltKey(evt); + return evt.getAltKey(); } /** @@ -404,7 +404,7 @@ * {@link Event#BUTTON_MIDDLE}, and {@link Event#BUTTON_RIGHT} */ public static int eventGetButton(Event evt) { - return impl.eventGetButton(evt); + return evt.getButton(); } /** @@ -414,7 +414,7 @@ * @return the mouse x-position */ public static int eventGetClientX(Event evt) { - return impl.eventGetClientX(evt); + return evt.getClientX(); } /** @@ -424,7 +424,7 @@ * @return the mouse y-position */ public static int eventGetClientY(Event evt) { - return impl.eventGetClientY(evt); + return evt.getClientY(); } /** @@ -434,7 +434,7 @@ * @return <code>true</code> if CTRL was depressed when the event occurred */ public static boolean eventGetCtrlKey(Event evt) { - return impl.eventGetCtrlKey(evt); + return evt.getCtrlKey(); } /** @@ -467,6 +467,7 @@ * @param evt the event to be tested * @return the element from which the mouse pointer was moved */ + public static Element eventGetFromElement(Event evt) { return impl.eventGetFromElement(evt); } @@ -485,7 +486,7 @@ * @see com.google.gwt.user.client.ui.KeyboardListener */ public static int eventGetKeyCode(Event evt) { - return impl.eventGetKeyCode(evt); + return evt.getKeyCode(); } /** @@ -495,7 +496,7 @@ * @return <code>true</code> if META was depressed when the event occurred */ public static boolean eventGetMetaKey(Event evt) { - return impl.eventGetMetaKey(evt); + return evt.getMetaKey(); } /** @@ -514,7 +515,7 @@ * @return The velocity of the mouse wheel. */ public static int eventGetMouseWheelVelocityY(Event evt) { - return impl.eventGetMouseWheelVelocityY(evt); + return evt.getMouseWheelVelocityY(); } /** @@ -522,7 +523,9 @@ * * @param evt the event to be tested * @return <code>true</code> if this key event was an auto-repeat + * @deprecated not supported in any browser but IE */ + @Deprecated public static boolean eventGetRepeat(Event evt) { return impl.eventGetRepeat(evt); } @@ -534,7 +537,7 @@ * @return the mouse x-position */ public static int eventGetScreenX(Event evt) { - return impl.eventGetScreenX(evt); + return evt.getScreenX(); } /** @@ -544,7 +547,7 @@ * @return the mouse y-position */ public static int eventGetScreenY(Event evt) { - return impl.eventGetScreenY(evt); + return evt.getScreenY(); } /** @@ -554,7 +557,7 @@ * @return <code>true</code> if shift was depressed when the event occurred */ public static boolean eventGetShiftKey(Event evt) { - return impl.eventGetShiftKey(evt); + return evt.getShiftKey(); } /** @@ -564,7 +567,7 @@ * @return the target element */ public static Element eventGetTarget(Event evt) { - return impl.eventGetTarget(evt); + return (Element) evt.getTarget(); } /** @@ -574,6 +577,7 @@ * @param evt the event to be tested * @return the element to which the mouse pointer was moved */ + public static Element eventGetToElement(Event evt) { return impl.eventGetToElement(evt); } @@ -595,7 +599,7 @@ * @return the event's type name */ public static String eventGetTypeString(Event evt) { - return impl.eventGetType(evt); + return evt.getType(); } /** @@ -604,7 +608,7 @@ * @param evt the event whose default action is to be prevented */ public static void eventPreventDefault(Event evt) { - impl.eventPreventDefault(evt); + evt.preventDefault(); } /** @@ -628,7 +632,7 @@ * @return a string form of the event */ public static String eventToString(Event evt) { - return impl.eventToString(evt); + return evt.getString(); } /** @@ -1264,7 +1268,6 @@ * @param evt a handle to the event being previewed * @return <code>false</code> to cancel the event */ - @SuppressWarnings("deprecation") static boolean previewEvent(Event evt) { // Fire a NativePreviewEvent to NativePreviewHandlers boolean ret = Event.fireNativePreviewEvent(evt);
diff --git a/user/src/com/google/gwt/user/client/Event.java b/user/src/com/google/gwt/user/client/Event.java index 2a72281..2872167 100644 --- a/user/src/com/google/gwt/user/client/Event.java +++ b/user/src/com/google/gwt/user/client/Event.java
@@ -15,8 +15,8 @@ */ package com.google.gwt.user.client; -import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.dom.client.HasNativeEvent; import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.GwtEvent; @@ -33,7 +33,8 @@ * calling methods in the {@link com.google.gwt.user.client.DOM} class. * </p> */ -public class Event extends JavaScriptObject { +public class Event extends NativeEvent { + /** * Represents a preview of a native {@link Event}. */ @@ -69,8 +70,8 @@ * @param nativeEvent the native event * @return true to fire the event normally, false to cancel the event */ - private static boolean fire(HandlerManager handlers, Event nativeEvent) { - if (TYPE != null && handlers != null) { + private static boolean fire(HandlerManager handlers, NativeEvent nativeEvent) { + if (TYPE != null && handlers != null && handlers.isEventHandled(TYPE)) { // Revive the event singleton.revive(); singleton.setNativeEvent(nativeEvent); @@ -102,7 +103,7 @@ /** * The event being previewed. */ - private Event nativeEvent; + private NativeEvent nativeEvent; /** * Cancel the native event and prevent it from firing. Note that the event @@ -130,11 +131,21 @@ return TYPE; } - public Event getNativeEvent() { + public NativeEvent getNativeEvent() { return nativeEvent; } /** + * Gets the type int corresponding to the native event that triggered this + * preview. + * + * @return the type int associated with this native event + */ + public final int getTypeInt() { + return Event.as(getNativeEvent()).getTypeInt(); + } + + /** * Has the event already been canceled? Note that {@link #isConsumed()} will * still return true if the native event has also been consumed. * @@ -185,7 +196,7 @@ * * @param nativeEvent the native {@link Event} being previewed. */ - private void setNativeEvent(Event nativeEvent) { + private void setNativeEvent(NativeEvent nativeEvent) { this.nativeEvent = nativeEvent; } } @@ -203,21 +214,6 @@ } /** - * The left mouse button (used in {@link DOM#eventGetButton(Event)}). - */ - public static final int BUTTON_LEFT = 1; - - /** - * The middle mouse button (used in {@link DOM#eventGetButton(Event)}). - */ - public static final int BUTTON_MIDDLE = 4; - - /** - * The right mouse button (used in {@link DOM#eventGetButton(Event)}). - */ - public static final int BUTTON_RIGHT = 2; - - /** * Fired when an element loses keyboard focus. */ public static final int ONBLUR = 0x01000; @@ -398,6 +394,25 @@ } /** + * Converts the {@link NativeEvent} to Event. This is always safe. + * + * @param event the event to downcast + */ + public static Event as(NativeEvent event) { + return (Event) event; + } + + /** + * Fire a {@link NativePreviewEvent} for the native event. + * + * @param nativeEvent the native event + * @return true to fire the event normally, false to cancel the event + */ + public static boolean fireNativePreviewEvent(NativeEvent nativeEvent) { + return NativePreviewEvent.fire(handlers, nativeEvent); + } + + /** * Gets the current event that is being fired. The current event is only * available within the lifetime of the onBrowserEvent function. Once the * onBrowserEvent method returns, the current event is reset to null. @@ -420,6 +435,40 @@ } /** + * Gets the x coordinate relative to the given element. + * + * @param nativeEvent the native event + * @param relativeTo the relative element + * @return the relative x + */ + public static int getRelativeX(NativeEvent nativeEvent, Element relativeTo) { + return nativeEvent.getClientX() - relativeTo.getAbsoluteLeft() + + relativeTo.getScrollLeft() + Window.getScrollLeft(); + } + + /** + * Gets the y coordinate relative to the given element. + * + * @param nativeEvent the native event + * @param relativeTo the relative element + * @return the relative y + */ + public static int getRelativeY(NativeEvent nativeEvent, Element relativeTo) { + return nativeEvent.getClientY() - relativeTo.getAbsoluteTop() + + relativeTo.getScrollTop() + Window.getScrollTop(); + } + + /** + * Gets the enumerated type of this event given a valid event type name. + * + * @param typeName the typeName to be tested + * @return the event's enumerated type + */ + public static int getTypeInt(String typeName) { + return DOM.impl.eventGetTypeInt(typeName); + } + + /** * Releases mouse capture on the given element. Calling this method has no * effect if the element does not currently have mouse capture. * @@ -467,16 +516,6 @@ } /** - * Fire a {@link NativePreviewEvent} for the native event. - * - * @param nativeEvent the native event - * @return true to fire the event normally, false to cancel the event - */ - static boolean fireNativePreviewEvent(Event nativeEvent) { - return NativePreviewEvent.fire(handlers, nativeEvent); - } - - /** * Not directly instantiable. Subclasses should also define a protected no-arg * constructor to prevent client code from directly instantiating the class. */ @@ -494,52 +533,6 @@ } /** - * Gets whether the ALT key was depressed when the given event occurred. - * - * @return <code>true</code> if ALT was depressed when the event occurred - */ - public final boolean getAltKey() { - return DOM.eventGetAltKey(this); - } - - /** - * Gets the mouse buttons that were depressed when the given event occurred. - * - * @return a bit-field, defined by {@link Event#BUTTON_LEFT}, - * {@link Event#BUTTON_MIDDLE}, and {@link Event#BUTTON_RIGHT} - */ - public final int getButton() { - return DOM.eventGetButton(this); - } - - /** - * Gets the mouse x-position within the browser window's client area. - * - * @return the mouse x-position - */ - public final int getClientX() { - return DOM.eventGetClientX(this); - } - - /** - * Gets the mouse y-position within the browser window's client area. - * - * @return the mouse y-position - */ - public final int getClientY() { - return DOM.eventGetClientY(this); - } - - /** - * Gets whether the CTRL key was depressed when the given event occurred. - * - * @return <code>true</code> if CTRL was depressed when the event occurred - */ - public final boolean getCtrlKey() { - return DOM.eventGetCtrlKey(this); - } - - /** * Gets the current target element of this event. This is the element whose * listener fired last, not the element which fired the event initially. * @@ -553,132 +546,38 @@ * Gets the element from which the mouse pointer was moved (only valid for * {@link Event#ONMOUSEOVER}). * + * @deprecated use {@link NativeEvent#getRelatedTarget()} instead * @return the element from which the mouse pointer was moved */ + @Deprecated public final Element getFromElement() { return DOM.eventGetFromElement(this); } /** - * Gets the key code associated with this event. - * - * <p> - * For {@link Event#ONKEYPRESS}, this method returns the Unicode value of the - * character generated. For {@link Event#ONKEYDOWN} and {@link Event#ONKEYUP}, - * it returns the code associated with the physical key. - * </p> - * - * @return the Unicode character or key code. - * @see com.google.gwt.event.dom.client.KeyCodes - */ - public final int getKeyCode() { - return DOM.eventGetKeyCode(this); - } - - /** - * Gets whether the META key was depressed when the given event occurred. - * - * @return <code>true</code> if META was depressed when the event occurred - */ - public final boolean getMetaKey() { - return DOM.eventGetMetaKey(this); - } - - /** - * Gets the velocity of the mouse wheel associated with the event along the Y - * axis. - * <p> - * The velocity of the event is an artifical measurement for relative - * comparisons of wheel activity. It is affected by some non-browser factors, - * including choice of input hardware and mouse acceleration settings. The - * sign of the velocity measurement agrees with the screen coordinate system; - * negative values are towards the origin and positive values are away from - * the origin. Standard scrolling speed is approximately ten units per event. - * </p> - * - * @return The velocity of the mouse wheel. - */ - public final int getMouseWheelVelocityY() { - return DOM.eventGetMouseWheelVelocityY(this); - } - - /** * Gets the key-repeat state of this event. * * @return <code>true</code> if this key event was an auto-repeat + * @deprecated not supported on all browsers */ + @Deprecated public final boolean getRepeat() { return DOM.eventGetRepeat(this); } /** - * Gets the mouse x-position on the user's display. - * - * @return the mouse x-position - */ - public final int getScreenX() { - return DOM.eventGetScreenX(this); - } - - /** - * Gets the mouse y-position on the user's display. - * - * @return the mouse y-position - */ - public final int getScreenY() { - return DOM.eventGetScreenY(this); - } - - /** - * Gets whether the shift key was depressed when the given event occurred. - * - * @return <code>true</code> if shift was depressed when the event occurred - */ - public final boolean getShiftKey() { - return DOM.eventGetShiftKey(this); - } - - /** - * Gets a string representation of this event. - * - * We do not override {@link #toString()} because it is final in - * {@link JavaScriptObject}. - * - * @return the string representation of this event - */ - public final String getString() { - return DOM.eventToString(this); - } - - /** - * Returns the element that was the actual target of the given event. - * - * @return the target element - */ - public final Element getTarget() { - return DOM.eventGetTarget(this); - } - - /** * Gets the element to which the mouse pointer was moved (only valid for * {@link Event#ONMOUSEOUT}). * + * @deprecated use {@link NativeEvent#getRelatedTarget()} instead * @return the element to which the mouse pointer was moved */ + @Deprecated public final Element getToElement() { return DOM.eventGetToElement(this); } /** - * Gets the enumerated type of this event (as defined in {@link Event}). - * - * @return the event's enumerated type - */ - public final String getType() { - return DOM.eventGetTypeString(this); - } - - /** * Gets the enumerated type of this event, as defined by {@link #ONCLICK}, * {@link #ONMOUSEDOWN}, and so forth. * @@ -687,11 +586,4 @@ public final int getTypeInt() { return DOM.eventGetType(this); } - - /** - * Prevents the browser from taking its default action for the given event. - */ - public final void preventDefault() { - DOM.eventPreventDefault(this); - } }
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImpl.java b/user/src/com/google/gwt/user/client/impl/DOMImpl.java index 09ffb25..93e170f 100644 --- a/user/src/com/google/gwt/user/client/impl/DOMImpl.java +++ b/user/src/com/google/gwt/user/client/impl/DOMImpl.java
@@ -28,8 +28,8 @@ protected static boolean eventSystemIsInitialized; /** - * Returns <code>true</code>if the object is an instance of EventListener - * and the object belongs to this module. + * Returns <code>true</code>if the object is an instance of EventListener and + * the object belongs to this module. */ protected static boolean isMyListener(Object object) { /* @@ -47,104 +47,54 @@ public native void eventCancelBubble(Event evt, boolean cancel) /*-{ evt.cancelBubble = cancel; - }-*/; + }-*/; - public native boolean eventGetAltKey(Event evt) /*-{ - return !!evt.altKey; - }-*/; - - public native int eventGetButton(Event evt) /*-{ - return evt.button || 0; - }-*/; - - public native int eventGetClientX(Event evt) /*-{ - return evt.clientX || 0; - }-*/; - - public native int eventGetClientY(Event evt) /*-{ - return evt.clientY || 0; - }-*/; - - public native boolean eventGetCtrlKey(Event evt) /*-{ - return !!evt.ctrlKey; - }-*/; - + public native Element eventGetCurrentTarget(Event evt) /*-{ return evt.currentTarget; - }-*/; + }-*/; public abstract Element eventGetFromElement(Event evt); - - public native int eventGetKeyCode(Event evt) /*-{ - // 'which' gives the right key value, except when it doesn't -- in which - // case, keyCode gives the right value on all browsers. - // If all else fails, return an error code - return evt.which || evt.keyCode || 0; - }-*/; - - public native boolean eventGetMetaKey(Event evt) /*-{ - return !!evt.metaKey; - }-*/; - - public abstract int eventGetMouseWheelVelocityY(Event evt); - + public native boolean eventGetRepeat(Event evt) /*-{ return !!evt.repeat; - }-*/; - - public native int eventGetScreenX(Event evt) /*-{ - return evt.screenX || 0; - }-*/; - - public native int eventGetScreenY(Event evt) /*-{ - return evt.screenY || 0; - }-*/; - - public native boolean eventGetShiftKey(Event evt) /*-{ - return !!evt.shiftKey; - }-*/; - - public abstract Element eventGetTarget(Event evt); - + }-*/; + public abstract Element eventGetToElement(Event evt); - public native String eventGetType(Event evt) /*-{ - return evt.type; - }-*/; - - public native int eventGetTypeInt(Event evt) /*-{ - switch (evt.type) { - case "blur": return 0x01000; - case "change": return 0x00400; - case "click": return 0x00001; - case "dblclick": return 0x00002; - case "focus": return 0x00800; - case "keydown": return 0x00080; - case "keypress": return 0x00100; - case "keyup": return 0x00200; - case "load": return 0x08000; - case "losecapture": return 0x02000; - case "mousedown": return 0x00004; - case "mousemove": return 0x00040; - case "mouseout": return 0x00020; - case "mouseover": return 0x00010; - case "mouseup": return 0x00008; - case "scroll": return 0x04000; - case "error": return 0x10000; - case "mousewheel": return 0x20000; - case "DOMMouseScroll": return 0x20000; - case "contextmenu": return 0x40000; - } - }-*/; - - public abstract void eventPreventDefault(Event evt); - + public final int eventGetTypeInt(Event evt) { + return eventGetTypeInt(evt.getType()); + } + + public native int eventGetTypeInt(String eventType) /*-{ + switch (eventType) { + case "blur": return 0x01000; + case "change": return 0x00400; + case "click": return 0x00001; + case "dblclick": return 0x00002; + case "focus": return 0x00800; + case "keydown": return 0x00080; + case "keypress": return 0x00100; + case "keyup": return 0x00200; + case "load": return 0x08000; + case "losecapture": return 0x02000; + case "mousedown": return 0x00004; + case "mousemove": return 0x00040; + case "mouseout": return 0x00020; + case "mouseover": return 0x00010; + case "mouseup": return 0x00008; + case "scroll": return 0x04000; + case "error": return 0x10000; + case "mousewheel": return 0x20000; + case "DOMMouseScroll": return 0x20000; + case "contextmenu": return 0x40000; + } + }-*/; + public native void eventSetKeyCode(Event evt, char key) /*-{ - evt.keyCode = key; - }-*/; - - public abstract String eventToString(Event evt); - + evt.keyCode = key; + }-*/; + public abstract Element getChild(Element elem, int index); public abstract int getChildCount(Element elem); @@ -152,8 +102,8 @@ public abstract int getChildIndex(Element parent, Element child); public native int getEventsSunk(Element elem) /*-{ - return elem.__eventBits || 0; - }-*/; + return elem.__eventBits || 0; + }-*/; public abstract void insertChild(Element parent, Element child, int index); @@ -169,8 +119,8 @@ public abstract void setCapture(Element elem); public native void setEventListener(Element elem, EventListener listener) /*-{ - elem.__listener = listener; - }-*/; + elem.__listener = listener; + }-*/; public abstract void sinkEvents(Element elem, int eventBits);
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplIE6.java b/user/src/com/google/gwt/user/client/impl/DOMImplIE6.java index 8cd05bf..634c74d 100644 --- a/user/src/com/google/gwt/user/client/impl/DOMImplIE6.java +++ b/user/src/com/google/gwt/user/client/impl/DOMImplIE6.java
@@ -44,33 +44,15 @@ return evt.fromElement; }-*/; - @Override - public native int eventGetMouseWheelVelocityY(Event evt) /*-{ - return Math.round(-evt.wheelDelta / 40) || 0; - }-*/; + - @Override - public native Element eventGetTarget(Event evt) /*-{ - return evt.srcElement; - }-*/; - + @Override public native Element eventGetToElement(Event evt) /*-{ return evt.toElement; }-*/; @Override - public native void eventPreventDefault(Event evt) /*-{ - evt.returnValue = false; - }-*/; - - @Override - public native String eventToString(Event evt) /*-{ - if (evt.toString) return evt.toString(); - return "[object Event]"; - }-*/; - - @Override public native Element getChild(Element elem, int index) /*-{ return elem.children[index]; }-*/;
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java b/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java index 20892b7..a647aa1 100644 --- a/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java +++ b/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java
@@ -16,7 +16,6 @@ package com.google.gwt.user.client.impl; import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.Event; /** * Mozilla implementation of StandardBrowser. @@ -24,11 +23,6 @@ class DOMImplMozilla extends DOMImplStandard { @Override - public native int eventGetMouseWheelVelocityY(Event evt) /*-{ - return evt.detail || 0; - }-*/; - - @Override public void sinkEvents(Element elem, int bits) { super.sinkEvents(elem, bits); sinkEventsMozilla(elem, bits);
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplOpera.java b/user/src/com/google/gwt/user/client/impl/DOMImplOpera.java index d94dbc8..8261d77 100644 --- a/user/src/com/google/gwt/user/client/impl/DOMImplOpera.java +++ b/user/src/com/google/gwt/user/client/impl/DOMImplOpera.java
@@ -16,18 +16,11 @@ package com.google.gwt.user.client.impl; import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.Event; /** * Opera implementation of {@link com.google.gwt.user.client.impl.DOMImpl}. */ public class DOMImplOpera extends DOMImplStandard { - - @Override - public native int eventGetMouseWheelVelocityY(Event evt) /*-{ - return evt.detail * 4 || 0; - }-*/; - /** * As Opera sinks events very quickly, adding guards to prevent the sinking of * events actually slows Opera down.
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplSafari.java b/user/src/com/google/gwt/user/client/impl/DOMImplSafari.java index 1b7e3b55..16ab0ed 100644 --- a/user/src/com/google/gwt/user/client/impl/DOMImplSafari.java +++ b/user/src/com/google/gwt/user/client/impl/DOMImplSafari.java
@@ -1,12 +1,12 @@ /* * Copyright 2008 Google Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -15,47 +15,8 @@ */ package com.google.gwt.user.client.impl; -import com.google.gwt.user.client.Event; - /** * Safari implementation of {@link com.google.gwt.user.client.impl.DOMImpl}. */ class DOMImplSafari extends DOMImplStandard { - - @Override - public native int eventGetClientX(Event evt) /*-{ - // In Safari2: clientX is wrong and pageX is returned instead. - // $wnd.devicePixelRatio identifies Safari 3 from Safari 2 - if ($wnd.devicePixelRatio) { - return evt.clientX || 0; - } else { - // Subtract the margin and border of the HTML element in Safari 2 - // TODO: Remove this code when we drop Safari 2 support - var style = document.defaultView.getComputedStyle($doc.getElementsByTagName('html')[0], ''); - return evt.pageX - $doc.body.scrollLeft - - parseInt(style.getPropertyValue('margin-left')) - - parseInt(style.getPropertyValue('border-left-width')) || 0; - } - }-*/; - - @Override - public native int eventGetClientY(Event evt) /*-{ - // In Safari2: clientY is wrong and pageY is returned instead. - // $wnd.devicePixelRatio identifies Safari 3 from Safari 2 - if ($wnd.devicePixelRatio) { - return evt.clientY || 0; - } else { - // Subtract the margin and border of the HTML element in Safari 2 - // TODO: Remove this code when we drop Safari 2 support - var style = document.defaultView.getComputedStyle($doc.getElementsByTagName('html')[0], ''); - return evt.pageY - $doc.body.scrollTop - - parseInt(style.getPropertyValue('margin-top')) - - parseInt(style.getPropertyValue('border-top-width')) || 0; - } - }-*/; - - @Override - public native int eventGetMouseWheelVelocityY(Event evt) /*-{ - return Math.round(-evt.wheelDelta / 40) || 0; - }-*/; }
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java b/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java index 5d2be3c..3fa1553 100644 --- a/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java +++ b/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
@@ -39,19 +39,6 @@ private static JavaScriptObject dispatchEvent; @Override - public native int eventGetButton(Event evt) /*-{ - // Standard browsers and IE disagree on what the button codes for buttons - // should be. Translating to match IE standard. - var button = evt.which; - if(button == 2) { - return 4; - } else if (button == 3) { - return 2; - } - return button || 0; - }-*/; - - @Override public native Element eventGetFromElement(Event evt) /*-{ if (evt.type == "mouseover") return evt.relatedTarget; @@ -59,12 +46,7 @@ return evt.target; return null; }-*/; - - @Override - public native Element eventGetTarget(Event evt) /*-{ - return evt.target; - }-*/; - + @Override public native Element eventGetToElement(Event evt) /*-{ if (evt.type == "mouseover") @@ -73,17 +55,7 @@ return evt.relatedTarget; return null; }-*/; - - @Override - public native void eventPreventDefault(Event evt) /*-{ - evt.preventDefault(); - }-*/; - - @Override - public native String eventToString(Event evt) /*-{ - return evt.toString(); - }-*/; - + @Override public native Element getChild(Element elem, int index) /*-{ var count = 0, child = elem.firstChild;
diff --git a/user/src/com/google/gwt/user/client/ui/DialogBox.java b/user/src/com/google/gwt/user/client/ui/DialogBox.java index e1d3e34..a5bde38 100644 --- a/user/src/com/google/gwt/user/client/ui/DialogBox.java +++ b/user/src/com/google/gwt/user/client/ui/DialogBox.java
@@ -16,6 +16,7 @@ package com.google.gwt.user.client.ui; import com.google.gwt.dom.client.Document; +import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.dom.client.HasAllMouseHandlers; import com.google.gwt.event.dom.client.MouseDownEvent; import com.google.gwt.event.dom.client.MouseDownHandler; @@ -45,10 +46,11 @@ * <img class='gallery' src='DialogBox.png'/> * </p> * <h3>CSS Style Rules</h3> - * <ul class='css'> + * + * <ul> * <li>.gwt-DialogBox { the outside of the dialog }</li> * <li>.gwt-DialogBox .Caption { the caption }</li> - * <li>.gwt-DialogBox .dialogContent { the wrapepr around the content }</li> + * <li>.gwt-DialogBox .dialogContent { the wrapper around the content }</li> * <li>.gwt-DialogBox .dialogTopLeft { the top left cell }</li> * <li>.gwt-DialogBox .dialogTopLeftInner { the inner element of the cell }</li> * <li>.gwt-DialogBox .dialogTopCenter { the top center cell, where the caption @@ -60,15 +62,18 @@ * <li>.gwt-DialogBox .dialogMiddleLeftInner { the inner element of the cell }</li> * <li>.gwt-DialogBox .dialogMiddleCenter { the middle center cell, where the * content is located }</li> - * <li>.gwt-DialogBox .dialogMiddleCenterInner { the inner element of the cell }</li> + * <li>.gwt-DialogBox .dialogMiddleCenterInner { the inner element of the cell } + * </li> * <li>.gwt-DialogBox .dialogMiddleRight { the middle right cell }</li> * <li>.gwt-DialogBox .dialogMiddleRightInner { the inner element of the cell }</li> * <li>.gwt-DialogBox .dialogBottomLeft { the bottom left cell }</li> * <li>.gwt-DialogBox .dialogBottomLeftInner { the inner element of the cell }</li> * <li>.gwt-DialogBox .dialogBottomCenter { the bottom center cell }</li> - * <li>.gwt-DialogBox .dialogBottomCenterInner { the inner element of the cell }</li> + * <li>.gwt-DialogBox .dialogBottomCenterInner { the inner element of the cell } + * </li> * <li>.gwt-DialogBox .dialogBottomRight { the bottom right cell }</li> * <li>.gwt-DialogBox .dialogBottomRightInner { the inner element of the cell }</li> + * </ul> * <p> * <h3>Example</h3> * {@example com.google.gwt.examples.DialogBoxExample} @@ -79,7 +84,7 @@ MouseListener { /** * Set of characteristic interfaces supported by the {@link DialogBox} caption - * + * * Note that this set might expand over time, so implement this interface at * your own risk. */ @@ -141,7 +146,7 @@ * {@link #add(Widget)}. * * @param autoHide <code>true</code> if the dialog should be automatically - * hidden when the user clicks outside of it + * hidden when the user clicks outside of it */ public DialogBox(boolean autoHide) { this(autoHide, true); @@ -153,9 +158,9 @@ * {@link #add(Widget)}. * * @param autoHide <code>true</code> if the dialog should be automatically - * hidden when the user clicks outside of it + * hidden when the user clicks outside of it * @param modal <code>true</code> if keyboard and mouse events for widgets not - * contained by the dialog should be ignored + * contained by the dialog should be ignored */ public DialogBox(boolean autoHide, boolean modal) { super(autoHide, modal, "dialog"); @@ -184,10 +189,10 @@ /** * Provides access to the dialog's caption. - * + * * This method is final because the Caption interface will expand. Therefore - * it is highly likely that subclasses which implemented this method would end up - * breaking. + * it is highly likely that subclasses which implemented this method would end + * up breaking. * * @return the logical caption for this dialog box */ @@ -232,7 +237,7 @@ /** * @deprecated Use {@link #beginDragging} instead and {@link #getCaption} - * instead + * instead */ @Deprecated public void onMouseDown(Widget sender, int x, int y) { @@ -324,8 +329,8 @@ * @param event the mouse down event that triggered dragging */ protected void beginDragging(MouseDownEvent event) { - onMouseDown(caption, event.getRelativeX(getElement()), - event.getRelativeY(getElement())); + onMouseDown(caption, Event.getRelativeX(event.getNativeEvent(), + getElement()), Event.getRelativeY(event.getNativeEvent(), getElement())); } /** @@ -337,8 +342,8 @@ * @param event the mouse move event that continues dragging */ protected void continueDragging(MouseMoveEvent event) { - onMouseMove(caption, event.getRelativeX(getElement()), - event.getRelativeY(getElement())); + onMouseMove(caption, Event.getRelativeX(event.getNativeEvent(), + getElement()), Event.getRelativeY(event.getNativeEvent(), getElement())); } @Override @@ -363,15 +368,17 @@ /** * Called on mouse up in the caption area, ends dragging by ending event * capture. - * @param event the mouse up event that ended dragging + * + * @param event the mouse up event that ended dragging * * @see DOM#releaseCapture * @see #beginDragging * @see #endDragging */ protected void endDragging(MouseUpEvent event) { - onMouseUp(caption, event.getRelativeX(getElement()), - event.getRelativeY(getElement())); + onMouseUp(caption, + Event.getRelativeX(event.getNativeEvent(), getElement()), + Event.getRelativeY(event.getNativeEvent(), getElement())); } /** @@ -395,8 +402,10 @@ // We need to preventDefault() on mouseDown events (outside of the // DialogBox content) to keep text from being selected when it // is dragged. - Event nativeEvent = event.getNativeEvent(); - if (!event.isCanceled() && nativeEvent.getTypeInt() == Event.ONMOUSEDOWN + NativeEvent nativeEvent = event.getNativeEvent(); + + if (!event.isCanceled() + && (event.getTypeInt() == Event.ONMOUSEDOWN) && isCaptionEvent(nativeEvent)) { nativeEvent.preventDefault(); } @@ -404,7 +413,7 @@ super.onPreviewNativeEvent(event); } - private boolean isCaptionEvent(Event event) { + private boolean isCaptionEvent(NativeEvent event) { return getCellElement(0, 1).getParentElement().isOrHasChild( event.getTarget()); }
diff --git a/user/src/com/google/gwt/user/client/ui/FlexTable.java b/user/src/com/google/gwt/user/client/ui/FlexTable.java index b2ecb0a..402bf81 100644 --- a/user/src/com/google/gwt/user/client/ui/FlexTable.java +++ b/user/src/com/google/gwt/user/client/ui/FlexTable.java
@@ -98,7 +98,7 @@ var cell = $doc.createElement("td"); rowElem.appendChild(cell); } - }-*/; + }-*/; public FlexTable() { super(); @@ -172,9 +172,6 @@ return super.insertRow(beforeRow); } - /** - * @see com.google.gwt.user.client.ui.HTMLTable#removeCell(int, int) - */ @Override public void removeCell(int row, int col) { super.removeCell(row, col);
diff --git a/user/src/com/google/gwt/user/client/ui/HTMLTable.java b/user/src/com/google/gwt/user/client/ui/HTMLTable.java index 51eb0a3..f5efad3 100644 --- a/user/src/com/google/gwt/user/client/ui/HTMLTable.java +++ b/user/src/com/google/gwt/user/client/ui/HTMLTable.java
@@ -754,7 +754,7 @@ * @return The appropriate cell, or null */ public Cell getCellForEvent(ClickEvent event) { - Element td = getEventTargetCell(event.getNativeEvent()); + Element td = getEventTargetCell(Event.as(event.getNativeEvent())); if (td == null) { return null; }
diff --git a/user/src/com/google/gwt/user/client/ui/ListenerWrapper.java b/user/src/com/google/gwt/user/client/ui/ListenerWrapper.java index ed2aff7..2feaea5 100644 --- a/user/src/com/google/gwt/user/client/ui/ListenerWrapper.java +++ b/user/src/com/google/gwt/user/client/ui/ListenerWrapper.java
@@ -80,6 +80,7 @@ import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.GwtEvent.Type; import com.google.gwt.user.client.BaseListenerWrapper; +import com.google.gwt.user.client.Event; import java.util.EventListener; @@ -98,8 +99,8 @@ /** * Wrapper for a {@link LoadListener}. */ - public static class WrappedLoadListener extends ListenerWrapper<LoadListener> implements - LoadHandler, ErrorHandler { + public static class WrappedLoadListener extends ListenerWrapper<LoadListener> + implements LoadHandler, ErrorHandler { /** * Adds the wrapped listener. @@ -341,14 +342,14 @@ getListener().onKeyDown( getSource(event), (char) event.getNativeKeyCode(), - KeyboardListenerCollection.getKeyboardModifiers(event.getNativeEvent())); + KeyboardListenerCollection.getKeyboardModifiers(Event.as(event.getNativeEvent()))); } public void onKeyPress(KeyPressEvent event) { getListener().onKeyPress( getSource(event), (char) event.getNativeEvent().getKeyCode(), - KeyboardListenerCollection.getKeyboardModifiers(event.getNativeEvent())); + KeyboardListenerCollection.getKeyboardModifiers(Event.as(event.getNativeEvent()))); } public void onKeyUp(KeyUpEvent event) { @@ -356,7 +357,7 @@ getListener().onKeyUp( getSource(event), (char) event.getNativeKeyCode(), - KeyboardListenerCollection.getKeyboardModifiers(event.getNativeEvent())); + KeyboardListenerCollection.getKeyboardModifiers(Event.as(event.getNativeEvent()))); } } @@ -463,15 +464,15 @@ public void onMouseDown(MouseDownEvent event) { Widget source = getSource(event); Element elem = source.getElement(); - getListener().onMouseDown(source, event.getRelativeX(elem), - event.getRelativeY(elem)); + getListener().onMouseDown(source, Event.getRelativeX(event.getNativeEvent(), elem), + Event.getRelativeY(event.getNativeEvent(), elem)); } public void onMouseMove(MouseMoveEvent event) { Widget source = getSource(event); Element elem = source.getElement(); - getListener().onMouseMove(source, event.getRelativeX(elem), - event.getRelativeY(elem)); + getListener().onMouseMove(source, Event.getRelativeX(event.getNativeEvent(), elem), + Event.getRelativeY(event.getNativeEvent(), elem)); } public void onMouseOut(MouseOutEvent event) { @@ -485,8 +486,8 @@ public void onMouseUp(MouseUpEvent event) { Widget source = getSource(event); Element elem = source.getElement(); - getListener().onMouseUp(source, event.getRelativeX(elem), - event.getRelativeY(elem)); + getListener().onMouseUp(source, Event.getRelativeX(event.getNativeEvent(), elem), + Event.getRelativeY(event.getNativeEvent(), elem)); } } /** @@ -530,7 +531,7 @@ public void onMouseWheel(MouseWheelEvent event) { getListener().onMouseWheel(getSource(event), - new MouseWheelVelocity(event.getNativeEvent())); + new MouseWheelVelocity(Event.as(event.getNativeEvent()))); } } /**
diff --git a/user/src/com/google/gwt/user/client/ui/MenuBar.java b/user/src/com/google/gwt/user/client/ui/MenuBar.java index 0bf2173..a9fa5b3 100644 --- a/user/src/com/google/gwt/user/client/ui/MenuBar.java +++ b/user/src/com/google/gwt/user/client/ui/MenuBar.java
@@ -979,8 +979,7 @@ // clear the selection; a keyboard user can cursor down to the first item selectItem(null); } - - @SuppressWarnings("deprecation") + private void openPopup(final MenuItem item) { // Only the last popup to be opened should preview all event if (parentMenu != null && parentMenu.popup != null) { @@ -1002,12 +1001,12 @@ // Hook the popup panel's event preview. We use this to keep it from // auto-hiding when the parent menu is clicked. if (!event.isCanceled()) { - Event nativeEvent = event.getNativeEvent(); - switch (nativeEvent.getTypeInt()) { + + switch (event.getTypeInt()) { case Event.ONMOUSEDOWN: // If the event target is part of the parent menu, suppress the // event altogether. - com.google.gwt.dom.client.Element target = nativeEvent.getTarget(); + com.google.gwt.dom.client.Element target = event.getNativeEvent().getTarget(); Element parentMenuElement = item.getParentMenu().getElement(); if (parentMenuElement.isOrHasChild(target)) { event.cancel();
diff --git a/user/src/com/google/gwt/user/client/ui/PopupPanel.java b/user/src/com/google/gwt/user/client/ui/PopupPanel.java index 986f45a..640aa87 100644 --- a/user/src/com/google/gwt/user/client/ui/PopupPanel.java +++ b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
@@ -19,6 +19,7 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.event.logical.shared.HasCloseHandlers; @@ -822,14 +823,11 @@ protected com.google.gwt.user.client.Element getStyleElement() { return impl.getStyleElement(getPopupImplElement()); } - - /** - * @see NativePreviewHandler#onPreviewNativeEvent(NativePreviewEvent) - */ - @SuppressWarnings("deprecation") + protected void onPreviewNativeEvent(NativePreviewEvent event) { // Cancel the event based on the deprecated onEventPreview() method - if (event.isFirstHandler() && !onEventPreview(event.getNativeEvent())) { + if (event.isFirstHandler() + && !onEventPreview(Event.as(event.getNativeEvent()))) { event.cancel(); } } @@ -898,7 +896,7 @@ * @param event the native event * @return true if the event targets a partner */ - private boolean eventTargetsPartner(Event event) { + private boolean eventTargetsPartner(NativeEvent event) { if (autoHidePartners == null) { return false; } @@ -918,7 +916,7 @@ * @param event the native event * @return true if the event targets the popup */ - private boolean eventTargetsPopup(Event event) { + private boolean eventTargetsPopup(NativeEvent event) { return getElement().isOrHasChild(event.getTarget()); } @@ -1087,7 +1085,7 @@ } // If the event targets the popup or the partner, consume it - Event nativeEvent = event.getNativeEvent(); + Event nativeEvent = Event.as(event.getNativeEvent()); boolean eventTargetsPopupOrPartner = eventTargetsPopup(nativeEvent) || eventTargetsPartner(nativeEvent); if (eventTargetsPopupOrPartner) {
diff --git a/user/src/com/google/gwt/user/client/ui/SourcesKeyboardEvents.java b/user/src/com/google/gwt/user/client/ui/SourcesKeyboardEvents.java index 37f0ff2..78e1052 100644 --- a/user/src/com/google/gwt/user/client/ui/SourcesKeyboardEvents.java +++ b/user/src/com/google/gwt/user/client/ui/SourcesKeyboardEvents.java
@@ -20,7 +20,7 @@ * {@link com.google.gwt.user.client.ui.KeyboardListener} interface. * * @deprecated use - * {@link com.google.gwt.com.google.gwt.event.dom.client.HasAllKeyHandlers} + * {@link com.google.gwt.event.dom.client.HasAllKeyHandlers} * instead */ @Deprecated
diff --git a/user/src/com/google/gwt/user/client/ui/Widget.java b/user/src/com/google/gwt/user/client/ui/Widget.java index 2bcf44a..5933672 100644 --- a/user/src/com/google/gwt/user/client/ui/Widget.java +++ b/user/src/com/google/gwt/user/client/ui/Widget.java
@@ -77,22 +77,18 @@ case Event.ONMOUSEOVER: // Only fire the mouse over event if it's coming from outside this // widget. - Element from = event.getFromElement(); - if (from != null && getElement().isOrHasChild(from)) { + case Event.ONMOUSEOUT: + // Only fire the mouse out event if it's leaving this + // widget. + Element related = event.getRelatedTarget(); + if (related != null && getElement().isOrHasChild(related)) { return; } break; - case Event.ONMOUSEOUT: - // Only fire the mouse out event if it's actually leaving this - // widget. - Element to = event.getToElement(); - if (to != null && getElement().isOrHasChild(to)) { - return; - } } DomEvent.fireNativeEvent(event, this); } - + /** * Removes this widget from its parent widget. If it has no parent, this * method does nothing. @@ -113,7 +109,8 @@ * Overridden to defer the call to super.sinkEvents until the first time this * widget is attached to the dom, as a performance enhancement. Subclasses * wishing to customize sinkEvents can preserve this deferred sink behavior by - * putting their implementation behind a check of <code>isOrWasAttached()</code>: + * putting their implementation behind a check of + * <code>isOrWasAttached()</code>: * * <pre> * {@literal @}Override @@ -148,7 +145,7 @@ final H handler, DomEvent.Type<H> type) { assert handler != null : "handler must not be null"; assert type != null : "type must not be null"; - sinkEvents(type.getEventToSink()); + sinkEvents(Event.getTypeInt(type.getName())); return ensureHandlers().addHandler(type, handler); }
diff --git a/user/test/com/google/gwt/event/shared/HandlerTestBase.java b/user/test/com/google/gwt/event/shared/HandlerTestBase.java index 303ff12..80e551b 100644 --- a/user/test/com/google/gwt/event/shared/HandlerTestBase.java +++ b/user/test/com/google/gwt/event/shared/HandlerTestBase.java
@@ -29,6 +29,7 @@ */ public abstract class HandlerTestBase extends GWTTestCase { + @Override public String getModuleName() { return "com.google.gwt.event.Event"; }