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";
}