Fixes issue 3257 by making getAssociatedType public.
Review by:jlabanca

git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4397 8db76d5a-ed1c-0410-87a9-c151d255dfc7
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 d641d2e..acbd82c 100644
--- a/user/src/com/google/gwt/event/dom/client/BlurEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/BlurEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(BlurHandler handler) {

-    handler.onBlur(this);

+  public final Type<BlurHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<BlurHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(BlurHandler handler) {

+    handler.onBlur(this);

   }

 

 }

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 58b4278..f66f3cd 100644
--- a/user/src/com/google/gwt/event/dom/client/ChangeEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/ChangeEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(ChangeHandler handler) {

-    handler.onChange(this);

+  public final Type<ChangeHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<ChangeHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(ChangeHandler handler) {

+    handler.onChange(this);

   }

 

 }

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 88f9a77..805c956 100644
--- a/user/src/com/google/gwt/event/dom/client/ClickEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/ClickEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(ClickHandler handler) {

-    handler.onClick(this);

+  public final Type<ClickHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<ClickHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(ClickHandler handler) {

+    handler.onClick(this);

   }

 

 }

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 126ed99..513fd2b 100644
--- a/user/src/com/google/gwt/event/dom/client/ContextMenuEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/ContextMenuEvent.java
@@ -47,13 +47,13 @@
   }
 
   @Override
-  protected void dispatch(ContextMenuHandler handler) {
-    handler.onContextMenu(this);
+  public final Type<ContextMenuHandler> getAssociatedType() {
+    return TYPE;
   }
 
   @Override
-  protected final Type<ContextMenuHandler> getAssociatedType() {
-    return TYPE;
+  protected void dispatch(ContextMenuHandler handler) {
+    handler.onContextMenu(this);
   }
 
 }
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 7e2df65..b8b7135 100644
--- a/user/src/com/google/gwt/event/dom/client/DomEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/DomEvent.java
@@ -131,6 +131,9 @@
 
   private Event nativeEvent;
 
+  @Override
+  public abstract DomEvent.Type<H> getAssociatedType();
+
   public final Event getNativeEvent() {
     assertLive();
     return nativeEvent;
@@ -161,7 +164,4 @@
     assertLive();
     nativeEvent.cancelBubble(true);
   }
-
-  @Override
-  protected abstract DomEvent.Type<H> getAssociatedType();
 }
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 0d24cf4..972b645 100644
--- a/user/src/com/google/gwt/event/dom/client/DoubleClickEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/DoubleClickEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(DoubleClickHandler handler) {

-    handler.onDoubleClick(this);

+  public final Type<DoubleClickHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<DoubleClickHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(DoubleClickHandler handler) {

+    handler.onDoubleClick(this);

   }

 

 }

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 62084de..0c9a007 100644
--- a/user/src/com/google/gwt/event/dom/client/ErrorEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/ErrorEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(ErrorHandler handler) {

-    handler.onError(this);

+  public final Type<ErrorHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<ErrorHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(ErrorHandler handler) {

+    handler.onError(this);

   }

 

 }

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 898c03a..c2ca7bd 100644
--- a/user/src/com/google/gwt/event/dom/client/FocusEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/FocusEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(FocusHandler handler) {

-    handler.onFocus(this);

+  public final Type<FocusHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<FocusHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(FocusHandler handler) {

+    handler.onFocus(this);

   }

 

 }

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 f826bec..1b58b03 100644
--- a/user/src/com/google/gwt/event/dom/client/KeyDownEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/KeyDownEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(KeyDownHandler handler) {

-    handler.onKeyDown(this);

+  public final Type<KeyDownHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<KeyDownHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(KeyDownHandler handler) {

+    handler.onKeyDown(this);

   }

 

 }

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 1f8528e..f955e3c 100644
--- a/user/src/com/google/gwt/event/dom/client/KeyPressEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/KeyPressEvent.java
@@ -46,6 +46,11 @@
   protected KeyPressEvent() {

   }

 

+  @Override

+  public final Type<KeyPressHandler> getAssociatedType() {

+    return TYPE;

+  }

+

   /**

    * Gets the char code for this event.

    * 

@@ -65,13 +70,8 @@
     handler.onKeyPress(this);

   }

 

-  @Override

-  protected final Type<KeyPressHandler> getAssociatedType() {

-    return TYPE;

-  }

-

   private native char getCharCode(Event e)/*-{

-      return e.charCode || e.keyCode;

-    }-*/;

+        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 f9cfdbd..5a07977 100644
--- a/user/src/com/google/gwt/event/dom/client/KeyUpEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/KeyUpEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(KeyUpHandler handler) {

-    handler.onKeyUp(this);

+  public final Type<KeyUpHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<KeyUpHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(KeyUpHandler handler) {

+    handler.onKeyUp(this);

   }

 

 }

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 7e2bac5..3255c4b 100644
--- a/user/src/com/google/gwt/event/dom/client/LoadEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/LoadEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(LoadHandler handler) {

-    handler.onLoad(this);

+  public final Type<LoadHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<LoadHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(LoadHandler handler) {

+    handler.onLoad(this);

   }

 

 }

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 270f0cd..857e8d0 100644
--- a/user/src/com/google/gwt/event/dom/client/LoseCaptureEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/LoseCaptureEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(LoseCaptureHandler handler) {

-    handler.onLoseCapture(this);

+  public final Type<LoseCaptureHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<LoseCaptureHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(LoseCaptureHandler handler) {

+    handler.onLoseCapture(this);

   }

 

 }

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 23336ad..dd36ec2 100644
--- a/user/src/com/google/gwt/event/dom/client/MouseDownEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/MouseDownEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(MouseDownHandler handler) {

-    handler.onMouseDown(this);

+  public final Type<MouseDownHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<MouseDownHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(MouseDownHandler handler) {

+    handler.onMouseDown(this);

   }

 

 }

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 fd64fbb..cafa24c 100644
--- a/user/src/com/google/gwt/event/dom/client/MouseMoveEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/MouseMoveEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(MouseMoveHandler handler) {

-    handler.onMouseMove(this);

+  public final Type<MouseMoveHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<MouseMoveHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(MouseMoveHandler handler) {

+    handler.onMouseMove(this);

   }

 

 }

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 96d817e..7b1d47e 100644
--- a/user/src/com/google/gwt/event/dom/client/MouseOutEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/MouseOutEvent.java
@@ -47,6 +47,11 @@
   protected MouseOutEvent() {

   }

 

+  @Override

+  public final Type<MouseOutHandler> getAssociatedType() {

+    return TYPE;

+  }

+

   /**

    * Gets the element from which the mouse pointer was moved.

    * 

@@ -72,9 +77,4 @@
     handler.onMouseOut(this);

   }

 

-  @Override

-  protected final Type<MouseOutHandler> getAssociatedType() {

-    return TYPE;

-  }

-

 }

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 1925791..90a664c 100644
--- a/user/src/com/google/gwt/event/dom/client/MouseOverEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/MouseOverEvent.java
@@ -47,6 +47,11 @@
   protected MouseOverEvent() {

   }

 

+  @Override

+  public final Type<MouseOverHandler> getAssociatedType() {

+    return TYPE;

+  }

+

   /**

    * Gets the element from which the mouse pointer was moved.

    * 

@@ -72,9 +77,4 @@
     handler.onMouseOver(this);

   }

 

-  @Override

-  protected final Type<MouseOverHandler> getAssociatedType() {

-    return TYPE;

-  }

-

 }

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 3a733db..9817f07 100644
--- a/user/src/com/google/gwt/event/dom/client/MouseUpEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/MouseUpEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(MouseUpHandler handler) {

-    handler.onMouseUp(this);

+  public final Type<MouseUpHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<MouseUpHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(MouseUpHandler handler) {

+    handler.onMouseUp(this);

   }

 

 }

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 f8248c5..20ef68e 100644
--- a/user/src/com/google/gwt/event/dom/client/MouseWheelEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/MouseWheelEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(MouseWheelHandler handler) {

-    handler.onMouseWheel(this);

+  public final Type<MouseWheelHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<MouseWheelHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(MouseWheelHandler handler) {

+    handler.onMouseWheel(this);

   }

 

 }

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 ff8e836..21910e9 100644
--- a/user/src/com/google/gwt/event/dom/client/ScrollEvent.java
+++ b/user/src/com/google/gwt/event/dom/client/ScrollEvent.java
@@ -47,13 +47,13 @@
   }

 

   @Override

-  protected void dispatch(ScrollHandler handler) {

-    handler.onScroll(this);

+  public final Type<ScrollHandler> getAssociatedType() {

+    return TYPE;

   }

 

   @Override

-  protected final Type<ScrollHandler> getAssociatedType() {

-    return TYPE;

+  protected void dispatch(ScrollHandler handler) {

+    handler.onScroll(this);

   }

 

 }

diff --git a/user/src/com/google/gwt/event/logical/shared/BeforeSelectionEvent.java b/user/src/com/google/gwt/event/logical/shared/BeforeSelectionEvent.java
index 556335a..7ff45c6 100644
--- a/user/src/com/google/gwt/event/logical/shared/BeforeSelectionEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/BeforeSelectionEvent.java
@@ -87,6 +87,14 @@
     canceled = true;
   }
 
+  // The instance knows its BeforeSelectionHandler is of type I, but the TYPE
+  // field itself does not, so we have to do an unsafe cast here.
+  @SuppressWarnings("unchecked")
+  @Override
+  public Type<BeforeSelectionHandler<I>> getAssociatedType() {
+    return (Type) TYPE;
+  }
+
   /**
    * Gets the item.
    * 
@@ -110,14 +118,6 @@
     handler.onBeforeSelection(this);
   }
 
-  // The instance knows its BeforeSelectionHandler is of type I, but the TYPE
-  // field itself does not, so we have to do an unsafe cast here.
-  @SuppressWarnings("unchecked")
-  @Override
-  protected Type<BeforeSelectionHandler<I>> getAssociatedType() {
-    return (Type) TYPE;
-  }
-
   /**
    * Sets the item.
    * 
diff --git a/user/src/com/google/gwt/event/logical/shared/CloseEvent.java b/user/src/com/google/gwt/event/logical/shared/CloseEvent.java
index c68536b..85006a7 100644
--- a/user/src/com/google/gwt/event/logical/shared/CloseEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/CloseEvent.java
@@ -50,8 +50,8 @@
    * @param target the target

    * @param autoClosed was the target closed automatically

    */

-  public static <T> void fire(

-      HasCloseHandlers<T> source, T target, boolean autoClosed) {

+  public static <T> void fire(HasCloseHandlers<T> source, T target,

+      boolean autoClosed) {

     if (TYPE != null) {

       HandlerManager handlers = source.getHandlers();

       if (handlers != null) {

@@ -85,6 +85,14 @@
     this.target = target;

   }

 

+  // The instance knows its of type T, but the TYPE

+  // field itself does not, so we have to do an unsafe cast here.

+  @SuppressWarnings("unchecked")

+  @Override

+  public final Type<CloseHandler<T>> getAssociatedType() {

+    return (Type) TYPE;

+  }

+

   /**

    * Gets the target.

    * 

@@ -107,12 +115,4 @@
   protected void dispatch(CloseHandler<T> handler) {

     handler.onClose(this);

   }

-

-  // The instance knows its of type T, but the TYPE

-  // field itself does not, so we have to do an unsafe cast here.

-  @SuppressWarnings("unchecked")

-  @Override

-  protected final Type<CloseHandler<T>> getAssociatedType() {

-    return (Type) TYPE;

-  }

 }

diff --git a/user/src/com/google/gwt/event/logical/shared/HighlightEvent.java b/user/src/com/google/gwt/event/logical/shared/HighlightEvent.java
index ad1b514..38f785f 100644
--- a/user/src/com/google/gwt/event/logical/shared/HighlightEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/HighlightEvent.java
@@ -73,6 +73,14 @@
     this.highlighted = highlighted;

   }

 

+  // Because of type erasure, our static type is

+  // wild carded, yet the "real" type should use our I param.

+  @SuppressWarnings("unchecked")

+  @Override

+  public final Type<HighlightHandler<V>> getAssociatedType() {

+    return (Type) TYPE;

+  }

+

   /**

    * Gets the value highlighted.

    * 

@@ -86,12 +94,4 @@
   protected void dispatch(HighlightHandler<V> handler) {

     handler.onHighlight(this);

   }

-

-  // Because of type erasure, our static type is

-  // wild carded, yet the "real" type should use our I param.

-  @SuppressWarnings("unchecked")

-  @Override

-  protected final Type<HighlightHandler<V>> getAssociatedType() {

-    return (Type) TYPE;

-  }

 }

diff --git a/user/src/com/google/gwt/event/logical/shared/OpenEvent.java b/user/src/com/google/gwt/event/logical/shared/OpenEvent.java
index ca8c1a6..a6a11c2 100644
--- a/user/src/com/google/gwt/event/logical/shared/OpenEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/OpenEvent.java
@@ -71,6 +71,12 @@
     this.target = target;

   }

 

+  @SuppressWarnings("unchecked")

+  @Override

+  public final Type<OpenHandler<T>> getAssociatedType() {

+    return (Type) TYPE;

+  }

+

   /**

    * Gets the target.

    * 

@@ -80,17 +86,11 @@
     return target;

   }

 

-  @Override

-  protected void dispatch(OpenHandler<T> handler) {

-    handler.onOpen(this);

-  }

-

   // Because of type erasure, our static type is

   // wild carded, yet the "real" type should use our I param.

 

-  @SuppressWarnings("unchecked")

   @Override

-  protected final Type<OpenHandler<T>> getAssociatedType() {

-    return (Type) TYPE;

+  protected void dispatch(OpenHandler<T> handler) {

+    handler.onOpen(this);

   }

 }

diff --git a/user/src/com/google/gwt/event/logical/shared/ResizeEvent.java b/user/src/com/google/gwt/event/logical/shared/ResizeEvent.java
index 351b86c..f3b1393 100644
--- a/user/src/com/google/gwt/event/logical/shared/ResizeEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/ResizeEvent.java
@@ -75,6 +75,11 @@
     this.height = height;
   }
 
+  @Override
+  public Type<ResizeHandler> getAssociatedType() {
+    return TYPE;
+  }
+
   /**
    * Returns the new height.
    * 
@@ -103,9 +108,4 @@
   protected void dispatch(ResizeHandler handler) {
     handler.onResize(this);
   }
-
-  @Override
-  protected Type<ResizeHandler> getAssociatedType() {
-    return TYPE;
-  }
 }
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 c43ab56..342b179 100644
--- a/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java
@@ -72,6 +72,14 @@
     this.selectedItem = selectedItem;

   }

 

+  // The instance knows its BeforeSelectionHandler is of type I, but the TYPE

+  // field itself does not, so we have to do an unsafe cast here.

+  @SuppressWarnings("unchecked")

+  @Override

+  public Type<SelectionHandler<I>> getAssociatedType() {

+    return (Type) TYPE;

+  }

+

   /**

    * Gets the selected item.

    * 

@@ -85,12 +93,4 @@
   protected void dispatch(SelectionHandler<I> handler) {

     handler.onSelection(this);

   }

-

-  // The instance knows its BeforeSelectionHandler is of type I, but the TYPE

-  // field itself does not, so we have to do an unsafe cast here.

-  @SuppressWarnings("unchecked")

-  @Override

-  protected Type<SelectionHandler<I>> getAssociatedType() {

-    return (Type) TYPE;

-  }

 }

diff --git a/user/src/com/google/gwt/event/logical/shared/ShowRangeEvent.java b/user/src/com/google/gwt/event/logical/shared/ShowRangeEvent.java
index 34d3c88..5733bff 100644
--- a/user/src/com/google/gwt/event/logical/shared/ShowRangeEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/ShowRangeEvent.java
@@ -21,7 +21,7 @@
 

 /**

  * Represents a show range event. This logical event should be used when a

- * widget displays a range of values to the user.  This event should not be fired until a widget is displaying t

+ * widget displays a range of values to the user.

  * 

  * @param <V> the type of range

  */

@@ -79,6 +79,14 @@
     this.end = end;

   }

 

+  // Because of type erasure, our static type is

+  // wild carded, yet the "real" type should use our I param.

+  @SuppressWarnings("unchecked")

+  @Override

+  public final Type<ShowRangeHandler<V>> getAssociatedType() {

+    return (Type) TYPE;

+  }

+

   /**

    * Gets the end of the range.

    * 

@@ -101,12 +109,4 @@
   protected void dispatch(ShowRangeHandler<V> handler) {

     handler.onShowRange(this);

   }

-

-  // Because of type erasure, our static type is

-  // wild carded, yet the "real" type should use our I param.

-  @SuppressWarnings("unchecked")

-  @Override

-  protected final Type<ShowRangeHandler<V>> getAssociatedType() {

-    return (Type) TYPE;

-  }

-}
\ No newline at end of file
+}

diff --git a/user/src/com/google/gwt/event/logical/shared/ValueChangeEvent.java b/user/src/com/google/gwt/event/logical/shared/ValueChangeEvent.java
index 5a769dc..5dfe97f 100644
--- a/user/src/com/google/gwt/event/logical/shared/ValueChangeEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/ValueChangeEvent.java
@@ -106,6 +106,14 @@
     this.value = value;

   }

 

+  // The instance knows its BeforeSelectionHandler is of type I, but the TYPE

+  // field itself does not, so we have to do an unsafe cast here.

+  @SuppressWarnings("unchecked")

+  @Override

+  public Type<ValueChangeHandler<I>> getAssociatedType() {

+    return (Type) TYPE;

+  }

+

   /**

    * Gets the value.

    * 

@@ -119,12 +127,4 @@
   protected void dispatch(ValueChangeHandler<I> handler) {

     handler.onValueChange(this);

   }

-

-  // The instance knows its BeforeSelectionHandler is of type I, but the TYPE

-  // field itself does not, so we have to do an unsafe cast here.

-  @SuppressWarnings("unchecked")

-  @Override

-  protected Type<ValueChangeHandler<I>> getAssociatedType() {

-    return (Type) TYPE;

-  }

 }

diff --git a/user/src/com/google/gwt/event/shared/GwtEvent.java b/user/src/com/google/gwt/event/shared/GwtEvent.java
index 33787e2..c3a38d8 100644
--- a/user/src/com/google/gwt/event/shared/GwtEvent.java
+++ b/user/src/com/google/gwt/event/shared/GwtEvent.java
@@ -25,7 +25,6 @@
  * 
  */
 public abstract class GwtEvent<H extends EventHandler> {
-
   /**
    * Type class used to register events with the {@link HandlerManager}.
    * <p>
@@ -68,6 +67,14 @@
   }
 
   /**
+   * Returns the type used to register this event. Used by handler manager to
+   * dispatch events to the correct handlers.
+   * 
+   * @return the type
+   */
+  public abstract Type<H> getAssociatedType();
+
+  /**
    * Returns the source that last fired this event.
    * 
    * @return object representing the source of this event
@@ -93,9 +100,8 @@
 
   /**
    * The toString() for abstract event is overridden to avoid accidently
-   * including class literals in the the compiled output. Use
-   * {@link GwtEvent} #toDebugString to get more information about the
-   * event.
+   * including class literals in the the compiled output. Use {@link GwtEvent}
+   * #toDebugString to get more information about the event.
    */
   @Override
   public String toString() {
@@ -120,14 +126,6 @@
   protected abstract void dispatch(H handler);
 
   /**
-   * Returns the type used to register this event. Used by handler manager to
-   * dispatch events to the correct handlers.
-   * 
-   * @return the type
-   */
-  protected abstract Type<H> getAssociatedType();
-
-  /**
    * Is the event current live?
    * 
    * @return whether the event is live
@@ -137,8 +135,8 @@
   }
 
   /**
-   * Kill the event.  After the event has been killed, users cannot really on
-   * its values or functions being available.
+   * Kill the event. After the event has been killed, users cannot really on its
+   * values or functions being available.
    */
   protected void kill() {
     dead = true;
diff --git a/user/src/com/google/gwt/user/client/Event.java b/user/src/com/google/gwt/user/client/Event.java
index 4ec22fe..571ac93 100644
--- a/user/src/com/google/gwt/user/client/Event.java
+++ b/user/src/com/google/gwt/user/client/Event.java
@@ -144,6 +144,11 @@
       isConsumed = true;
     }
 
+    @Override
+    public Type<NativePreviewHandler> getAssociatedType() {
+      return TYPE;
+    }
+
     public Event getNativeEvent() {
       return nativeEvent;
     }
@@ -176,11 +181,6 @@
     }
 
     @Override
-    protected Type<NativePreviewHandler> getAssociatedType() {
-      return TYPE;
-    }
-
-    @Override
     protected void revive() {
       super.revive();
       isCanceled = false;
diff --git a/user/src/com/google/gwt/user/client/Window.java b/user/src/com/google/gwt/user/client/Window.java
index 392bd01..9a55063 100644
--- a/user/src/com/google/gwt/user/client/Window.java
+++ b/user/src/com/google/gwt/user/client/Window.java
@@ -63,6 +63,11 @@
      */
     private String message = null;
 
+    @Override
+    public Type<ClosingHandler> getAssociatedType() {
+      return TYPE;
+    }
+
     /**
      * Get the message that will be presented to the user in a confirmation
      * dialog that asks the user whether or not she wishes to navigate away from
@@ -90,11 +95,6 @@
     protected void dispatch(ClosingHandler handler) {
       handler.onWindowClosing(this);
     }
-
-    @Override
-    protected Type<ClosingHandler> getAssociatedType() {
-      return TYPE;
-    }
   }
 
   /**
@@ -331,6 +331,11 @@
       this.scrollTop = scrollTop;
     }
 
+    @Override
+    public Type<ScrollHandler> getAssociatedType() {
+      return TYPE;
+    }
+
     /**
      * Gets the window's scroll left.
      * 
@@ -353,11 +358,6 @@
     protected void dispatch(ScrollHandler handler) {
       handler.onWindowScroll(this);
     }
-
-    @Override
-    protected Type<ScrollHandler> getAssociatedType() {
-      return TYPE;
-    }
   }
 
   /**
diff --git a/user/src/com/google/gwt/user/client/ui/FormPanel.java b/user/src/com/google/gwt/user/client/ui/FormPanel.java
index 2c9bc0e..137322c 100644
--- a/user/src/com/google/gwt/user/client/ui/FormPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/FormPanel.java
@@ -95,6 +95,11 @@
       this.resultHtml = resultsHtml;
     }
 
+    @Override
+    public Type<SubmitCompleteHandler> getAssociatedType() {
+      return TYPE;
+    }
+
     /**
      * Gets the result text of the form submission.
      * 
@@ -111,11 +116,6 @@
     protected void dispatch(SubmitCompleteHandler handler) {
       handler.onSubmitComplete(this);
     }
-
-    @Override
-    protected Type<SubmitCompleteHandler> getAssociatedType() {
-      return TYPE;
-    }
   }
 
   /**
@@ -161,6 +161,11 @@
       this.canceled = true;
     }
 
+    @Override
+    public Type<FormPanel.SubmitHandler> getAssociatedType() {
+      return TYPE;
+    }
+
     /**
      * Gets whether this form submit will be canceled.
      * 
@@ -175,11 +180,6 @@
       handler.onSubmit(this);
     }
 
-    @Override
-    protected Type<FormPanel.SubmitHandler> getAssociatedType() {
-      return TYPE;
-    }
-
     /**
      * This method is used for legacy support and should be removed when
      * {@link FormHandler} is removed.