changeset 1666:3d0689a0a8b1

Automated merge with ssh://javafxsrc.us.oracle.com//javafx/8.0/scrum/graphics/jfx/rt
author David Hill
date Tue, 21 Aug 2012 21:38:59 -0400
parents d98bfcf04715 5ba63022681b
children 71401986377e
files javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TextInputControlSkin.java javafx-ui-controls/src/javafx/scene/control/CheckBoxTreeItem.java javafx-ui-controls/src/javafx/scene/control/ListView.java javafx-ui-controls/src/javafx/scene/control/MenuItem.java javafx-ui-controls/src/javafx/scene/control/TableColumn.java javafx-ui-controls/src/javafx/scene/control/TreeItem.java javafx-ui-controls/src/javafx/scene/control/TreeView.java
diffstat 33 files changed, 237 insertions(+), 142 deletions(-) [+]
line wrap: on
line diff
--- a/javafx-ui-common/src/com/sun/javafx/menu/MenuBase.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/com/sun/javafx/menu/MenuBase.java	Tue Aug 21 21:38:59 2012 -0400
@@ -25,13 +25,11 @@
 
 package com.sun.javafx.menu;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.ReadOnlyBooleanProperty;
 import javafx.collections.ObservableList;
 import javafx.event.Event;
 import javafx.event.EventHandler;
-import javafx.event.EventType;
 
 
 public interface MenuBase extends MenuItemBase {
--- a/javafx-ui-common/src/com/sun/javafx/stage/FocusUngrabEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/com/sun/javafx/stage/FocusUngrabEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -25,14 +25,13 @@
 
 package com.sun.javafx.stage;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.event.Event;
 import javafx.event.EventTarget;
 import javafx.event.EventType;
 
 public final class FocusUngrabEvent extends Event {
     public static final EventType<FocusUngrabEvent> FOCUS_UNGRAB =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "FOCUS_UNGRAB");
+            new EventType<FocusUngrabEvent>(Event.ANY, "FOCUS_UNGRAB");
 
     public FocusUngrabEvent() {
         super(FOCUS_UNGRAB);
--- a/javafx-ui-common/src/com/sun/javafx/tk/TKStage.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/com/sun/javafx/tk/TKStage.java	Tue Aug 21 21:38:59 2012 -0400
@@ -179,4 +179,28 @@
      * @see #grabFocus
      */
     public void ungrabFocus();
+
+    /**
+     * Requests text input in form of native keyboard for text component
+     * contained by this Window. Native text input component is drawn on the place
+     * of JavaFX component to cover it completely and to provide native text editing
+     * techniques. Any change of text is immediately reflected in JavaFX text component.
+     *
+     * @param text text to be shown in the native text input component
+     * @param type type of text input component @see com.sun.javafx.scene.control.behavior.TextInputTypes
+     * @param width width of JavaFX text input component
+     * @param height height of JavaFX text input component
+     * @param M standard transformation matrix for drawing the native text component derived from JavaFX component
+     */
+    void requestInput(String text, int type, double width, double height,
+                        double Mxx, double Mxy, double Mxz, double Mxt,
+                        double Myx, double Myy, double Myz, double Myt,
+                        double Mzx, double Mzy, double Mzz, double Mzt);
+
+    /**
+     * Native keyboard for text input is no longer necessary.
+     * Keyboard will be hidden and native text input component too.
+     */
+    void releaseInput();
+
 }
--- a/javafx-ui-common/src/com/sun/javafx/tk/Toolkit.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/com/sun/javafx/tk/Toolkit.java	Tue Aug 21 21:38:59 2012 -0400
@@ -151,25 +151,6 @@
                 return Boolean.getBoolean("javafx.verbose");
             }
         });
-
-        // This loading of msvcr100.dll (VS2010) is required when run with Java 6
-        // since it was build with VS2003 and doesn't include msvcr100.dll in it's JRE.
-        // Note: See README-builds.html on MSVC requirement: VS2010 is required.
-        if (PlatformUtil.isWindows()) {
-            AccessController.doPrivileged(new PrivilegedAction<Object>() {
-                public Object run() {
-                    try {
-                        com.sun.javafx.runtime.NativeLibLoader.loadLibrary("msvcr100");
-                    } catch (Throwable t) {
-			if (verbose) {
-                            System.err.println("Error: failed to load msvcr100.dll : " + t);
-                        }
-                    }
-                    return null;
-                }
-            });
-        }
-
         AccessController.doPrivileged(new PrivilegedAction<Object>() {
             public Object run() {
                 // Get the javafx.version and javafx.runtime.version from a preconstructed
--- a/javafx-ui-common/src/javafx/scene/Parent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/Parent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -59,6 +59,9 @@
 import com.sun.javafx.sg.PGNode;
 import com.sun.javafx.tk.Toolkit;
 
+import static com.sun.javafx.logging.PulseLogger.PULSE_LOGGING_ENABLED;
+import static com.sun.javafx.logging.PulseLogger.PULSE_LOGGER;
+
 /**
  * The base class for all nodes that have children in the scene graph.
  * <p>
@@ -994,6 +997,7 @@
      */
     public final void layout() {
         if (isNeedsLayout()) {
+            if (PULSE_LOGGING_ENABLED) PULSE_LOGGER.fxIncrementCounter("Parent#layout() on dirty Node");
             performingLayout = true;
 
             PlatformLogger logger = Logging.getLayoutLogger();
@@ -1015,6 +1019,8 @@
                 }
             }
             performingLayout = false;
+        } else {
+            if (PULSE_LOGGING_ENABLED) PULSE_LOGGER.fxIncrementCounter("Parent#layout() on clean Node");
         }
     }
 
--- a/javafx-ui-common/src/javafx/scene/Scene.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/Scene.java	Tue Aug 21 21:38:59 2012 -0400
@@ -44,7 +44,6 @@
 import javafx.beans.Observable;
 import javafx.beans.property.ReadOnlyBooleanProperty;
 import javafx.beans.property.SimpleObjectProperty;
-import javafx.collections.FXCollections;
 import javafx.collections.ListChangeListener.Change;
 import javafx.collections.ObservableList;
 import javafx.collections.ObservableMap;
@@ -126,6 +125,8 @@
 import javafx.stage.StageStyle;
 import javafx.util.Callback;
 
+import static com.sun.javafx.logging.PulseLogger.PULSE_LOGGING_ENABLED;
+import static com.sun.javafx.logging.PulseLogger.PULSE_LOGGER;
 
 /**
  * The JavaFX {@code Scene} class is the container for all content in a scene graph.
@@ -2203,15 +2204,30 @@
                 PerformanceTracker.logEvent("Scene - first repaint");
             }
 
-            Scene.this.doCSSPass();
-            Scene.this.doLayoutPass();
+            if (PULSE_LOGGING_ENABLED) {
+                long start = System.currentTimeMillis();
+                Scene.this.doCSSPass();
+                PULSE_LOGGER.fxMessage(start, System.currentTimeMillis(), "CSS Pass");
+                
+                start = System.currentTimeMillis();
+                Scene.this.doLayoutPass();
+                PULSE_LOGGER.fxMessage(start, System.currentTimeMillis(), "Layout Pass");
+            } else {
+                Scene.this.doCSSPass();
+                Scene.this.doLayoutPass();
+            }
 
             boolean dirty = dirtyNodes == null || dirtyNodesSize != 0 || !isDirtyEmpty();
             if (dirty) {
                 getRoot().updateBounds();
                 if (impl_peer != null) {
                     try {
+                        long start = PULSE_LOGGING_ENABLED ? System.currentTimeMillis() : 0;
                         impl_peer.waitForSynchronization();
+                        if (PULSE_LOGGING_ENABLED) {
+                            PULSE_LOGGER.fxMessage(start, System.currentTimeMillis(), "Waiting for previous rendering");
+                        }
+                        start = PULSE_LOGGING_ENABLED ? System.currentTimeMillis() : 0;
                         // synchronize scene properties
                         synchronizeSceneProperties();
                         // Run the synchronizer
@@ -2219,13 +2235,21 @@
                         Scene.this.mouseHandler.pulse();
                         // Tell the scene peer that it needs to repaint
                         impl_peer.markDirty();
+                        if (PULSE_LOGGING_ENABLED) {
+                            PULSE_LOGGER.fxMessage(start, System.currentTimeMillis(), "Copy state to render graph");
+                        }
                     } finally {
                         impl_peer.releaseSynchronization();
                     }
                 } else {
+                    long start = PULSE_LOGGING_ENABLED ? System.currentTimeMillis() : 0;
                     synchronizeSceneProperties();
                     synchronizeSceneNodes();
                     Scene.this.mouseHandler.pulse();
+                    if (PULSE_LOGGING_ENABLED) {
+                        PULSE_LOGGER.fxMessage(start, System.currentTimeMillis(), "Synchronize with null peer");
+                    }
+
                 }
             }
 
--- a/javafx-ui-common/src/javafx/scene/input/ContextMenuEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/ContextMenuEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -26,7 +26,6 @@
 
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import com.sun.javafx.scene.input.InputEventUtils;
 import java.io.IOException;
 import javafx.event.Event;
@@ -53,7 +52,7 @@
      * This event occurs when a context menu is requested.
      */
     public static final EventType<ContextMenuEvent> CONTEXT_MENU_REQUESTED =
-            EventTypeUtil.registerInternalEventType(ContextMenuEvent.ANY, "CONTEXT_MENU_REQUESTED");
+            new EventType<ContextMenuEvent>(ContextMenuEvent.ANY, "CONTEXT_MENU_REQUESTED");
 
     private ContextMenuEvent(final EventType<? extends ContextMenuEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/scene/input/DragEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/DragEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -24,7 +24,6 @@
  */
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import java.util.EnumSet;
 import java.util.Set;
 
@@ -205,7 +204,7 @@
      * Common supertype for all drag event types.
      */
     public static final EventType<DragEvent> ANY =
-            EventTypeUtil.registerInternalEventType(InputEvent.ANY, "DRAG");
+            new EventType<DragEvent>(InputEvent.ANY, "DRAG");
 
     /**
      * This event occurs when drag gesture enters a node. It's the
@@ -218,7 +217,7 @@
      * which is similar
      */
     public static final EventType<DragEvent> DRAG_ENTERED_TARGET =
-            EventTypeUtil.registerInternalEventType(DragEvent.ANY, "DRAG_ENTERED_TARGET");
+            new EventType<DragEvent>(DragEvent.ANY, "DRAG_ENTERED_TARGET");
 
     /**
      * This event occurs when drag gesture enters a node.
@@ -230,7 +229,7 @@
      * which is similar
      */
     public static final EventType<DragEvent> DRAG_ENTERED =
-            EventTypeUtil.registerInternalEventType(DragEvent.DRAG_ENTERED_TARGET, "DRAG_ENTERED");
+            new EventType<DragEvent>(DragEvent.DRAG_ENTERED_TARGET, "DRAG_ENTERED");
 
     /**
      * This event occurs when drag gesture exits a node. It's the
@@ -243,7 +242,7 @@
      * which is similar
      */
     public static final EventType<DragEvent> DRAG_EXITED_TARGET =
-            EventTypeUtil.registerInternalEventType(DragEvent.ANY, "DRAG_EXITED_TARGET");
+            new EventType<DragEvent>(DragEvent.ANY, "DRAG_EXITED_TARGET");
 
     /**
      * This event occurs when drag gesture exits a node.
@@ -255,13 +254,13 @@
      * which is similar
      */
     public static final EventType<DragEvent> DRAG_EXITED =
-            EventTypeUtil.registerInternalEventType(DragEvent.DRAG_EXITED_TARGET, "DRAG_EXITED");
+            new EventType<DragEvent>(DragEvent.DRAG_EXITED_TARGET, "DRAG_EXITED");
 
     /**
      * This event occurs when drag gesture progresses within this node.
      */
     public static final EventType<DragEvent> DRAG_OVER =
-            EventTypeUtil.registerInternalEventType(DragEvent.ANY, "DRAG_OVER");
+            new EventType<DragEvent>(DragEvent.ANY, "DRAG_OVER");
 
     // Do we want DRAG_TRANSFER_MODE_CHANGED event?
 //    /**
@@ -280,7 +279,7 @@
      * in handler of this event.
      */
     public static final EventType<DragEvent> DRAG_DROPPED =
-            EventTypeUtil.registerInternalEventType(DragEvent.ANY, "DRAG_DROPPED");
+            new EventType<DragEvent>(DragEvent.ANY, "DRAG_DROPPED");
 
     /**
      * This event occurs on drag-and-drop gesture source after its data has
@@ -293,7 +292,7 @@
      * indicates that no data was transferred during the drag and drop gesture.
      */
     public static final EventType<DragEvent> DRAG_DONE =
-            EventTypeUtil.registerInternalEventType(DragEvent.ANY, "DRAG_DONE");
+            new EventType<DragEvent>(DragEvent.ANY, "DRAG_DONE");
 
     private DragEvent(final EventType<? extends DragEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/scene/input/GestureEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/GestureEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -25,7 +25,6 @@
 
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import com.sun.javafx.scene.input.InputEventUtils;
 import com.sun.javafx.tk.Toolkit;
 import java.io.IOException;
@@ -51,7 +50,7 @@
      * Common supertype for all gestures.
      */
     public static final EventType<GestureEvent> ANY =
-            EventTypeUtil.registerInternalEventType(InputEvent.ANY, "GESTURE");
+            new EventType<GestureEvent>(InputEvent.ANY, "GESTURE");
 
     /**
      * Creates a new instance of {@code GestureEvent}.
--- a/javafx-ui-common/src/javafx/scene/input/InputEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/InputEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -24,7 +24,6 @@
  */
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.event.Event;
 import javafx.event.EventTarget;
 import javafx.event.EventType;
@@ -38,7 +37,7 @@
      * Common supertype for all input event types.
      */
     public static final EventType<InputEvent> ANY =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "INPUT");
+            new EventType<InputEvent> (Event.ANY, "INPUT");
 
     /**
      * Creates new instance of InputEvent.
--- a/javafx-ui-common/src/javafx/scene/input/InputMethodEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/InputMethodEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -25,7 +25,6 @@
 
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
 import javafx.event.EventTarget;
@@ -53,7 +52,7 @@
      * The only valid EventType for the InputMethodEvent.
      */
     public static final EventType<InputMethodEvent> INPUT_METHOD_TEXT_CHANGED =
-            EventTypeUtil.registerInternalEventType(InputEvent.ANY, "INPUT_METHOD_TEXT_CHANGED");
+            new EventType<InputMethodEvent>(InputEvent.ANY, "INPUT_METHOD_TEXT_CHANGED");
 
     private InputMethodEvent(final EventType<? extends InputMethodEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/scene/input/KeyEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/KeyEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -26,7 +26,6 @@
 
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import com.sun.javafx.tk.Toolkit;
 import javafx.event.EventTarget;
 import javafx.event.EventType;
@@ -86,19 +85,19 @@
      * Common supertype for all key event types.
      */
     public static final EventType<KeyEvent> ANY =
-            EventTypeUtil.registerInternalEventType(InputEvent.ANY, "KEY");
+            new EventType<KeyEvent>(InputEvent.ANY, "KEY");
 
     /**
      * This event occurs when a key has been pressed.
      */
     public static final EventType<KeyEvent> KEY_PRESSED =
-            EventTypeUtil.registerInternalEventType(KeyEvent.ANY, "KEY_PRESSED");
+            new EventType<KeyEvent>(KeyEvent.ANY, "KEY_PRESSED");
 
     /**
      * This event occurs when a key has been released.
      */
     public static final EventType<KeyEvent> KEY_RELEASED =
-            EventTypeUtil.registerInternalEventType(KeyEvent.ANY, "KEY_RELEASED");
+            new EventType<KeyEvent>(KeyEvent.ANY, "KEY_RELEASED");
 
     /**
      * This event occurs when a key has been typed (pressed and released).
@@ -106,7 +105,7 @@
      * string, the {@code code} and {@code text} fields are not used.
      */
     public static final EventType<KeyEvent> KEY_TYPED =
-            EventTypeUtil.registerInternalEventType(KeyEvent.ANY, "KEY_TYPED");
+            new EventType<KeyEvent>(KeyEvent.ANY, "KEY_TYPED");
 
     private KeyEvent(final EventType<? extends KeyEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/scene/input/MouseDragEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/MouseDragEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -24,7 +24,6 @@
  */
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.event.EventTarget;
 import javafx.event.EventType;
 
@@ -59,20 +58,20 @@
      * Common supertype for all mouse event types.
      */
     public static final EventType<MouseDragEvent> ANY =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "MOUSE-DRAG");
+            new EventType<MouseDragEvent>(MouseEvent.ANY, "MOUSE-DRAG");
 
     /**
      * This event occurs when the gesture progresses within this node.
      */
     public static final EventType<MouseDragEvent> MOUSE_DRAG_OVER =
-            EventTypeUtil.registerInternalEventType(MouseDragEvent.ANY, "MOUSE-DRAG_OVER");
+            new EventType<MouseDragEvent>(MouseDragEvent.ANY, "MOUSE-DRAG_OVER");
 
     /**
      * This event occurs when the gesture ends (by releasing mouse button)
      * on this node.
      */
     public static final EventType<MouseDragEvent> MOUSE_DRAG_RELEASED =
-            EventTypeUtil.registerInternalEventType(MouseDragEvent.ANY, "MOUSE-DRAG_RELEASED");
+            new EventType<MouseDragEvent>(MouseDragEvent.ANY, "MOUSE-DRAG_RELEASED");
 
     /**
      * This event occurs when the gesture enters a node. It's the bubbling variant,
@@ -85,7 +84,7 @@
      * which is similar
      */
     public static final EventType<MouseDragEvent> MOUSE_DRAG_ENTERED_TARGET =
-            EventTypeUtil.registerInternalEventType(MouseDragEvent.ANY, "MOUSE-DRAG_ENTERED_TARGET");
+            new EventType<MouseDragEvent>(MouseDragEvent.ANY, "MOUSE-DRAG_ENTERED_TARGET");
 
     /**
      * This event occurs when the gesture enters a node. This event type is
@@ -96,7 +95,7 @@
      * which is similar
      */
     public static final EventType<MouseDragEvent> MOUSE_DRAG_ENTERED =
-            EventTypeUtil.registerInternalEventType(MouseDragEvent.MOUSE_DRAG_ENTERED_TARGET,
+            new EventType<MouseDragEvent>(MouseDragEvent.MOUSE_DRAG_ENTERED_TARGET,
                     "MOUSE-DRAG_ENTERED");
 
     /**
@@ -110,7 +109,7 @@
      * which is similar
      */
     public static final EventType<MouseDragEvent> MOUSE_DRAG_EXITED_TARGET =
-            EventTypeUtil.registerInternalEventType(MouseDragEvent.ANY, "MOUSE-DRAG_EXITED_TARGET");
+            new EventType<MouseDragEvent>(MouseDragEvent.ANY, "MOUSE-DRAG_EXITED_TARGET");
 
     /**
      * This event occurs when the gesture exits a node. This event type is
@@ -121,7 +120,7 @@
      * which is similar
      */
     public static final EventType<MouseDragEvent> MOUSE_DRAG_EXITED =
-            EventTypeUtil.registerInternalEventType(MouseDragEvent.MOUSE_DRAG_EXITED_TARGET,
+            new EventType<MouseDragEvent>(MouseDragEvent.MOUSE_DRAG_EXITED_TARGET,
                     "MOUSE-DRAG_EXITED");
 
     private MouseDragEvent(Object source, EventTarget target,
--- a/javafx-ui-common/src/javafx/scene/input/MouseEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/MouseEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -26,7 +26,6 @@
 
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import com.sun.javafx.tk.Toolkit;
 import javafx.event.Event;
 import javafx.event.EventTarget;
@@ -133,7 +132,7 @@
      * Common supertype for all mouse event types.
      */
     public static final EventType<MouseEvent> ANY =
-            EventTypeUtil.registerInternalEventType(InputEvent.ANY, "MOUSE");
+            new EventType<MouseEvent>(InputEvent.ANY, "MOUSE");
 
     /**
      * This event occurs when mouse button is pressed. This activates a
@@ -141,7 +140,7 @@
      * the button is released are delivered to the same node.
      */
     public static final EventType<MouseEvent> MOUSE_PRESSED =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "MOUSE_PRESSED");
+            new EventType<MouseEvent>(MouseEvent.ANY, "MOUSE_PRESSED");
 
     /**
      * This event occurs when mouse button is released. It is delivered
@@ -149,7 +148,7 @@
      * a press-drag-release gesture.
      */
     public static final EventType<MouseEvent> MOUSE_RELEASED =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "MOUSE_RELEASED");
+            new EventType<MouseEvent>(MouseEvent.ANY, "MOUSE_RELEASED");
 
     /**
      * This event occurs when mouse button has been clicked (pressed and
@@ -159,7 +158,7 @@
      * pressed and released).
      */
     public static final EventType<MouseEvent> MOUSE_CLICKED =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "MOUSE_CLICKED");
+            new EventType<MouseEvent>(MouseEvent.ANY, "MOUSE_CLICKED");
 
     /**
      * This event occurs when mouse enters a node. It's the bubbling variant,
@@ -171,7 +170,7 @@
      * @see MouseEvent MouseEvent for more information about mouse entered/exited handling
      */
     public static final EventType<MouseEvent> MOUSE_ENTERED_TARGET =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "MOUSE_ENTERED_TARGET");
+            new EventType<MouseEvent>(MouseEvent.ANY, "MOUSE_ENTERED_TARGET");
 
     /**
      * This event occurs when mouse enters a node. This event type is delivered
@@ -181,7 +180,7 @@
      * @see MouseEvent MouseEvent for more information about mouse entered/exited handling
      */
     public static final EventType<MouseEvent> MOUSE_ENTERED =
-            EventTypeUtil.registerInternalEventType(MouseEvent.MOUSE_ENTERED_TARGET, "MOUSE_ENTERED");
+            new EventType<MouseEvent>(MouseEvent.MOUSE_ENTERED_TARGET, "MOUSE_ENTERED");
 
     /**
      * This event occurs when mouse exits a node. It's the bubbling variant,
@@ -193,7 +192,7 @@
      * @see MouseEvent MouseEvent for more information about mouse entered/exited handling
      */
     public static final EventType<MouseEvent> MOUSE_EXITED_TARGET =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "MOUSE_EXITED_TARGET");
+            new EventType<MouseEvent>(MouseEvent.ANY, "MOUSE_EXITED_TARGET");
 
     /**
      * This event occurs when mouse exits a node. This event type is delivered
@@ -203,7 +202,7 @@
      * @see MouseEvent MouseEvent for more information about mouse entered/exited handling
      */
     public static final EventType<MouseEvent> MOUSE_EXITED =
-            EventTypeUtil.registerInternalEventType(MouseEvent.MOUSE_EXITED_TARGET, "MOUSE_EXITED");
+            new EventType<MouseEvent>(MouseEvent.MOUSE_EXITED_TARGET, "MOUSE_EXITED");
 
     /**
      * This event occurs when mouse moves within a node and no buttons
@@ -211,7 +210,7 @@
      * occurs instead.
      */
     public static final EventType<MouseEvent> MOUSE_MOVED =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "MOUSE_MOVED");
+            new EventType<MouseEvent>(MouseEvent.ANY, "MOUSE_MOVED");
 
     /**
      * This event occurs when mouse moves with a pressed button.
@@ -220,7 +219,7 @@
      * regardless of the mouse being within bounds of the node.
      */
     public static final EventType<MouseEvent> MOUSE_DRAGGED =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "MOUSE_DRAGGED");
+            new EventType<MouseEvent>(MouseEvent.ANY, "MOUSE_DRAGGED");
 
     /**
      * This event is delivered to a node that is identified as a source of a
@@ -240,7 +239,7 @@
      * @see DragEvent DragEvent for more details about drag and drop gestures
      */
     public static final EventType<MouseEvent> DRAG_DETECTED =
-            EventTypeUtil.registerInternalEventType(MouseEvent.ANY, "DRAG_DETECTED");
+            new EventType<MouseEvent>(MouseEvent.ANY, "DRAG_DETECTED");
 
     MouseEvent(final EventType<? extends MouseEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/scene/input/RotateEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/RotateEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -25,7 +25,6 @@
 
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.event.EventTarget;
 import javafx.event.EventType;
 
@@ -63,26 +62,26 @@
      * Common supertype for all rotate event types.
      */
     public static final EventType<RotateEvent> ANY =
-            EventTypeUtil.registerInternalEventType(GestureEvent.ANY, "ANY_ROTATE");
+            new EventType<RotateEvent>(GestureEvent.ANY, "ANY_ROTATE");
 
     /**
      * This event occurs when user performs a rotating gesture such as
      * dragging two fingers around each other.
      */
     public static final EventType<RotateEvent> ROTATE =
-            EventTypeUtil.registerInternalEventType(RotateEvent.ANY, "ROTATE");
+            new EventType<RotateEvent>(RotateEvent.ANY, "ROTATE");
 
     /**
      * This event occurs when a rotating gesture is detected.
      */
     public static final EventType<RotateEvent> ROTATION_STARTED =
-            EventTypeUtil.registerInternalEventType(RotateEvent.ANY, "ROTATION_STARTED");
+            new EventType<RotateEvent>(RotateEvent.ANY, "ROTATION_STARTED");
 
     /**
      * This event occurs when a rotating gesture ends.
      */
     public static final EventType<RotateEvent> ROTATION_FINISHED =
-            EventTypeUtil.registerInternalEventType(RotateEvent.ANY, "ROTATION_FINISHED");
+            new EventType<RotateEvent>(RotateEvent.ANY, "ROTATION_FINISHED");
 
     private RotateEvent(final EventType<? extends RotateEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/scene/input/ScrollEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/ScrollEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -24,7 +24,6 @@
  */
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.event.EventTarget;
 import javafx.event.EventType;
 
@@ -103,28 +102,28 @@
      * Common supertype for all scroll event types.
      */
     public static final EventType<ScrollEvent> ANY =
-            EventTypeUtil.registerInternalEventType(GestureEvent.ANY, "ANY_SCROLL");
+            new EventType<ScrollEvent> (GestureEvent.ANY, "ANY_SCROLL");
 
     /**
      * This event occurs when user performs a scrolling action such as
      * rotating mouse wheel or dragging a finger over touch screen.
      */
     public static final EventType<ScrollEvent> SCROLL =
-            EventTypeUtil.registerInternalEventType(ScrollEvent.ANY, "SCROLL");
+            new EventType<ScrollEvent> (ScrollEvent.ANY, "SCROLL");
 
     /**
      * This event occurs when a scrolling gesture is detected. It doesn't
      * occur for mouse wheel scrolling.
      */
     public static final EventType<ScrollEvent> SCROLL_STARTED =
-            EventTypeUtil.registerInternalEventType(ScrollEvent.ANY, "SCROLL_STARTED");
+            new EventType<ScrollEvent> (ScrollEvent.ANY, "SCROLL_STARTED");
 
     /**
      * This event occurs when a scrolling gesture ends. It doesn't
      * occur for mouse wheel scrolling.
      */
     public static final EventType<ScrollEvent> SCROLL_FINISHED =
-            EventTypeUtil.registerInternalEventType(ScrollEvent.ANY, "SCROLL_FINISHED");
+            new EventType<ScrollEvent> (ScrollEvent.ANY, "SCROLL_FINISHED");
 
     
     private ScrollEvent(final EventType<? extends ScrollEvent> eventType) {
--- a/javafx-ui-common/src/javafx/scene/input/SwipeEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/SwipeEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -24,7 +24,6 @@
  */
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.event.EventTarget;
 import javafx.event.EventType;
 
@@ -62,31 +61,31 @@
      * Common supertype for all swipe event types.
      */
     public static final EventType<SwipeEvent> ANY =
-            EventTypeUtil.registerInternalEventType(GestureEvent.ANY, "ANY_SWIPE");
+            new EventType<SwipeEvent>(GestureEvent.ANY, "ANY_SWIPE");
 
     /**
      * This event occurs when user performs leftward swipe gesture.
      */
     public static final EventType<SwipeEvent> SWIPE_LEFT =
-            EventTypeUtil.registerInternalEventType(SwipeEvent.ANY, "SWIPE_LEFT");
+            new EventType<SwipeEvent>(SwipeEvent.ANY, "SWIPE_LEFT");
 
     /**
      * This event occurs when user performs rightward swipe gesture.
      */
     public static final EventType<SwipeEvent> SWIPE_RIGHT =
-            EventTypeUtil.registerInternalEventType(SwipeEvent.ANY, "SWIPE_RIGHT");
+            new EventType<SwipeEvent>(SwipeEvent.ANY, "SWIPE_RIGHT");
 
     /**
      * This event occurs when user performs upward swipe gesture.
      */
     public static final EventType<SwipeEvent> SWIPE_UP =
-            EventTypeUtil.registerInternalEventType(SwipeEvent.ANY, "SWIPE_UP");
+            new EventType<SwipeEvent>(SwipeEvent.ANY, "SWIPE_UP");
 
     /**
      * This event occurs when user performs downward swipe gesture.
      */
     public static final EventType<SwipeEvent> SWIPE_DOWN =
-            EventTypeUtil.registerInternalEventType(SwipeEvent.ANY, "SWIPE_DOWN");
+            new EventType<SwipeEvent>(SwipeEvent.ANY, "SWIPE_DOWN");
 
     private SwipeEvent(final EventType<? extends SwipeEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/scene/input/TouchEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/TouchEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -26,7 +26,6 @@
 package javafx.scene.input;
 
 import com.sun.javafx.collections.annotations.ReturnsUnmodifiableCollection;
-import com.sun.javafx.event.EventTypeUtil;
 import java.util.Collections;
 import java.util.List;
 import javafx.event.Event;
@@ -63,33 +62,33 @@
      * Common supertype for all touch event types.
      */
     public static final EventType<TouchEvent> ANY =
-            EventTypeUtil.registerInternalEventType(InputEvent.ANY, "TOUCH");
+            new EventType<TouchEvent>(InputEvent.ANY, "TOUCH");
 
     /**
      * This event occurs when the touch point is pressed (touched for the
      * first time).
      */
     public static final EventType<TouchEvent> TOUCH_PRESSED =
-            EventTypeUtil.registerInternalEventType(ANY, "TOUCH_PRESSED");
+            new EventType<TouchEvent>(ANY, "TOUCH_PRESSED");
 
     /**
      * This event occurs when the touch point is moved.
      */
     public static final EventType<TouchEvent> TOUCH_MOVED =
-            EventTypeUtil.registerInternalEventType(ANY, "TOUCH_MOVED");
+            new EventType<TouchEvent>(ANY, "TOUCH_MOVED");
 
     /**
      * This event occurs when the touch point is released.
      */
     public static final EventType<TouchEvent> TOUCH_RELEASED =
-            EventTypeUtil.registerInternalEventType(ANY, "TOUCH_RELEASED");
+            new EventType<TouchEvent>(ANY, "TOUCH_RELEASED");
 
     /**
      * This event occurs when the touch point is pressed and still (doesn't
      * move).
      */
     public static final EventType<TouchEvent> TOUCH_STATIONARY =
-            EventTypeUtil.registerInternalEventType(ANY, "TOUCH_STATIONARY");
+            new EventType<TouchEvent>(ANY, "TOUCH_STATIONARY");
 
     private TouchEvent(EventType<? extends TouchEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/scene/input/ZoomEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/scene/input/ZoomEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -25,7 +25,6 @@
 
 package javafx.scene.input;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.event.EventTarget;
 import javafx.event.EventType;
 
@@ -63,26 +62,26 @@
      * Common supertype for all zoom event types.
      */
     public static final EventType<ZoomEvent> ANY =
-            EventTypeUtil.registerInternalEventType(GestureEvent.ANY, "ANY_ZOOM");
+            new EventType<ZoomEvent>(GestureEvent.ANY, "ANY_ZOOM");
 
     /**
      * This event occurs when user performs a zooming gesture such as
      * dragging two fingers apart.
      */
     public static final EventType<ZoomEvent> ZOOM =
-            EventTypeUtil.registerInternalEventType(ZoomEvent.ANY, "ZOOM");
+            new EventType<ZoomEvent>(ZoomEvent.ANY, "ZOOM");
 
     /**
      * This event occurs when a zooming gesture is detected.
      */
     public static final EventType<ZoomEvent> ZOOM_STARTED =
-            EventTypeUtil.registerInternalEventType(ZoomEvent.ANY, "ZOOM_STARTED");
+            new EventType<ZoomEvent>(ZoomEvent.ANY, "ZOOM_STARTED");
 
     /**
      * This event occurs when a zooming gesture ends.
      */
     public static final EventType<ZoomEvent> ZOOM_FINISHED =
-            EventTypeUtil.registerInternalEventType(ZoomEvent.ANY, "ZOOM_FINISHED");
+            new EventType<ZoomEvent>(ZoomEvent.ANY, "ZOOM_FINISHED");
 
     private ZoomEvent(final EventType<? extends ZoomEvent> eventType) {
         super(eventType);
--- a/javafx-ui-common/src/javafx/stage/WindowEvent.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-common/src/javafx/stage/WindowEvent.java	Tue Aug 21 21:38:59 2012 -0400
@@ -25,7 +25,6 @@
 
 package javafx.stage;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.event.Event;
 import javafx.event.EventType;
 
@@ -37,31 +36,31 @@
      * Common supertype for all window event types.
      */
     public static final EventType<WindowEvent> ANY =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "WINDOW");
+            new EventType<WindowEvent>(Event.ANY, "WINDOW");
 
     /**
      * This event occurs on window just before it is shown.
      */
     public static final EventType<WindowEvent> WINDOW_SHOWING =
-            EventTypeUtil.registerInternalEventType(WindowEvent.ANY, "WINDOW_SHOWING");
+            new EventType<WindowEvent>(WindowEvent.ANY, "WINDOW_SHOWING");
 
     /**
      * This event occurs on window just after it is shown.
      */
     public static final EventType<WindowEvent> WINDOW_SHOWN =
-            EventTypeUtil.registerInternalEventType(WindowEvent.ANY, "WINDOW_SHOWN");
+            new EventType<WindowEvent>(WindowEvent.ANY, "WINDOW_SHOWN");
 
     /**
      * This event occurs on window just before it is hidden.
      */
     public static final EventType<WindowEvent> WINDOW_HIDING =
-            EventTypeUtil.registerInternalEventType(WindowEvent.ANY, "WINDOW_HIDING");
+            new EventType<WindowEvent>(WindowEvent.ANY, "WINDOW_HIDING");
 
     /**
      * This event occurs on window just after it is hidden.
      */
     public static final EventType<WindowEvent> WINDOW_HIDDEN =
-            EventTypeUtil.registerInternalEventType(WindowEvent.ANY, "WINDOW_HIDDEN");
+            new EventType<WindowEvent>(WindowEvent.ANY, "WINDOW_HIDDEN");
 
     /**
      * This event is delivered to a
@@ -70,7 +69,7 @@
      * handler for this event closes the corresponding window.
      */
     public static final EventType<WindowEvent> WINDOW_CLOSE_REQUEST =
-            EventTypeUtil.registerInternalEventType(WindowEvent.ANY, "WINDOW_CLOSE_REQUEST");
+            new EventType<WindowEvent>(WindowEvent.ANY, "WINDOW_CLOSE_REQUEST");
 
     /**
      * Construct a new {@code Event} with the specified event source, target
--- a/javafx-ui-controls/src/com/sun/javafx/scene/control/behavior/TextAreaBehavior.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/behavior/TextAreaBehavior.java	Tue Aug 21 21:38:59 2012 -0400
@@ -49,6 +49,8 @@
 import static javafx.scene.input.KeyEvent.*;
 import static com.sun.javafx.PlatformUtil.*;
 import javafx.geometry.Rectangle2D;
+import com.sun.javafx.geom.transform.Affine3D;
+import javafx.geometry.Bounds;
 
 
 /**
@@ -148,11 +150,26 @@
             public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                 TextArea textArea = getControl();
                 if (textArea.isFocused()) {
+                    if (PlatformUtil.isIOS()) {
+                        Bounds bnds = textArea.getBoundsInParent();
+                        double w = bnds.getWidth();
+                        double h = bnds.getHeight();
+                        Affine3D trans = TextFieldBehavior.calculateNodeToSceneTransform(textArea);
+                        String text = textArea.getText();
+
+                        textArea.getScene().getWindow().impl_getPeer().requestInput(text, TextFieldBehavior.TextInputTypes.TEXT_AREA.ordinal(), w, h, 
+                                trans.getMxx(), trans.getMxy(), trans.getMxz(), trans.getMxt(),
+                                trans.getMyx(), trans.getMyy(), trans.getMyz(), trans.getMyt(),
+                                trans.getMzx(), trans.getMzy(), trans.getMzz(), trans.getMzt());
+                    }
                     if (!focusGainedByMouseClick) {
                         setCaretAnimating(true);
                     }
                 } else {
 //                    skin.hideCaret();
+                    if (PlatformUtil.isIOS() && textArea.getScene() != null) {
+                        textArea.getScene().getWindow().impl_getPeer().releaseInput();
+                    }
                     focusGainedByMouseClick = false;
                     setCaretAnimating(false);
                 }
--- a/javafx-ui-controls/src/com/sun/javafx/scene/control/behavior/TextFieldBehavior.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/behavior/TextFieldBehavior.java	Tue Aug 21 21:38:59 2012 -0400
@@ -25,6 +25,7 @@
 
 package com.sun.javafx.scene.control.behavior;
 
+import com.sun.javafx.PlatformUtil;
 import javafx.animation.KeyFrame;
 import javafx.animation.Timeline;
 import javafx.beans.value.ChangeListener;
@@ -51,7 +52,14 @@
 import com.sun.javafx.scene.text.HitInfo;
 
 import static com.sun.javafx.PlatformUtil.*;
+
+import com.sun.javafx.geom.transform.Affine3D;
+import javafx.scene.Node;
+import javafx.scene.text.Font;
+
 import javafx.geometry.Rectangle2D;
+import javafx.geometry.Bounds;
+import javafx.geometry.Insets;
 
 /**
  * Text field behavior.
@@ -125,17 +133,51 @@
         TextField textField = getControl();
 
         if (textField.isFocused()) {
+            if (PlatformUtil.isIOS()) {
+                TextInputTypes type = TextInputTypes.TEXT_FIELD;
+                if (textField.getClass().equals(javafx.scene.control.PasswordField.class)) {
+                    type = TextInputTypes.PASSWORD_FIELD;
+                } else if (textField.getClass().equals(com.sun.javafx.scene.control.FocusableTextField.class)) {
+                    type = TextInputTypes.EDITABLE_COMBO;
+                }
+                Bounds bnds = textField.getBoundsInParent();
+                double w = bnds.getWidth();
+                double h = bnds.getHeight();
+                Affine3D trans = calculateNodeToSceneTransform(textField);
+//                Insets insets = skin.getInsets();
+//                w -= insets.getLeft() + insets.getRight();
+//                h -= insets.getTop() + insets.getBottom();
+                String text = textField.getText();
+                
+                textField.getScene().getWindow().impl_getPeer().requestInput(text, type.ordinal(), w, h, 
+                        trans.getMxx(), trans.getMxy(), trans.getMxz(), trans.getMxt(),// + insets.getLeft(),
+                        trans.getMyx(), trans.getMyy(), trans.getMyz(), trans.getMyt(),// + insets.getTop(),
+                        trans.getMzx(), trans.getMzy(), trans.getMzz(), trans.getMzt());
+            }
             if (!focusGainedByMouseClick) {
                 textField.selectRange(textField.getLength(), 0);
                 setCaretAnimating(true);
             }
         } else {
+            if (PlatformUtil.isIOS() && textField.getScene() != null) {
+                textField.getScene().getWindow().impl_getPeer().releaseInput();
+            }
             textField.selectRange(0, 0);
             focusGainedByMouseClick = false;
             setCaretAnimating(false);
         }
     }
 
+    static Affine3D calculateNodeToSceneTransform(Node node) {
+        final Affine3D transform = new Affine3D();
+        do {
+            transform.preConcatenate(node.impl_getLeafTransform());
+            node = node.getParent();
+        } while (node != null);
+        
+        return transform;
+    }
+    
     // An unholy back-reference!
     public void setTextFieldSkin(TextFieldSkin skin) {
         this.skin = skin;
@@ -377,4 +419,12 @@
     protected void mouseTripleClick(HitInfo hit) {
         getControl().selectAll();
     }
+    
+    public enum TextInputTypes {
+        TEXT_FIELD,
+        PASSWORD_FIELD,
+        EDITABLE_COMBO,
+        TEXT_AREA;
+    }
+    
 }
--- a/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TextInputControlSkin.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/com/sun/javafx/scene/control/skin/TextInputControlSkin.java	Tue Aug 21 21:38:59 2012 -0400
@@ -480,6 +480,12 @@
         final TextInputControl textInput = getSkinnable();
         if (textInput.isEditable() && !textInput.textProperty().isBound() && !textInput.isDisabled()) {
 
+            // just replace the text on iOS
+            if (PlatformUtil.isIOS()) {
+               textInput.setText(event.getCommitted());
+               return;
+            }
+            
             // remove previous input method text (if any) or selected text
             if (imlength != 0) {
                 removeHighlight(imattrs);
--- a/javafx-ui-controls/src/javafx/scene/control/CheckBoxTreeItem.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/CheckBoxTreeItem.java	Tue Aug 21 21:38:59 2012 -0400
@@ -24,7 +24,6 @@
  */
 package javafx.scene.control;
 
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.scene.control.cell.CheckBoxTreeCell;
 import javafx.beans.property.BooleanProperty;
 import javafx.beans.property.SimpleBooleanProperty;
@@ -96,7 +95,7 @@
         return (EventType<TreeModificationEvent<T>>) CHECK_BOX_SELECTION_CHANGED_EVENT;
     }
     private static final EventType<?> CHECK_BOX_SELECTION_CHANGED_EVENT
-            = EventTypeUtil.registerInternalEventType(Event.ANY, "checkBoxSelectionChangedEvent");
+            = new EventType(Event.ANY, "checkBoxSelectionChangedEvent");
 
     /***************************************************************************
      *                                                                         *
--- a/javafx-ui-controls/src/javafx/scene/control/ComboBoxBase.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/ComboBoxBase.java	Tue Aug 21 21:38:59 2012 -0400
@@ -26,7 +26,6 @@
 package javafx.scene.control;
 
 import com.sun.javafx.css.StyleManager;
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.beans.property.*;
 import javafx.event.ActionEvent;
 import javafx.event.Event;
@@ -79,25 +78,25 @@
      * has clicked or otherwise interacted with the ComboBox.
      */
     public static final EventType<Event> ON_SHOWING =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "COMBO_BOX_BASE_ON_SHOWING");
+            new EventType<Event>(Event.ANY, "COMBO_BOX_BASE_ON_SHOWING");
 
     /**
      * <p>Called after the ComboBox has shown its popup/display.
      */
     public static final EventType<Event> ON_SHOWN =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "COMBO_BOX_BASE_ON_SHOWN");
+            new EventType<Event>(Event.ANY, "COMBO_BOX_BASE_ON_SHOWN");
 
     /**
      * <p>Called when the ComboBox popup/display <b>will</b> be hidden. 
      */
     public static final EventType<Event> ON_HIDING =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "COMBO_BOX_BASE_ON_HIDING");
+            new EventType<Event>(Event.ANY, "COMBO_BOX_BASE_ON_HIDING");
 
     /**
      * <p>Called when the ComboBox popup/display has been hidden.
      */
     public static final EventType<Event> ON_HIDDEN =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "COMBO_BOX_BASE_ON_HIDDEN");
+            new EventType<Event>(Event.ANY, "COMBO_BOX_BASE_ON_HIDDEN");
     
     
     
--- a/javafx-ui-controls/src/javafx/scene/control/ListView.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/ListView.java	Tue Aug 21 21:38:59 2012 -0400
@@ -55,7 +55,6 @@
 import com.sun.javafx.css.StyleableObjectProperty;
 import com.sun.javafx.css.StyleableProperty;
 import com.sun.javafx.css.converters.EnumConverter;
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.collections.WeakListChangeListener;
 import com.sun.javafx.scene.control.skin.ListViewSkin;
 import com.sun.javafx.scene.control.skin.VirtualContainerBase;
@@ -167,7 +166,7 @@
         return (EventType<ListView.EditEvent<T>>) EDIT_ANY_EVENT;
     }
     private static final EventType<?> EDIT_ANY_EVENT =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "LIST_VIEW_EDIT");
+            new EventType(Event.ANY, "LIST_VIEW_EDIT");
     
     /**
      * An EventType used to indicate that an edit event has started within the
@@ -178,7 +177,7 @@
         return (EventType<ListView.EditEvent<T>>) EDIT_START_EVENT;
     }
     private static final EventType<?> EDIT_START_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_START");
+            new EventType(editAnyEvent(), "EDIT_START");
 
     /**
      * An EventType used to indicate that an edit event has just been canceled
@@ -189,7 +188,7 @@
         return (EventType<ListView.EditEvent<T>>) EDIT_CANCEL_EVENT;
     }
     private static final EventType<?> EDIT_CANCEL_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_CANCEL");
+            new EventType(editAnyEvent(), "EDIT_CANCEL");
 
     /**
      * An EventType used to indicate that an edit event has been committed
@@ -200,7 +199,7 @@
         return (EventType<ListView.EditEvent<T>>) EDIT_COMMIT_EVENT;
     }
     private static final EventType<?> EDIT_COMMIT_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_COMMIT");
+            new EventType(editAnyEvent(), "EDIT_COMMIT");
     
     
 
--- a/javafx-ui-controls/src/javafx/scene/control/Menu.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/Menu.java	Tue Aug 21 21:38:59 2012 -0400
@@ -35,7 +35,6 @@
 import javafx.scene.Node;
 
 import com.sun.javafx.collections.TrackableObservableList;
-import com.sun.javafx.event.EventTypeUtil;
 import com.sun.javafx.scene.control.Logging;
 import javafx.beans.DefaultProperty;
 import javafx.beans.property.ReadOnlyBooleanProperty;
@@ -89,7 +88,7 @@
      * </p>
      */
     public static final EventType<Event> ON_SHOWING =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "MENU_ON_SHOWING");
+            new EventType<Event>(Event.ANY, "MENU_ON_SHOWING");
 
     /**
      * <p>Called when the contentMenu for this menu shows. However if the
@@ -97,7 +96,7 @@
      * </p>
      */
     public static final EventType<Event> ON_SHOWN =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "MENU_ON_SHOWN");
+            new EventType<Event>(Event.ANY, "MENU_ON_SHOWN");
 
     /**
      * <p>Called when the contentMenu for this menu <b>will</b> be hidden. However if the
@@ -105,7 +104,7 @@
      * </p>
      */
     public static final EventType<Event> ON_HIDING =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "MENU_ON_HIDING");
+            new EventType<Event>(Event.ANY, "MENU_ON_HIDING");
 
     /**
      * <p>Called when the contentMenu for this menu is hidden. However if the
@@ -113,7 +112,7 @@
      * </p>
      */
     public static final EventType<Event> ON_HIDDEN =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "MENU_ON_HIDDEN");
+            new EventType<Event>(Event.ANY, "MENU_ON_HIDDEN");
 
     /***************************************************************************
      *                                                                         *
--- a/javafx-ui-controls/src/javafx/scene/control/MenuItem.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/MenuItem.java	Tue Aug 21 21:38:59 2012 -0400
@@ -47,7 +47,6 @@
 import javafx.scene.input.KeyCombination;
 
 import com.sun.javafx.event.EventHandlerManager;
-import com.sun.javafx.event.EventTypeUtil;
 import com.sun.javafx.scene.control.skin.ContextMenuContent;
 import com.sun.javafx.scene.control.skin.ContextMenuSkin;
 import java.util.Collections;
@@ -331,7 +330,7 @@
     /**
      * <p>Called when a accelerator for the Menuitem is invoked</p>
      */
-    public static final EventType<Event> MENU_VALIDATION_EVENT = EventTypeUtil.registerInternalEventType
+    public static final EventType<Event> MENU_VALIDATION_EVENT = new EventType<Event>
             (Event.ANY, "MENU_VALIDATION_EVENT");
     
     /**
--- a/javafx-ui-controls/src/javafx/scene/control/Tab.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/Tab.java	Tue Aug 21 21:38:59 2012 -0400
@@ -43,7 +43,6 @@
 import javafx.scene.Node;
 
 import com.sun.javafx.event.EventHandlerManager;
-import com.sun.javafx.event.EventTypeUtil;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -381,7 +380,7 @@
      * <p>Called when the tab becomes selected or unselected.</p>
      */
     public static final EventType<Event> SELECTION_CHANGED_EVENT = 
-            EventTypeUtil.registerInternalEventType(Event.ANY, "SELECTION_CHANGED_EVENT");
+            new EventType<Event> (Event.ANY, "SELECTION_CHANGED_EVENT");
     private ObjectProperty<EventHandler<Event>> onSelectionChanged;
 
     /**
@@ -427,7 +426,7 @@
     /**
      * <p>Called when a user closes this tab. This is useful for freeing up memory.</p>
      */
-    public static final EventType<Event> CLOSED_EVENT = EventTypeUtil.registerInternalEventType(Event.ANY, "TAB_CLOSED");
+    public static final EventType<Event> CLOSED_EVENT = new EventType<Event> (Event.ANY, "TAB_CLOSED");
     private ObjectProperty<EventHandler<Event>> onClosed;
 
     /**
--- a/javafx-ui-controls/src/javafx/scene/control/TableColumn.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/TableColumn.java	Tue Aug 21 21:38:59 2012 -0400
@@ -53,7 +53,6 @@
 
 import com.sun.javafx.scene.control.skin.Utils;
 import com.sun.javafx.event.EventHandlerManager;
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.collections.WeakListChangeListener;
 import com.sun.javafx.scene.control.skin.*;
 import java.util.Collections;
@@ -170,7 +169,7 @@
         return (EventType<CellEditEvent<S,T>>) EDIT_ANY_EVENT;
     }
     private static final EventType<?> EDIT_ANY_EVENT =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "TABLE_COLUMN_EDIT");
+            new EventType(Event.ANY, "TABLE_COLUMN_EDIT");
 
     /**
      * Indicates that the user has performed some interaction to start an edit
@@ -182,7 +181,7 @@
         return (EventType<CellEditEvent<S,T>>) EDIT_START_EVENT;
     }
     private static final EventType<?> EDIT_START_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_START");
+            new EventType(editAnyEvent(), "EDIT_START");
 
     /**
      * Indicates that the editing has been canceled, meaning that no change should
@@ -193,7 +192,7 @@
         return (EventType<CellEditEvent<S,T>>) EDIT_CANCEL_EVENT;
     }
     private static final EventType<?> EDIT_CANCEL_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_CANCEL");
+            new EventType(editAnyEvent(), "EDIT_CANCEL");
 
     /**
      * Indicates that the editing has been committed by the user, meaning that
@@ -205,7 +204,7 @@
         return (EventType<CellEditEvent<S,T>>) EDIT_COMMIT_EVENT;
     }
     private static final EventType<?> EDIT_COMMIT_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_COMMIT");
+            new EventType(editAnyEvent(), "EDIT_COMMIT");
     
     
     
--- a/javafx-ui-controls/src/javafx/scene/control/TreeItem.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/TreeItem.java	Tue Aug 21 21:38:59 2012 -0400
@@ -42,7 +42,6 @@
 import javafx.scene.Node;
 
 import com.sun.javafx.event.EventHandlerManager;
-import com.sun.javafx.event.EventTypeUtil;
 import javafx.beans.property.ReadOnlyBooleanProperty;
 import javafx.beans.property.ReadOnlyBooleanWrapper;
 import javafx.beans.property.ReadOnlyObjectProperty;
@@ -221,7 +220,7 @@
         return (EventType<TreeModificationEvent<T>>) TREE_NOTIFICATION_EVENT;
     }
     private static final EventType TREE_NOTIFICATION_EVENT
-            = EventTypeUtil.registerInternalEventType(Event.ANY, "TreeNotificationEvent");
+            = new EventType(Event.ANY, "TreeNotificationEvent");
 
     /**
      * The general EventType used when the TreeItem receives a modification that
@@ -238,7 +237,7 @@
         return (EventType<TreeModificationEvent<T>>) TREE_ITEM_COUNT_CHANGE_EVENT;
     }
     private static final EventType TREE_ITEM_COUNT_CHANGE_EVENT
-            = EventTypeUtil.registerInternalEventType(treeNotificationEvent(), "TreeItemCountChangeEvent");
+            = new EventType(treeNotificationEvent(), "TreeItemCountChangeEvent");
 
     /**
      * An EventType used when the TreeItem receives a modification to its
@@ -251,7 +250,7 @@
         return (EventType<TreeModificationEvent<T>>) BRANCH_EXPANDED_EVENT;
     }
     private static final EventType<?> BRANCH_EXPANDED_EVENT
-            = EventTypeUtil.registerInternalEventType(treeItemCountChangeEvent(), "BranchExpandedEvent");
+            = new EventType(treeItemCountChangeEvent(), "BranchExpandedEvent");
 
     /**
      * An EventType used when the TreeItem receives a modification to its
@@ -264,7 +263,7 @@
         return (EventType<TreeModificationEvent<T>>) BRANCH_COLLAPSED_EVENT;
     }
     private static final EventType<?> BRANCH_COLLAPSED_EVENT
-            = EventTypeUtil.registerInternalEventType(treeItemCountChangeEvent(), "BranchCollapsedEvent");
+            = new EventType(treeItemCountChangeEvent(), "BranchCollapsedEvent");
 
     /**
      * An EventType used when the TreeItem receives a direct modification to its
@@ -277,7 +276,7 @@
         return (EventType<TreeModificationEvent<T>>) CHILDREN_MODIFICATION_EVENT;
     }
     private static final EventType<?> CHILDREN_MODIFICATION_EVENT
-            = EventTypeUtil.registerInternalEventType(treeItemCountChangeEvent(), "ChildrenModificationEvent");
+            = new EventType(treeItemCountChangeEvent(), "ChildrenModificationEvent");
 
     /**
      * An EventType used when the TreeItem receives a modification to its
@@ -290,7 +289,7 @@
         return (EventType<TreeModificationEvent<T>>) VALUE_CHANGED_EVENT;
     }
     private static final EventType<?> VALUE_CHANGED_EVENT
-            = EventTypeUtil.registerInternalEventType(treeNotificationEvent(), "ValueChangedEvent");
+            = new EventType(treeNotificationEvent(), "ValueChangedEvent");
 
     /**
      * An EventType used when the TreeItem receives a modification to its
@@ -303,7 +302,7 @@
         return (EventType<TreeModificationEvent<T>>) GRAPHIC_CHANGED_EVENT;
     }
     private static final EventType<?> GRAPHIC_CHANGED_EVENT
-            = EventTypeUtil.registerInternalEventType(treeNotificationEvent(), "GraphicChangedEvent");
+            = new EventType(treeNotificationEvent(), "GraphicChangedEvent");
     
     
 
--- a/javafx-ui-controls/src/javafx/scene/control/TreeView.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/javafx-ui-controls/src/javafx/scene/control/TreeView.java	Tue Aug 21 21:38:59 2012 -0400
@@ -24,7 +24,6 @@
  */
 package javafx.scene.control;
 
-import com.sun.javafx.event.EventTypeUtil;
 import java.util.List;
 
 import javafx.beans.property.BooleanProperty;
@@ -136,7 +135,7 @@
         return (EventType<EditEvent<T>>) EDIT_ANY_EVENT;
     }
     private static final EventType<?> EDIT_ANY_EVENT =
-            EventTypeUtil.registerInternalEventType(Event.ANY, "TREE_VIEW_EDIT");
+            new EventType(Event.ANY, "TREE_VIEW_EDIT");
 
     /**
      * An EventType used to indicate that an edit event has started within the
@@ -149,7 +148,7 @@
         return (EventType<EditEvent<T>>) EDIT_START_EVENT;
     }
     private static final EventType<?> EDIT_START_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_START");
+            new EventType(editAnyEvent(), "EDIT_START");
 
     /**
      * An EventType used to indicate that an edit event has just been canceled
@@ -163,7 +162,7 @@
         return (EventType<EditEvent<T>>) EDIT_CANCEL_EVENT;
     }
     private static final EventType<?> EDIT_CANCEL_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_CANCEL");
+            new EventType(editAnyEvent(), "EDIT_CANCEL");
 
     /**
      * An EventType that is used to indicate that an edit in a TreeView has been
@@ -178,7 +177,7 @@
         return (EventType<EditEvent<T>>) EDIT_COMMIT_EVENT;
     }
     private static final EventType<?> EDIT_COMMIT_EVENT =
-            EventTypeUtil.registerInternalEventType(editAnyEvent(), "EDIT_COMMIT");
+            new EventType(editAnyEvent(), "EDIT_COMMIT");
     
     /**
      * Returns the number of levels of 'indentation' of the given TreeItem, 
--- a/test-stub-toolkit/src/com/sun/javafx/pgstub/StubStage.java	Tue Aug 21 17:12:14 2012 -0400
+++ b/test-stub-toolkit/src/com/sun/javafx/pgstub/StubStage.java	Tue Aug 21 21:38:59 2012 -0400
@@ -238,6 +238,19 @@
         return notificationSender;
     }
 
+    @Override
+    public void requestInput(String text, int type, double width, double height, 
+                                double Mxx, double Mxy, double Mxz, double Mxt,
+                                double Myx, double Myy, double Myz, double Myt, 
+                                double Mzx, double Mzy, double Mzz, double Mzt) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void releaseInput() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
     private interface Notification {
         void execute(TKStageListener listener);
     }