fix Matrix4x4.view() null pointer exception when eye = null by making sure it's init. do a default value before being used to compute the direction

--- src/aerys/minko/type/math/Matrix4x4.as
+++ src/aerys/minko/type/math/Matrix4x4.as
@@ -688,97 +688,19 @@
 			return true;
 		}

-		public function orient(eye			: Vector4,
-							   direction	: Vector4,
-							   up			: Vector4   = null) : Matrix4x4
-		{
-
-			var eye_X		: Number = eye._vector.x;
-			var eye_Y		: Number = eye._vector.y;
-			var eye_Z		: Number = eye._vector.z;
-
-			var z_axis_X	: Number = direction._vector.x;
-			var z_axis_Y	: Number = direction._vector.y;
-			var z_axis_Z	: Number = direction._vector.z;
-
-			var up_axis_x	: Number;
-			var up_axis_y	: Number;
-			var up_axis_z	: Number;
-
-			if (up != null)
-			{
-				// if up axis was given, take it. An error will be raised later if it is colinear to direction
-				up_axis_x = up._vector.x;
-				up_axis_y = up._vector.y;
-				up_axis_z = up._vector.z;
-			}
-			else
-			{
-				// if direction is colinear to (0, 1, 0), take (1, 0, 0) as up vector
-				if (z_axis_X == 0 && z_axis_Y != 0 && z_axis_Z == 0)
-				{
-					up_axis_x = 1;
-					up_axis_y = 0;
-					up_axis_z = 0;
-				}
-				// else, take (0, 0, 1)
-				else
-				{
-					up_axis_x = 0;
-					up_axis_y = 1;
-					up_axis_z = 0;
-				}
-			}
-
-			var l : Number;
-
-			l = 1 / Math.sqrt(z_axis_X * z_axis_X + z_axis_Y * z_axis_Y + z_axis_Z * z_axis_Z);
-
-			z_axis_X *= l;
-			z_axis_Y *= l;
-			z_axis_Z *= l;
-
-			var x_axis_X : Number = up_axis_y * z_axis_Z - z_axis_Y * up_axis_z;
-			var x_axis_Y : Number = up_axis_z * z_axis_X - z_axis_Z * up_axis_x;
-			var x_axis_Z : Number = up_axis_x * z_axis_Y - z_axis_X * up_axis_y;
-
-			l = 1 / Math.sqrt(x_axis_X * x_axis_X + x_axis_Y * x_axis_Y + x_axis_Z * x_axis_Z);
-
-			x_axis_X *= l;
-			x_axis_Y *= l;
-			x_axis_Z *= l;
-
-			var y_axis_X : Number = z_axis_Y * x_axis_Z - x_axis_Y * z_axis_Z;
-			var y_axis_Y : Number = z_axis_Z * x_axis_X - x_axis_Z * z_axis_X;
-			var y_axis_Z : Number = z_axis_X * x_axis_Y - x_axis_X * z_axis_Y;
-
-			l = 1 / Math.sqrt(y_axis_X * y_axis_X + y_axis_Y * y_axis_Y + y_axis_Z * y_axis_Z);
-
-			y_axis_X *= l;
-			y_axis_Y *= l;
-			y_axis_Z *= l;
-
-			if ((x_axis_X == 0 && x_axis_Y == 0 && x_axis_Z == 0)
-				|| (y_axis_X == 0 && y_axis_Y == 0 && y_axis_Z == 0))
-			{
-				throw new Error(
-					'Invalid argument(s): the eye direction (look at - eye position) '
-					+ 'and the up vector appear to be the same.'
-				);
-			}
-
-			var	m41	: Number	= - (x_axis_X * eye_X + x_axis_Y * eye_Y + x_axis_Z * eye_Z);
-			var	m42	: Number	= - (y_axis_X * eye_X + y_axis_Y * eye_Y + y_axis_Z * eye_Z);
-			var	m43	: Number	= - (z_axis_X * eye_X + z_axis_Y * eye_Y + z_axis_Z * eye_Z);
-
-			initialize(
-				x_axis_X,	y_axis_X,	z_axis_X,	0.,
-				x_axis_Y,	y_axis_Y,	z_axis_Y,	0.,
-				x_axis_Z,	y_axis_Z,	z_axis_Z,	0.,
-				m41,		m42,		m43,		1.
-			);
-
-			return this;
+		public function orientTo(direction	: Vector4,
+								 position	: Vector4	= null,
+								 up			: Vector4   = null) : Matrix4x4
+		{
+			position ||= getTranslation();
+
+			view(
+				position,
+				Vector4.add(position, direction),
+				up// || deltaTransformVector(Vector4.Y_AXIS)
+			);
+
+			return invert();
 		}

 		public function lookAt(target	: Vector4,
@@ -786,7 +708,7 @@
 							   up		: Vector4	= null) : Matrix4x4
 		{
 			view(
-				position || transformVector(Vector4.ZERO),
+				position,
 				target,
 				up || deltaTransformVector(Vector4.Y_AXIS)
 			);
@@ -827,9 +749,96 @@
 							 lookAt : Vector4,
 							 up		: Vector4	= null) : Matrix4x4
 		{
+			eye ||= getTranslation();
+
 			var direction : Vector4 = Vector4.subtract(lookAt, eye, TMP_VECTOR4);

-			return orient(eye, direction, up);
+			var eye_X		: Number = eye._vector.x;
+			var eye_Y		: Number = eye._vector.y;
+			var eye_Z		: Number = eye._vector.z;
+
+			var z_axis_X	: Number = direction._vector.x;
+			var z_axis_Y	: Number = direction._vector.y;
+			var z_axis_Z	: Number = direction._vector.z;
+
+			var up_axis_x	: Number;
+			var up_axis_y	: Number;
+			var up_axis_z	: Number;
+
+			if (up != null)
+			{
+				// if up axis was given, take it. An error will be raised later if it is colinear to direction
+				up_axis_x = up._vector.x;
+				up_axis_y = up._vector.y;
+				up_axis_z = up._vector.z;
+			}
+			else
+			{
+				// if direction is colinear to (0, 1, 0), take (1, 0, 0) as up vector
+				if (z_axis_X == 0 && z_axis_Y != 0 && z_axis_Z == 0)
+				{
+					up_axis_x = 1;
+					up_axis_y = 0;
+					up_axis_z = 0;
+				}
+					// else, take (0, 0, 1)
+				else
+				{
+					up_axis_x = 0;
+					up_axis_y = 1;
+					up_axis_z = 0;
+				}
+			}
+
+			var l : Number;
+
+			l = 1 / Math.sqrt(z_axis_X * z_axis_X + z_axis_Y * z_axis_Y + z_axis_Z * z_axis_Z);
+
+			z_axis_X *= l;
+			z_axis_Y *= l;
+			z_axis_Z *= l;
+
+			var x_axis_X : Number = up_axis_y * z_axis_Z - z_axis_Y * up_axis_z;
+			var x_axis_Y : Number = up_axis_z * z_axis_X - z_axis_Z * up_axis_x;
+			var x_axis_Z : Number = up_axis_x * z_axis_Y - z_axis_X * up_axis_y;
+
+			l = 1 / Math.sqrt(x_axis_X * x_axis_X + x_axis_Y * x_axis_Y + x_axis_Z * x_axis_Z);
+
+			x_axis_X *= l;
+			x_axis_Y *= l;
+			x_axis_Z *= l;
+
+			var y_axis_X : Number = z_axis_Y * x_axis_Z - x_axis_Y * z_axis_Z;
+			var y_axis_Y : Number = z_axis_Z * x_axis_X - x_axis_Z * z_axis_X;
+			var y_axis_Z : Number = z_axis_X * x_axis_Y - x_axis_X * z_axis_Y;
+
+			l = 1 / Math.sqrt(y_axis_X * y_axis_X + y_axis_Y * y_axis_Y + y_axis_Z * y_axis_Z);
+
+			y_axis_X *= l;
+			y_axis_Y *= l;
+			y_axis_Z *= l;
+
+			if ((x_axis_X == 0 && x_axis_Y == 0 && x_axis_Z == 0)
+				|| (y_axis_X == 0 && y_axis_Y == 0 && y_axis_Z == 0))
+			{
+				throw new Error(
+					'Invalid argument(s): the eye direction (look at - eye position) '
+					+ 'and the up vector appear to be the same.'
+				);
+			}
+
+			var	m41	: Number	= -(x_axis_X * eye_X + x_axis_Y * eye_Y + x_axis_Z * eye_Z);
+			var	m42	: Number	= -(y_axis_X * eye_X + y_axis_Y * eye_Y + y_axis_Z * eye_Z);
+			var	m43	: Number	= -(z_axis_X * eye_X + z_axis_Y * eye_Y + z_axis_Z * eye_Z);
+
+			initialize(
+				x_axis_X,	y_axis_X,	z_axis_X,	0.,
+				x_axis_Y,	y_axis_Y,	z_axis_Y,	0.,
+				x_axis_Z,	y_axis_Z,	z_axis_Z,	0.,
+				m41,		m42,		m43,		1.
+			);
+
+			return this;
 		}

 		public function perspectiveFoV(fov		: Number,


When we reinitialize the Throttle with a smaller number of allowed operations within a time period, we should preserve the oldest rather than the newest ones, or we'll most likely be in immediate and unfair violation of the limit.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@5504 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/Throttle.as
+++ src/as/com/threerings/util/Throttle.as
@@ -86,10 +86,9 @@
             ArrayUtil.copy(_ops, _oldestOp, ops, oldestOp, _ops.length - _oldestOp);

         } else if (operations < _ops.length) {
-            // copy to a smaller buffer, truncating older operations
-            oldestOp = (_oldestOp + _ops.length - operations) % _ops.length;
-            var endCount :int = Math.min(_ops.length - oldestOp, operations);
-            ArrayUtil.copy(_ops, oldestOp, ops, 0, endCount);
+            // if we're truncating, copy the first (oldest) stamps into ops[0..]
+            var endCount :int = Math.min(_ops.length - _oldestOp, operations);
+            ArrayUtil.copy(_ops, _oldestOp, ops, 0, endCount);
             ArrayUtil.copy(_ops, 0, ops, endCount, operations - endCount);
             _oldestOp = 0;
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 12291
Author:   smgilson@adobe.com
Date:     2009-11-30T20:05:25.519075Z

Log Message:
-----------
update old effects examples and add new ones. Add back the @includeExample tags to effects classes that had them removed for some reason.

QE notes: -
Doc notes: -
Bugs: -
Reviewer: -
Tests run: - checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/easing/examples</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/easing/examples/assets</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Power.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Sine.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/animation/examples</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/animation/examples/assets</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/examples/Scale3DEffectExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/SimpleMotionPath.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/easing/examples/LinearEffectExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/easing/examples/SinePowerEffectExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/animation/examples/KeyFrameEffectExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/easing/examples/assets/logo.jpg</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Animate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/treeClasses/MXTreeItemRenderer.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/easing</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/examples/AnimateFilterEffectExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/examples/Rotate3DEffectExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Bounce.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Keyframe.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/easing/examples/BounceElasticEffectExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/examples/ScaleEffectExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/examples/SetActionEffectExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/animation/examples/assets/logo.jpg</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/animation</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/examples/Move3DEffectExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Elastic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/effects/examples/RotateEffectExample.mxml</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1283418 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/effects/Animate.as
+++ frameworks/projects/spark/src/spark/effects/Animate.as
@@ -87,6 +87,8 @@
  *  </pre>
  *
  *  @see spark.effects.supportClasses.AnimateInstance
+ *
+ *  @includeExample examples/AnimateEffectExample.mxml
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -212,8 +214,6 @@
      *
      * @see spark.effects.easing.Sine
      *
-     *  @includeExample examples/AnimateEffectExample.mxml
-     *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5


old change - reason delete recovery.

old change - reason delete recovery.

--- Arguments/src/Controller/ArgumentController.as
+++ Arguments/src/Controller/ArgumentController.as
@@ -119,7 +119,7 @@
 		//-------------------- Load a saved Map --------------------------------//
 		public function loadMapMain(id:String,historyClear:Boolean):void{

-			if(model.userSessionModel.loggedIn()){
+		//	if(model.userSessionModel.loggedIn()){
 				if(historyClear){
 					var thisMapInfo:UserSessionModel =  AGORAModel.getInstance().userSessionModel;
 					((Vector.<Object>)(thisMapInfo.historyMapsVisited)).splice(0,((Vector.<Object>)(thisMapInfo.historyMapsVisited)).length);;
@@ -155,9 +155,9 @@
 				}else{
 					model.rechain=false;
 				}
-			}else{
-				Alert.show(Language.lookup("MustRegister"));
-			}
+		//	}else{
+		//		Alert.show(Language.lookup("MustRegister"));
+			//}
 		}
 		//-------------------- Load a saved Map With History --------------------------------//
 		public function loadMap(id:String):void{
@@ -562,6 +562,7 @@
 			}
 		}

+		//vinodh
 		public function addSupportingArgumentTry(statementModel:StatementModel){
 			if(checkArgUnderConstruction()){
 				return statementModel;
@@ -836,8 +837,11 @@

 				if(model.statementFunction == StatementModel.STATEMENT){
 					if(model.supportingArguments.length == 0 && model.objections.length == 0 && (model.argumentTypeModel && model.argumentTypeModel.inferenceModel.supportingArguments.length == 0)){
-						if(/*model.statement.text!="" &&*/ checkArgUnderConstruction()){
-							return;
+						model.statementType;
+						if(AGORAModel.getInstance().agoraMapModel.argUnderConstruction){
+							AGORAModel.getInstance().agoraMapModel.argUnderConstruction=false;
+							// line added for reason delete .. first time add
+							//return;
 						}
 						AGORAModel.getInstance().requested = true;
 						/* for empty nodes


Code tidy

Code tidy

--- swc/src/com/mesmotronic/ane/ImmersiveMode.as
+++ swc/src/com/mesmotronic/ane/ImmersiveMode.as
@@ -71,14 +71,19 @@
 		{
 			var version:String = Capabilities.version.substr(0,3);

-			if (version == 'AND')
+			switch (version)
 			{
-				context = ExtensionContext.createExtensionContext('com.mesmotronic.ane.immersivemode', '');
-
-				if (context)
+				case 'AND':
 				{
-					context.call('init');
-					context.addEventListener(StatusEvent.STATUS, context_statusHandler);
+					context = ExtensionContext.createExtensionContext('com.mesmotronic.ane.immersivemode', '');
+
+					if (context)
+					{
+						context.call('init');
+						context.addEventListener(StatusEvent.STATUS, context_statusHandler);
+					}
+
+					break;
 				}
 			}
 		}


Messed up the last commit.

Messed up the last commit.

--- rtmfpcat.as
+++ rtmfpcat.as
@@ -109,7 +109,10 @@
                     return;
                 }
             } else {
-                tor_addr = DEFAULT_TOR_CLIENT_ADDR;
+                if (proxy_mode)
+                    tor_addr = DEFAULT_TOR_PROXY_ADDR;
+                else
+                    tor_addr = DEFAULT_TOR_CLIENT_ADDR;
             }

             main();


Move this convenience method up here to the ClientObject because it's... well... convenient.

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@6068 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/presents/data/ClientObject.as
+++ src/as/com/threerings/presents/data/ClientObject.as
@@ -63,6 +63,15 @@
     }

     /**
+     * Convenience wrapper around {@link #checkAccess(Permission)} that simply returns a boolean
+     * indicating whether or not this client has the permission rather than an explanation.
+     */
+    public function hasAccess (perm :Permission) :Boolean
+    {
+        return checkAccess(perm) == null;
+    }
+
+    /**
      * Checks whether or not this client has the specified permission.
      *
      * @return null if the user has access, a fully-qualified translatable message string


- formatted advancedform

- formatted advancedform

--- src/flexlib/containers/AdvancedForm.as
+++ src/flexlib/containers/AdvancedForm.as
@@ -1,491 +1,554 @@
 /*
-Copyright (c) 2007 FlexLib Contributors.  See:
-    http://code.google.com/p/flexlib/wiki/ProjectContributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
+   Copyright (c) 2007 FlexLib Contributors.  See:
+   http://code.google.com/p/flexlib/wiki/ProjectContributors
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy of
+   this software and associated documentation files (the "Software"), to deal in
+   the Software without restriction, including without limitation the rights to
+   use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+   of the Software, and to permit persons to whom the Software is furnished to do
+   so, subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in all
+   copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+   SOFTWARE.
+ */
 /*
-	Class that provides Reset and Undo/Redo functionality for a Form
-*/
+   Class that provides Reset and Undo/Redo functionality for a Form
+ */
 package flexlib.containers
 {
-
-import flash.events.*;
-import flash.ui.KeyLocation;
-import flash.ui.Keyboard;
-import flash.utils.describeType;
-
-import mx.containers.*;
-import mx.controls.*;
-import mx.core.Container;
-import mx.core.UIComponent;
-import mx.events.ValidationResultEvent;
-import mx.messaging.errors.MessagingError;
-import mx.validators.ValidationResult;
-import mx.validators.Validator;
-
-[IconFile("AdvancedForm.png")]
-
-/**
- *  The Advanced Form component provides Reset, Undo and Redo functionality.
- *
- *
The Advanced Form component provides Reset, Undo and Redo functionality.
- * 	Undo and Redo are accessed by pressing "ctrl-Z" and "ctrl-Y" repsectively.

- *
- *  @mxml
- *
- *

- *  <flexlib:AdvancedForm
- * 	  Properties
- * 	  undoHistorySize="5"
- * 	  modelType="shared|memory"
- *
- *    >
- *    ...
- *      child tags
- *    ...
- *  </flexlib:AdvancedForm>
- *

- */
-public class AdvancedForm extends Form
-{
-
-	//[Bindable]
-	//public var debug:String = "";
-
-	//--------------------------------------------------------------------------
-	//
-	//  Variables
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 */
-	private var noSnapshotFlag:Boolean = false;
-
-	/**
-	 *  @private Key for reset snapshot
-	 */
-	private var resetSnapshotKey:String = "reset";
-
-	/**
-	 *  @private
-	 */
-	private var undoCounter:int = 0;
-
-	/**
-	 *  @private
-	 */
-	private var undoCurrentIndex:int = -1;
-
-	/**
-	 *  @private
-	 */
-	private var modelStack:Object;
-
-	//--------------------------------------------------------------------------
-	//
-	//  Properties
-	//
-	//--------------------------------------------------------------------------
-
-	//----------------------------------
-	//  validators
-	//----------------------------------
-
-	/**
-	 *  @private LookupTable of isValid flags
-	 */
-	private var validators:Object;
-
-	//----------------------------------
-	//  undoHistorySize
-	//----------------------------------
-
-	/**
-	 *  @private
-	 */
-	private var _undoHistorySize:int = 5;
-
-	/**
-	 *  The undoHistorySize defaults the number of undos.
-	 *
-	 *  @default true
-	 */
-	public function set undoHistorySize( value:int ):void {
-		_undoHistorySize = value;
-	}
-	public function get undoHistorySize():int {
-		return _undoHistorySize;
-	}
-
-	//----------------------------------
-	//  modelType
-	//----------------------------------
-
-	/**
-	 *  @private
-	 */
-	private var _modelType:String = "shared";
-
-	[Inspectable(category="General", enumeration="shared,memory", defaultValue="shared")]
-	/**
-	 *  The modelStack handles the data.
-	 *
-	 *  @default true
-	 */
-	public function set modelType( value:String ):void {
-		if( value == "shared" ) {
-
-		} else {
-
-		}
-	}
-	public function get modelType():String {
-		return _modelType;
-	}
-
-	//----------------------------------
-	//  isValid
-	//----------------------------------
-
-	/**
-	 *  Property that allows for one place to know if the From is valid
-	 *
-	 *  Default to true, if any Validators are present then it will be set to false
-	 */
-	[Bindable]
-	public var isValid:Boolean = true;
-
-	//--------------------------------------------------------------------------
-	//
-	//  Methods
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 * Resets values of the form
-	 */
-	public function resetForm():void {
-		var children:Array = this.getChildren();
-		resetValues( children, resetSnapshotKey );
-		undoCounter = 0;
-		undoCurrentIndex = -1;
-		modelStack = new Object();
-		snapshotValues( this.getChildren(), resetSnapshotKey );
-	}
-
-	/**
-	 * @private
-	 */
-	private function myKeyDownHandler( event:KeyboardEvent ):void {
-
-		if( event.ctrlKey && event.keyCode == 90 && !( event.target is NumericStepper ) ) {
-			event.stopPropagation();
-			event.preventDefault()
-			doUndo();
-
-		} else if( event.ctrlKey && event.keyCode == 89 && !( event.target is NumericStepper ) ) {
-			doRedo();
-		} else {
-			super.keyDownHandler( event );
-		}
-	}
-
-	/**
-	 * Creates snapshot of values for reseting
-	 */
-	override protected function childrenCreated():void {
-		super.childrenCreated();
-		// Find Validators and add EventListeners
-		parent.addEventListener( "creationComplete", setValidatorListenerEvents );
-
-		this.parent.addEventListener( KeyboardEvent.KEY_DOWN, myKeyDownHandler, false, 0, true );
-	}
-
-	/**
-	 * 	Loop through all Validtors at the same level as the Form and set a Event listener for Valid and Invalid
-	 */
-	private function setValidatorListenerEvents( event:Event ):void
-	{
-		// Take First Snapshot After All Children have been created
-		snapshotValues( this.getChildren(), resetSnapshotKey );
-
-		var container:Object = document;
-
-		// Check parent control to make sure its capable of having children
-		if( !( container is Container ) )
-			return;
-
-		// Describe Parent
-		var classInfo:XML = describeType( container );
-
-		// Reset Defaults
-		validators = new Array();
-		isValid = true;
-
-        // Loop over all parentDocument's properties looking for Validators
-        for each (var a:XML in classInfo..accessor) {
-        	try {
-				if( container[ a.@name ] is Validator ) {
-					//Logger.debug( "setValidatorListenerEvents:Property is Validator: " + a.@name );
-
-					// If Validator is found default to false
-					isValid = false;
-
-					var obj:Object = new Object();
-					obj.reference = container[ a.@name ];
-					obj.isValid = false;
-					validators.push( obj );
-
-					// Set Valid and Invalid week reference listeners on the Validators
-					Validator( container[ a.@name ] ).addEventListener( ValidationResultEvent.VALID, setValidFlag, false, 0, true );
-					Validator( container[ a.@name ] ).addEventListener( ValidationResultEvent.INVALID, setValidFlag, false, 0, true );
-				}
-         	} catch( err:Error ) {
-         		if( err.errorID != 1077 ) {
-	         		//Logger.error( "AdvancedForm:setValidatorListenerEvents: " + err.message );
-         		}
-         	}
-		}
-	}
-
-	/**
-	 * 	Handles all valid and invalid events on the validators
-	 */
-	private function setValidFlag( event:ValidationResultEvent ):void
-	{
-		var tmpFlag:Boolean = true;
-		for( var i:int = 0; i < validators.length; i++ ) {
-			if( validators[ i ].reference == event.target ) {
-				//Logger.debug( "setValidFlag:event.target: " + event.type );
-				validators[ i ].isValid = ( event.type == ValidationResultEvent.VALID );
-			}
-			tmpFlag = ( tmpFlag && validators[ i ].isValid );
-		}
-		isValid = tmpFlag;
-	}
-
-	/**
-	 *
-	 */
-	private function snapshotValues( obj:Object, snapshotKey:String ):void {
-		try {
-			if( modelStack == null )
-				modelStack = new Object();
-
-			if( modelStack[ snapshotKey ] == null )
-				modelStack[ snapshotKey ] = new Object();
-
-			var snapshotModel:Object = modelStack[ snapshotKey ];
-
-			for( var a:String in obj ) {
-				if( obj[ a ] is FormItem ) {
-					snapshotValues( obj[ a ].getChildren(), snapshotKey );
-				} else {
-					var tmpObj:Object = obj[ a ];
-
-					var tmpID:String = tmpObj.toString();
-					if( snapshotModel[ tmpID ] == undefined )
-						snapshotModel[ tmpID ] = new Object();
-					var value:Object;
-					if( tmpObj is TextInput || tmpObj is TextArea )
-						value = tmpObj.text;
-					if( tmpObj is RadioButton || tmpObj is CheckBox )
-						value = tmpObj.selected;
-					if( tmpObj is ComboBox )
-						value = tmpObj.selectedIndex;
-					if( tmpObj is NumericStepper )
-						value = tmpObj.value;
-
-					if( tmpObj is TextInput || tmpObj is TextArea )
-						UIComponent( tmpObj ).addEventListener( FocusEvent.FOCUS_OUT, textInputChange );
-					else
-						UIComponent( tmpObj ).addEventListener( Event.CHANGE, controlChange );
-
-					snapshotModel[ tmpID ] = value;
-				}
-			}
-		} catch( err:Error ) {
-			//Logger.error( "AdvancedForm:snapshotValues: " + err.message );
-		}
-	}
-
-	/**
-	 * 	@private
-	 */
-	private function textInputChange( event:FocusEvent ):void {
-		var snapshotModel:Object = getLastestSnapshot();
-		var tmpKey:String = event.target.parent.toString();
-		if( snapshotModel[ tmpKey ] == undefined )
-			;//throw new Error( "Snapshot not defined for key = " + tmpKey );
-		if( snapshotModel[ tmpKey ] != event.target.parent.text ) {
-			takeSnapshot();
-		}
-	}
-
-	/**
-	 * 	@private
-	 */
-	private function controlChange( event:Event ):void {
-		if( event.target is RadioButton && !event.target.selected )
-			takeSnapshot();
-		if( !(event.target is RadioButton) )
-			takeSnapshot();
-
-	}
-
-	/**
-	 * 	@private
-	 */
-	private function doUndo():void {
-		//debug += "\ndoUndo: undoCurrentIndex: " + undoCurrentIndex + " undoCounter: " + undoCounter;
-		noSnapshotFlag = true;
-		var index:int = undoCurrentIndex - 1;
-		if( index >= ( undoCounter - 1 - undoHistorySize ) && index > -2 ) {
-			undoCurrentIndex--;
-			//debug += "\ndoUndo: resetValues: " + undoCurrentIndex;
-			resetValues( this.getChildren(), getSnapshotKey( undoCurrentIndex ) );
-
-		}
-		noSnapshotFlag = false;
-	}
-
-	/**
-	 * 	@private
-	 */
-	private function doRedo():void {
-		//debug += "\ndoRedo: undoCurrentIndex: " + undoCurrentIndex + " undoCounter: " + undoCounter;
-		noSnapshotFlag = true;
-		var index:int = undoCurrentIndex + 1;
-		if( index < undoCounter ) {
-			undoCurrentIndex++;
-			resetValues( this.getChildren(), getSnapshotKey( undoCurrentIndex ) );
-		}
-		noSnapshotFlag = false;
-	}
-
-	/**
-	 * 	@private
-	 */
-	private function takeSnapshot():void {
-		if( !noSnapshotFlag ) {
-			if( undoCurrentIndex < undoCounter - 1 )
-				undoCounter = undoCurrentIndex + 1;
-			//debug += "\ntakeSnaphost: undoCurrentIndex: " + undoCurrentIndex + " undoCounter: " + undoCounter;
-			snapshotValues( this.getChildren(), undoCounter+"" );
-			undoCurrentIndex = undoCounter;
-			undoCounter++;
-		}
-	}
-
-	/**
-	 * 	@private
-	 */
-	private function getLastestSnapshot():Object {
-		if( undoCurrentIndex > -1 )
-			return modelStack[ undoCurrentIndex+"" ];
-		else
-			return modelStack[ resetSnapshotKey ];
-	}
-
-	/**
-	 * 	@private
-	 */
-	private function getSnapshotKey( coutner:int ):String {
-		if( coutner >= 0 )
-			return coutner+"";
-		else
-			return resetSnapshotKey;
-	}
-
-	/**
-	 *
-	 */
-	private function resetValues( obj:Object, snapshotKey:String ):void {
-		if( modelStack[ snapshotKey ] == undefined )
-			throw new Error( "Invalid snapshot" );
-
-		// Disable all Validators
-		try {
-			for( var i:int = 0; i < validators.length; i++ ) {
-				isValid = false;
-				Validator( validators[ i ].reference ).enabled = false;
-				validators[ i ].isValid = false;
-			}
-		} catch( err:Error ) {
-			//Logger.error( "AdvancedForm:resetValues:Disabling Validators: " + err.message );
-		}
-
-		var snapshotModel:Object = modelStack[ snapshotKey ];
-
-		for( var a:String in obj ) {
-			if( obj[ a ] is FormItem ) {
-				resetValues( obj[ a ].getChildren(), snapshotKey );
-			} else {
-				var tmpObj:Object = obj[ a ];
-
-				var tmpID:String = tmpObj.toString();
-				if( snapshotModel[ tmpID ] == undefined
-					&& ( tmpObj is Container
-						|| ( !(tmpObj is TextInput)
-							&& !(tmpObj is RadioButton)
-							&& !(tmpObj is ComboBox)
-							&& !(tmpObj is NumericStepper) )
-						) )
-					continue;
-				if( snapshotModel[ tmpID ] == undefined )
-					throw new Error( "Invalid obj in snapshot: " + tmpID );
-				var value:Object;
-				if( tmpObj is TextInput || tmpObj is TextArea )
-					tmpObj.text = snapshotModel[ tmpID ];
-				if( tmpObj is RadioButton || tmpObj is CheckBox )
-					tmpObj.selected = snapshotModel[ tmpID ];
-				if( tmpObj is ComboBox )
-					tmpObj.selectedIndex = snapshotModel[ tmpID ];
-				if( tmpObj is NumericStepper )
-					tmpObj.value = snapshotModel[ tmpID ];
-			}
-		}
-
-		// Enable all Validators
-		try {
-			for( i = 0; i < validators.length; i++ ) {
-				Validator( validators[ i ].reference ).enabled = true;
-			}
-		} catch( err:Error ) {
-			//Logger.error( "AdvancedForm:resetValues:Disabling Validators: " + err.message );
-		}
-	}
-
-	/**
-	 * 	Gather references and defaults of all the children
-	 */
-	private function strChildren( obj:Object ):String {
-		var str:String = "";
-		for( var a:String in obj ) {
-			str += a + "=[" + obj[ a ] + "]\n";
-		}
-		return str;
-	}
-
-
-}
+
+  import flash.events.*;
+  import flash.ui.KeyLocation;
+  import flash.ui.Keyboard;
+  import flash.utils.describeType;
+
+  import mx.containers.*;
+  import mx.controls.*;
+  import mx.core.Container;
+  import mx.core.UIComponent;
+  import mx.events.ValidationResultEvent;
+  import mx.messaging.errors.MessagingError;
+  import mx.validators.ValidationResult;
+  import mx.validators.Validator;
+
+  [IconFile("AdvancedForm.png")]
+
+  /**
+   *  The Advanced Form component provides Reset, Undo and Redo functionality.
+   *
+   *
The Advanced Form component provides Reset, Undo and Redo functionality.
+   * 	Undo and Redo are accessed by pressing "ctrl-Z" and "ctrl-Y" repsectively.

+   *
+   *  @mxml
+   *
+   *

+   *  <flexlib:AdvancedForm
+   * 	  Properties
+   * 	  undoHistorySize="5"
+   * 	  modelType="shared|memory"
+   *
+   *    >
+   *    ...
+   *      child tags
+   *    ...
+   *  </flexlib:AdvancedForm>
+   *

+   */
+  public class AdvancedForm extends Form
+  {
+
+    //[Bindable]
+    //public var debug:String = "";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private var noSnapshotFlag:Boolean = false;
+
+    /**
+     *  @private Key for reset snapshot
+     */
+    private var resetSnapshotKey:String = "reset";
+
+    /**
+     *  @private
+     */
+    private var undoCounter:int = 0;
+
+    /**
+     *  @private
+     */
+    private var undoCurrentIndex:int = -1;
+
+    /**
+     *  @private
+     */
+    private var modelStack:Object;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  validators
+    //----------------------------------
+
+    /**
+     *  @private LookupTable of isValid flags
+     */
+    private var validators:Object;
+
+    //----------------------------------
+    //  undoHistorySize
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _undoHistorySize:int = 5;
+
+    /**
+     *  The undoHistorySize defaults the number of undos.
+     *
+     *  @default true
+     */
+    public function set undoHistorySize(value:int):void
+    {
+      _undoHistorySize = value;
+    }
+
+    public function get undoHistorySize():int
+    {
+      return _undoHistorySize;
+    }
+
+    //----------------------------------
+    //  modelType
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _modelType:String = "shared";
+
+    [Inspectable(category="General", enumeration="shared,memory", defaultValue="shared")]
+    /**
+     *  The modelStack handles the data.
+     *
+     *  @default true
+     */
+    public function set modelType(value:String):void
+    {
+      if (value == "shared")
+      {
+
+      }
+      else
+      {
+
+      }
+    }
+
+    public function get modelType():String
+    {
+      return _modelType;
+    }
+
+    //----------------------------------
+    //  isValid
+    //----------------------------------
+
+    /**
+     *  Property that allows for one place to know if the From is valid
+     *
+     *  Default to true, if any Validators are present then it will be set to false
+     */
+    [Bindable]
+    public var isValid:Boolean = true;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     * Resets values of the form
+     */
+    public function resetForm():void
+    {
+      var children:Array = this.getChildren();
+      resetValues(children, resetSnapshotKey);
+      undoCounter = 0;
+      undoCurrentIndex = -1;
+      modelStack = new Object();
+      snapshotValues(this.getChildren(), resetSnapshotKey);
+    }
+
+    /**
+     * @private
+     */
+    private function myKeyDownHandler(event:KeyboardEvent):void
+    {
+
+      if (event.ctrlKey && event.keyCode == 90 && !(event.target is NumericStepper))
+      {
+        event.stopPropagation();
+        event.preventDefault()
+        doUndo();
+
+      }
+      else if (event.ctrlKey && event.keyCode == 89 && !(event.target is NumericStepper))
+      {
+        doRedo();
+      }
+      else
+      {
+        super.keyDownHandler(event);
+      }
+    }
+
+    /**
+     * Creates snapshot of values for reseting
+     */
+    override protected function childrenCreated():void
+    {
+      super.childrenCreated();
+      // Find Validators and add EventListeners
+      parent.addEventListener("creationComplete", setValidatorListenerEvents);
+
+      this.parent.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDownHandler, false, 0, true);
+    }
+
+    /**
+     * 	Loop through all Validtors at the same level as the Form and set a Event listener for Valid and Invalid
+     */
+    private function setValidatorListenerEvents(event:Event):void
+    {
+      // Take First Snapshot After All Children have been created
+      snapshotValues(this.getChildren(), resetSnapshotKey);
+
+      var container:Object = document;
+
+      // Check parent control to make sure its capable of having children
+      if (!(container is Container))
+        return;
+
+      // Describe Parent
+      var classInfo:XML = describeType(container);
+
+      // Reset Defaults
+      validators = new Array();
+      isValid = true;
+
+      // Loop over all parentDocument's properties looking for Validators
+      for each (var a:XML in classInfo..accessor)
+      {
+        try
+        {
+          if (container[a.@name] is Validator)
+          {
+            //Logger.debug( "setValidatorListenerEvents:Property is Validator: " + a.@name );
+
+            // If Validator is found default to false
+            isValid = false;
+
+            var obj:Object = new Object();
+            obj.reference = container[a.@name];
+            obj.isValid = false;
+            validators.push(obj);
+
+            // Set Valid and Invalid week reference listeners on the Validators
+            Validator(container[a.@name]).addEventListener(ValidationResultEvent.VALID, setValidFlag,
+                                                           false, 0, true);
+            Validator(container[a.@name]).addEventListener(ValidationResultEvent.INVALID, setValidFlag,
+                                                           false, 0, true);
+          }
+        }
+        catch (err:Error)
+        {
+          if (err.errorID != 1077)
+          {
+            //Logger.error( "AdvancedForm:setValidatorListenerEvents: " + err.message );
+          }
+        }
+      }
+    }
+
+    /**
+     * 	Handles all valid and invalid events on the validators
+     */
+    private function setValidFlag(event:ValidationResultEvent):void
+    {
+      var tmpFlag:Boolean = true;
+      for (var i:int = 0; i < validators.length; i++)
+      {
+        if (validators[i].reference == event.target)
+        {
+          //Logger.debug( "setValidFlag:event.target: " + event.type );
+          validators[i].isValid = (event.type == ValidationResultEvent.VALID);
+        }
+        tmpFlag = (tmpFlag && validators[i].isValid);
+      }
+      isValid = tmpFlag;
+    }
+
+    /**
+     *
+     */
+    private function snapshotValues(obj:Object, snapshotKey:String):void
+    {
+      try
+      {
+        if (modelStack == null)
+          modelStack = new Object();
+
+        if (modelStack[snapshotKey] == null)
+          modelStack[snapshotKey] = new Object();
+
+        var snapshotModel:Object = modelStack[snapshotKey];
+
+        for (var a:String in obj)
+        {
+          if (obj[a] is FormItem)
+          {
+            snapshotValues(obj[a].getChildren(), snapshotKey);
+          }
+          else
+          {
+            var tmpObj:Object = obj[a];
+
+            var tmpID:String = tmpObj.toString();
+            if (snapshotModel[tmpID] == undefined)
+              snapshotModel[tmpID] = new Object();
+            var value:Object;
+            if (tmpObj is TextInput || tmpObj is TextArea)
+              value = tmpObj.text;
+            if (tmpObj is RadioButton || tmpObj is CheckBox)
+              value = tmpObj.selected;
+            if (tmpObj is ComboBox)
+              value = tmpObj.selectedIndex;
+            if (tmpObj is NumericStepper)
+              value = tmpObj.value;
+
+            if (tmpObj is TextInput || tmpObj is TextArea)
+              UIComponent(tmpObj).addEventListener(FocusEvent.FOCUS_OUT, textInputChange);
+            else
+              UIComponent(tmpObj).addEventListener(Event.CHANGE, controlChange);
+
+            snapshotModel[tmpID] = value;
+          }
+        }
+      }
+      catch (err:Error)
+      {
+        //Logger.error( "AdvancedForm:snapshotValues: " + err.message );
+      }
+    }
+
+    /**
+     * 	@private
+     */
+    private function textInputChange(event:FocusEvent):void
+    {
+      var snapshotModel:Object = getLastestSnapshot();
+      var tmpKey:String = event.target.parent.toString();
+      if (snapshotModel[tmpKey] == undefined)
+      {
+        //throw new Error( "Snapshot not defined for key = " + tmpKey );
+      }
+      if (snapshotModel[tmpKey] != event.target.parent.text)
+      {
+        takeSnapshot();
+      }
+    }
+
+    /**
+     * 	@private
+     */
+    private function controlChange(event:Event):void
+    {
+      if (event.target is RadioButton && !event.target.selected)
+        takeSnapshot();
+      if (!(event.target is RadioButton))
+        takeSnapshot();
+
+    }
+
+    /**
+     * 	@private
+     */
+    private function doUndo():void
+    {
+      //debug += "\ndoUndo: undoCurrentIndex: " + undoCurrentIndex + " undoCounter: " + undoCounter;
+      noSnapshotFlag = true;
+      var index:int = undoCurrentIndex - 1;
+      if (index >= (undoCounter - 1 - undoHistorySize) && index > -2)
+      {
+        undoCurrentIndex--;
+        //debug += "\ndoUndo: resetValues: " + undoCurrentIndex;
+        resetValues(this.getChildren(), getSnapshotKey(undoCurrentIndex));
+
+      }
+      noSnapshotFlag = false;
+    }
+
+    /**
+     * 	@private
+     */
+    private function doRedo():void
+    {
+      //debug += "\ndoRedo: undoCurrentIndex: " + undoCurrentIndex + " undoCounter: " + undoCounter;
+      noSnapshotFlag = true;
+      var index:int = undoCurrentIndex + 1;
+      if (index < undoCounter)
+      {
+        undoCurrentIndex++;
+        resetValues(this.getChildren(), getSnapshotKey(undoCurrentIndex));
+      }
+      noSnapshotFlag = false;
+    }
+
+    /**
+     * 	@private
+     */
+    private function takeSnapshot():void
+    {
+      if (!noSnapshotFlag)
+      {
+        if (undoCurrentIndex < undoCounter - 1)
+          undoCounter = undoCurrentIndex + 1;
+        //debug += "\ntakeSnaphost: undoCurrentIndex: " + undoCurrentIndex + " undoCounter: " + undoCounter;
+        snapshotValues(this.getChildren(), undoCounter + "");
+        undoCurrentIndex = undoCounter;
+        undoCounter++;
+      }
+    }
+
+    /**
+     * 	@private
+     */
+    private function getLastestSnapshot():Object
+    {
+      if (undoCurrentIndex > -1)
+        return modelStack[undoCurrentIndex + ""];
+      else
+        return modelStack[resetSnapshotKey];
+    }
+
+    /**
+     * 	@private
+     */
+    private function getSnapshotKey(coutner:int):String
+    {
+      if (coutner >= 0)
+        return coutner + "";
+      else
+        return resetSnapshotKey;
+    }
+
+    /**
+     *
+     */
+    private function resetValues(obj:Object, snapshotKey:String):void
+    {
+      if (modelStack[snapshotKey] == undefined)
+        throw new Error("Invalid snapshot");
+
+      // Disable all Validators
+      try
+      {
+        for (var i:int = 0; i < validators.length; i++)
+        {
+          isValid = false;
+          Validator(validators[i].reference).enabled = false;
+          validators[i].isValid = false;
+        }
+      }
+      catch (err:Error)
+      {
+        //Logger.error( "AdvancedForm:resetValues:Disabling Validators: " + err.message );
+      }
+
+      var snapshotModel:Object = modelStack[snapshotKey];
+
+      for (var a:String in obj)
+      {
+        if (obj[a] is FormItem)
+        {
+          resetValues(obj[a].getChildren(), snapshotKey);
+        }
+        else
+        {
+          var tmpObj:Object = obj[a];
+
+          var tmpID:String = tmpObj.toString();
+          if (snapshotModel[tmpID] == undefined
+            && (tmpObj is Container
+            || (!(tmpObj is TextInput)
+            && !(tmpObj is RadioButton)
+            && !(tmpObj is ComboBox)
+            && !(tmpObj is NumericStepper))
+            ))
+            continue;
+          if (snapshotModel[tmpID] == undefined)
+            throw new Error("Invalid obj in snapshot: " + tmpID);
+          var value:Object;
+          if (tmpObj is TextInput || tmpObj is TextArea)
+            tmpObj.text = snapshotModel[tmpID];
+          if (tmpObj is RadioButton || tmpObj is CheckBox)
+            tmpObj.selected = snapshotModel[tmpID];
+          if (tmpObj is ComboBox)
+            tmpObj.selectedIndex = snapshotModel[tmpID];
+          if (tmpObj is NumericStepper)
+            tmpObj.value = snapshotModel[tmpID];
+        }
+      }
+
+      // Enable all Validators
+      try
+      {
+        for (i = 0; i < validators.length; i++)
+        {
+          Validator(validators[i].reference).enabled = true;
+        }
+      }
+      catch (err:Error)
+      {
+        //Logger.error( "AdvancedForm:resetValues:Disabling Validators: " + err.message );
+      }
+    }
+
+    /**
+     * 	Gather references and defaults of all the children
+     */
+    private function strChildren(obj:Object):String
+    {
+      var str:String = "";
+      for (var a:String in obj)
+      {
+        str += a + "=[" + obj[a] + "]\n";
+      }
+      return str;
+    }
+
+
+  }
 }


Added traces for incoming messages and presences

git-svn-id: c197267f952b24206666de142881703007ca05d5@9525 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/jivesoftware/xiff/core/XMPPConnection.as
+++ src/org/jivesoftware/xiff/core/XMPPConnection.as
@@ -656,6 +656,7 @@
 		 */
 		protected function handleMessage( node:XMLNode ):Message
 		{
+			trace("Incoming: "+node);
 			var msg:Message = new Message();
 			//trace(msg);
 			// Populate with data
@@ -680,6 +681,7 @@
 		 */
 		protected function handlePresence( node:XMLNode ):Presence
 		{
+			trace("Incoming: "+node);
 			var pres:Presence = new Presence();

 			// Populate


Each pixel is generally 4 bytes, a byte for each color channel.

--- runtime/src/main/as/flump/display/DisplayCreator.as
+++ runtime/src/main/as/flump/display/DisplayCreator.as
@@ -32,7 +32,7 @@
         if (name == null) return 0;
         if (FLIPBOOK_TEXTURE.exec(name) != null || _lib.getLibrary(name) is XflTexture) {
             const tex :Texture = getStarlingTexture(name);
-            const usage :int = tex.width * tex.height;
+            const usage :int = 4 * tex.width * tex.height;
             if (subtex != null && !subtex.hasOwnProperty(name)) {
                 subtex[name] = usage;
             }


oops, meant to add this to the last commit.  resistorLead --> lead

--- activities/module-2/series-measuring/ResistorLead.as
+++ activities/module-2/series-measuring/ResistorLead.as
@@ -1,277 +0,0 @@
-package {
-
-    import flash.display.DisplayObject;
-    import flash.display.MovieClip;
-    import flash.events.MouseEvent;
-    import flash.geom.ColorTransform;
-    import flash.geom.Point;
-    import flash.geom.Rectangle;
-
-    import org.concord.sparks.JavaScript;
-    import org.concord.sparks.util.Display;
-
-
-
-    /*
-     * Represents a lead of the resistor.
-     * A resistor has two leads: left and right.
-     */
-    public class ResistorLead {
-
-        public static const ORIGINAL:int = 0;
-        public static const ROLL_OVER:int = 1;
-        public static const ENGAGED:int = 2;
-
-        protected var id:String;
-        protected var lead:DisplayObject;
-
-		private var resistorBase:ResistorBase;
-		private var resistor:String;
-		private var side:String;
-
-        private var rollover:DisplayObject; //highlighted are to be shown when mouse is over the lead
-        private var engaged:DisplayObject; //to be shown when the lead is connected to another component
-        private var brokenLead:DisplayObject;
-
-        private var state:int = ORIGINAL;
-        private var brokenState:int = ORIGINAL;
-        private var broken:Boolean = false;
-        private var location:String; //coordinate on breadboard, e.g. c21
-
-        private var rolloverColor:ColorTransform = new ColorTransform();
-        private var engagedColor:ColorTransform = new ColorTransform();
-        private var originalColor:ColorTransform = new ColorTransform();
-
-        private var breakButton:DisplayObject;
-        private var restoreButton:DisplayObject;
-
-		private var probe:Probe;
-		private var probeShiftX:Number;
-		private var probeShiftY:Number;
-
-        public function ResistorLead(base:ResistorBase, id:String, lead:DisplayObject,
-            rollover:DisplayObject, engaged:DisplayObject, brokenLead:DisplayObject,
-            rolloverColor:ColorTransform, engagedColor:ColorTransform, originalColor:ColorTransform,
-            breakButton:DisplayObject, restoreButton:DisplayObject) {
-
-            //trace('ENTER ResistorLead#ResistorLead');
-			this.resistorBase = base;
-            this.id = id;
-            this.lead = lead;
-            this.rollover = rollover;
-            this.engaged = engaged;
-            this.brokenLead = brokenLead;
-
-            this.rolloverColor = rolloverColor;
-            this.engagedColor = engagedColor;
-            this.originalColor = originalColor;
-
-            this.breakButton = breakButton;
-            this.restoreButton = restoreButton;
-
-            rollover.visible = false;
-            engaged.visible = false;
-            brokenLead.visible = false;
-			lead.visible = true;
-
-            restoreButton.visible = false;
-			breakButton.visible = true;
-
-            breakButton.addEventListener(MouseEvent.MOUSE_UP, onBreak);
-        }
-
-		public function setProbe(newProbe:Probe):void {
-			this.probe = newProbe;
-			trace('SET PROBE TO '+this.probe);
-		}
-		public function getProbe():Probe {
-			return this.probe;
-		}
-
-		public function calcProbeShift():void {
-			if(probe!=null){
-				var probeTip:Point = new Point(probe.x, probe.y);
-				var leadRegPoint:Point = new Point(lead.x, lead.y);
-				leadRegPoint = lead.parent.localToGlobal(leadRegPoint); // converts lead's registration point to global coords (I think that the global is not stage coords but breadboard coords - but it's not important because calculations are relative)
-				probeTip = probe.parent.localToGlobal(probeTip); // convert's probe's registration point to global coords  (as a note, this also works - lead.parent.parent.parent.localToGlobal(probeTip) )
-
-				//the geometry is for connecting to the lead in the down position, but it is close enough to use the same calculations for connecting to the lead in the up position - (or possibly the geometry is the same if it's calculated locally on the lead so that the transform is not important)
-
-				var angle:Number = .576; // 33 degrees in Radians
-				var hyp:Number = Math.abs(probeTip.x - leadRegPoint.x);//hypotenuse
-				probeShiftY = hyp*Math.sin(angle);
-				probeShiftX = Math.abs(probeTip.x - leadRegPoint.x) - hyp*Math.cos(angle);
-			}
-		}
-
-		public function setResistor(res:String):void {
-			this.resistor = res;
-		}
-
-		public function setSide(side:String):void {
-			this.side = side;
-		}
-		public function getSide():String {
-			return this.side;
-		}
-
-        public function getId():String {
-            return id;
-        }
-
-        public function isBroken():Boolean {
-            return broken;
-        }
-
-        public function getLocation():String {
-            return location;
-        }
-
-        public function setLocation(loc:String):void {
-            location = loc;
-        }
-
-        public function getState():int {
-            return state;
-        }
-
-        public function getBrokenState():int {
-            return brokenState;
-        }
-
-        public function showRollOver():void {
-            rollover.visible = true;
-        }
-
-        public function hideRollOver():void {
-            rollover.visible = false;
-        }
-
-        public function showEngaged():void {
-			engaged.visible = true;
-            engaged.alpha = 0.55;
-        }
-
-        public function hideEngaged():void {
-            trace('ENTER ResistorLead.hideEngaged');
-            engaged.visible = false;
-        }
-
-        public function setRollOver():void {
-            //trace('ENTER ResistorLead#setRollOver');
-            state = ROLL_OVER;
-			lead.visible = true;
-            lead.transform.colorTransform = rolloverColor;
-			brokenLead.transform.colorTransform = rolloverColor;
-			brokenLead.visible = false;
-        }
-
-        public function setEngaged():void {
-            //trace('ENTER ResistorLead#setEngaged');
-            state = ENGAGED;
-			lead.visible = true;
-            lead.transform.colorTransform = engagedColor;
-			brokenLead.transform.colorTransform = engagedColor;
-			brokenLead.visible = false;
-        }
-
-        public function setOriginal():void {
-            //trace('ENTER ResistorLead#setOriginal');
-            state = ORIGINAL;
-			lead.visible = true;
-            lead.transform.colorTransform = originalColor;
-			brokenLead.transform.colorTransform = originalColor;
-			brokenLead.visible = false;
-        }
-
-        public function setBrokenRollOver():void {
-            //trace('ENTER ResistorLead#setBrokenRollOver');
-            brokenState = ROLL_OVER;
-			brokenLead.visible = true;
-            brokenLead.transform.colorTransform = rolloverColor;
-			lead.transform.colorTransform = rolloverColor;
-			lead.visible = false;
-        }
-
-        public function setBrokenEngaged():void {
-            //trace('ENTER ResistorLead#setBrokenEngaged');
-            brokenState = ENGAGED;
-			brokenLead.visible = true;
-            brokenLead.transform.colorTransform = engagedColor;
-			lead.transform.colorTransform = originalColor;
-			lead.visible = false;
-        }
-
-        public function setBrokenOriginal():void {
-            //trace('ENTER ResistorLead#setBrokenOriginal');
-            brokenState = ORIGINAL;
-			brokenLead.visible = true;
-            brokenLead.transform.colorTransform = originalColor;
-			lead.transform.colorTransform = originalColor;
-			lead.visible = false;
-        }
-
-        private function onBreak(event:MouseEvent):void {
-            broken = true;
-			breakButton.visible = false;
-            restoreButton.visible = true;
-            restoreButton.addEventListener(MouseEvent.MOUSE_UP, onRestore);
-			breakButton.removeEventListener(MouseEvent.MOUSE_UP, onBreak);
-            lead.visible = false;
-			brokenLead.visible = true;
-
-			// lift probe
-			if(probe !=null){
-				probe.y -= probeShiftY;
-				if(this.side == 'left'){
-					probe.x += probeShiftX;
-				} else if (this.side == 'right') {
-					probe.x -= probeShiftX;
-				}
-			probe.getCircuit().updateResistorEndColors(probe);
-			probe.getCircuit().updateProbeConnection(probe);
-			}
-			resistorBase.disconnect(this); //jonah
-        }
-
-        private function onRestore(event:MouseEvent):void {
-            broken = false;
-            breakButton.visible= true;
-            restoreButton.visible= false;
-            restoreButton.removeEventListener(MouseEvent.MOUSE_UP, onRestore);
-			breakButton.addEventListener(MouseEvent.MOUSE_UP, onBreak);
-            lead.visible = true;
-			brokenLead.visible = false;
-			resistorBase.connect(this); //jonah
-
-			// lower probe
-			if(probe !=null){
-				probe.y += probeShiftY;
-				if(this.side == 'left'){
-					probe.x -= probeShiftX;
-				} else if (this.side == 'right') {
-					probe.x += probeShiftX;
-				}
-				probe.getCircuit().updateResistorEndColors(probe);
-				probe.getCircuit().updateProbeConnection(probe);
-			}
-        }
-
-		private function resistorConnect():void {
-            JavaScript.instance().sendEvent('connect', 'resistor', this.resistor, this.side, location);
-        }
-
-		private function resistorDisconnect():void {
-            JavaScript.instance().sendEvent('disconnect', 'resistor', this.resistor, this.side, location);
-        }
-
-        public function inBrokenHotSpot(probe:Probe):Boolean {
-           //return  brokenLead.alpha == 1 && probe.tip.hitTestObject(brokenLead);
-		   return  brokenLead.visible == true && probe.tip.hitTestObject(brokenLead);
-        }
-
-
-
-
-    }
-}


Transferred from the Adobe Open Source Subversion Repository

Revision: 10214
Author:   cframpto@adobe.com
Date:     2009-09-13T14:33:58.570082Z

Log Message:
-----------
This fixes the problem that if two text components share the same textFlow there is an infinite loop involving updateDisplayList -> damageHandler -> invalidateDisplaylist -> back to updateDisplayList.  The bug file was for TextArea which is RET but the same bug was in RichText as well.

This example with a renderer exposed it because the typicalItem that is composed to figure out sizes and the actual first item in the list share the same textFlow.  It actually has nothing to do with useVirtualDisplay other than it was sharing a textFlow.

It turns out that the TextFlowFactory dispatches damage events every time the textFlow is composed.  Unlike when the flowComposer is used, it always considers the flow damaged.  It was exacerbated by each of the two components having a damage handler for the same textFlow.

The solution is to use the textFlow generation number.  In the damageHandler if the generation is the last known generation number, assume no changes, and return immediately from the damage handler.

QE notes: There are 1 TextArea, 6 TextInput and 2 NumericStepper failuers, with or without my changes.  The common link seems to be DispatchKeyEvent.  Most were testing maxChar, displayAsPassword and restrict.  I tested these and they seem to be working correctly.

Doc notes:
Bugs: SDK-23002
Reviewer: Gordon
Tests run: checkintests, TextArea, TextInput and NumericStepper
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/RichEditableTextContainerManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1280370 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/RichText.as
+++ frameworks/projects/spark/src/spark/components/RichText.as
@@ -363,6 +363,14 @@
      */
     private var hostFormat:ITextLayoutFormat;

+    /**
+     *  @private
+     *  Holds the last recorded value of the textFlow generation.  Used to
+     *  determine whether to return immediately from damage event if there
+     *  have been no changes.
+     */
+    private var lastGeneration:uint = 0;    // 0 means not set
+
 	/**
      *  @private
      *  Holds the last recorded value of the module factory
@@ -765,7 +773,9 @@
 			_textFlow = createTextFlowFromContent(_content);
 			contentChanged = false;
     	}
-
+
+        lastGeneration = _textFlow ? _textFlow.generation : 0;
+
     	// At this point we know which TextLineFactory we're going to use
     	// and we know the _text or _textFlow that it will compose.

@@ -1058,6 +1068,14 @@
     {
         //trace("damageHandler", "damageStart", event.damageStart, "damageLength", event.damageLength);

+        // No changes so don't recompose.  The TextFlowFactory
+        // createTextLines dispatches damage events every time the textFlow
+        // is composed, even if there are no changes.
+        if (_textFlow.generation == lastGeneration)
+            return;
+
+        lastGeneration = _textFlow.generation;
+
         // Invalidate _text and _content.
         _text = null;
         _content = null;


fixed syntax typo bug

fixed syntax typo bug

--- WeaveCore/src/weave/core/ErrorManager.as
+++ WeaveCore/src/weave/core/ErrorManager.as
@@ -76,7 +76,7 @@
 				faultContent = faultContent == null ? error : [error, faultContent];
 			if (!(error is Error) || faultMessage || faultContent != null)
 			{
-				if (!error is Fault)
+				if (!(error is Fault))
 				{
 					// wrap the error in a Fault object
 					if (!faultMessage && error is Error)


Minor change to the reverse-engineered class. Made note in the file of its status.

--- events/StatementClassifierEvent.as
+++ events/StatementClassifierEvent.as
@@ -2,20 +2,26 @@
 package events{

 	import flash.events.Event;
-
+	/**
+	 * Warning: This class was reverse-engineered from the code that uses it.
+	 * We do not have the original (at this time).
+	 *
+	 * It may not have all the functionality it needs for later code.
+	 *
+	 * @author Joshua Justice
+	 */
 	public class StatementClassifierEvent extends Event
 	{
 		//public var statement:String;
-		public var statementType:int;
+		public var statementType:int; //1 is Particular, 0 is Universial
 		public var claimIndex:int;
 		public var reasonIndex:int;
-		public function StatementClassifierEvent(type:String,statementType:int,index:int,reasonIndex:int = 0)
+		public function StatementClassifierEvent(type:String,statementType:int,claimIndex:int,reasonIndex:int = 0)
 		{
 			super(type);
 			this.statementType = statementType;
-			this.claimIndex = index;
+			this.claimIndex = claimIndex;
 			this.reasonIndex = reasonIndex;
 		}
 	}
-
 }


Change 20090305-ptw-u by ptw@dueling-banjos.home on 2009-03-05 17:21:04 EST
    in /Users/ptw/OpenLaszlo/trunk-3
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Fix regression in input text:  should not interpret HTML markup

Bugs Fixed: LPP-7857  html tags not showing in inputtext

Technical Reviewer: hminsky, a.bargull@intensis.de (Message-ID: <8c61fad60903051513h3dfcd220hb00c0010ce76fee@mail.gmail.com>, pending)
QA Reviewer: aalappat (pending)

Details:
    html should be off by default in input text

Tests:
    Text case from bug

git-svn-id: d62bde4b5aa582fdf07c8d403e53e0399a7ed285@13195 fa20e4f9-1d0a-0410-b5f3-dc9c16b8b17c

--- WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as
+++ WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as
@@ -74,8 +74,13 @@
 LzInputTextSprite.prototype.__initTextProperties = function (args) {
     var textclip = this.__LZtextclip;

-    // conditionalize this; set to false for inputtext for back compatibility with lps 2.1
-    textclip.html = true;
+    // NOTE [2009-03-05 ptw] Input text is NOT html by default.  We
+    // used to set this to true to fudge in the font styles as markup,
+    // but now we use the clip textFormat to do that directly.  Note
+    // that by setting this to false, the uses of htmlText below are
+    // equivalent to using text; whereas if you enable html with
+    // setHTML, then this should all magically work. :)
+    textclip.html = false;

     textclip.selectable = args.selectable;
     textclip.autoSize = false;
@@ -277,6 +282,10 @@
 }

 // This is the text without any formatting
+// NOTE [2009-03-05 ptw] Which is presumably what you want.  If you
+// enable html with setHTML, you still will get the text without
+// formatting.  But, how would you enter formatting in an input field
+// anyways?  This is not a rich-edit-text doo-dad.
 LzInputTextSprite.prototype.getText = function ( ){
   // We normalize swf's \r to \n
   return this.__LZtextclip.text.split('\r').join('\n');


Fixed headless NinjaSnowWar.

Fixed headless NinjaSnowWar.

--- Bin/Data/Scripts/NinjaSnowWar.as
+++ Bin/Data/Scripts/NinjaSnowWar.as
@@ -167,7 +167,7 @@
     }

     // Precache shaders if possible
-    if (cache.Exists("NinjaSnowWarShaders.xml"))
+    if (!engine.headless && cache.Exists("NinjaSnowWarShaders.xml"))
         graphics.PrecacheShaders(cache.GetFile("NinjaSnowWarShaders.xml"));
 }


Fixed Throttle bug causing any increase in the number of operations to block all message throughput. Fix prevents copying from negative indices of _ops. This caused a NaN entry which always resulted in an effective age of 0 regardless of getTimer(), causing a permanent state of throttling

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@5475 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/Throttle.as
+++ src/as/com/threerings/util/Throttle.as
@@ -77,9 +77,12 @@
     public function reinit (operations :int, period :int) :void
     {
         var ops :Array = ArrayUtil.create(operations, 0);
-        // copy up to 'operations' of our most recent operations into our new array
-        for (var ii :int = 0; ii < operations; ii++) {
-            ops[operations-ii-1] = _ops[(_oldestOp + _ops.length - ii - 1) % _ops.length];
+        // copy as much as we can of our most recent operations into our new array
+        var copyCount :int = Math.min(operations, _ops.length);
+        var srcOffset :int = _oldestOp + _ops.length*2 - 1; // need *2 to prevent copying _ops[-1]
+        var destOffset :int = operations-1;
+        for (var ii :int = 0; ii < copyCount; ii++) {
+            ops[destOffset-ii] = _ops[(srcOffset-ii) % _ops.length];
         }
         _oldestOp = Math.max(0, operations-_ops.length);
         _ops = ops;
@@ -160,6 +163,19 @@
         return _ops.length + " ops per " + _period + "ms (oldest " + oldest + ")";
     }

+    /**
+     * For debugging, includes the age of all operations.
+     */
+    public function opsToString () :String
+    {
+        var now :int = getTimer();
+        var ages :Array = []
+        for (var ii :int = 0; ii < _ops.length; ++ii) {
+            ages.push(now - _ops[(_oldestOp + ii) % _ops.length]);
+        }
+        return "[" + StringUtil.toString(ages) + "] [Oldest idx = " + _oldestOp + "]";
+    }
+
     protected var _ops :Array;
     protected var _oldestOp :int;
     protected var _period :int;


Fixed editor script.

Fixed editor script.

--- Bin/Data/Scripts/Editor/EditorView.as
+++ Bin/Data/Scripts/Editor/EditorView.as
@@ -132,7 +132,7 @@
         "  Batches: " + renderer.numBatches +
         "  Lights: " + renderer.numLights[true] +
         "  Shadowmaps: " + renderer.numShadowMaps[true] +
-        "  Occluders: " + renderer.numOccluders[true] + " / " + renderer.numShadowOccluders[true]);
+        "  Occluders: " + renderer.numOccluders[true]);

     Vector3 cameraPos = cameraNode.position;
     String xText(cameraPos.x);


Transferred from the Adobe Open Source Subversion Repository

Revision: 8380
Author:   clucier@adobe.com
Date:     2009-07-06T19:06:47.554866Z

Log Message:
-----------
Addressing a potential cause for leaks related to the use of effect triggers.  Migrating some FIXME's to TODO's since they aren't immediately required for this release.
Bugs: SDK-18061
Reviewer: Chet
QE Notes: None
Doc Notes: None

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269259 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/core/Container.as
+++ frameworks/projects/mx/src/mx/core/Container.as
@@ -3117,7 +3117,6 @@
             if ("addToCreationQueue" in mainApp)
                 mainApp.addToCreationQueue(this, creationIndex, null, this);
             else
-                // FIXME (clucier): Clarify error message and add to resource manager
                 throw new Error("addToCreationQueue called but method does not exist within application");
         }
         else if (recursionFlag)


using cached numOfBins value instead of retrieving the session state each time added async task description

--- WeaveData/src/weave/data/BinningDefinitions/NaturalJenksBinningDefinition.as
+++ WeaveData/src/weave/data/BinningDefinitions/NaturalJenksBinningDefinition.as
@@ -93,6 +93,7 @@
 			}

 			_sortedValues = new Array();
+			_numOfBins = numOfBins.value;
 			_keyCount = 0;
 			_previousSortedValues.length = 0;

@@ -105,11 +106,11 @@
 			_compoundIterateAll(-1); // reset compound task

 			// high priority because not much can be done without data
-			WeaveAPI.StageUtils.startTask(asyncResultCallbacks, _compoundIterateAll, WeaveAPI.TASK_PRIORITY_HIGH, _handleJenksBreaks);
+			WeaveAPI.StageUtils.startTask(asyncResultCallbacks, _compoundIterateAll, WeaveAPI.TASK_PRIORITY_HIGH, _handleJenksBreaks, lang("Computing Natural Breaks binning for {0} values", _keys.length));
 		}

 		private var _compoundIterateAll:Function = StageUtils.generateCompoundIterativeTask(_getValueFromKeys, _iterateSortedKeys, _iterateJenksBreaks);
-
+		private var _numOfBins:int;
 		private var _keyCount:int = 0;
 		private var _keys:Array = [];
 		private function _getValueFromKeys(stopTime:int):Number
@@ -154,7 +155,6 @@

 			_lower_class_limits = [];
 			_variance_combinations = [];
-			var numberOfBins:Number = numOfBins.value;
 			// Initialize and fill each matrix with zeroes
 			for (var i:int = 0; i < _sortedValues.length+1; i++)
 			{
@@ -163,7 +163,7 @@
 				// despite these arrays having the same values, we need
 				// to keep them separate so that changing one does not change
 				// the other
-				for(var j:int =0; j < numberOfBins+1; j++)
+				for(var j:int =0; j < _numOfBins+1; j++)
 				{
 					temp1.push(0);
 					temp2.push(0);
@@ -172,7 +172,7 @@
 				_variance_combinations.push(temp2);
 			}

-			for (var k:int =1; k <numberOfBins + 1; k++)
+			for (var k:int =1; k <_numOfBins + 1; k++)
 			{
 				_lower_class_limits[1][k] = 1;
 				_variance_combinations[1][k] = 0;
@@ -250,7 +250,7 @@
 					if(i4 !=0)
 					{
 						_p = 2;
-						for (; _p < numOfBins.value + 1; _p++)
+						for (; _p < _numOfBins + 1; _p++)
 						{
 							// if adding this element to an existing class
 							// will increase its variance beyond the limit, break
@@ -287,7 +287,7 @@
 				{
 					value = data[k];
 					countNum++;
-					if (countNum >= numOfBins.value)
+					if (countNum >= _numOfBins)
 						break;
 				}
 			}
@@ -322,7 +322,7 @@
 				_tempNumberClassifier.min.value = _previousSortedValues[minIndex];

 				var maxIndex:Number;
-				if(iBin == numOfBins.value -1)
+				if(iBin == _numOfBins -1)
 				{
 					maxIndex = _previousSortedValues.length -1;
 				}


made JS_this public

made JS_this public

Change-Id: If4ea09db76e7b2c5683f3cdeaf1225a6524bd819

--- WeaveAPI/src/JavaScript.as
+++ WeaveAPI/src/JavaScript.as
@@ -151,7 +151,7 @@
 		/**
 		 * A JavaScript expression which gets a pointer to this Flash object.
 		 */
-		private static function get JS_this():String
+		public static function get JS_this():String
 		{
 			if (!_objectID)
 				_objectID = getExternalObjectID();


string conversion

string conversion

--- frameworks/projects/Language/src/main/flex/org/apache/flex/utils/Language.as
+++ frameworks/projects/Language/src/main/flex/org/apache/flex/utils/Language.as
@@ -102,6 +102,17 @@
 		static public function _int(value:Number):Number
 		{
 			return value >> 0;
+		}
+
+		/**
+		 * int()
+		 *
+		 * @param value The value to be cast.
+		 * @return {string}
+		 */
+		static public function string(value:*):String
+		{
+			return value == null ? null : value.toString();
 		}

 		/**


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1263831 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as
+++ frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2011 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package spark.components
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 21584
Author:   aaltman@adobe.com
Date:     2011-07-15T22:40:24.389074Z

Log Message:
-----------
Plumbed soft keyboard hint properties from SkinnableTextBase to StageText.
Fixed some excessive padding around StageText.
Added a style to control when prompt text disappears from text controls.
Changed prompt to be a non-StageText to fix z-order issues.
Added a workaround for the lack of a StageText "enter" event (only works on Android).

QE notes: The fix for SDK-30728 is only a partial workaround. It still does not work on iOS.
Doc notes:
Bugs: SDK-30781 - iOS: SoftKeyboard hints don't appear when StageText is used on iPodTouch, and iPad2
SDK-30740 - StageText: Prompt displays over content.
SDK-30737 - SoftKeyboard does not appears on the first tap on TextInput
SDK-30736 - Text prompt disappears when text got focus
SDK-30728 - "Enter" key does not work correctly in StageText
Reviewer: aharui
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/StageTextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextAreaSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/core/ISoftKeyboardHintClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1265468 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as
@@ -71,10 +71,10 @@
         super.layoutContents(unscaledWidth, unscaledHeight);

         // position & size the text
-        var paddingLeft:Number = getStyle("paddingLeft");
-        var paddingRight:Number = getStyle("paddingRight");
-        var paddingTop:Number = getStyle("paddingTop");
-        var paddingBottom:Number = getStyle("paddingBottom");
+        var paddingLeft:Number = getCorrectedPadding("paddingLeft");
+        var paddingRight:Number = getCorrectedPadding("paddingRight");
+        var paddingTop:Number = getCorrectedPadding("paddingTop");
+        var paddingBottom:Number = getCorrectedPadding("paddingBottom");

         var unscaledTextWidth:Number = unscaledWidth - paddingLeft - paddingRight;
         var unscaledTextHeight:Number = unscaledHeight - paddingTop - paddingBottom;
@@ -94,9 +94,12 @@

         if (promptDisplay)
         {
-            promptDisplay.commitStyles();
-            setElementSize(promptDisplay, unscaledTextWidth, adjustedTextHeight);
-            setElementPosition(promptDisplay, paddingLeft, textY);
+            var promptHeight:Number = getElementPreferredHeight(promptDisplay);
+            var promptY:Number = Math.round(0.5 * (unscaledTextHeight - promptHeight)) + paddingTop;
+            var promptX:Number = getStyle("paddingLeft");
+
+            setElementSize(promptDisplay, unscaledTextWidth, promptHeight);
+            setElementPosition(promptDisplay, promptX, promptY);
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 11468
Author:   smgilson@adobe.com
Date:     2009-11-05T16:54:31.738281Z

Log Message:
-----------
Part 1 of ASDoc localization bug fixes

QE notes: -
Doc notes: -
Bugs: - FLEXDOCS-934, FLEXDOCS-909, FLEXDOCS-908, FLEXDOCS-906, FLEXDOCS-882, FLEXDOCS-883, FLEXDOCS-881
Reviewer: -
Tests run: - checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Pause.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Quartic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeLeft.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Tween.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Quintic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Quadratic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Cubic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeDown.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/HSBColor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ArrayUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/TweenEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeRight.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/DefaultListEffect.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeUp.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269447 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/effects/WipeUp.as
+++ frameworks/projects/mx/src/mx/effects/WipeUp.as
@@ -22,7 +22,7 @@
 [Alternative(replacement="spark.effects.Wipe", since="4.0")]

 /**
- *  The WipeUp class defines a bar wipe up effect.
+ *  The WipeUp class defines a wipe up effect.
  *  The before or after state of the component must be invisible.
  *
  *
You often use this effect with the showEffect
@@ -68,28 +68,28 @@
 {
     include "../core/Version.as";

-	//--------------------------------------------------------------------------
-	//
-	//  Constructor
-	//
-	//--------------------------------------------------------------------------
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------

-	/**
-	 *  Constructor.
-	 *
-	 *  @param target The Object to animate with this effect.
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 9
-	 *  @playerversion AIR 1.1
-	 *  @productversion Flex 3
-	 */
-	public function WipeUp(target:Object = null)
-	{
-		super(target);
+    /**
+     *  Constructor.
+     *
+     *  @param target The Object to animate with this effect.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function WipeUp(target:Object = null)
+    {
+        super(target);

-		instanceClass = WipeUpInstance;
-	}
+        instanceClass = WipeUpInstance;
+    }
 }

 }


Make Roster.groups bindable

Make Roster.groups bindable

git-svn-id: c197267f952b24206666de142881703007ca05d5@9867 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/jivesoftware/xiff/im/Roster.as
+++ src/org/jivesoftware/xiff/im/Roster.as
@@ -118,7 +118,8 @@

 		private var _me:RosterItemVO;

-		private var _groups:ArrayCollection = new ArrayCollection();
+		[Bindable]
+		public var groups:ArrayCollection = new ArrayCollection();

 		private static const staticConstructorDependencies:Array = [
 			ExtensionClassRegistry,
@@ -321,7 +322,7 @@
 		public function getContainingGroups(item:RosterItemVO):Array
 		{
 			var result:Array = [];
-			for each(var group:RosterGroup in _groups)
+			for each(var group:RosterGroup in groups)
 			{
 				if(group.contains(item))
 					result.push(group);
@@ -561,21 +562,21 @@

 		private function setContactGroups(contact:RosterItemVO, groupNames:Array):void
 		{
-			_groups.disableAutoUpdate();
+			groups.disableAutoUpdate();
 			for each(var name:String in groupNames)
 			{
 				//if there's no group by this name already, we need to make one
 				if(!getGroup(name))
-					_groups.addItem(new RosterGroup(name));
-			}
-			for each(var group:RosterGroup in _groups)
+					groups.addItem(new RosterGroup(name));
+			}
+			for each(var group:RosterGroup in groups)
 			{
 				if(groupNames.indexOf(group.label) >= 0)
 					group.addItem(contact);
 				else
 					group.removeItem(contact);
 			}
-			_groups.enableAutoUpdate();
+			groups.enableAutoUpdate();
 		}

 		private function updateRosterItemSubscription( item:RosterItemVO, type:String, name:String, newGroupNames:Array ):void
@@ -662,17 +663,12 @@

 		public function getGroup(name:String):RosterGroup
 		{
-			for each(var group:RosterGroup in _groups)
+			for each(var group:RosterGroup in groups)
 			{
 				if(group.label == name)
 					return group;
 			}
 			return null;
 		}
-
-		public function get groups():ArrayCollection
-		{
-			return _groups;
-		}
 	}
-}+}


fixed bug where csv columns would not work if requested before the data
was available

Change-Id: I82cd865170089b930b1c2596853cabf4680c78f8

--- WeaveData/src/weave/data/DataSources/CSVDataSource.as
+++ WeaveData/src/weave/data/DataSources/CSVDataSource.as
@@ -219,8 +219,6 @@

 		public function generateMetadataForColumnId(id:Object):Object
 		{
-			if (!parsedRows)
-				return null;
 			var metadata:Object = {};
 			metadata[ColumnMetadata.TITLE] = getColumnTitle(id);
 			metadata[ColumnMetadata.KEY_TYPE] = keyType.value || DataType.STRING;


Adding citation to RTMFPSocket

Adding citation to RTMFPSocket

--- com/rtmfpcat/rtmfp/RTMFPSocket.as
+++ com/rtmfpcat/rtmfp/RTMFPSocket.as
@@ -1,3 +1,13 @@
+/* RTMFPSocket abstraction
+ * Author: Nate Hardison, May 2011
+ *
+ * This code is heavily based off of BelugaFile, an open-source
+ * Air file-transfer application written by Nicholas Bliyk.
+ * Website: http://www.belugafile.com/
+ * Source: http://code.google.com/p/belugafile/
+ *
+ */
+
 package rtmfp
 {
     import flash.events.Event;


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1253164 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/charts/src/mx/charts/effects/effectClasses/SeriesZoomInstance.as
+++ frameworks/projects/charts/src/mx/charts/effects/effectClasses/SeriesZoomInstance.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.charts.effects.effectClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 10633
Author:   dloverin@adobe.com
Date:     2009-09-28T13:24:30.559033Z

Log Message:
-----------
Use styleManager instance instead of StyleManager singleton (framework and compiler generated code)

Modified compiler generated style code for the FlexInit class. The style related changes are only available with the -keep option. AST generation is coming later.

Only the framework project is changed here. The other projects are will be changed soon.

QE notes: None.
Doc notes: None.
Bugs:
Reviewer: Alex and Paul
Tests run: checkintests, all Mustella tests(no new failures)
Is noteworthy for integration: no.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ButtonBarButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/HaloBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/accordionClasses/AccordionHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/CanvasLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/dragClasses/DragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/configuration_en.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressIndeterminateSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DateChooserMonthArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/SliderThumbSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollThumbSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleModule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Form.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager2.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/TitleBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/NumericStepperDownSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/PopUpButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/ProgrammaticSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/TabSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/textClasses/TextRange.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/AccordionHeaderSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/CheckBoxIcon.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/NumericStepperUpSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/RadioButtonIcon.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/states/SetStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ComboBoxArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeaderBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/MenuBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressBarSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/BusyCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/SliderTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DataGridHeaderBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/ModuleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SetStyleActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.vm</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1260500 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/effects/effectClasses/SetStyleActionInstance.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/SetStyleActionInstance.as
@@ -12,8 +12,9 @@
 package mx.effects.effectClasses
 {

+import mx.core.mx_internal;
 import mx.styles.StyleManager;
-import mx.core.mx_internal;
+import mx.core.IFlexModuleFactory;

 use namespace mx_internal;

@@ -143,7 +144,11 @@
 				// for inheriting color styles and misses non-inheriting styles like
 				// backgroundColor.
 				if (name.toLowerCase().indexOf("color") != -1)
-					target.setStyle(name, StyleManager.getColorName(value));
+                {
+                    var moduleFactory:IFlexModuleFactory = target.moduleFactory;
+                    target.setStyle(name,
+                        StyleManager.getStyleManager(moduleFactory).getColorName(value));
+                }
 				else
 					target.setStyle(name, Number(value));
 			}