Transferred from the Adobe Open Source Subversion Repository

Revision: 7163
Author:   aharui@adobe.com
Date:     2009-05-21T02:19:55.813792Z

Log Message:
-----------
Initial checkin of frame 1 cleanup.  In an RSL linkage, more classes will now come from the RSL because they are no longer needed in frame 1, and the size of the application SWF will be smaller.

QE Notes: None
Doc Notes: Maybe.  All new classes should be undocumented, but it might be worth checking that and any changes to interfaces
Bugs:
Reviewer: darrell
tests: checkintests mustella/MarshallPlan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/RSLEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/MarshalPopUpData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IEmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.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/managers/systemClasses/EventProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextFormat.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/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</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/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/core/EmbeddedFontRegistry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/EmbeddedFont.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/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/Preloader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeProvider.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/FocusManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManager.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IMarshalSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/EventListenerRequest.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/ToolTipManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/mustella/MustellaResultsParser.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Alert.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ChildManager.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallPlan.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/managers/SystemManagerGlobals.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/SWFBridgeGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/alertClasses/AlertForm.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework_textLayout/src/mx/core/UITLFTextField.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/DragManagerMarshalMixin.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/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.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/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IActiveWindowManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/SimpleText.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/PopUpManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/messaging/config/LoaderConfig.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/DownloadProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManagerChildManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/marshalClasses/CursorManagerMarshalMixin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISWFBridgeGroup.as</path>

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

--- frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as
+++ frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as
@@ -0,0 +1,471 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2007 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.managers.systemClasses
+{
+
+import flash.display.DisplayObject;
+import flash.display.InteractiveObject;
+import flash.display.Sprite;
+import flash.events.Event;
+import flash.events.EventDispatcher;
+import flash.events.IEventDispatcher;
+import flash.events.FocusEvent;
+import flash.events.MouseEvent;
+
+import mx.core.IChildList;
+import mx.core.IFlexModuleFactory;
+import mx.core.IRawChildrenContainer;
+import mx.core.IUIComponent;
+import mx.core.mx_internal;
+import mx.core.Singleton;
+import mx.events.DynamicEvent;
+import mx.events.Request;
+import mx.managers.IActiveWindowManager;
+import mx.managers.IFocusManagerContainer;
+import mx.managers.ISystemManager;
+
+use namespace mx_internal;
+
+[ExcludeClass]
+[Mixin]
+
+public class ActiveWindowManager extends EventDispatcher implements IActiveWindowManager
+{
+    include "../../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class Method
+	//
+	//--------------------------------------------------------------------------
+
+	public static function init(fbs:IFlexModuleFactory):void
+	{
+		Singleton.registerClass("mx.managers::IActiveWindowManager", ActiveWindowManager);
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *
This is the starting point for all Flex applications.
+	 *  This class is set to be the root class of a Flex SWF file.
+         *  Flash Player instantiates an instance of this class,
+	 *  causing this constructor to be called.

+	 */
+	public function ActiveWindowManager(systemManager:ISystemManager = null)
+	{
+		super();
+
+		if (!systemManager)
+			return;
+
+		this.systemManager = systemManager;
+		// capture mouse down so we can switch top level windows and activate
+		// the right focus manager before the components inside start
+		// processing the event
+		if (systemManager.isTopLevelRoot() || systemManager.getSandboxRoot() == systemManager)
+			systemManager.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, true);
+
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Variables
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private var systemManager:ISystemManager;
+
+	/**
+	 *  @private
+	 *  List of top level windows.
+	 */
+	mx_internal var forms:Array = [];
+
+	/**
+	 *  @private
+	 *  The current top level window.
+	 *
+	 * 	Will be of type IFocusManagerContainer if the form
+	 *  in the top-level system manager's application domain
+	 *  or a child of that application domain. Otherwise the
+	 *  form will be of type RemotePopUp.
+	 */
+	mx_internal var form:Object;
+
+
+    //----------------------------------
+    //  numModalWindows
+    //----------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the numModalWindows property.
+	 */
+	private var _numModalWindows:int = 0;
+
+	/**
+	 *  The number of modal windows.  Modal windows don't allow
+	 *  clicking in another windows which would normally
+	 *  activate the FocusManager in that window.  The PopUpManager
+	 *  modifies this count as it creates and destroys modal windows.
+	 */
+	public function get numModalWindows():int
+	{
+		return _numModalWindows;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set numModalWindows(value:int):void
+	{
+		_numModalWindows = value;
+        systemManager.numModalWindows = value;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Methods: Focus
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @inheritDoc
+	 */
+	public function activate(f:Object):void
+	{
+		activateForm(f);
+	}
+
+	/**
+	 * @private
+	 *
+	 * New version of activate that does not require a
+	 * IFocusManagerContainer.
+	 */
+	private function activateForm(f:Object):void
+	{
+
+		// trace("SM: activate " + f + " " + forms.length);
+		if (form)
+		{
+			if (form != f && forms.length > 1)
+			{
+				var e:DynamicEvent = new DynamicEvent("activateForm", false, true);
+				e.form = f;
+				// Switch the active form.
+				if (dispatchEvent(e))
+				{
+					var z:IFocusManagerContainer = IFocusManagerContainer(form);
+					// trace("OLW " + f + " deactivating old form " + z);
+					z.focusManager.deactivate();
+				}
+			}
+		}
+
+		form = f;
+
+        e = new DynamicEvent("activatedForm", false, true);
+        e.form = f;
+        if (dispatchEvent(e))
+        {
+		    if (f.focusManager)
+		    {
+			    // trace("has focus manager");
+			    f.focusManager.activate();
+		    }
+        }
+		// trace("END SM: activate " + f);
+	}
+
+	/**
+	 *  @inheritDoc
+	 */
+	public function deactivate(f:Object):void
+	{
+		deactivateForm(Object(f));
+	}
+
+	/**
+	 * @private
+	 *
+	 * New version of deactivate that works with remote pop ups.
+	 *
+	 */
+	private function deactivateForm(f:Object):void
+	{
+		// trace(">>SM: deactivate " + f);
+
+		if (form)
+		{
+			// If there's more than one form and this is it, find a new form.
+			if (form == f && forms.length > 1)
+			{
+				var e:DynamicEvent = new DynamicEvent("deactivateForm", false, true);
+				e.form = form;
+				if (dispatchEvent(e))
+					form.focusManager.deactivate();
+
+				form = findLastActiveForm(f);
+
+                e = new DynamicEvent("deactivatedForm", false, true);
+                e.form = form;
+                if (dispatchEvent(e))
+                {
+				    // make sure we have a valid top level window.
+				    // This can be null if top level window has been hidden for some reason.
+				    if (form)
+				    {
+					    form.focusManager.activate();
+				    }
+                }
+			}
+		}
+
+		// trace("<<SM: deactivate " + f);
+	}
+
+
+	/**
+	 * @private
+	 *
+	 * @param f form being deactivated
+	 *
+	 * @return the next form to activate, excluding the form being deactivated.
+	 */
+	private function findLastActiveForm(f:Object):Object
+	{
+		var n:int = forms.length;
+		for (var i:int = forms.length - 1; i >= 0; i--)
+		{
+			// Verify the form is visible and enabled
+			if (forms[i] != f && canActivatePopUp(forms[i]))
+				return forms[i];
+		}
+
+        return null;  // should never get here
+	}
+
+
+	/**
+	 * @private
+	 *
+	 * @return true if the form can be activated, false otherwise.
+	 */
+	 private function canActivatePopUp(f:Object):Boolean
+	 {
+
+		var e:Request = new Request("canActivateForm", false, true);
+		e.value = f;
+	 	if (dispatchEvent(e))
+	 	{
+			return e.value;
+	 	}
+	 	else if (canActivateLocalComponent(f))
+			return true;
+
+		return false;
+	 }
+
+
+    /**
+	 * @private
+	 *
+	 * Test is a local component can be activated.
+	 */
+	 private function canActivateLocalComponent(o:Object):Boolean
+	 {
+
+	 	if (o is Sprite && o is IUIComponent &&
+	 	    Sprite(o).visible && IUIComponent(o).enabled)
+			return true;
+
+		return false;
+	 }
+
+	/**
+	 *  @inheritDoc
+	 */
+	public function addFocusManager(f:IFocusManagerContainer):void
+	{
+		// trace("OLW: add focus manager" + f);
+
+		forms.push(f);
+
+		// trace("END OLW: add focus manager" + f);
+	}
+
+	/**
+	 *  @inheritDoc
+	 */
+	public function removeFocusManager(f:IFocusManagerContainer):void
+	{
+		// trace("OLW: remove focus manager" + f);
+
+		var n:int = forms.length;
+		for (var i:int = 0; i < n; i++)
+		{
+			if (forms[i] == f)
+			{
+				if (form == f)
+					deactivate(f);
+
+				// If this is a bridged application, send a message to the parent
+				// to let them know the form has been deactivated so they can
+				// activate a new form.
+				dispatchEvent(new FocusEvent("removeFocusManager", false, false, InteractiveObject(f)));
+
+				forms.splice(i, 1);
+
+				// trace("END OLW: successful remove focus manager" + f);
+				return;
+			}
+		}
+
+		// trace("END OLW: remove focus manager" + f);
+	}
+
+	/**
+	 *  @private
+	 *  Track mouse clicks to see if we change top-level forms.
+	 */
+	private function mouseDownHandler(event:MouseEvent):void
+	{
+		// trace("SM:mouseDownHandler " + this);
+
+		if (!dispatchEvent(new FocusEvent(MouseEvent.MOUSE_DOWN, false, true, InteractiveObject(event.target))))
+			return;
+
+		if (numModalWindows == 0) // no modal windows are up
+		{
+			if (!systemManager.isTopLevelRoot() || forms.length > 1)
+			{
+				var n:int = forms.length;
+				var p:DisplayObject = DisplayObject(event.target);
+                var isApplication:Boolean = systemManager.document is IRawChildrenContainer ?
+                                            IRawChildrenContainer(systemManager.document).rawChildren.contains(p) :
+                                            systemManager.document.contains(p);
+				while (p)
+				{
+					for (var i:int = 0; i < n; i++)
+					{
+						var request:Request = new Request("actualForm", false, true);
+						request.value = forms[i];
+						var form_i:Object = dispatchEvent(request) == false ? forms[i].window : forms[i];
+						if (form_i == p)
+						{
+							var j:int = 0;
+							var index:int;
+							var newIndex:int;
+							var childList:IChildList;
+
+							if (((p != form) && p is IFocusManagerContainer) ||
+							    (!systemManager.isTopLevelRoot() && p == form))
+							{
+								if (systemManager.isTopLevelRoot())
+								activate(IFocusManagerContainer(p));
+
+								if (p == systemManager.document)
+									dispatchEvent(new Event("activateApplication"));
+								else if (p is DisplayObject)
+									dispatchEvent(new FocusEvent("activateWindow", false, false, InteractiveObject(p)));
+							}
+
+							if (systemManager.popUpChildren.contains(p))
+								childList = systemManager.popUpChildren;
+							else
+								childList = systemManager;
+
+							index = childList.getChildIndex(p);
+							newIndex = index;
+
+							//we need to reset n because activating p's
+							//FocusManager could have caused
+							//forms.length to have changed.
+							n = forms.length;
+							for (j = 0; j < n; j++)
+							{
+								var f:DisplayObject;
+								request = new Request("isRemote", false, true);
+								request.value = forms[j];
+								var isRemotePopUp:Boolean = false;
+								if (!dispatchEvent(request))
+									isRemotePopUp = request.value as Boolean;
+								if (isRemotePopUp)
+								{
+									if (forms[j].window is String)
+										continue;
+									f = forms[j].window;
+								}
+								else
+									f = forms[j];
+								if (isRemotePopUp)
+								{
+									var fChildIndex:int = getChildListIndex(childList, f);
+									if (fChildIndex > index)
+										newIndex = Math.max(fChildIndex, newIndex);
+								}
+								else if (childList.contains(f))
+									if (childList.getChildIndex(f) > index)
+										newIndex = Math.max(childList.getChildIndex(f), newIndex);
+							}
+							if (newIndex > index && !isApplication)
+								childList.setChildIndex(p, newIndex);
+
+							return;
+						}
+					}
+					p = p.parent;
+				}
+			}
+			else
+				dispatchEvent(new Event("activateApplication"));
+		}
+	}
+
+	/**
+	 * @private
+	 *
+	 * Get the index of an object in a given child list.
+	 *
+	 * @return index of f in childList, -1 if f is not in childList.
+	 */
+	private static function getChildListIndex(childList:IChildList, f:Object):int
+	{
+		var index:int = -1;
+		try
+		{
+			index = childList.getChildIndex(DisplayObject(f));
+		}
+		catch (e:ArgumentError)
+		{
+			// index has been preset to -1 so just continue.
+		}
+
+		return index;
+	}
+
+}
+
+}
+
+


Transferred from the Adobe Open Source Subversion Repository

Revision: 17165
Author:   cframpto@adobe.com
Date:     2010-08-03T14:10:22.792682Z

Log Message:
-----------
Fix pile of bugs.

- ASdoc is not happy if there is a private variable/getter and a mx_internal variable/getter with the same name in the same class because of bug ASC-4110.  Fix instances of this in UICompoments and Grid.
- SDK-27169. Update the metadata for DG selectionMode.
- SDK-26840.  Turn off the column resize icon until the resize functionality is implemented.
- SDK-26548.  When TI is disabled, also disable RET.
- SDK-26858.  Fix off-by-1 bug in RET.adjustContentBoundsForScroller().  Comment in header was correct, code was not.
- SDK-26951 - For cell mode, preserve selection when REFRESH collection change event.  There is the restriction that if the collection if filtered, the preservedSelection becomes whatever is selected in the filtered collection.  If the filter is then removed, the original selection is not preserved.

QE notes: see restriction on SDK-26951 above
Doc notes:
Bugs: SDK-27169, SDK-26840, SDK-26548, SDK-26868, SDK-26951
Reviewer: Hans
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ColumnHeaderBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as
@@ -471,6 +471,24 @@
         return getBaselinePositionForPart(textDisplay);
     }

+    //----------------------------------
+    //  enabled
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function set enabled(value:Boolean):void
+    {
+        if (textDisplay)
+            textDisplay.enabled = value;
+
+        if (value == super.enabled)
+            return;
+
+        super.enabled = value;
+    }
+
     //----------------------------------
     //  maxHeight
     //----------------------------------


improved error messages

improved error messages

Change-Id: I5fc24b1e53a4343b29dbd5dddea27324dac17ee6

--- WeaveCore/src/weave/compiler/Compiler.as
+++ WeaveCore/src/weave/compiler/Compiler.as
@@ -2270,7 +2270,12 @@
 							result = undefined;
 						else
 						{
-							trace(decompileObject(call));
+							var decompiled:String = decompileObject(call);
+							var err:Error = e as Error;
+							if (err)
+								err.message = decompiled + '\n' + err.message;
+							else
+								trace(decompiled);
 							throw e;
 						}
 					}


Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

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

--- frameworks/projects/advancedgrids/src/mx/olap/CubeNodeBuilder.as
+++ frameworks/projects/advancedgrids/src/mx/olap/CubeNodeBuilder.as
@@ -0,0 +1,713 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.olap
+{
+
+import flash.utils.Dictionary;
+
+import mx.collections.IList;
+
+/**
+* @private
+*/
+public class CubeNodeBuilder
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    private var prevNodeAtLevel:Array; // of CubeNodes
+    private var allNodeAtLevel:Array;  // of CubeNodes
+    private var prevValueAtLevel:Array;
+
+    // the level at which the new property is going to be placed
+    private var currentLevel:int;
+
+    private var prevLevel:int;
+    private var nextLevel:int;
+
+    //the nodes whose values are going to be aggregated as the above node
+    //value has changed.
+    private var closingNodesBelow:Array;
+    private var closingValues:Array;
+
+    //list of measures in the cube
+    private var measureMembers:IList;
+    private var measuresLength:int ;
+
+    /**
+    *  @private
+    *  Maps containing nodes which need to be passed to the aggrgator
+    *  to compute the final result. The measure object is used as a key.
+    *
+    */
+    // simple aggregation map
+    private var computeEndMap:Dictionary = new Dictionary(false);
+
+	//aggregation of aggregations map
+    private var computeObjEndMap:Dictionary = new Dictionary(false);
+
+	private var measureMap:Object = {};
+
+	/**
+	 *  @private
+	 *  An array of properites in the rootNode.
+	 *  This is used to aggregate each property asychronously
+	 *  to avoid player time out.
+	 *
+	 */
+	private var rootCellValues:Array;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    private var _cube:OLAPCube;
+
+    public function set cube(c:IOLAPCube):void
+    {
+        _cube = c as OLAPCube;
+    }
+
+    /**
+    * The top most node of the cube.
+    * All navigations begin from this node.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+    public var rootNode:CubeNode;
+
+    /**
+    * The property name used to refer to the property
+    * pointing at the aggregation of nodes below a CubeNode
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+    public var allNodePropertyName:String ="(All)";
+
+    /**
+    * Indicates the last level of data other than measures.
+    * This is used to read the measure values from the data item
+    * when processing reaches this level.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+    public var levelPreviousToMeasuresIndex:int;
+
+	//total number of nodes in the cube. (used for perf improvement analysis)
+    //private var totalNodes:int;
+
+    //count of cubes collapsed (used for perf improvement analysis)
+    //private var nodesUpdated:int;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+    * Starts the process of building the cube by initializing
+    * the members.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+    public function initNodeBuilding():void
+    {
+        prevNodeAtLevel = [];
+        allNodeAtLevel = [];
+        prevValueAtLevel = [];
+
+        //compute for all the measures
+        measureMembers = _cube.findDimension("Measures").members;
+
+        measuresLength = measureMembers.length;
+        for each (var measure:OLAPMeasure in measureMembers)
+        {
+            computeEndMap[measure] = [];
+            computeObjEndMap[measure] = [];
+            measureMap[measure.name] = measure;
+        }
+    }
+
+	/**
+	 * Instructs the builder to start processing the next data item.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+    public function moveToNextRound():void
+    {
+        currentLevel = 0;
+        prevLevel = -1;
+        nextLevel = 1;
+    }
+
+    /**
+    * Finalizes building the cube by computing aggregations at all nodes.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+    public function completeNodeBuilding():Boolean
+    {
+    	if (prevNodeAtLevel && prevValueAtLevel)
+	    {
+	    	// close all nodes pending
+	        //TODO initializing rootNode twice
+	        rootNode = prevNodeAtLevel[0];
+	        closingNodesBelow = prevNodeAtLevel.reverse();
+	        closingValues = prevValueAtLevel.reverse();
+
+	        var tempLevel:int = closingNodesBelow.length - 1;
+	        var n:int = closingNodesBelow.length;
+	        for (var i:int = 0; i < n; ++i)
+	        {
+	            if (tempLevel < 1)
+	                continue;
+	            var closingValue:Object = closingValues[i];
+	            //OLAPTrace.traceMsg("Closing value:" + closingValues[i], //OLAPTrace.TRACE_LEVEL_2);
+	            var closingNode:Object = closingNodesBelow[i];
+	            if (closingNode[closingValue] is CubeNode)
+	            {
+	                if (closingNode[allNodePropertyName] is CubeNode)
+	                {
+	                	//if there are is only one property (other than (all) ) we short circuit
+	                	if (closingNode.numCells == 2)
+	                		closingNode[allNodePropertyName] = closingNode[closingValue];
+	                	else
+		                	accumValuesFromNode(closingNode[allNodePropertyName], closingNode[closingValue]);
+	                }
+	            }
+
+	            --tempLevel;
+	        }
+
+			prevNodeAtLevel = null;
+			prevValueAtLevel = null;
+			allNodeAtLevel = null;
+
+			rootCellValues = [];
+	        for (var rootCell:String in rootNode)
+    	    {
+        	    if (rootCell == allNodePropertyName)
+            	    continue;
+            	rootCellValues.push(rootCell);
+         	}
+         	return false;
+    	}
+
+        //aggregate the top node
+        while(rootCellValues.length)
+        {
+        	rootCell = rootCellValues.pop();
+            // can we accumulate everything from the tree to the all tree here?
+            accumValuesFromNode(rootNode[allNodePropertyName], rootNode[rootCell]);
+            return false;
+        }
+
+		//finalize all aggregation computation
+        var temp:Array;
+        var y:Object;
+		var measure:OLAPMeasure;
+		var aggregator:IOLAPCustomAggregator;
+        for (var x:Object in computeEndMap)
+        {
+			measure = x as OLAPMeasure;
+        	aggregator = measure.aggregator as IOLAPCustomAggregator;
+            temp = computeEndMap[x];
+            for each (y in temp)
+            {
+                y["saved_" + measure.name] = y[measure.name];
+                y[measure.name] = aggregator.computeEnd(y[measure.name], measure.dataField);
+            }
+			delete computeEndMap[x];
+        }
+
+        for (x in computeObjEndMap)
+        {
+			measure = x as OLAPMeasure;
+        	aggregator = measure.aggregator as IOLAPCustomAggregator;
+            temp = computeObjEndMap[x];
+            for each (y in temp)
+            {
+                y["saved_"+measure.name] = y[measure.name];
+                y[measure.name] = aggregator.computeObjectEnd(y[measure.name], measure.dataField);
+            }
+			delete computeObjEndMap[x];
+        }
+
+		computeEndMap = new Dictionary(false);
+		computeObjEndMap = new Dictionary(false);
+
+		//collapse CubeNodes which have only one property
+		//The aggregation property would point to the single property itself
+		optimizeCube();
+
+		return true;
+    }
+
+    /**
+    * Adds a new value to the cube. If the value is different from the previous value
+    * at the current level adds the new value as a property to the CubeNode and creates
+    * a new CubeNode below. Also creates a CubeNode for aggregating the properties in the
+    * new CubeNode.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+    public function addValueToNodeBuilder(values:Object, currentData:Object):void
+    {
+    	var i:int = 0;
+    	for each(var value:Object in values)
+        {
+	        // decide whether to create a new node or use the previous node
+	        var prevNode:CubeNode = prevNodeAtLevel[currentLevel];
+	        var prevValue:Object = prevValueAtLevel[currentLevel];
+	        var closingValue:Object;
+	        var closingNode:Object
+
+	        if (prevValue)
+	        {
+	            if (prevValue == value)
+	            {
+	                // continue to process the same value
+	                // update nodes
+	                //OLAPTrace.traceMsg("Continue with value:" + prevValue, OLAPTrace.TRACE_LEVEL_2);
+	            }
+	            else
+	            {
+	                // no more processing of this value.
+	                // time to compute update all nodes etc
+
+	                // close all nodes below this node
+	                closingNodesBelow = prevNodeAtLevel.splice(nextLevel).reverse();
+	                closingValues = prevValueAtLevel.splice(nextLevel).reverse();
+	                var tempLevel:int = currentLevel + closingNodesBelow.length;
+	                var closingNodeLength:int = closingNodesBelow.length;
+	                for (i= 0; i < closingNodeLength; ++i)
+	                {
+	                	if (tempLevel != 0)
+	                    {
+		                    closingValue = closingValues[i];
+	    	                //OLAPTrace.traceMsg("Closing value:" + closingValues[tempIndex], OLAPTrace.TRACE_LEVEL_2);
+	        	            closingNode = closingNodesBelow[i];
+	            	        if (closingNode[closingValue] is CubeNode)
+	                	    {
+	                        	if (closingNode[allNodePropertyName] is CubeNode)
+	                            {
+	                            	if (tempLevel > currentLevel && closingNode.numCells == 2)
+	                            		closingNode[allNodePropertyName] = closingNode[closingValue];
+	                            	else
+	                           	 		accumValuesFromNode(closingNode[allNodePropertyName], closingNode[closingValue]);
+	                            }
+	    	                }
+	    	           	}
+
+	                    --tempLevel;
+	                }
+
+	                //OLAPTrace.traceMsg("Closing value:" + prevValue, //OLAPTrace.TRACE_LEVEL_2);
+	                closingValue = prevValue;
+	                closingNode = prevNode;
+	                if (currentLevel != 0 && closingNode[closingValue] is CubeNode)
+	                {
+	                    if (closingNode[allNodePropertyName] is CubeNode)
+	                        accumValuesFromNode(closingNode[allNodePropertyName], closingNode[closingValue]);
+	                }
+
+	                //OLAPTrace.traceMsg("New value:" + value, //OLAPTrace.TRACE_LEVEL_2);
+	            }
+	        }
+
+
+	        if (!prevNode)
+	        {
+	            //OLAPTrace.traceMsg("Creating new node: " + value, //OLAPTrace.TRACE_LEVEL_2);
+	            // - create a new node, put the pointer to the ALL node, add new key to the ALL node
+	            var newNode:CubeNode = new CubeNode(currentLevel);
+
+	            // create a all node to summaries the cells of this node
+	            newNode[allNodePropertyName] = new CubeNode(currentLevel+1);
+	            ++newNode.numCells;
+
+	            //TODO initializing rootNode twice
+	            if (currentLevel == 0 && prevNodeAtLevel.length == 0)
+	                rootNode = newNode;
+
+	            prevNodeAtLevel[currentLevel] = newNode;
+
+		        var allNode:CubeNode = allNodeAtLevel[currentLevel];
+	            if (!allNode)
+	            {
+	                // for the top most level we would have only one node
+	                // which is also the all node
+	                // for other levels we have one node which is a all node
+	                // containing aggr value of all cells in the nodes at that level
+	                if (currentLevel > 0)
+	                {
+	                    allNodeAtLevel[currentLevel] = allNode = new CubeNode(currentLevel);
+	                    allNode[allNodePropertyName] = {};
+	                    allNodeAtLevel[prevLevel][allNodePropertyName] = allNode;
+	                    ++allNode.numCells;
+	                }
+	                else
+	                {
+	                    // special case of zero level
+	                    allNodeAtLevel[currentLevel] = newNode;
+	                }
+	            }
+
+	            prevNode = newNode;
+	        }
+	        else
+	        {
+	            // add a new cell/property to the previous node if it doesn't exist
+	            if (!prevNode.hasOwnProperty(value))
+	            {
+	                prevNodeAtLevel.splice(nextLevel);
+	                prevValueAtLevel.splice(nextLevel);
+	            }
+	        }
+
+	        // are we at the last level?
+	        // if so we take up measures computation
+	        if (currentLevel == levelPreviousToMeasuresIndex)
+	        {
+	            if (!prevNode.hasOwnProperty(value))
+	            {
+	            	prevNode[value] = new SummaryNode;
+	            	++prevNode.numCells;
+	            }
+	            var temp:Object;
+	            if (prevNode[allNodePropertyName] is CubeNode || prevNode[allNodePropertyName] is Number)
+	            {
+	            	temp = prevNode[allNodePropertyName] = new SummaryNode;
+	            }
+	            else
+	            {
+	                temp = prevNode[allNodePropertyName];
+	            }
+
+				for (i = 0; i < measuresLength; ++i)
+	            {
+					var measureMember:OLAPMember = measureMembers.getItemAt(i) as OLAPMember;
+	                var newDataValue:Object = currentData[measureMember.dataField];
+
+					//force convertion of measure value to a number.
+					//xml dataType runs into problems with value of 0
+					if (typeof(newDataValue) == "xml")
+						newDataValue = Number(newDataValue.toString());
+					newDataValue = Number(newDataValue);
+	                addValueToNode(prevNode[value], measureMember.name, newDataValue, measureMember as OLAPMeasure, currentData);
+	                addValueToNode(temp, measureMember.name, newDataValue, measureMember as OLAPMeasure, currentData);
+	            }
+	        }
+
+	        // make the node at previous level point to the node
+	        if (currentLevel > 0)
+	        {
+	            var prevLevelNode:Object = prevNodeAtLevel[prevLevel];
+	            if (!prevLevelNode.hasOwnProperty(prevValueAtLevel[prevLevel]))
+	            {
+	                var prevLevelValue:Object = prevValueAtLevel[prevLevel];
+	                prevLevelNode[prevLevelValue] = newNode;
+					++prevLevelNode.numCells;
+	            }
+	        }
+
+	        prevValueAtLevel[currentLevel] = value;
+	        ++prevLevel;
+	        ++currentLevel;
+	        ++nextLevel;
+	    }
+    }
+
+    /**
+     *  @private
+     */
+    private function optimizeCube():void
+    {
+    	var total:int =0;
+    	//totalNodes = 0;
+    	//nodesUpdated = 0;
+    	//start from root node and count the number of nodes which have only one cell.
+    	//skip the allValue because we are not updating the numCells there.
+    	if (rootNode)
+	    	total = findNodeWithOneCell(rootNode);
+    	//trace(nodesUpdated + "/" + total + "/" + totalNodes);
+    }
+
+    /**
+    *  @private
+    *  Recursively collapses CubeNodes
+    *
+    */
+    private function findNodeWithOneCell(node:CubeNode):int
+    {
+    	//++totalNodes;
+    	var total:int = 0;
+    	if (node.numCells == 2)
+    		++total;
+    	for (var p:String in node)
+    	{
+    		//if (x == allNodePropertyName)
+    		//	continue;
+    		if (node.numCells == 2)
+    		{
+    			if (node[allNodePropertyName] != node[p])
+    			{
+    				delete node[allNodePropertyName];
+	    			node[allNodePropertyName] = node[p];
+    				//++nodesUpdated;
+    			}
+    		}
+
+    		var cNode:CubeNode = node[p] as CubeNode;
+    		if (cNode)
+    		{
+    			total += findNodeWithOneCell(cNode);
+    		}
+    	}
+		return total;
+    }
+
+    /**
+    *  @private
+    *  Adds a measure value to the node.
+    *  Invokes aggregator functions to compute the value.
+    *
+    */
+    private function addValueToNode(node:Object, name:String,
+                        value:Object, measure:OLAPMeasure, rowData:Object):void
+    {
+    	var aggregator:IOLAPCustomAggregator;
+
+        //if the value is a number we need to compute the summary.
+        if (value is Number)
+        {
+        	aggregator = measure.aggregator as IOLAPCustomAggregator;
+            if (!node.hasOwnProperty(name))
+            {
+                node[name] = aggregator.computeBegin(measure.dataField);
+                computeEndMap[measure].push(node);
+                aggregator.computeLoop(node[name], measure.dataField, /*value,*/ rowData);
+            }
+            else
+            {
+                aggregator.computeLoop(node[name], measure.dataField, /*value,*/ rowData);
+            }
+        }
+        else
+        {
+            var temp:Object;
+            if (!node.hasOwnProperty(name))
+            {
+                node[name] = temp = new SummaryNode;
+                ++node.numCells;
+                for (var p:String in value)
+                {
+                    measure = measureMap[p];
+	            	aggregator = measure.aggregator as IOLAPCustomAggregator;
+                    if (temp.hasOwnProperty(p))
+                    {
+                        aggregator.computeObjectLoop(temp[p], value[p]);
+                    }
+                    else
+                    {
+                        temp[p] = aggregator.computeObjectBegin(value[p]);
+                        computeObjEndMap[measure].push(temp);
+                    }
+                }
+            }
+            else
+            {
+                if (value is SummaryNode && !(node[name] is SummaryNode))
+                {
+                	var incr:Boolean = false;
+                	if (!node.hasOwnProperty(name))
+	                	incr = true;
+                	temp = node[name] = new SummaryNode;
+                	if (incr)
+                		++node.numCells;
+                }
+                else
+                {
+                    temp = node[name];
+                }
+
+                for (p in value)
+                {
+                    measure = measureMap[p];
+	            	aggregator = measure.aggregator as IOLAPCustomAggregator;
+                    if (temp.hasOwnProperty(p))
+                    {
+                        aggregator.computeObjectLoop(temp[p], value[p]);
+                    }
+                    else
+                    {
+                        temp[p] = aggregator.computeObjectBegin(value[p]);
+                        computeObjEndMap[measure].push(temp);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+    *  @private
+    *  Aggregates all property values from source to target objects recursively.
+    *
+    */
+    private function accumValuesFromNode(target:Object,
+                                source:Object):void
+    {
+        for (var p:String in source)
+	    {
+	    	if (p == allNodePropertyName)
+	    	{
+				continue;
+	    	}
+            var value:Object = source[p];
+        	if (value is CubeNode)
+        	{
+                var newNode:CubeNode;
+                if (target[p] is CubeNode)
+                {
+                    newNode = target[p];
+                }
+                else
+                {
+                	target[p] = newNode = new CubeNode(value.level);
+                	++target.numCells;
+                }
+                accumValuesFromNode(newNode, value);
+            }
+            else
+            {
+            	addValueToNode(target, p, value, null, null);
+            }
+        }
+
+        if (target.numCells == 1)
+        {
+        	for (p in target)
+	        {
+	        	target[allNodePropertyName] = target[p];
+	        	break;
+	        }
+	        ++target.numCells;
+        }
+        else if (target.numCells == 2 && target.hasOwnProperty(allNodePropertyName))
+        {
+        	for (p in target)
+	        {
+	        	if (p == allNodePropertyName)
+	        		continue;
+	        	if (target[allNodePropertyName] != target[p])
+	        		target[allNodePropertyName] = target[p];
+	        	break;
+	        }
+        }
+        else
+        {
+        	var done:Boolean = false;
+        	var q:String;
+        	for (p in target)
+	        {
+	        	if (p == allNodePropertyName)
+	        		continue;
+	        	if (target[allNodePropertyName] == target[p])
+	        	{
+	        		value = target[p];
+	        		if (value is CubeNode)
+                	{
+                		target[allNodePropertyName] = newNode = new CubeNode(/*value.level*/);
+	        			accumValuesFromNode(newNode, value);
+						for (q in target)
+                		{
+                			if (q == allNodePropertyName ||
+                				q == p)
+                				continue;
+                			//now we have the other property.
+			            	accumValuesFromNode(newNode, source[q]);
+                		}
+                		done = true;
+                	}
+                	else
+                	{
+                		target[allNodePropertyName] = null;
+		            	addValueToNode(target, allNodePropertyName, value, null, null);
+						for (q in target)
+                		{
+                			if (q == allNodePropertyName ||
+                				q == p)
+                				continue;
+                			//now we have the other property.
+			            	addValueToNode(target, allNodePropertyName, target[q], null, null);
+                		}
+                		done = true;
+                	}
+	        		break;
+	        	}
+	        }
+
+	        if (!done)
+        	{
+	        	p = allNodePropertyName;
+	            value = source[p];
+	        	if (value is CubeNode)
+	        	{
+	                if (target[p] is CubeNode)
+	                    newNode = target[p];
+	                else
+	                {
+	                	target[p] = newNode = new CubeNode(value.level);
+	                	++target.numCells;
+	                }
+	                accumValuesFromNode(newNode, value);
+	            }
+	            else
+	            {
+	            	addValueToNode(target, p, value, null, null);
+	            }
+	        }
+        }
+    }
+
+}
+}


FLEX-24411 FLEX-20322 added support for .milliseconds and fix parsing of international months

--- frameworks/projects/framework/src/mx/formatters/DateFormatter.as
+++ frameworks/projects/framework/src/mx/formatters/DateFormatter.as
@@ -129,6 +129,7 @@
         var hour:int = -1;
         var min:int = -1;
         var sec:int = -1;
+		var milli:int = -1;

         var letter:String = "";
         var marker:Object = 0;
@@ -154,7 +155,8 @@
             // If the letter is a key punctuation character,
             // cache it for the next time around.
             if (letter == "/" || letter == ":" ||
-                letter == "+" || letter == "-")
+                letter == "+" || letter == "-" ||
+				letter == ".")
             {
                 marker = letter;
                 continue;
@@ -162,23 +164,27 @@

             // Scan for groups of numbers and letters
             // and match them to Date parameters
-            if ("a" <= letter && letter <= "z" ||
-                "A" <= letter && letter <= "Z")
+            if (!("0" <= letter && letter <= "9" ||
+				  letter == "/" || letter == ":" ||
+			      letter == "+" || letter == "-" ||
+				  letter == "." || letter == " "))
             {
                 // Scan for groups of letters
                 var word:String = letter;
                 while (count < len)
                 {
                     letter = str.charAt(count);
-                    if (!("a" <= letter && letter <= "z" ||
-                          "A" <= letter && letter <= "Z"))
+					if ("0" <= letter && letter <= "9"||
+						letter == "/" || letter == ":" ||
+						letter == "+" || letter == "-" ||
+						letter == "." || letter == " ")
                     {
                         break;
                     }
                     word += letter;
                     count++;
                 }
-
+
                 // Allow for an exact match
                 // or a match to the first 3 letters as a prefix.
                 var n:int = DateBase.defaultStringKey.length;
@@ -233,7 +239,8 @@
                 var num:int = int(numbers);

                 // If num is a number greater than 70, assign num to year.
-                if (num >= 70)
+				// if after seconds and a dot or colon more likly milliseconds
+                if (num >= 70 && !((marker == "." || marker == ":") && sec >= 0))
                 {
                     if (year != -1)
                     {
@@ -251,25 +258,29 @@
                 }

                 // If the current letter is a slash or a dash,
-                // assign num to month or day.
+                // assign num to month or day or sec.
                 else if (letter == "/" || letter == "-" || letter == ".")
                 {
                     if (mon < 0)
                         mon = (num - 1);
-                    else if (day < 0)
-                        day = num;
+					else if (day < 0)
+						day = num;
+					else if (sec < 0)
+						sec = num;
                     else
                         break; //error
                 }

                 // If the current letter is a colon,
-                // assign num to hour or minute.
+                // assign num to hour or minute or sec.
                 else if (letter == ":")
                 {
                     if (hour < 0)
                         hour = num;
                     else if (min < 0)
                         min = num;
+					else if (sec < 0)
+						sec = num;
                     else
                         break; //error
                 }
@@ -281,12 +292,19 @@
                     min = num;
                 }

-                // If minutes are defined and seconds are not,
-                // assign num to seconds.
-                else if (min >= 0 && sec < 0)
-                {
-                    sec = num;
-                }
+				// If minutes are defined and seconds are not,
+				// assign num to seconds.
+				else if (min >= 0 && sec < 0)
+				{
+					sec = num;
+				}
+
+				// If seconds are defined and millis are not,
+				// assign num to mills.
+				else if (sec >= 0 && milli < 0)
+				{
+					milli = num;
+				}

                 // If day is not defined, assign num to day.
                 else if (day < 0)
@@ -315,6 +333,8 @@
             return null; // error - needs to be a date

         // Time is set to 0 if null.
+		if (milli < 0)
+			milli = 0;
         if (sec < 0)
             sec = 0;
         if (min < 0)
@@ -324,7 +344,7 @@

         // create a date object and check the validity of the input date
         // by comparing the result with input values.
-        var newDate:Date = new Date(year, mon, day, hour, min, sec);
+        var newDate:Date = new Date(year, mon, day, hour, min, sec, milli);
         if (day != newDate.getDate() || mon != newDate.getMonth())
             return null;


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@1283241 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/core/ISharedDisplayObject.as
+++ frameworks/projects/spark/src/spark/core/ISharedDisplayObject.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2006 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.core
 {
 /**


Added optional evt argument to addCallbacks.

--- media/as3/ZeroClipboard.as
+++ media/as3/ZeroClipboard.as
@@ -65,7 +65,7 @@
 			ExternalInterface.call( 'ZeroClipboard_TableTools.dispatch', domId, 'load', null );
 		}

-		public function addCallbacks ():void {
+		public function addCallbacks (evt:Event = null):void {
 			ExternalInterface.addCallback("setHandCursor", setHandCursor);
 			ExternalInterface.addCallback("clearText", clearText);
 			ExternalInterface.addCallback("setText", setText);


Transferred from the Adobe Open Source Subversion Repository

Revision: 2574
Author:   rfrishbe@adobe.com
Date:     2008-07-23T00:58:36.355440Z

Log Message:
-----------
Few mods to SkinnableComponent.

- Get rid of invalidateFlags and add in boolean for skinStateIsDirty which is the only thing it was used for.  Put the logic for this in commitProperties rather than in validateProperties()
- Make skinObject a public read-only property.  _skinObject is a protected read-write version of it.
- Added some extra comments for some of the methods.
- Updated clearSkinParts to not only remove static parts but also dynamic parts.

QE: Yes
Doc: No
Bugs: -
Reviewer: Glenn

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/SkinnableComponent.as

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

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as
@@ -12,12 +12,12 @@
 package flex.core
 {

+import flash.events.Event;
 import flash.system.ApplicationDomain;
 import flash.utils.*;

 import mx.core.IFactory;
 import mx.core.UIComponent;
-import mx.core.UIComponentGlobals;
 import mx.core.mx_internal;
 import mx.events.PropertyChangeEvent;

@@ -60,7 +60,7 @@
     public function SkinnableComponent()
     {
         // Initially state is dirty
-        invalidateFlags |= STATE_DIRTY;
+        skinStateIsDirty = true;
     }

     //--------------------------------------------------------------------------
@@ -86,11 +86,40 @@
         // TODO: Send notification
     }

-    /**
-     *  The instantiated skin object. This property should not be set directly.
-     */
-    [Bindable]
-    protected var skinObject:Skin;
+    // we need all these getters/setters around skinObject so it
+    // can be a public read-only Bindable variable and a protected
+    // read/write variable.
+    private var __skinObject:Skin;
+
+    [Bindable("skinObjectChanged")]
+
+    /**
+     *  The instantiated skin object. This property should not be set
+     *  directly but should be set using loadSkin().
+     */
+    protected function get _skinObject():Skin
+    {
+        return __skinObject;
+    }
+
+    protected function set _skinObject(value:Skin):void
+    {
+    	if (value === __skinObject)
+    	   return;
+
+        __skinObject = value;
+        dispatchEvent(new Event("skinObjectChanged"));
+    }
+
+    [Bindable("skinObjectChanged")]
+
+    /**
+     *  The instantiated skin object.
+     */
+    public function get skinObject():Skin
+    {
+        return _skinObject;
+    }

     /**
      *  @private
@@ -134,6 +163,12 @@
             skinChanged = false;
             unloadSkin();
             loadSkin();
+        }
+
+        if (skinStateIsDirty)
+        {
+            commitSkinState( getUpdatedSkinState() );
+            skinStateIsDirty = false;
         }
     }

@@ -201,26 +236,11 @@
      */
     protected function invalidateSkinState():void
     {
-        if ((invalidateFlags & STATE_DIRTY) != 0)
+        if (skinStateIsDirty)
             return; // State is already invalidated

-        invalidateFlags |= STATE_DIRTY;
-        if (parent && UIComponentGlobals.layoutManager)
-            UIComponentGlobals.layoutManager.invalidateProperties(this);
-    }
-
-    // TODO EGeorgie: we're not supposed to override UIComponent:validateProperties,
-    // but we'll do so here for now, until we figure out how we refactor UIComponent for flex4
-    /**
-     *  @private
-     */
-    override public function validateProperties():void
-    {
-        super.validateProperties();
-
-        if ((invalidateFlags & STATE_DIRTY) != 0)
-            commitSkinState( getUpdatedSkinState() );
-        invalidateFlags &= ~STATE_DIRTY;
+        skinStateIsDirty = true;
+        invalidateProperties();
     }

     /**
@@ -234,31 +254,26 @@
         skinObject.currentState = newState;
     }

-    private const STATE_DIRTY:int= 0x00000001;
-
-    /**
-     *  @private
-     *  invalidation flags.
-     */
-    protected var invalidateFlags:int;
-
     //--------------------------------------------------------------------------
     //
     //  Methods - Skin/Behavior lifecycle
     //
     //--------------------------------------------------------------------------

-    /**
-     *  Load the skin for the component. This method should not be called
-     *  directly. Typically, subclasses will not need to override this method.
-     */
+	/**
+	 *  Load the skin for the component. This method should not be called
+	 *  directly. Typically, subclasses will not need to override this method.
+	 *
+	 *  It instantiates the skin for the component, adds the skin as a child,
+	 *  resolves all part associations, and calls attachBehaviors().
+	 */
     protected function loadSkin():void
     {
         // Factory
         var skinClassFactory:IFactory = getStyle("skinFactory") as IFactory;

         if (skinClassFactory)
-            skinObject = skinClassFactory.newInstance() as Skin;
+            _skinObject = skinClassFactory.newInstance() as Skin;

         // Class
         if (!skinObject)
@@ -266,7 +281,7 @@
             var skinClass:Class = getStyle("skinZZ") as Class;

             if (skinClass)
-                skinObject = new skinClass();
+                _skinObject = new skinClass();
         }

         if (skinObject)
@@ -336,26 +351,34 @@
         }
     }

-    /**
-     *  Attach behaviors to the component. This method should be overridden
-     *  by subclasses.
-     */
+	/**
+	 *  Attach behaviors to the component. This method should be overridden
+	 *  by subclasses.  The code to attach behaviors to an individual part
+	 *  should be put into partAdded().  The code to attach behaviors to
+	 *  the skin object as a whole, should be done here.
+	 *
+	 *  It is called by the loadSkin() method.
+	 */
     protected function attachBehaviors():void
     {
         skinObject.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, skin_propertyChangeHandler);

-        // Declarative behaviors get attached here
-    }
-
-    /**
-     *  Remove behavior from the component. This method should be overridden
-     *  by subclasses.
-     */
+        // Declarative behaviors to the skin get attached here.
+        // Use partAdded for individual part behaviors
+    }
+
+	/**
+	 *  Remove behavior from the component. This method should be overridden
+	 *  by subclasses.
+	 *
+	 *  It is called by the unloadSkin() method.
+	 */
     protected function removeBehaviors():void
     {
         skinObject.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, skin_propertyChangeHandler);

-        // Declarative behaviors get removed here
+        // Declarative behaviors to the skin get removed here.
+        // Use partRemoved for individual part behaviors
     }

     /**
@@ -373,18 +396,31 @@
             for (var i:int = 0; i < parts.length; i++)
             {
                 var skinPart:SkinPartInfo = parts[i];
+                var skinPartID:String = skinPart.id;

-                if (!(this[skinPart.id] is IFactory))
-                    partRemoved(skinPart.id, this[skinPart.id]);
-                this[skinPart.id] = null;
+                if (!(this[skinPartID] is IFactory))
+                {
+                    partRemoved(skinPartID, this[skinPartID]);
+                }
+                else
+                {
+                    var len:int = numDynamicParts(skinPartID);
+                    for (var j:int = 0; j < len; j++)
+                        removePartInstance(skinPartID, getDynamicPartAt(skinPartID, j));
+                }
+
+                this[skinPartID] = null;
             }
         }
     }

-    /**
-     *  Unload the skin for this component. This method should not be called
-     *  directly. Typically, subclasses will not need to override this method.
-     */
+	/**
+	 *  Unload the skin for this component. This method should not be called
+	 *  directly. Typically, subclasses will not need to override this method.
+	 *
+	 *  This method is called whenever a skin is changed at runtime. It removes the skin,
+	 *  clears all part associations, and calls removeBehaviors().
+	 */
     protected function unloadSkin():void
     {
         if (skinObject)
@@ -392,7 +428,7 @@
             removeBehaviors();
             clearSkinParts();
             removeChild(skinObject);
-            skinObject = null;
+            _skinObject = null;
         }
     }

@@ -621,6 +657,7 @@
                 if (event.property == skinPart.id)
                 {
                     this[skinPart.id] = event.newValue;
+
                     if (!(this[skinPart.id] is IFactory))
                         partAdded(skinPart.id, this[skinPart.id]);
                     break;
@@ -637,8 +674,16 @@

     /**
      *  @private
+     *  True if the skin has changed and hasn't gone through validation yet.
      */
     private var skinChanged:Boolean = false;
+
+
+    /**
+     *  @private
+     *  Whether the skin state is invalid or not.
+     */
+    protected var skinStateIsDirty:Boolean = false;
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 6173
Author:   dsubrama@adobe.com
Date:     2009-04-20T22:09:26.709924Z

Log Message:
-----------
SDK-20210

As per ARB's request, the loosely typed property 'fxComponent' has been removed from Skin. To now get a reference back to a component from its skin, you can use the hostComponent property which is set if the skin has the [HostComponent] metadata declared. With this metadata, the hostComponent property ends up being a strongly typed reference back to the owning component.

More information can be found on the ARB page: http://opensource.adobe.com/wiki/display/flexsdk/Removing+fxComponent+from+Skin

As part of this change, I've added a new skin for the skinnable Window component.

Reviewer: Glenn
Checkintests: Pass
Doc: Yes - removed a property
QA: Yes - if any tests rely on fxComponent, they will have to be changed.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Skin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/default/WindowedApplicationSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/default/MacTitleBarSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/default/WindowSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as
@@ -443,7 +443,6 @@
         if (skin)
         {
             skin.owner = this;
-            skin.fxComponent = this;

             // As a convenience if someone has declared hostComponent
             // we assign a reference to ourselves.  If the hostComponent


Transferred from the Adobe Open Source Subversion Repository

Revision: 2185
Author:   jimurphy@adobe.com
Date:     2008-06-23T20:04:23.150071Z

Log Message:
-----------
Merged 3.0.x revisions [2108,2111,2113,2142,2145,2147,2149-2150,2171,2178,2183] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/templates/html-templates/express-installation-with-history/history/historyFrame.html</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/swfutils/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/binding/utils/BindingUtils.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/debugger/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/asc/build/java/build.xml</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/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/antTasks/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NavBar.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/templates/html-templates/client-side-detection-with-history/history/historyFrame.html</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/binding/Binding.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/types/SOAPArrayType.as</path>
<path kind="file" action="M">/flex/sdk/trunk/templates/html-templates/no-player-detection-with-history/history/historyFrame.html</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.as</path>

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

--- frameworks/projects/framework/src/mx/binding/utils/BindingUtils.as
+++ frameworks/projects/framework/src/mx/binding/utils/BindingUtils.as
@@ -112,7 +112,8 @@
      *  Binds a setter function, setter, to a bindable property
      *  or property chain.
      *  If a ChangeWatcher instance is successfully created,
-     *  the setter function is invoked with current value of chain.
+     *  the setter function is invoked with one argument that is the
+     *  current value of chain.
      *
      *  @param setter Setter method to invoke with an argument of the current
      *  value of chain when that value changes.


Fix Button's downstate

Fix Button's downstate

--- frameworks/projects/mobiletheme/src/spark/skins/ios7/ButtonSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/ios7/ButtonSkin.as
@@ -280,6 +280,19 @@
         super.createChildren();
         setStyle("textAlign", "center");
     }
+
+	override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+	{
+		super.updateDisplayList(unscaledWidth,unscaledHeight);
+		if(currentState == "down")
+		{
+			this.alpha = 0.5;
+		}
+		else
+		{
+			this.alpha = 1.0;
+		}
+	}

     /**
      *  @private


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

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

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

--- frameworks/projects/spark/src/spark/components/RadioButtonGroup.as
+++ frameworks/projects/spark/src/spark/components/RadioButtonGroup.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 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: 4513
Author:   chaase@adobe.com
Date:     2009-01-13T21:46:08.801038Z

Log Message:
-----------
Minor bug fixes.
* pausing effect currently sleeping through its startDelay now works
* new effects now work correctly with nonzero repeatDelay
* ASDoc fixes for ANIMATION_REPEAT event

QE Notes: None
Doc Notes: None
Bugs: sdk-17993, sdk-17842, sdk-18672
Reviewer: Jason
Tests: checkintests, Mustella: Effects, gumbo/effects, ListDataEffects

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/AnimationEvent.as</path>

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

--- frameworks/projects/spark/src/spark/effects/animation/Animation.as
+++ frameworks/projects/spark/src/spark/effects/animation/Animation.as
@@ -156,6 +156,11 @@
     private var startTime:Number;
     // Track number of times repeated for use by repeatCount logic
     private var numRepeats:Number;
+    // The amount of time that the animation should delay before
+    // starting. This is set to a non-negative number only when
+    // an Animation is paused during its startDelay phase
+    private var delayTime:Number = -1;
+

     private var easingFunction:Function;
     private static var defaultEaser:IEaser = new Sine(.5);
@@ -722,6 +727,35 @@
         // The rest of what we need to do is handled by the stop() function
         stop();
     }
+
+    private function addToDelayedAnimations(timeToDelay:Number):void
+    {
+        // Run timer if it's not currently running
+        if (!timer)
+        {
+            Timeline.pulse();
+            timer = new Timer(_resolution);
+            timer.addEventListener(TimerEvent.TIMER, timerHandler);
+            timer.start();
+        }
+        var animStartTime:int = Timeline.currentTime + timeToDelay;
+        var insertIndex:int = -1;
+        for (var i:int = 0; i < delayedStartAnims.length; ++i)
+        {
+            var timeAtIndex:int =
+                delayedStartTimes[delayedStartAnims[i]];
+            if (animStartTime < timeAtIndex)
+            {
+                insertIndex = i;
+                break;
+            }
+        }
+        if (insertIndex >= 0)
+            delayedStartAnims.splice(insertIndex, 0, this);
+        else
+            delayedStartAnims.push(this);
+        delayedStartTimes[this] = animStartTime;
+    }

     /**
      * Start the animation
@@ -729,37 +763,9 @@
     public function play():void
     {
         if (startDelay > 0)
-        {
-            // Run timer if it's not currently running
-            if (!timer)
-            {
-                Timeline.pulse();
-                timer = new Timer(_resolution);
-                timer.addEventListener(TimerEvent.TIMER, timerHandler);
-                timer.start();
-            }
-            var animStartTime:int = Timeline.currentTime + startDelay;
-            var insertIndex:int = -1;
-            for (var i:int = 0; i < delayedStartAnims.length; ++i)
-            {
-                var timeAtIndex:int =
-                    delayedStartTimes[delayedStartAnims[i]];
-                if (animStartTime < timeAtIndex)
-                {
-                    insertIndex = i;
-                    break;
-                }
-            }
-            if (insertIndex >= 0)
-                delayedStartAnims.splice(insertIndex, 0, this);
-            else
-                delayedStartAnims.push(this);
-            delayedStartTimes[this] = animStartTime;
-        }
+            addToDelayedAnimations(startDelay);
         else
-        {
             start();
-        }
     }

     /**
@@ -923,6 +929,12 @@
      */
     public function pause():void
     {
+        var animPendingTime:Number = delayedStartTimes[this];
+        if (!isNaN(animPendingTime))
+        {
+            delayTime = animPendingTime - Timeline.currentTime;
+            removeFromDelayedAnimations();
+        }
         _isPlaying = false;
     }

@@ -952,12 +964,19 @@
     public function resume():void
     {
         _isPlaying = true;
-
-        startTime = intervalTime - _elapsedTime;
-        if (_doReverse)
-        {
-            reverse();
-            _doReverse = false;
+
+        if (delayTime >= 0)
+        {
+            addToDelayedAnimations(delayTime);
+        }
+        else
+        {
+            startTime = intervalTime - _elapsedTime;
+            if (_doReverse)
+            {
+                reverse();
+                _doReverse = false;
+            }
         }
     }


Making the annotations buttons behave like 508 buttons

--- plugins/annotationsPlugin/src/com/kaltura/kdpfl/view/Annotation.as
+++ plugins/annotationsPlugin/src/com/kaltura/kdpfl/view/Annotation.as
@@ -164,8 +164,11 @@
 		private function addKButton(btnId:String, btnLabel:String, tabIndx:int) : void {
 			var btn:KButton = new KButton();
 			btn.id = btnId;
-			btn.buttonType = KButton.LABEL_BUTTON;
+			//to support 508 button behavior
+			btn.setSkin("onScreenBtn" , true);
+			//btn.buttonType = KButton.LABEL_BUTTON;
 			btn.label = btnLabel;
+			btn.maxHeight = 18;
 			btn.buttonMode = true;
 			btn.tabIndex = tabIndex;
 			btn.color1= 0x0051DE;


Transferred from the Adobe Open Source Subversion Repository

Revision: 8434
Author:   dloverin@adobe.com
Date:     2009-07-07T20:15:32.903944Z

Log Message:
-----------
Initialize the statusBar after it is added to the application or window.

Spark Window and Spark WindowedApplication:
Added some code to partAdded to initialize a newly created status bar based on the value of showStatusBar.

QE Notes: Please verify the Spark Window is working as well as Spark WindowedApplication. They both had the bug.
Doc Notes: none.
Bugs: SDK-22113
Reviewer: Glenn
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/Window.as</path>

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

--- frameworks/projects/airspark/src/spark/components/WindowedApplication.as
+++ frameworks/projects/airspark/src/spark/components/WindowedApplication.as
@@ -1810,7 +1810,13 @@
     {
         super.partAdded(partName, instance);

-        if (instance == titleBar)
+        if (instance == statusBar)
+        {
+            statusBar.visible = _showStatusBar;
+            statusBar.includeInLayout = _showStatusBar;
+            showStatusBarChanged = false;
+        }
+        else if (instance == titleBar)
         {
             if (!nativeWindow.closed)
             {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

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

--- frameworks/projects/charts/src/mx/charts/styles/metadata/MarginStyles.as
+++ frameworks/projects/charts/src/mx/charts/styles/metadata/MarginStyles.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 7910
Author:   egeorgie@adobe.com
Date:     2009-06-17T01:41:55.138890Z

Log Message:
-----------
P-ARB changes:

* IGraphicElement sharedIndex -> DisplayObjectSharingMode
* ScrollUnit -> NavigationUnit
* LayoutBase.getDestinationIndex -> LayoutBase.getNavigationDestinationIndex, param order reversed!!!!
* mouseOpaque -> mouseEnabledWhereTransparent
* various other small renames and changes to non-public APIs

Doc Notes: None
Bugs: N/A
Reviewer: Deepa
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/layouts/WheelLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexFXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/InvalidatingSprite.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/IViewport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/ScrollUnit.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/NavigationUnit.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/IGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/DisplayObjectSharingMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
@@ -634,10 +634,10 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function getHorizontalScrollPositionDelta(scrollUnit:uint):Number
+    public function getHorizontalScrollPositionDelta(navigationUnit:uint):Number
     {
         return (dataGroup) ?
-            dataGroup.getHorizontalScrollPositionDelta(scrollUnit) : 0;
+            dataGroup.getHorizontalScrollPositionDelta(navigationUnit) : 0;
     }

     /**
@@ -648,10 +648,10 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function getVerticalScrollPositionDelta(scrollUnit:uint):Number
+    public function getVerticalScrollPositionDelta(navigationUnit:uint):Number
     {
         return (dataGroup) ?
-            dataGroup.getVerticalScrollPositionDelta(scrollUnit) : 0;
+            dataGroup.getVerticalScrollPositionDelta(navigationUnit) : 0;
     }

     //--------------------------------------------------------------------------


Transferred from the Adobe Open Source Subversion Repository

Revision: 17004
Author:   cframpto@adobe.com
Date:     2010-07-21T20:54:17.524014Z

Log Message:
-----------
When the selectionMode goes to none, make sure all the selection visuals are removed and only reset the caret if a selection isn't required.
When the column's headerText is changed, make sure the ColumnHeaderBar is updated.

QE notes:
Doc notes:
Bugs: SDK-26844, SDK-26888
Reviewer: Hans
Tests run: none
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
@@ -296,8 +296,10 @@
     {
         _headerText = value;

-        // ToDo: need to notify the ColumnHeaderBar?
-
+        // Todo: invalidate just the ColumnHeaderBar not the entire grid?
+        if (grid)
+            grid.invalidateDisplayList();
+
         dispatchEvent(new Event("headerTextChanged"));
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 17438
Author:   hmuller@adobe.com
Date:     2010-08-20T22:20:07.797793Z

Log Message:
-----------
Add DefaultGridItemRenderers support for the lineBreak style.

DefaultGridItemRenderer performance optimization: defeat wrapping when lineBreak="explicit" and use the textfield's intrinsic support for clipping.

Enable the "textFieldClass" style for DataGrid.

QE notes: This change will likely break most bitmap tests.
Doc notes:
Bugs: SDK-27402
Reviewer: Carol, Kevin
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
@@ -446,16 +446,7 @@
 		grid.itemRendererGroup.addElement(renderer);

 		initializeItemRenderer(renderer, 0 /* rowIndex */, columnIndex, grid.typicalItem, false);
-
-        // The default width of a TextField is 100.  If autoWrap is true, and
-        // multiline is true, the measured text will wrap if it is wider than
-        // the width. This is not what we want when measuring the typicalItem
-        // unless the width is explicitly set on the column.
-        var w:Number =
-            !isNaN(column.width) || !(renderer is DefaultGridItemRenderer) ?
-            column.width : UIComponent.DEFAULT_MAX_WIDTH;
-
-        layoutItemRenderer(renderer, 0, 0, w, NaN);
+        layoutItemRenderer(renderer, 0, 0, column.width, NaN);

 		grid.itemRendererGroup.removeElement(renderer);
 		return renderer;
@@ -696,10 +687,9 @@
         const startRowIndex:int = gridDimensions.getRowIndexAt(scrollX, scrollY);
         const startCellR:Rectangle = gridDimensions.getCellBounds(startRowIndex, startColIndex);

-        // when null, no dataProvider exists or grid in a bad state. So, clean up and return.
+        // No dataProvider exists or the grid is in a bad state. Clean up and return.
         if (!startCellR)
         {
-            // free itemRenderers
             for each (var r:IVisualElement in visibleItemRenderers)
                 freeItemRenderer(r);

@@ -1263,7 +1253,7 @@

         if (!bounds)
             return;
-
+
         const y:Number = bounds.bottom; // TBD: should center on gap here.
         layoutGridElement(separator, x, y, width, height);
     }
@@ -1277,7 +1267,7 @@

         if (!bounds)
             return;
-
+
         const x:Number = bounds.right; // TBD: should center on gap here.
         const y:Number = r.y;
         layoutGridElement(separator, x, y, width, height);
@@ -1292,13 +1282,13 @@

         if (!columnBounds)
             return;
-
+
         // TBD: should center on gap here.
         const x:Number = columnBounds.right;
         const y:Number = columnBounds.top;
         layoutGridElement(separator, x, y, width, height);
     }
-
+
     //--------------------------------------------------------------------------
     //
     //  Selection Indicators


using Object instead of XML

using Object instead of XML

Change-Id: Ie0c43a70f02598252f9ed34327e41cada77e8097

--- WeaveData/src/weave/data/AttributeColumns/ProxyColumn.as
+++ WeaveData/src/weave/data/AttributeColumns/ProxyColumn.as
@@ -180,6 +180,6 @@
 		 * This object can be used as an alternative to a null
 		 * return value for a function returning a ProxyColumn.
 		 */
-		public static const undefinedColumn:ProxyColumn = registerDisposableChild(ProxyColumn, new ProxyColumn(<attribute title="Undefined"/>));
+		public static const undefinedColumn:ProxyColumn = registerDisposableChild(ProxyColumn, new ProxyColumn({title: "Undefined"}));
 	}
 }


Let's deprecate but not remove EmbeddedSwfLoader.

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

--- src/as/com/threerings/util/EmbeddedSwfLoader.as
+++ src/as/com/threerings/util/EmbeddedSwfLoader.as
@@ -68,6 +68,7 @@
  * @deprecated Content packs are coming, and symbols can be embedded directly
  * by using [Embed(source="foo.swf#somesymbol")]
  */
+[Deprecated(replacement="com.threerings.util.MultiLoader")]
 public class EmbeddedSwfLoader extends EventDispatcher
 {
     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 8483
Author:   smgilson@adobe.com
Date:     2009-07-09T17:52:48.367800Z

Log Message:
-----------
Second checkin to update the namespace in ASDoc MXML syntax descriptions for Spark components

QE Notes: None
Doc Notes: None
Bugs: -
Checkintests: passed

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Fade.as</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/filters/ColorMatrixFilter.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/filters/BlurFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/DisplacementMapFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/ShaderFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/DropShadowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/CallAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientBevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateColor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale3D.as</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/spark/effects/AnimateTransitionShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AddAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Graphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Wipe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/ConvolutionFilter.as</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/src/spark/effects/animation/Keyframe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientGlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/SetAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/RemoveAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/BevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientFilter.as</path>

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

--- frameworks/projects/spark/src/spark/filters/GradientGlowFilter.as
+++ frameworks/projects/spark/src/spark/filters/GradientGlowFilter.as
@@ -47,7 +47,7 @@
  *  attributes of its superclass and adds no tag attributes:

  *
  *

- *  <GradientGlowFilter/>
+ *  <s:GradientGlowFilter/>
  *

  *
  * @see flash.display.BitmapData#applyFilter()


add more diagnostics to comparebitmap

add more diagnostics to comparebitmap

--- mustella/as3/src/mustella/CompareBitmap.as
+++ mustella/as3/src/mustella/CompareBitmap.as
@@ -393,6 +393,10 @@
             width = target.width * target.root.scaleX;
             height = target.height * target.root.scaleY;
         }
+        trace("getTargetSize: height: ", target.height);
+        trace("getTargetSize: root.height: ", target.root.height);
+        trace("getTargetSize: stageHeight: ", target.stage.stageHeight);
+        trace("getTargetSize: loaderInfo.height: ", target.loaderInfo.height);
 		return new Point(width, height);
 	}