You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/01/11 21:55:47 UTC

[03/20] git commit: [flex-asjs] [refs/heads/mavenfolders] - rename/restructure folders for maven

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as
new file mode 100644
index 0000000..71b45c6
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/BrowserEvent.as
@@ -0,0 +1,475 @@
+/**
+ * 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 org.apache.flex.events
+{
+
+    COMPILE::JS {        
+        import goog.events.BrowserEvent;
+    }
+
+	/**
+	 * @fileoverview A patched, standardized event object for browser events.
+	 *
+	 * <pre>
+	 * The patched event object contains the following members:
+	 * - type           {string}    Event type, e.g. 'click'
+	 * - timestamp      {Date}      A date object for when the event was fired
+	 * - target         {Object}    The element that actually triggered the event
+	 * - currentTarget  {Object}    The element the listener is attached to
+	 * - relatedTarget  {Object}    For mouseover and mouseout, the previous object
+	 * - offsetX        {number}    X-coordinate relative to target
+	 * - offsetY        {number}    Y-coordinate relative to target
+	 * - clientX        {number}    X-coordinate relative to viewport
+	 * - clientY        {number}    Y-coordinate relative to viewport
+	 * - screenX        {number}    X-coordinate relative to the edge of the screen
+	 * - screenY        {number}    Y-coordinate relative to the edge of the screen
+	 * - button         {number}    Mouse button. Use isButton() to test.
+	 * - keyCode        {number}    Key-code
+	 * - ctrlKey        {boolean}   Was ctrl key depressed
+	 * - altKey         {boolean}   Was alt key depressed
+	 * - shiftKey       {boolean}   Was shift key depressed
+	 * - metaKey        {boolean}   Was meta key depressed
+	 * - defaultPrevented {boolean} Whether the default action has been prevented
+	 * - state          {Object}    History state object
+	 *
+	 * NOTE: The keyCode member contains the raw browser keyCode. For normalized
+	 * key and character code use {@link goog.events.KeyHandler}.
+	 * </pre>
+	 *
+	 * @langversion 3.0
+	 * @playerversion Flash 10.2
+	 * @playerversion AIR 2.6
+	 * @productversion FlexJS 0.0
+	 */
+	COMPILE::JS
+	public class BrowserEvent
+	{
+
+		//--------------------------------------
+		//   Property
+		//--------------------------------------
+
+		/**
+		 * @type {?goog.events.BrowserEvent}
+		 */
+		public var wrappedEvent:Object;
+
+		//--------------------------------------
+		//   Function
+		//--------------------------------------
+
+		/**
+		 * Was altKey key depressed.
+		 * @type {boolean}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get altKey():Boolean
+		{
+			return wrappedEvent.altKey;
+		}
+
+		/**
+		 * Which mouse button was pressed.
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get button():uint
+		{
+			return wrappedEvent.button;
+		}
+
+		/**
+		 * CharCode of key press.
+		 * Native browser event.charCode || (type == 'keypress' ? event.keyCode : 0);
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get charCode():uint
+		{
+			return wrappedEvent.charCode;
+		}
+
+		/**
+		 * X-coordinate relative to the window.
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get clientX():Number
+		{
+			return wrappedEvent.clientX;
+		}
+
+		/**
+		 * Y-coordinate relative to the window.
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get clientY():Number
+		{
+			return wrappedEvent.clientY;
+		}
+
+		/**
+		 * Was ctrl key depressed.
+		 * @type {boolean}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get ctrlKey():Boolean
+		{
+			return wrappedEvent.ctrlKey;
+		}
+
+		/**
+		 * The element the listener is attached to.
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get currentTarget():Object
+		{
+			var o:Object = wrappedEvent.currentTarget;
+
+			if (o && o.flexjs_wrapper)
+				return o.flexjs_wrapper;
+			return o;
+		}
+
+		/**
+		 * Whether the default action has been prevented.
+		 * @type {boolean}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get defaultPrevented():Boolean
+		{
+			return wrappedEvent.defaultPrevented;
+		}
+
+		/**
+		 * The underlying browser event object.
+		 * (for debugging purposes)
+		 *
+		 * @return The underlying browser event object.
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function getBrowserEvent():Object
+		{
+			return wrappedEvent.getBrowserEvent();
+		}
+
+		/**
+		 * Tests to see which button was pressed during the event. This is really only
+		 * useful in IE and Gecko browsers. And in IE, it's only useful for
+		 * mousedown/mouseup events, because click only fires for the left mouse button.
+		 *
+		 * Safari 2 only reports the left button being clicked, and uses the value '1'
+		 * instead of 0. Opera only reports a mousedown event for the middle button, and
+		 * no mouse events for the right button. Opera has default behavior for left and
+		 * middle click that can only be overridden via a configuration setting.
+		 *
+		 * There's a nice table of this mess at http://www.unixpapa.com/js/mouse.html.
+		 *
+		 * @param button The button to test for.
+		 * @return True if button was pressed.
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function isButton(button:int):Boolean
+		{
+			return wrappedEvent.isButton(button);
+		}
+
+		/**
+		 * Whether this has an "action"-producing mouse button.
+		 *
+		 * By definition, this includes left-click on windows/linux, and left-click
+		 * without the ctrl key on Macs.
+		 *
+		 * @return The result.
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function isMouseActionButton():Boolean
+		{
+			return wrappedEvent.isMouseActionButton();
+		}
+
+		/**
+		 * Keycode of key press.
+		 * Native browser event.keyCode || 0;
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get keyCode():uint
+		{
+			return wrappedEvent.keyCode;
+		}
+
+		/**
+		 * Whether the meta key was pressed at time of event.
+		 * @type {boolean}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get metaKey():Boolean
+		{
+			return wrappedEvent.metaKey;
+		}
+
+		/**
+		 * X-coordinate relative to target.
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get offsetX():Number
+		{
+			return wrappedEvent.offsetX;
+		}
+
+		/**
+		 * Y-coordinate relative to target.
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get offsetY():Number
+		{
+			return wrappedEvent.offsetY;
+		}
+
+		/**
+		 * Whether the default platform modifier key was pressed at time of event.
+		 * (This is control for all platforms except Mac, where it's Meta.)
+		 * @type {boolean}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get platformModifierKey():Boolean
+		{
+			return platformModifierKey;
+		}
+
+		/**
+		 * Whether the default action has been prevented.
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function preventDefault():void
+		{
+			wrappedEvent.preventDefault();
+		}
+
+		/**
+		 * For mouseover and mouseout, the previous object.
+		 * @type {object}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get relatedTarget():Object
+		{
+			var o:Object = wrappedEvent.relatedTarget;
+
+			if (o && o.flexjs_wrapper)
+				return o.flexjs_wrapper;
+			return o;
+		}
+
+		/**
+		 * X-coordinate relative to the monitor.
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get screenX():Number
+		{
+			return wrappedEvent.screenX;
+		}
+
+		/**
+		 * Y-coordinate relative to the monitor.
+		 * @type {number}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get screenY():Number
+		{
+			return wrappedEvent.screenY;
+		}
+
+		/**
+		 * Was shiftKey key depressed.
+		 * @type {boolean}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get shiftKey():Boolean
+		{
+			return wrappedEvent.shiftKey;
+		}
+
+		/**
+		 * History state object, only set for PopState events where it's a copy of the
+		 * state object provided to pushState or replaceState.
+		 * @type {Object}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get state():Object
+		{
+			return wrappedEvent.state;
+		}
+
+        /**
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+         */
+		public function stopImmediatePropagation():void
+		{
+			//wrappedEvent.stopImmediatePropagation(); // not in goog.events.BrowserEvent
+			wrappedEvent.stopPropagation();
+		}
+
+        /**
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+         */
+		public function stopPropagation():void
+		{
+			wrappedEvent.stopPropagation();
+		}
+
+		/**
+		 * The element that actually triggered the event.
+		 * @type {object}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get target():Object
+		{
+			var o:Object = wrappedEvent.target;
+
+			if (o && o.flexjs_wrapper)
+				return o.flexjs_wrapper;
+			return o;
+		}
+
+		/**
+		 * A date object for when the event was fired.
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get timestamp():Date
+		{
+			return wrappedEvent.timestamp;
+		}
+
+		/**
+		 * Event type, e.g. 'click'.
+		 * @type {string}
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.0
+		 */
+		public function get type():String
+		{
+			return wrappedEvent.type;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/CustomEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/CustomEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/CustomEvent.as
new file mode 100644
index 0000000..a7921df
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/CustomEvent.as
@@ -0,0 +1,64 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events
+{
+
+	/**
+	 * MXML auto-imports flash.events.Event which then requires
+	 * full qualification to use org.apache.flex.events.Event.
+	 * Use CustomEvent to skip all that extra typing.
+	 *
+	 * @langversion 3.0
+	 * @playerversion Flash 10.2
+	 * @playerversion AIR 2.6
+	 * @productversion FlexJS 0.0
+	 */
+	public class CustomEvent extends Event
+	{
+
+		//--------------------------------------
+		//   Constructor
+		//--------------------------------------
+
+		/**
+		 * Constructor.
+		 *
+		 * @param type The name of the event.
+		 * @param bubbles Whether the event bubbles.
+		 * @param cancelable Whether the event can be canceled.
+		 *
+		 * @langversion 3.0
+		 * @playerversion Flash 10.2
+		 * @playerversion AIR 2.6
+		 * @productversion FlexJS 0.0
+		 */
+		public function CustomEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
+		{
+            COMPILE::AS3
+            {
+                super(type, bubbles, cancelable);                    
+            }
+            COMPILE::JS
+            {
+                super(type);
+            }
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
new file mode 100644
index 0000000..e79762a
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ElementEvents.as
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events
+{
+
+	[ExcludeClass]
+	COMPILE::AS3
+	public class ElementEvents
+	{
+	}
+
+	COMPILE::JS
+	public class ElementEvents
+	{
+
+		//--------------------------------------
+		//   Static Property
+		//--------------------------------------
+
+		static public const elementEvents:Object = {
+                'click': 1,
+                'change': 1,
+                'keyup': 1,
+                'keydown': 1,
+                'load': 1,
+				'mouseover': 1,
+				'mouseout': 1,
+				'mouseup': 1,
+				'mousedown': 1,
+				'mousemove': 1,
+				'rollover': 1,
+				'rollout': 1
+			};
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
new file mode 100644
index 0000000..765db3d
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/Event.as
@@ -0,0 +1,128 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events
+{
+    COMPILE::AS3 {
+        import flash.events.Event;
+    }
+        
+	COMPILE::JS {
+		import goog.events.Event;
+	}
+
+	/**
+	 * This class simply wraps flash.events.Event so that
+	 * no flash packages are needed on the JS side.
+	 * At runtime, this class is not always the event object
+	 * that is dispatched.  In most cases we are dispatching
+	 * DOMEvents instead, so as long as you don't actually
+	 * check the typeof(event) it will work
+	 *
+	 * @langversion 3.0
+	 * @playerversion Flash 10.2
+	 * @playerversion AIR 2.6
+	 * @productversion FlexJS 0.0
+	 */
+	COMPILE::AS3
+	public class Event extends flash.events.Event
+	{
+
+		//--------------------------------------
+		//   Static Property
+		//--------------------------------------
+
+		static public const CHANGE:String = "change";
+
+		//--------------------------------------
+		//   Constructor
+		//--------------------------------------
+
+		/**
+		 * Constructor.
+		 *
+		 * @param type The name of the event.
+		 * @param bubbles Whether the event bubbles.
+		 * @param cancelable Whether the event can be canceled.
+		 *
+		 * @langversion 3.0
+		 * @playerversion Flash 10.2
+		 * @playerversion AIR 2.6
+		 * @productversion FlexJS 0.0
+		 */
+		public function Event(type:String, bubbles:Boolean = false, cancelable:Boolean = false)
+		{
+			super(type, bubbles, cancelable);
+		}
+
+		//--------------------------------------
+		//   Property
+		//--------------------------------------
+
+		//--------------------------------------
+		//   Function
+		//--------------------------------------
+
+		/**
+		 * @private
+		 */
+		public override function clone():flash.events.Event
+		{
+			return cloneEvent();
+		}
+
+		/**
+		 * Create a copy/clone of the Event object.
+		 *
+		 * @langversion 3.0
+		 * @playerversion Flash 10.2
+		 * @playerversion AIR 2.6
+		 * @productversion FlexJS 0.0
+		 */
+		public function cloneEvent():org.apache.flex.events.Event
+		{
+			return new org.apache.flex.events.Event(type, bubbles, cancelable);
+		}
+	}
+
+    COMPILE::JS
+    public class Event extends goog.events.Event {
+
+		public static const CHANGE:String = "change";
+
+        public function Event(type:String, target:Object = null) {
+            super(type, target);
+        }
+
+		public function init(type:String):void {
+			this.type = type;
+		}
+		
+		/**
+		 * Google Closure doesn't seem to support stopImmediatePropagation, but
+		 * actually the HTMLElementWrapper fireListener override sends a
+		 * BrowserEvent in most/all cases where folks need stopImmediatePropagation
+		 * so we put this in here for compile time since it will exist in
+		 * the BrowserEvent that does get sent around.
+		 */
+		public function stopImmediatePropagation():void
+		{
+			// do nothing
+		}
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as
new file mode 100644
index 0000000..ceec8ee
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as
@@ -0,0 +1,66 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events
+{
+	COMPILE::JS
+	{
+        import goog.events;
+		import goog.events.EventTarget;
+	}
+
+	COMPILE::AS3
+	{
+		import flash.events.EventDispatcher;
+	}
+
+	/**
+	 * This class simply wraps flash.events.EventDispatcher so that
+	 * no flash packages are needed on the JS side.
+	 *
+	 * @langversion 3.0
+	 * @playerversion Flash 10.2
+	 * @playerversion AIR 2.6
+	 * @productversion FlexJS 0.0
+	 */
+	COMPILE::AS3
+	public class EventDispatcher extends flash.events.EventDispatcher implements IEventDispatcher
+	{
+		/**
+		 * Constructor.
+		 *
+		 * @langversion 3.0
+		 * @playerversion Flash 10.2
+		 * @playerversion AIR 2.6
+		 * @productversion FlexJS 0.0
+		 */
+		public function EventDispatcher()
+		{
+			super();
+		}
+	}
+
+	COMPILE::JS
+	public class EventDispatcher extends goog.events.EventTarget implements IEventDispatcher
+	{
+        public function hasEventListener(type:String):Boolean
+        {
+            return goog.events.hasListener(this, type);
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as
new file mode 100644
index 0000000..6d8c684
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/IEventDispatcher.as
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events
+{
+	COMPILE::AS3
+	{
+		import flash.events.IEventDispatcher;
+	}
+
+	/**
+	 * This class simply wraps flash.events.EventDispatcher so that
+	 * no flash packages are needed on the JS side.
+	 *
+	 * @langversion 3.0
+	 * @playerversion Flash 10.2
+	 * @playerversion AIR 2.6
+	 * @productversion FlexJS 0.0
+	 */
+	COMPILE::AS3
+	public interface IEventDispatcher extends flash.events.IEventDispatcher
+	{
+
+	}
+
+	COMPILE::JS
+	public interface IEventDispatcher
+	{
+        function addEventListener(type:String, handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = null):void;
+        function removeEventListener(type:String, handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = null):void;
+        //function hasEventListener(type:String):Boolean;
+        function dispatchEvent(event:Object):Boolean;
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
new file mode 100644
index 0000000..756438f
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/MouseEvent.as
@@ -0,0 +1,290 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events
+{	
+    COMPILE::AS3
+    {
+        import flash.events.MouseEvent;
+    }
+    COMPILE::JS
+    {
+        import window.MouseEvent;
+    }
+    
+    import org.apache.flex.core.IUIBase;
+    import org.apache.flex.geom.Point;
+    import org.apache.flex.utils.PointUtils;
+    
+    
+	/**
+	 *  Mouse events
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+	 */
+	public class MouseEvent extends Event
+	{
+        private static function platformConstant(s:String):String
+        {
+            COMPILE::AS3
+            {
+                return s;
+            }
+            COMPILE::JS
+            {
+                return s.toLowerCase();
+            }
+        }
+        
+		public static const MOUSE_DOWN:String = platformConstant("mouseDown");
+        public static const MOUSE_MOVE:String = platformConstant("mouseMove");
+		public static const MOUSE_UP:String = platformConstant("mouseUp");
+		public static const MOUSE_OUT:String = platformConstant("mouseOut");
+		public static const MOUSE_OVER:String = platformConstant("mouseOver");
+		public static const ROLL_OVER:String = platformConstant("rollOver");
+		public static const ROLL_OUT:String = platformConstant("rollOut");
+        public static const CLICK:String = "click";
+        
+         /**
+         *  Constructor.
+         *  
+         *  @param type The name of the event.
+         *  @param bubbles Whether the event bubbles.
+         *  @param cancelable Whether the event can be canceled.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public function MouseEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false,
+                                   localX:Number = NaN, localY:Number = NaN, 
+                                   relatedObject:Object = null, 
+                                   ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false, 
+                                   buttonDown:Boolean = false, delta:int = 0, 
+                                   commandKey:Boolean = false, controlKey:Boolean = false, 
+                                   clickCount:int = 0)
+		{
+            COMPILE::AS3
+            {
+                super(type, bubbles, cancelable);                    
+            }
+            COMPILE::JS
+            {
+                super(type);
+            }
+            this.localX = localX;
+            this.localY = localY;
+            this.relatedObject = relatedObject;
+            this.ctrlKey = ctrlKey;
+            this.altKey = altKey;
+            this.shiftKey = shiftKey;
+            this.buttonDown = buttonDown;
+            this.delta = delta;
+            this.commandKey = commandKey;
+            this.controlKey = controlKey;
+            this.clickCount = clickCount;
+		}
+        
+        private var _localX:Number;
+        public function get localX():Number
+        {
+            return _localX;
+        }
+        public function set localX(value:Number):void
+        {
+            _localX = value;
+            _stagePoint = null;
+        }
+        
+        private var _localY:Number;
+        public function get localY():Number
+        {
+            return _localY;
+        }
+        public function set localY(value:Number):void
+        {
+            _localY = value;
+            _stagePoint = null;
+        }
+        
+        public var relatedObject:Object;
+        public var ctrlKey:Boolean;
+        public var altKey:Boolean;
+        public var shiftKey:Boolean;
+        public var buttonDown:Boolean;
+        public var delta:int;
+        public var commandKey:Boolean;
+        public var controlKey:Boolean;
+        public var clickCount:int;
+        
+        // these map directly to JS MouseEvent fields.
+        public function get clientX():Number
+        {
+            return screenX;
+        }
+        public function set clientX(value:Number):void
+        {
+            localX = value;
+        }
+        public function get clientY():Number
+        {
+            return screenY;
+        }
+        public function set clientY(value:Number):void
+        {
+            localY = value;
+        }
+        
+        private var _stagePoint:Point;
+        
+        public function get screenX():Number
+        {
+            if (!target) return localX;
+            if (!_stagePoint)
+            {
+                var localPoint:Point = new Point(localX, localY);
+                _stagePoint = PointUtils.localToGlobal(localPoint, target);
+            }
+            return _stagePoint.x;
+        }
+        
+        public function get screenY():Number
+        {
+            if (!target) return localY;
+            if (!_stagePoint)
+            {
+                var localPoint:Point = new Point(localX, localY);
+                _stagePoint = PointUtils.localToGlobal(localPoint, target);
+            }
+            return _stagePoint.y;            
+        }
+        
+        /**
+         * @private
+         */
+        COMPILE::JS
+        private static function installRollOverMixin():Boolean
+        {
+            window.addEventListener(MOUSE_OVER,
+                mouseOverHandler, false);
+            return true;
+        }
+        
+        
+        /**
+         * @param e The event.
+         * RollOver/RollOut is entirely implemented in mouseOver because
+         * when a parent and child share an edge, you only get a mouseout
+         * for the child and not the parent and you need to send rollout
+         * to both.  A similar issue exists for rollover.
+         */
+        COMPILE::JS
+        private static function mouseOverHandler(e:MouseEvent):void
+        {
+            var j:int;
+            var m:int;
+            var outs:Array;
+            var me:window.MouseEvent;
+            var parent:Object;
+            var target:Object = e.target.flexjs_wrapper;
+            if (target == null)
+                return; // probably over the html tag
+            var targets:Array = MouseEvent.targets;
+            var index:int = targets.indexOf(target);
+            if (index != -1) {
+                // get all children
+                outs = targets.slice(index + 1);
+                m = outs.length;
+                for (j = 0; j < m; j++) {
+                    me = makeMouseEvent(
+                        ROLL_OUT, e);
+                    outs[j].element.dispatchEvent(me);
+                }
+                MouseEvent.targets = targets.slice(0, index + 1);
+            }
+            else {
+                var newTargets:Array = [target];
+                if (!('parent' in target))
+                    parent = null;
+                else
+                    parent = target.parent;
+                while (parent) {
+                    index = targets.indexOf(parent);
+                    if (index == -1) {
+                        newTargets.unshift(parent);
+                        if (!('parent' in parent))
+                            break;
+                        parent = parent.parent;
+                    }
+                    else {
+                        outs = targets.slice(index + 1);
+                        m = outs.length;
+                        for (j = 0; j < m; j++) {
+                            me = makeMouseEvent(
+                                ROLL_OUT, e);
+                            outs[j].element.dispatchEvent(me);
+                        }
+                        targets = targets.slice(0, index + 1);
+                        break;
+                    }
+                }
+                var n:int = newTargets.length;
+                for (var i:int = 0; i < n; i++) {
+                    me = makeMouseEvent(
+                        ROLL_OVER, e);
+                    newTargets[i].element.dispatchEvent(me);
+                }
+                MouseEvent.targets = targets.concat(newTargets);
+            }
+        }
+        
+        
+        /**
+         */
+        COMPILE::JS
+        private static var rollOverMixin:Boolean =
+            installRollOverMixin();
+        
+        
+        /**
+         */
+        COMPILE::JS
+        private static var targets:Array = [];
+
+        /**
+         * @param {string} type The event type.
+         * @param {Event} e The mouse event.
+         * @return {MouseEvent} The new event.
+         */
+        COMPILE::JS
+        private static function makeMouseEvent(type:String, e:window.MouseEvent):window.MouseEvent
+        {
+            var out:window.MouseEvent = new window.MouseEvent(type);
+            out.initMouseEvent(type, false, false,
+                e.view, e.detail, e.screenX, e.screenY,
+                e.clientX, e.clientY, e.ctrlKey, e.altKey,
+                e.shiftKey, e.metaKey, e.button, e.relatedTarget);
+            return out;
+        };
+
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ValueChangeEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ValueChangeEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ValueChangeEvent.as
new file mode 100644
index 0000000..45fabbd
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ValueChangeEvent.as
@@ -0,0 +1,129 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events
+{
+    
+    /**
+     *  The ValueChangeEvent class replaces the PropertyChangeEvent as
+     *  the default event for property changes used in the databinding
+     *  subsystem.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class ValueChangeEvent extends Event
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public function ValueChangeEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, 
+										 oldValue:Object = null, newValue:Object = null)
+		{
+            COMPILE::AS3
+            {
+    			super(type, bubbles, cancelable);
+            }
+            COMPILE::JS
+            {
+                super(type);
+            }
+			this.oldValue = oldValue;
+			this.newValue = newValue;
+		}
+		
+        /**
+         *  The value of the property before it was changed.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public var oldValue:Object;
+
+        /**
+         *  The value of the property after it was changed.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public var newValue:Object;
+
+        /**
+         *  The name of the property.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public var propertyName:String;
+
+        /**
+         *  The object that owns the property.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public var source:Object;
+		
+        /**
+         *  The default event type.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public static const VALUE_CHANGE:String = "valueChange";
+        
+        /**
+         *  A convenience method to create an instance of the ValueChangeEvent.
+         * 
+         *  @param source The source of the object.
+         *  @param name The name of the event.
+         *  @param oldValue The value before it was changed.
+         *  @param newValue The value after it was changed.
+         *  @return An instance of the ValueChangeEvent.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public static function createUpdateEvent(source:Object, name:String, oldValue:Object, newValue:Object):ValueChangeEvent
+        {
+            var event:ValueChangeEvent = new ValueChangeEvent(VALUE_CHANGE, false, false, oldValue, newValue);
+            event.propertyName = name;
+            event.source = source;
+            return event;
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ValueEvent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ValueEvent.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ValueEvent.as
new file mode 100644
index 0000000..6088680
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/ValueEvent.as
@@ -0,0 +1,68 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events
+{
+    
+    /**
+     *  The ValueEvent class is used for dispatching an event
+	 *  that has one useful value
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class ValueEvent extends Event
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public function ValueEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, 
+										 value:Object = null)
+		{
+            COMPILE::AS3
+            {
+    			super(type, bubbles, cancelable);
+            }
+            
+            COMPILE::JS
+            {
+                super(type);
+            }
+            
+			this.value = value;
+		}
+		
+        /**
+         *  The value.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public var value:Object;
+
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
new file mode 100644
index 0000000..a969a44
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseEventConverter.as
@@ -0,0 +1,166 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events.utils
+{	
+    import flash.events.Event;
+    import flash.events.IEventDispatcher;
+    import flash.events.MouseEvent;
+    
+    import org.apache.flex.events.MouseEvent;
+    
+	/**
+	 *  Mouse events conversion.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+	 */
+    COMPILE::AS3
+	public class MouseEventConverter
+	{
+        /**
+         *  A map of events that are not converted, because there is no
+         *  JS equivalent.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public static const UNCONVERTED_EVENTS:Object = { mouseWheel: 1 };
+        
+        /**
+         *  A method used to copy properties from flash.events.MouseEvent to 
+         *  org.apache.flex.events.Event.  The set of properties can be
+         *  different based on platform and runtime.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public static var convert:Function = flashConvert;
+        
+        private static function flashConvert(event:flash.events.MouseEvent):org.apache.flex.events.MouseEvent
+        {
+            if (UNCONVERTED_EVENTS[event.type])
+                return null;
+            
+            var newEvent:org.apache.flex.events.MouseEvent = 
+                  new org.apache.flex.events.MouseEvent(event.type, event.bubbles, event.cancelable,
+                                                        event.localX, event.localY, event.relatedObject,
+                                                        event.ctrlKey, event.altKey, event.shiftKey,
+                                                        event.buttonDown, event.delta);
+
+            return newEvent;
+        }
+        
+        private static function mouseEventConverter(event:flash.events.Event):void
+        {
+            if (event is flash.events.MouseEvent && (!(event is org.apache.flex.events.MouseEvent)))
+            {
+                var newEvent:org.apache.flex.events.MouseEvent = 
+                    convert(flash.events.MouseEvent(event));
+                if (newEvent) 
+                {
+                    // some events are not converted if there are no JS equivalents
+                    event.stopImmediatePropagation();
+                    event.target.dispatchEvent(newEvent);
+                }
+                else
+                    trace("did not convert", event.type);
+            }
+        }
+        
+        /**
+         *  The list of events to convert.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public static var allConvertedEvents:Array = [
+            flash.events.MouseEvent.CLICK,
+            flash.events.MouseEvent.MOUSE_DOWN,
+            flash.events.MouseEvent.MOUSE_UP,
+            flash.events.MouseEvent.ROLL_OVER,
+            flash.events.MouseEvent.ROLL_OUT,
+            flash.events.MouseEvent.MOUSE_OVER,
+            flash.events.MouseEvent.MOUSE_OUT,
+            flash.events.MouseEvent.MOUSE_MOVE
+            ];
+            
+        /**
+         *  The list of events to convert on each instance.
+         *  Per-instance killers are needed for "out" events because
+         *  they can be sent after the instance is removed from the 
+         *  display list so the main converter can't intercept them
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public static var perInstanceConvertedEvents:Array = [
+            flash.events.MouseEvent.MOUSE_UP,
+            flash.events.MouseEvent.ROLL_OUT,
+            flash.events.MouseEvent.MOUSE_OUT
+        ];
+        
+        /**
+         *  The event handler that converts the events.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public static var eventHandler:Function = mouseEventConverter;
+        
+        /**
+         *  Set up the top level converter.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public static function setupAllConverters(target:IEventDispatcher):void
+        {
+            for each (var eventType:String in allConvertedEvents)
+                target.addEventListener(eventType, eventHandler, true, 9999);
+        }
+
+        /**
+         *  Set up some event handlers on each instance.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public static function setupInstanceConverters(target:IEventDispatcher):void
+        {
+            for each (var eventType:String in perInstanceConvertedEvents)
+                target.addEventListener(eventType, eventHandler, false, 9999);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseUtils.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseUtils.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseUtils.as
new file mode 100644
index 0000000..5dbc934
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/utils/MouseUtils.as
@@ -0,0 +1,103 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.events.utils
+{
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.MouseEvent;
+
+	/**
+	 *  This class maps common event functions for MouseEvent
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class MouseUtils
+	{
+		public function MouseUtils()
+		{
+		}
+		
+		/**
+		 *  Returns the event target.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		static public function eventTarget(event:Event):Object
+		{
+			return event.target;
+		}
+		
+		/**
+		 *  Returns the localX value.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		static public function localX(event:MouseEvent):Number
+		{
+			return event.localX;
+		}
+		
+		/**
+		 *  Returns the localY value.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		static public function localY(event:MouseEvent):Number
+		{
+			return event.localY;
+		}
+		
+		/**
+		 *  Returns the globel X value.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		static public function globalX(event:MouseEvent):Number
+		{
+			return event.screenX;
+		}
+		
+		/**
+		 *  Returns the global Y value.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		static public function globalY(event:MouseEvent):Number
+		{
+			return event.screenY;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Point.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Point.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Point.as
new file mode 100644
index 0000000..46d4464
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Point.as
@@ -0,0 +1,72 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.geom
+{
+COMPILE::AS3
+{
+    import flash.geom.Point;
+}
+
+/**
+ *  The Point class is a utility class for holding x and y values, not that you
+ *  can't use it to hold a width and height value.  
+ *  
+ *  The ActionScript version simply wraps flash.geom.Point to enable cross
+ *  compilation.
+ * 
+ *  @langversion 3.0
+ *  @playerversion Flash 10.2
+ *  @playerversion AIR 2.6
+ *  @productversion FlexJS 0.0
+ */
+COMPILE::AS3
+public class Point extends flash.geom.Point
+{
+    public function Point(x:Number = 0, y:Number = 0)
+    {
+        super(x, y);
+    }
+}
+
+/**
+ *  The Point class is a utility class for holding x and y values, not that you
+ *  can't use it to hold a width and height value.  
+ *  
+ *  The ActionScript version simply wraps flash.geom.Point to enable cross
+ *  compilation.
+ * 
+ *  @langversion 3.0
+ *  @playerversion Flash 10.2
+ *  @playerversion AIR 2.6
+ *  @productversion FlexJS 0.0
+ */
+COMPILE::JS
+public class Point
+{
+    public function Point(x:Number = 0, y:Number = 0)
+    {
+        this.x = x;
+        this.y = y;
+    }
+    
+    public var x:Number;
+    public var y:Number;
+}
+
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as
new file mode 100644
index 0000000..a68c080
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Rectangle.as
@@ -0,0 +1,95 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.geom
+{
+COMPILE::AS3
+{
+    import flash.geom.Rectangle;
+}
+
+/**
+ *  The Rectangle class is a utility class for holding four coordinates of
+ *  a rectangle
+ *  
+ *  The ActionScript version simply wraps flash.geom.Rectangle to enable cross
+ *  compilation.
+ * 
+ *  @langversion 3.0
+ *  @playerversion Flash 10.2
+ *  @playerversion AIR 2.6
+ *  @productversion FlexJS 0.0
+ */
+COMPILE::AS3
+public class Rectangle extends flash.geom.Rectangle
+{
+    public function Rectangle(x:Number = 0, y:Number = 0, width:Number = 0, height:Number = 0)
+    {
+        super(x, y, width, height);
+    }
+}
+
+/**
+ *  The Rectangle class is a utility class for holding four coordinates of
+ *  a rectangle
+ *  
+ *  The ActionScript version simply wraps flash.geom.Rectangle to enable cross
+ *  compilation.
+ * 
+ *  @langversion 3.0
+ *  @playerversion Flash 10.2
+ *  @playerversion AIR 2.6
+ *  @productversion FlexJS 0.0
+ */
+COMPILE::JS
+public class Rectangle
+{
+    public function Rectangle(x:Number = 0, y:Number = 0, width:Number = 0, height:Number = 0)
+    {
+        left = x;
+        top = y;
+        this.width = width;
+        this.height = height;
+    }
+    
+    public var left:Number;
+    public var top:Number;
+    public var width:Number;
+    public var height:Number;
+
+    public function get right():Number
+    {
+        return left + width;
+    }
+    public function set right(value:Number):void
+    {
+        width = value - left;
+    }
+    
+    public function get bottom():Number
+    {
+        return top + height;
+    }
+    public function set bottom(value:Number):void
+    {
+        height = value - top;
+    }
+}
+
+
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Size.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Size.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Size.as
new file mode 100644
index 0000000..4c02934
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/geom/Size.as
@@ -0,0 +1,41 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.geom
+{
+
+/**
+ *  The Size class is a utility class for holding width and height values.  
+ * 
+ *  @langversion 3.0
+ *  @playerversion Flash 10.2
+ *  @playerversion AIR 2.6
+ *  @productversion FlexJS 0.0
+ */
+public class Size 
+{
+    public function Size(width:Number = 0, height:Number = 0)
+    {
+        this.width = width;
+        this.height = height;
+    }
+    
+    public var width:Number;
+    public var height:Number;
+}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/states/AddItems.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/states/AddItems.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/AddItems.as
new file mode 100644
index 0000000..7f780fa
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/AddItems.as
@@ -0,0 +1,101 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// shim the mx classes for states.  Be careful about updates to the main SDK's
+// version as that will move the timestamp ahead of this one and then it will
+// take precedence over this one at link time.
+package org.apache.flex.states
+{
+    import org.apache.flex.core.IDocument;
+    
+    [ExcludeClass]
+    
+    /**
+     *  The AddItems class is one of the classes in the
+     *  view states subsystem.  Note that the FlexJS
+     *  versions are simply data structures interpreted
+     *  by a central States implementation.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class AddItems implements IDocument
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+		public function AddItems()
+		{
+			super();
+		}
+		
+        public var items:Array;
+        
+		public var itemsDescriptorIndex:int;     
+
+        public var itemsDescriptor:ItemAndDescriptor;     
+        
+        public var destination:String;
+        
+        public var propertyName:String;
+        
+        public var position:String;
+        
+        public var relativeTo:String;
+        
+        public var document:Object;
+        
+        public function setDocument(document:Object, id:String = null):void
+        {
+            this.document = document;
+            var data:Object = document.mxmlsd[itemsDescriptorIndex];
+            if (data is Array)
+            {
+                itemsDescriptor = new ItemAndDescriptor();
+                itemsDescriptor.descriptor = data as Array;
+                // replace the entry in the document so subsequent
+                // addItems know it is shared
+                document.mxmlsd[itemsDescriptorIndex] = itemsDescriptor;
+            }
+            else
+                itemsDescriptor = data as ItemAndDescriptor;
+        }
+        
+        /**
+         * @private 
+         * Initialize this object from a descriptor.
+         */
+        public function initializeFromObject(properties:Object):Object
+        {
+            for (var p:String in properties)
+            {
+                this[p] = properties[p];
+            }
+            
+            return Object(this);
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/states/ItemAndDescriptor.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/states/ItemAndDescriptor.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/ItemAndDescriptor.as
new file mode 100644
index 0000000..308c86e
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/ItemAndDescriptor.as
@@ -0,0 +1,70 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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 org.apache.flex.states
+{
+    
+    [ExcludeClass]
+    
+    /**
+     *  A data structure to store an instance
+     *  and its descriptor array.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class ItemAndDescriptor
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+		public function ItemAndDescriptor()
+		{
+			super();
+		}
+		
+        /**
+         *  The item or items created from the descriptor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        public var items:Object;
+        
+        /**
+         *  The descriptor used to create the item(s).
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        public var descriptor:Array;     
+        
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/states/SetEventHandler.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/states/SetEventHandler.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/SetEventHandler.as
new file mode 100644
index 0000000..f3b9ae1
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/SetEventHandler.as
@@ -0,0 +1,79 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+// shim the mx classes for states
+package org.apache.flex.states
+{
+    import org.apache.flex.core.IDocument;
+    
+    [ExcludeClass]
+    
+    /**
+     *  The SetEventHandler class is one of the classes in the
+     *  view states subsystem.  Note that the FlexJS
+     *  versions are simply data structures interpreted
+     *  by a central States implementation.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class SetEventHandler implements IDocument
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+		public function SetEventHandler()
+		{
+			super();
+		}
+		
+        public var target:String;
+        
+        public var name:String;
+        
+        public var handlerFunction:Function;
+
+        public var document:Object;
+        
+        public function setDocument(document:Object, id:String = null):void
+        {
+            this.document = document;
+        }
+        
+        /**
+         * @private 
+         * Initialize this object from a descriptor.
+         */
+        public function initializeFromObject(properties:Object):Object
+        {
+            for (var p:String in properties)
+            {
+                this[p] = properties[p];
+            }
+            
+            return Object(this);
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/states/SetProperty.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/states/SetProperty.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/SetProperty.as
new file mode 100644
index 0000000..b6c2e1a
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/SetProperty.as
@@ -0,0 +1,81 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+// shim the mx classes for states
+package org.apache.flex.states
+{
+    import org.apache.flex.core.IDocument;
+    
+    [ExcludeClass]
+    
+    /**
+     *  The SetProperty class is one of the classes in the
+     *  view states subsystem.  Note that the FlexJS
+     *  versions are simply data structures interpreted
+     *  by a central States implementation.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class SetProperty implements IDocument
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+		public function SetProperty()
+		{
+			super();
+		}
+		
+        public var target:String;
+        
+        public var name:String;
+        
+        public var value:*;
+
+        public var previousValue:*;
+        
+        public var document:Object;
+        
+        public function setDocument(document:Object, id:String = null):void
+        {
+            this.document = document;
+        }
+        
+        /**
+         * @private 
+         * Initialize this object from a descriptor.
+         */
+        public function initializeFromObject(properties:Object):Object
+        {
+            for (var p:String in properties)
+            {
+                this[p] = properties[p];
+            }
+            
+            return Object(this);
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a903508e/frameworks/projects/Core/src/main/flex/org/apache/flex/states/State.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/states/State.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/State.as
new file mode 100644
index 0000000..271e837
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/states/State.as
@@ -0,0 +1,83 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// shim the mx classes for states
+package org.apache.flex.states
+{
+    /**
+     *  The State class is one of the classes in the
+     *  view states subsystem.  It is used to declare a 
+     *  view state in an MXML document.  This is one of the
+     *  few classes in FlexJS that use the same name as
+     *  a Flex SDK class because some of the IDEs and
+     *  compilers are hard-coded to assume this name.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class State
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @param properties This parameter is not used in FlexJS and exists to make legacy compilers happy.
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+		public function State(properties:Object = null)
+		{
+			super();
+		}
+		
+        /**
+         *  The name of the state.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+		public var name:String;
+        
+        /**
+         *  Comma-delimited list of state groups of the state.
+         *  It is not an array so don't use square brackets [].
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        public var stateGroups:String;
+        
+        /**
+         *  The array of overrides.  This is normally set by the compiler.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        public var overrides:Array;
+	}
+}