ReactionViews helpers

ReactionViews helpers

--- vendor/ras3r/ras3r/ReactionView.as
+++ vendor/ras3r/ras3r/ReactionView.as
@@ -105,6 +105,42 @@
 			return (instance_sprite(ComboBox, 'dataProvider', object_name, property, attributes, styles) as ComboBox);
 		}

+		// horizontal layout helper:
+		protected function hbox (options:Object, ...args) :DisplayObjectContainer
+		{
+			options = new Hash({ padding: 4 }).update(options);
+
+			var container:Sprite = new Sprite();
+			addChild(container);
+
+			var previous:*;
+			while (previous = args.shift())
+			{
+				container.addChild(previous);
+				if (args.length) args[0].x = previous.x + previous.width + options.padding;
+			}
+
+			return container;
+		}
+
+		// vertical layout helper:
+		protected function vbox (options:Object, ...args) :DisplayObjectContainer
+		{
+			options = new Hash({ padding: 4 }).update(options);
+
+			var container:Sprite = new Sprite();
+			addChild(container);
+
+			var previous:*;
+			while (previous = args.shift())
+			{
+				container.addChild(previous);
+				if (args.length) args[0].y = previous.y + previous.height + options.padding;
+			}
+
+			return container;
+		}
+
 		protected function image (object_name:String, property:String, attributes:Object = null, styles:Object = null) :Image
 		{
 			return (instance_sprite(Image, 'source', object_name, property, attributes, styles) as Image);
@@ -124,9 +160,11 @@
 			catch (exception:*)
 			{
 				// do nothing, just a sand trap
+				// to debug:
+				// Logger.info('ReactionView#instance_sprite exception: ' + exception);
 			}
 			// return
-			return sprite(name, attributes, styles);
+			return instance;
 		}

 		protected function label (object_name:String, property:String, html:String, attributes:Object = null, styles:Object = null) :Label
@@ -222,7 +260,9 @@

 		protected function text_field (object_name:String, property:String, attributes:Object = null, styles:Object = null) :TextField
 		{
-			return (instance_sprite(TextField, 'htmlText', object_name, property, attributes, styles) as TextField);
+			var instance:* = (instance_sprite(TextField, 'htmlText', object_name, property, attributes, styles) as TextField);
+			instance.height = (instance.textHeight ? (instance.textHeight + 4) : 4);
+			return instance;
 		}

 		protected function text_input (object_name:String, property:String, attributes:Object = null, styles:Object = null) :TextInput


added Viewport.alwaysOnTop property

added Viewport.alwaysOnTop property

--- src/aerys/minko/render/Viewport.as
+++ src/aerys/minko/render/Viewport.as
@@ -18,6 +18,8 @@
 	import aerys.minko.type.IVersionnable;

 	import flash.display.DisplayObject;
+	import flash.display.Graphics;
+	import flash.display.Shape;
 	import flash.display.Sprite;
 	import flash.display.Stage3D;
 	import flash.display.StageAlign;
@@ -68,12 +70,15 @@

 		private var _logoIsHidden		: Boolean					= false;

+		private var _mask				: Shape						= new Shape();
+		private var _alwaysOnTop		: Boolean					= false;
+
 		public function get postProcessEffect() : IEffect
 		{
 			return _postProcessEffect;
 		}

-		public function set postProcessEffect(value : IEffect):void
+		public function set postProcessEffect(value : IEffect) : void
 		{
 			_postProcessEffect = value;
 		}
@@ -236,6 +241,17 @@
 			return _visitors;
 		}

+		public function get alwaysOnTop() : Boolean
+		{
+			return _alwaysOnTop;
+		}
+
+		public function set alwaysOnTop(value : Boolean) : void
+		{
+			_alwaysOnTop = value;
+			updateRectangle();
+		}
+
 		/**
 		 * Creates a new Viewport object.
 		 *
@@ -262,7 +278,7 @@

 		private function addedToStageHandler(event : Event) : void
 		{
-			var stageId	: int 		= 0;
+			var stageId	: int	= 0;

 			_stage3d = stage.stage3Ds[stageId];

@@ -287,6 +303,14 @@
 			}

 			resizeHandler();
+
+			stage.addEventListener(Event.ADDED, displayObjectAddedToStageHandler);
+		}
+
+		private function displayObjectAddedToStageHandler(event : Event) : void
+		{
+			if (event.target.parent == stage)
+				updateMask();
 		}

 		private function removedFromStage(event : Event) : void
@@ -344,20 +368,57 @@
 		{
 			if (_stage3d)
 			{
-				var origin : Point = localToGlobal(ZERO2);
+				var origin 	: Point 	= localToGlobal(ZERO2);
+				var width	: Number	= Math.min(2048, _width);
+				var height	: Number	= Math.min(2048, _height);

 				_stage3d.x = origin.x;
 				_stage3d.y = origin.y;
+
+				updateMask();

 				if (_stage3d.context3D)
 				{
 					_stage3d.context3D.configureBackBuffer(
-						Math.min(2048, _width),
-						Math.min(2048, _height),
+						width,
+						height,
 						_antiAliasing,
 						true
 					);
 				}
+			}
+		}
+
+		private function updateMask() : void
+		{
+			var numChildren : int = stage.numChildren;
+			var i 			: int = 0;
+
+			if (_alwaysOnTop)
+			{
+				var origin 	: Point 	= localToGlobal(ZERO2);
+				var gfx		: Graphics	= _mask.graphics;
+
+				gfx.clear();
+				gfx.beginFill(0);
+				gfx.moveTo(0, 0);
+				gfx.lineTo(stage.stageWidth, 0);
+				gfx.lineTo(stage.stageWidth, stage.stageHeight);
+				gfx.lineTo(0., stage.stageHeight);
+				gfx.lineTo(0, 0);
+				gfx.moveTo(origin.x, origin.y);
+				gfx.lineTo(origin.x, origin.y + height);
+				gfx.lineTo(origin.x + width, origin.y + height);
+				gfx.lineTo(origin.x + width, origin.y);
+				gfx.endFill();
+
+				for (i = 0; i < numChildren; ++i)
+					stage.getChildAt(i).mask = _mask;
+			}
+			else
+			{
+				for (i = 0; i < numChildren; ++i)
+					stage.getChildAt(i).mask = null;
 			}
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 6018
Author:   pfarland@adobe.com
Date:     2009-04-08T15:36:36.925077Z

Log Message:
-----------
API changes from PARB review of Advanced CSS additions.

Changes include:
- Fold IStyleManager3 back into IStyleManager2
- Remove CSSSelectorKind enum as it is not needed.
- Update CSSStyleDeclaration constructor to accept either a CSSSelector or legacy String selector.
- Update CSSConditionKind enum to use Strings
- Revert concept of StyleManager.addCSSStyleDeclaration() so that we continue to use the Flex 3 restriction of one CSSStyleDeclaration per unique selector String.
- Minor renames for lower level APIs such as IAdvancedStyleClient's isPseudoSelectorMatch() -> matchesCSSState(), and isTypeSelectorMatch)() -> matchesCSSType()
- Update ASDoc comment version info for APIs that were really added in Gumbo
- Add compiler warning for unqualified type selectors (e.g. when a type selector probably needs a namespace prefix).
- Add compiler warning for unresolved qualified type selector (e.g. when a type is probably missing from a manifest).

QE: I have an update for the mustella tests of programmatic creation of CSSStyleDeclaration
Doc: Yes, if we can do an ASDoc review of CSS classes in the framework it would be much appreciated.
Checkintests: Pass
mustella StyleManager/AdvancedCSS: Pass
Reviewer: Glenn

Modified Paths:
--------------
<path kind="dir" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/flash</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StylesContainer.java</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/flex4/src/spark/primitives/supportClasses/TextGraphicElement.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/styles/IStyleManager2.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager3.as</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/styles/CSSSelector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleSelector.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler_en.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IAdvancedStyleClient.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSSelectorKind.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSCondition.as</path>
<path kind="file" action="A">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/UnqualifiedTypeSelector.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleCondition.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProxy.as</path>
<path kind="file" action="A">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/UnresolvedQualifiedTypeSelector.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSConditionKind.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/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/ImplementationGenerator.java</path>

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

--- frameworks/projects/framework/src/mx/styles/StyleProxy.as
+++ frameworks/projects/framework/src/mx/styles/StyleProxy.as
@@ -282,9 +282,9 @@
      *  @copy mx.styles.IAdvancedStyleClient#id
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get id():String
     {
@@ -299,9 +299,9 @@
      *  @copy mx.styles.IAdvancedStyleClient#styleParent
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get styleParent():IAdvancedStyleClient
     {
@@ -427,43 +427,29 @@
     //--------------------------------------------------------------------------

     /**
-     *  @copy mx.styles.IAdvancedStyleClient#isPseudoSelectorMatch()
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    public function isPseudoSelectorMatch(pseudoState:String):Boolean
-    {
-        return _advancedSource ? _advancedSource.isPseudoSelectorMatch(pseudoState) : false;
-    }
-
-    /**
-     *  @copy mx.styles.IAdvancedStyleClient#isTypeSelectorMatch()
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
+     *  @copy mx.styles.IAdvancedStyleClient#matchesCSSState()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function matchesCSSState(cssState:String):Boolean
+    {
+        return _advancedSource ? _advancedSource.matchesCSSState(cssState) : false;
+    }
+
+    /**
+     *  @copy mx.styles.IAdvancedStyleClient#matchesCSSType()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
-    public function isTypeSelectorMatch(type:String):Boolean
-    {
-        return _advancedSource ? _advancedSource.isTypeSelectorMatch(type) : false;
-    }
-
-    /**
-     *  @copy mx.styles.IAdvancedStyleClient#applyStateStyles()
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    public function applyStateStyles(oldState:String, newState:String, recursive:Boolean):void
-    {
-        if (_advancedSource)
-            _advancedSource.applyStateStyles(oldState, newState, recursive);
+    public function matchesCSSType(cssType:String):Boolean
+    {
+        return _advancedSource ? _advancedSource.matchesCSSType(cssType) : false;
     }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 11247
Author:   klin@adobe.com
Date:     2009-10-28T21:59:11.963883Z

Log Message:
-----------
Fix for https://bugs.adobe.com/jira/browse/SDK-23184.

Updated a bunch of Style metadata ASDocs to describe different defaults between the Halo and Spark themes. Also, fixed a few typos along the way.

defaults.css - rearranged a few styles to be in alphabetical order
Button.as - removed extra emphasizedSkin style metadata
Panel.as - added spark theme to borderAlpha metadata

QE notes: None
Doc notes: None
Bugs: SDK-23184
Reviewer: Glenn
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBarButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/halo/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/fl/video/NCManagerNative.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SkinStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.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/frameworks/projects/framework/src/mx/styles/metadata/BorderStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/FlexModuleFactory.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/TreeItemRenderer.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/styles/metadata/TextStyles.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/LinkButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/menuClasses/MenuItemRenderer.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/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Application.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/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/PopUpMenuIcon.as</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/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/PaddingStyles.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/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/GapStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/fl/video/NCManagerDynamicStream.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/LinkBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/FocusStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/BitmapImage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/StrokedElement.as</path>

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 16711
Author:   chiedozi@adobe.com
Date:     2010-06-29T00:59:56.370003Z

Log Message:
-----------
Removed replaceCurrentView from ViewNavigator

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

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
@@ -141,8 +141,7 @@
     private static const NO_ACTION:int = -1;
     private static const PUSH_ACTION:int = 0;
     private static const POP_ACTION:int = 1;
-    private static const REPLACE_ACTION:int = 2;
-    private static const CHANGE_SECTION_ACTION:int = 3;
+    private static const CHANGE_SECTION_ACTION:int = 2;

     //--------------------------------------------------------------------------
     //
@@ -570,21 +569,6 @@
             currentViewChanged = true;
             invalidateProperties();
         }
-    }
-
-    public function replaceCurrentView(viewFactory:Class,
-                                       initializationData:Object = null,
-                                       transition:ViewTransition = null):void
-    {
-        if (!canRemoveCurrentView())
-            return;
-
-        if (currentSection.length > 0)
-            currentSection.pop();
-
-        pushView(viewFactory, initializationData, transition);
-
-        lastAction = REPLACE_ACTION;
     }

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 11065
Author:   dsubrama@adobe.com
Date:     2009-10-21T22:22:44.093939Z

Log Message:
-----------
Check-in of runtime implementation of FXG 2.0 additional blendModes and luminosity mask. Additionally, cleaned up the code formatting and whitespace in the AS wrapper classes around the .pbj files.

With this check-in the static FXG and runtime FXG implementations are complete (sans bugfixing)!

QE notes: Test!
Doc notes: Yes
Bugs: None
Reviewer: Evtim (before break)
Tests run: FXG testsuite
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ColorDodgeShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/HueShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/SoftLightShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ColorBurnShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/LuminosityMaskShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ExclusionShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/SaturationShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/LuminosityShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/shaders/ColorShader.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
@@ -16,6 +16,7 @@
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.MouseEvent;
+import flash.filters.ShaderFilter;
 import flash.geom.Rectangle;

 import mx.core.IVisualElement;
@@ -28,6 +29,7 @@
 import spark.core.MaskType;
 import spark.layouts.BasicLayout;
 import spark.layouts.supportClasses.LayoutBase;
+import spark.primitives.shaders.LuminosityMaskShader;

 use namespace mx_internal;

@@ -970,6 +972,33 @@
                     _mask.cacheAsBitmap = true;
                     cacheAsBitmap = true;
                 }
+				else if (_maskType == MaskType.LUMINOSITY)
+				{
+					// Sets up the mask's mode property based on
+					// whether the luminosityClip and
+					// luminosityInvert properties are on or off.
+					var mode:int;
+					if (luminosityClip && !luminosityInvert)
+						mode = 0;
+					if (luminosityClip && luminosityInvert)
+						mode = 1;
+					if (!luminosityClip && !luminosityInvert)
+						mode = 2;
+					if (!luminosityClip && luminosityInvert)
+						mode = 3;
+
+					_mask.cacheAsBitmap = true;
+					cacheAsBitmap = true;
+
+					// Create the luminosityMask shader, apply the correct mode to it,
+					// and create the filter
+					var luminosityMaskShader:LuminosityMaskShader = new LuminosityMaskShader();
+					luminosityMaskShader.mode = mode;
+					var maskFilter:ShaderFilter = new ShaderFilter(luminosityMaskShader);
+
+					// Apply the filter to the mask
+					_mask.filters = [maskFilter];
+				}
             }
         }

@@ -1411,7 +1440,8 @@

     /**
      *  The mask type.
-     *  Possible values are MaskType.CLIP and MaskType.ALPHA.
+     *  Possible values are MaskType.CLIP and MaskType.ALPHA
+	 *  or MaskType.LUMINOSITY.
      *
      *
The default value is MaskType.CLIP, corresponding to "clip".

      *
@@ -1432,12 +1462,7 @@
      */
     public function set maskType(value:String):void
     {
-    	// FIXME (dsubrama): Temporarily exit when maskType is
-    	// set to luminosity; support for this will come shortly.
-    	if (value == "luminosity")
-    		return;
-
-        if (_maskType != value)
+		if (_maskType != value)
         {
             _maskType = value;
             maskTypeChanged = true;


Transferred from the Adobe Open Source Subversion Repository

Revision: 17258
Author:   hmuller@adobe.com
Date:     2010-08-10T19:11:28.648438Z

Log Message:
-----------
When extra vertical space is available, pad with row separators and backgrounds.

QE notes: One expected Mustella bitmap compare failure: in DataGrid_Properties_removeColumn3
Doc notes:
Bugs: SDK-26839
Reviewer: Kevin
Tests run: checking, mustella cyclone
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/GridDimensions.as</path>
<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/skins/spark/DefaultGridItemRenderer.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
+++ frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
@@ -444,7 +444,6 @@
         super.updateDisplayList(width, height);

         labelDisplay.setActualSize(width - 10, height - 5);  // setActualSize() side-effects labelDisplay.textHeight
-        //LayoutElementUIComponentUtils.setLayoutBoundsSize(labelDisplay, width - 10, height - 5, nonDeltaLayoutMatrix());
         updateMeasuredSize();  // See @private comment above

         // If the Grid's row heights are fixed and the labelDisplay will not fit, then clip.
@@ -462,7 +461,6 @@
         }

         labelDisplay.move(5, 5);
-        //LayoutElementUIComponentUtils.setLayoutBoundsSize(labelDisplay, 5, 5, nonDeltaLayoutMatrix());
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 791
Author:   proberts@adobe.com
Date:     2008-03-12T20:11:30.979110Z

Log Message:
-----------
ASDocs update (trunk) -- added @productVersion tag and some @see tags to class descriptions for mx.core.windowClasses.StatusBar and TitleBar. These fixes have already been made in the published livedocs source.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/StatusBar.as</path>

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

--- frameworks/projects/airframework/src/mx/core/windowClasses/StatusBar.as
+++ frameworks/projects/airframework/src/mx/core/windowClasses/StatusBar.as
@@ -29,6 +29,11 @@

 /**
  *  The default status bar for a WindowedApplication or a Window.
+ *
+ *  @see mx.core.Window
+ *  @see mx.core.WindowedApplication
+ *
+ *  @productversion Apollo 1.0
  */
 public class StatusBar extends UIComponent
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 8
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-15T01:49:31.087529Z

Log Message:
-----------
The beginning of the open-source Flex SDK.

Populated the flex/sdk/trunk directory with an open-source subset of files from //depot/flex/sdk/...@191097 in the Faramir Perforce server. This changelist is a bit past the 3.0rc0 build.

The Ant scripts will not successfully build yet. They need to be adapted to the open-source subset.

Modified Paths:
--------------
2532 paths were modified

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

--- frameworks/projects/framework/src/mx/validators/PhoneNumberValidator.as
+++ frameworks/projects/framework/src/mx/validators/PhoneNumberValidator.as
@@ -0,0 +1,335 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.validators
+{
+
+import mx.managers.ISystemManager;
+import mx.managers.SystemManager;
+import mx.resources.IResourceManager;
+import mx.resources.ResourceManager;
+
+[ResourceBundle("validators")]
+
+/**
+ *  The PhoneNumberValidator class validates that a string
+ *  is a valid phone number.
+ *  A valid phone number contains at least 10 digits,
+ *  plus additional formatting characters.
+ *  The validator does not check if the phone number
+ *  is an actual active phone number.
+ *
+ *  @mxml
+ *
+ *
The <mx:PhoneNumberValidator> tag
+ *  inherits all of the tag attributes of its superclass,
+ *  and adds the following tag attributes:

+ *
+ *

+ *  <mx:PhoneNumberValidator
+ *    allowedFormatChars="()- .+"
+ *    invalidCharError="Your telephone number contains invalid characters."
+ *    wrongLengthError="Your telephone number must contain at least 10 digits."
+ *  />
+ *

+ *
+ *  @includeExample examples/PhoneNumberValidatorExample.mxml
+ */
+public class PhoneNumberValidator extends Validator
+{
+	include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Convenience method for calling a validator
+	 *  from within a custom validation function.
+	 *  Each of the standard Flex validators has a similar convenience method.
+	 *
+	 *  @param validator The PhoneNumberValidator instance.
+	 *
+	 *  @param value A field to validate.
+	 *
+	 *  @param baseField Text representation of the subfield
+	 *  specified in the value parameter.
+	 *  For example, if the value parameter specifies value.phone,
+	 *  the baseField value is "phone".
+	 *
+	 *  @return An Array of ValidationResult objects, with one ValidationResult
+	 *  object for each field examined by the validator.
+	 *
+	 *  @see mx.validators.ValidationResult
+	 */
+	public static function validatePhoneNumber(validator:PhoneNumberValidator,
+											   value:Object,
+											   baseField:String):Array
+	{
+		var results:Array = [];
+
+		// Resource-backed properties of the validator.
+		var allowedFormatChars:String = validator.allowedFormatChars;
+
+		var resourceManager:IResourceManager = ResourceManager.getInstance();
+
+		var valid:String =  DECIMAL_DIGITS + allowedFormatChars;
+		var len:int = value.toString().length;
+		var digitLen:int = 0;
+		var n:int;
+		var i:int;
+
+		n = allowedFormatChars.length;
+		for (i = 0; i < n; i++)
+		{
+			if (DECIMAL_DIGITS.indexOf(allowedFormatChars.charAt(i)) != -1)
+			{
+				var message:String = resourceManager.getString(
+					"validators", "invalidFormatChars");
+				throw new Error(message);
+			}
+		}
+
+		for (i = 0; i < len; i++)
+		{
+			var temp:String = "" + value.toString().substring(i, i + 1);
+			if (valid.indexOf(temp) == -1)
+			{
+				results.push(new ValidationResult(
+					true, baseField, "invalidChar",
+					validator.invalidCharError));
+				return results;
+			}
+			if (valid.indexOf(temp) <= 9)
+				digitLen++;
+		}
+
+		if (digitLen < 10)
+		{
+			results.push(new ValidationResult(
+				true, baseField, "wrongLength",
+				validator.wrongLengthError));
+			return results;
+		}
+
+		return results;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 */
+	public function PhoneNumberValidator()
+	{
+		super();
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  allowedFormatChars
+	//----------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the allowedFormatChars property.
+	 */
+	private var _allowedFormatChars:String;
+
+    /**
+	 *  @private
+	 */
+	private var allowedFormatCharsOverride:String;
+
+	[Inspectable(category="General", defaultValue="null")]
+
+	/**
+	 *  The set of allowable formatting characters.
+	 *
+	 *  @default "()- .+"
+	 */
+	public function get allowedFormatChars():String
+	{
+		return _allowedFormatChars;
+	}
+
+    /**
+	 *  @private
+	 */
+	public function set allowedFormatChars(value:String):void
+	{
+		if (value != null)
+		{
+			var n:int = value.length;
+			for (var i:int = 0; i < n; i++)
+			{
+				if (DECIMAL_DIGITS.indexOf(value.charAt(i)) != -1)
+				{
+					var message:String = resourceManager.getString(
+						"validators", "invalidFormatChars");
+					throw new Error(message);
+				}
+			}
+		}
+
+		allowedFormatCharsOverride = value;
+
+		_allowedFormatChars = value != null ?
+							  value :
+							  resourceManager.getString(
+								  "validators",
+								  "phoneNumberValidatorAllowedFormatChars");
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties: Errors
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  invalidCharError
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the invalidCharError property.
+	 */
+	private var _invalidCharError:String;
+
+    /**
+	 *  @private
+	 */
+	private var invalidCharErrorOverride:String;
+
+	[Inspectable(category="Errors", defaultValue="null")]
+
+	/**
+	 *  Error message when the value contains invalid characters.
+	 *
+	 *  @default "Your telephone number contains invalid characters."
+	 */
+	public function get invalidCharError():String
+	{
+		return _invalidCharError;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set invalidCharError(value:String):void
+	{
+		invalidCharErrorOverride = value;
+
+		_invalidCharError = value != null ?
+							value :
+							resourceManager.getString(
+								"validators", "invalidCharErrorPNV");
+	}
+
+	//----------------------------------
+	//  wrongLengthError
+	//----------------------------------
+
+    /**
+	 *  @private
+	 *  Storage for the wrongLengthError property.
+	 */
+	private var _wrongLengthError:String;
+
+    /**
+	 *  @private
+	 */
+	private var wrongLengthErrorOverride:String;
+
+	[Inspectable(category="Errors", defaultValue="null")]
+
+	/**
+	 *  Error message when the value has fewer than 10 digits.
+	 *
+	 *  @default "Your telephone number must contain at least 10 digits."
+	 */
+	public function get wrongLengthError():String
+	{
+		return _wrongLengthError;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set wrongLengthError(value:String):void
+	{
+		wrongLengthErrorOverride = value;
+
+		_wrongLengthError = value != null ?
+							value :
+							resourceManager.getString(
+								"validators", "wrongLengthErrorPNV");
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+    /**
+	 *  @private
+     */
+	override protected function resourcesChanged():void
+	{
+		super.resourcesChanged();
+
+		allowedFormatChars = allowedFormatCharsOverride;
+
+		invalidCharError = invalidCharErrorOverride;
+		wrongLengthError = wrongLengthErrorOverride;
+	}
+
+	/**
+     *  Override of the base class doValidation() method
+     *  to validate a phone number.
+     *
+	 *
You do not typically call this method directly;
+	 *  Flex calls it as part of performing a validation.
+	 *  If you create a custom Validator class, you must implement this method.

+	 *
+     *  @param value Object to validate.
+     *
+	 *  @return An Array of ValidationResult objects, with one ValidationResult
+	 *  object for each field examined by the validator.
+	 */
+	override protected function doValidation(value:Object):Array
+    {
+		var results:Array = super.doValidation(value);
+
+		// Return if there are errors
+		// or if the required property is set to false and length is 0.
+		var val:String = value ? String(value) : "";
+		if (results.length > 0 || ((val.length == 0) && !required))
+			return results;
+		else
+		    return PhoneNumberValidator.validatePhoneNumber(this, value, null);
+    }
+}
+
+}


reverted to jwopitz's version; undoing accidental commit of test code

--- fp9/src/as3isolib/display/renderers/SceneBlittingRenderer.as
+++ fp9/src/as3isolib/display/renderers/SceneBlittingRenderer.as
@@ -88,72 +88,22 @@
 		 */
 		public function renderScene (scene:IIsoScene):void
 		{
-			var startTime:uint = getTimer();
-
 			if (!_targetBitmap)
 				return;

-			// Revamped by David Holz
-			// TODO - keep in sync with DefaultSceneLayoutRenderer
+			var sortedChildren:Array = scene.displayListChildren.slice(); //make a copy of the children
+			sortedChildren.sort(isoDepthSort); //perform a secondary sort for any hittests

-			// NOTE - Flash player 10 only
-			// Using scene.children because they are in last display order, scene.displayListChildren are unordered and fully resorted every time!
-			var sortedChildren:Vector.<IIsoDisplayObject> = Vector.<IIsoDisplayObject>(scene.children);
-
-			// Flash player 9
-			//var sortedChildren:Array = scene.children.slice();
-
-			// Ocean sort, from http://cadaver.homeftp.net/rants/sprite.htm
-			// Starting from offset 1, make sure [N] >= [N-1].  If not, keep pushing N back in the list until it's >= the new [N-1]
-			// This sort works best when there are minor changes to the depth ordering that need to be patched up
-
-			// All of the aditional variables are to reduce the number of array accesses, which are all bounds checked by the VM.  Each removed array access lopped more time off the render.
-			var max:uint = sortedChildren.length;
-			var objB:IIsoDisplayObject = sortedChildren[0];
-			var boundsB:IBounds = objB.isoBounds;
-			for (var i:uint = 1; i < max; ++i)
+			var child:IIsoDisplayObject;
+			var i:uint;
+			var m:uint = sortedChildren.length;
+			while (i < m)
 			{
-				var j:uint = i;
+				child = IIsoDisplayObject(sortedChildren[i]);
+				if (child.depth != i)
+					scene.setChildIndex(child, i);

-				var objA:IIsoDisplayObject = sortedChildren[i];
-				var boundsA:IBounds = objA.isoBounds;
-
-				// There are many instances where 2 blocks can be ordered A->B in one axis, and B->A in the other
-				// We need to determine a priority order for comparing, so that they won't just toggle getting behind each other from frame to frame.
-				// Also, these mutual behindednesses can lead to the painter's algorithm type of problems and break visual sorting order.
-
-				// See if objA is behind objB, which would be out of place
-				if((boundsA.top <= boundsB.bottom) || // if A is under B, then process
-				   (!(boundsA.bottom >= boundsB.top) && // else, if A is _known not to be over B_ and ...
-				    ((boundsA.right <= boundsB.left) || // if A is left of B, then process
-					 (!(boundsA.left >= boundsB.right) && // else, if A is _known not to be right of B_ and ...
-					  (boundsA.front <= boundsB.back))))) // if A is back of B, then process
-				{
-					// This should be faster than 2 calls to splice(), since those 2 calls would shuffle all the way to the end of the Vector.
-					// This code only shifts the affected indexes
-					do
-					{
-						sortedChildren[j] = objB;
-						--j;
-						if (0 == j)
-							break;
-						objB = sortedChildren[j - 1];
-						boundsB = objB.isoBounds;
-					}
-					while ((boundsA.top <= boundsB.bottom) || // if A is under B, then process
-				           (!(boundsA.bottom >= boundsB.top) && // else, if A is _known not to be over B_ and ...
-				            ((boundsA.right <= boundsB.left) || // if A is left of B, then process
-					         (!(boundsA.left >= boundsB.right) && // else, if A is _known not to be right of B_ and ...
-					          (boundsA.front <= boundsB.back))))) // if A is back of B, then process
-
-					//trace("moved", i, dumpBounds(boundsA), "to", j, dumpBounds(sortedChildren[j+1].isoBounds));
-
-					// Update the display order of this moved object
-					sortedChildren[j] = objA;
-					scene.setChildIndex(objA, j);
-				}
-				objB = objA;
-				boundsB = boundsA;
+				i++;
 			}

 			var offsetMatrix:Matrix = new Matrix();
@@ -167,8 +117,37 @@
 				_targetBitmap.bitmapData.dispose();

 			_targetBitmap.bitmapData = sceneBitmapData;
+		}
+
+		////////////////////////////////////////////////////
+		//	SORT
+		////////////////////////////////////////////////////
+
+		private function isoDepthSort (childA:Object, childB:Object):int
+		{
+			var boundsA:IBounds = childA.isoBounds;
+			var boundsB:IBounds = childB.isoBounds;

-			trace("scene layout render time", getTimer() - startTime, "ms");
+			if (boundsA.right <= boundsB.left)
+				return -1;
+
+			else if (boundsA.left >= boundsB.right)
+				return 1;
+
+			else if (boundsA.front <= boundsB.back)
+				return -1;
+
+			else if (boundsA.back >= boundsB.front)
+				return 1;
+
+			else if (boundsA.top <= boundsB.bottom)
+				return -1;
+
+			else if (boundsA.bottom >= boundsB.top)
+				return 1;
+
+			else
+				return 0;
 		}
 	}
 }


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

--- frameworks/projects/charts/src/mx/charts/series/PieSeries.as
+++ frameworks/projects/charts/src/mx/charts/series/PieSeries.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: 8487
Author:   smgilson@adobe.com
Date:     2009-07-09T18:57:21.985536Z

Log Message:
-----------
final 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@1284063 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/effects/easing/Linear.as
+++ frameworks/projects/spark/src/spark/effects/easing/Linear.as
@@ -35,7 +35,7 @@
  *
  *  @mxml
  *
- *
The <mx:Linear> tag
+ *
The <s:Linear> tag
  *  inherits all of the tag attributes of its of its superclass,
  *  and adds the following tag attributes:

  *


Add getter on totalTime, currentTime and isPlaying properties

--- src/aerys/minko/scene/controller/AnimationController.as
+++ src/aerys/minko/scene/controller/AnimationController.as
@@ -10,6 +10,17 @@

 	public class AnimationController extends AbstractController
 	{
+
+		public function get currentTime():int
+		{
+			return _currentTime;
+		}
+
+		public function get isPlaying():Boolean
+		{
+			return _isPlaying;
+		}
+
 		public static var DEFAULT_TIME_FUNCTION	: Function = getTimer;

 		private var _timelines		: Vector.<ITimeline>	= new Vector.<ITimeline>();


fix LightAwareDiffuseShaderPart.getDiffuseColor() to use the BasicProperties.DIFFUSE_MAP_FORMAT mesh binding

--- src/aerys/minko/render/shader/part/phong/LightAwareDiffuseShaderPart.as
+++ src/aerys/minko/render/shader/part/phong/LightAwareDiffuseShaderPart.as
@@ -4,6 +4,7 @@
 	import aerys.minko.render.shader.SFloat;
 	import aerys.minko.render.shader.Shader;
 	import aerys.minko.type.enum.SamplerFiltering;
+	import aerys.minko.type.enum.SamplerFormat;
 	import aerys.minko.type.enum.SamplerMipMapping;
 	import aerys.minko.type.enum.SamplerWrapping;

@@ -25,7 +26,9 @@
 					BasicProperties.DIFFUSE_MAP,
 					meshBindings.getConstant(BasicProperties.DIFFUSE_MAP_FILTERING, SamplerFiltering.LINEAR),
 					meshBindings.getConstant(BasicProperties.DIFFUSE_MAP_MIPMAPPING, SamplerMipMapping.LINEAR),
-					meshBindings.getConstant(BasicProperties.DIFFUSE_MAP_WRAPPING, SamplerWrapping.REPEAT)
+					meshBindings.getConstant(BasicProperties.DIFFUSE_MAP_WRAPPING, SamplerWrapping.REPEAT),
+                    0,
+                    meshBindings.getConstant(BasicProperties.DIFFUSE_MAP_FORMAT, SamplerFormat.RGBA)
 				);

 				diffuseColor = sampleTexture(diffuseMap, uv);


Fixed bug where brackets weren't being matched up properly.
Changed function notation for built-in operators.

Change-Id: Ic7977a0dc9e8e748dfcda9416df5bcde588bd31b

--- WeaveCore/src/weave/compiler/Compiler.as
+++ WeaveCore/src/weave/compiler/Compiler.as
@@ -50,18 +50,23 @@

 		/**
 		 * This is the prefix used for the function notation of infix operators.
-		 * For example, the function notation for ( x + y ) is ( operator+(x,y) ).
+		 * For example, the function notation for ( x + y ) is ( (+)(x,y) ).
 		 */
-		public static const OPERATOR_PREFIX:String = 'operator';
+		public static const OPERATOR_PREFIX:String = '(';
+		/**
+		 * This is the suffix used for the function notation of infix operators.
+		 * For example, the function notation for ( x + y ) is ( (+)(x,y) ).
+		 */
+		public static const OPERATOR_SUFFIX:String = ')';

 		/**
 		 * This is a String containing all the characters that are treated as whitespace.
 		 */
 		private static const WHITESPACE:String = '\r\n \t\f';
-		/**
-		 * This is the maximum allowed length of an operator.
-		 */
-		private static const MAX_OPERATOR_LENGTH:int = 4;
+//		/**
+//		 * This is the maximum allowed length of an operator.
+//		 */
+//		private static const MAX_OPERATOR_LENGTH:int = 4;
 		/**
 		 * This is used to match number tokens.
 		 */
@@ -273,7 +278,7 @@
 				return object.flash_proxy::getDescendants(propertyName);
 			};
 			// array creation
-			operators["[]"] = function(...args):* { return args; };
+			operators["["] = function(...args):* { return args; };
 			// math
 			operators["**"] = Math.pow;
 			operators["*"] = function(x:*, y:*):Number { return x * y; };
@@ -345,12 +350,12 @@
 				['||']
 			];
 			// unary operators
-			unaryOperatorSymbols = ['#','-','~','!'];
+			unaryOperatorSymbols = ['-','~','!']; // '#'

 			// create a corresponding function name for each operator
 			for (var op:String in operators)
 				if (operators[op] is Function)
-					constants[OPERATOR_PREFIX + op] = operators[op];
+					constants[OPERATOR_PREFIX + op + OPERATOR_SUFFIX] = operators[op];
 		}

 		/**
@@ -428,7 +433,7 @@
 			// this function assumes operators has already been initialized
 			endIndex = index;
 			var op:String = null;
-			while (endIndex < n && op != '[') // special case for '[' so '[]' doesn't get treated as a single operator
+			while (endIndex < n)
 			{
 				op = expression.substring(index, endIndex + 1);
 				if (operators[op] == undefined)
@@ -454,9 +459,10 @@
 					break;
 				// operator terminates a token
 				if (operators[c] != undefined)
-				{
+				{
+					/*
 					// special case: "operator" followed by an operator symbol is treated as a single token
-					if (expression.substring(index, endIndex) == OPERATOR_PREFIX)
+					if (expression.substring(index, endIndex) == OPERATOR_PREFIX1)
 					{
 						for (var operatorLength:int = MAX_OPERATOR_LENGTH; operatorLength > 0; operatorLength--)
 						{
@@ -466,7 +472,8 @@
 								break;
 							}
 						}
-					}
+					}
+					*/
 					break;
 				}
 			}
@@ -512,9 +519,18 @@
 				}
 			}

-			// next step: handle operators ".[]{}()"
+			// next step: handle operators "..[]{}()"
 			compileBracketsAndProperties(tokens);

+			// next step: compile lone operators (extension to allow getting pointers to operator functions)
+			if (tokens.length == 1 && tokens[0] is String && operators[tokens[0]] is Function)
+				tokens[0] = new CompiledConstant(OPERATOR_PREFIX + tokens[0] + OPERATOR_SUFFIX, operators[tokens[0]]);
+
+			// next step: handle stray operators "..[](){}"
+			for each (token in tokens)
+				if (token is String && '..[](){}'.indexOf(token as String) >= 0)
+					throw new Error("Misplaced '" + token + "'");
+
 			// next step: compile constants and variable names
 			for (i = 0; i < tokens.length; i++)
 			{
@@ -532,10 +548,10 @@
 				// make a copy of the variable name that is safe for the wrapper function to use
 				// compile the token as a call to variableGetter.
 				tokens[i] = compileVariable(token);
-			}
+			}

 			// next step: compile unary '#' operators
-			compileUnaryOperators(tokens, ['#']);
+			//compileUnaryOperators(tokens, ['#']);

 			// next step: compile infix '**' operators
 			compileInfixOperators(tokens, ['**']);
@@ -590,7 +606,7 @@
 				if (enableOptimizations && condition is CompiledConstant)
 					result = (condition as CompiledConstant).value ? trueBranch : falseBranch;
 				else
-					result = compileFunctionCall(new CompiledConstant(OPERATOR_PREFIX + '?:', operators['?:']), [condition, trueBranch, falseBranch]);
+					result = compileFunctionCall(new CompiledConstant(OPERATOR_PREFIX + '?:' + OPERATOR_SUFFIX, operators['?:']), [condition, trueBranch, falseBranch]);

 				tokens.splice(left - 1, end - left + 1, result);
 			}
@@ -623,7 +639,7 @@

 				// verify that lhs.compiledMethod.name is 'operator.'
 				var lhsMethod:CompiledConstant = lhs.compiledMethod as CompiledConstant;
-				if (lhsMethod && lhsMethod.name == OPERATOR_PREFIX + '.')
+				if (lhsMethod && lhsMethod.name == OPERATOR_PREFIX + '.' + OPERATOR_SUFFIX)
 				{
 					// switch to the assignment operator
 					lhs.compiledParams.push(tokens[i + 1]);
@@ -818,15 +834,28 @@
 			var rightBracket:String;
 			while (true)
 			{
-				// find first closing bracket or '.'
+				// find first closing bracket
 				for (close = 0; close < tokens.length; close++)
-					if ('..])}'.indexOf(tokens[close]) >= 0)
+					if ('])}'.indexOf(tokens[close]) >= 0)
 						break;
+				// if no closing bracket found, find first '.' or '..'
+				if (close == tokens.length)
+					for (close = 0; close < tokens.length; close++)
+						if ('..'.indexOf(tokens[close]) >= 0)
+							break;
 				if (close == tokens.length || close == 0)
 					break; // possible error, or no operator found
-				// work backwards to the preceeding opening bracket or stop if '.'
+
+				// use matching brackets
+				rightBracket = tokens[close];
+				if (rightBracket.charAt(0) == '.')
+					leftBracket = rightBracket;
+				else
+					leftBracket = '[({'.charAt('])}'.indexOf(rightBracket));
+
+				// work backwards to the preceeding, matching opening bracket or stop if '.'
 				for (open = close; open >= 0; open--)
-					if ('..[({'.indexOf(tokens[open]) >= 0)
+					if (tokens[open] == leftBracket)
 						break;
 				if (open < 0 || open + 1 == tokens.length)
 					break; // possible error, or no operator found
@@ -856,9 +885,6 @@
 					continue;
 				}

-				leftBracket = tokens[open];
-				rightBracket = tokens[close];
-
 				// cut out tokens between brackets
 				var subArray:Array = tokens.splice(open + 1, close - open - 1);
 				if (debug)
@@ -880,7 +906,7 @@
 					else
 					{
 						// array initialization -- replace '[' and ']' tokens
-						tokens.splice(open, 2, compileOperator('[]', compiledParams));
+						tokens.splice(open, 2, compileOperator('[', compiledParams));
 					}
 					continue;
 				}
@@ -911,9 +937,6 @@

 				break;
 			}
-			for each (token in tokens)
-				if (token is String && '..[](){}'.indexOf(token as String) >= 0)
-					throw new Error("Misplaced '" + token + "'");
 		}

 		/**
@@ -963,12 +986,12 @@
 		{
 			var compiledFunctionCall:CompiledFunctionCall = new CompiledFunctionCall(compiledMethod, compiledParams);
 			// If the compiled function call should not be evaluated to a constant, return it now.
-			// Only non-assignment operators will be evaluated to constants, except for the array operator [] which creates a mutable Array.
+			// Only non-assignment operators will be evaluated to constants, except for the array operator [ which creates a mutable Array.
 			var constantMethod:CompiledConstant = compiledMethod as CompiledConstant;
 			if (!enableOptimizations
 				|| !constantMethod
 				|| operators[constantMethod.name] == undefined
-				|| constantMethod.name == OPERATOR_PREFIX + '[]'
+				|| constantMethod.name == OPERATOR_PREFIX + '[' + OPERATOR_SUFFIX
 				|| assignmentOperators[constantMethod.value] != undefined)
 			{
 				return compiledFunctionCall;
@@ -1077,10 +1100,12 @@
 		 */
 		private function compileOperator(operatorName:String, compiledParams:Array):ICompiledObject
 		{
+			/*
 			// special case for variable lookup
 			if (operatorName == '#')
 				return new CompiledFunctionCall(compiledParams[0], null);
-			operatorName = OPERATOR_PREFIX + operatorName;
+			*/
+			operatorName = OPERATOR_PREFIX + operatorName + OPERATOR_SUFFIX;
 			return compileFunctionCall(new CompiledConstant(operatorName, constants[operatorName]), compiledParams);
 		}

@@ -1121,6 +1146,7 @@
 			if (name.indexOf(OPERATOR_PREFIX) == 0)
 			{
 				var op:String = name.substr(OPERATOR_PREFIX.length);
+				op = op.substr(0, -OPERATOR_SUFFIX.length);
 				if (op == '.' && params.length >= 2)
 				{
 					var result:String = params[0];
@@ -1143,7 +1169,7 @@
 					return result;
 				}
 				// variable number of params
-				if (op == '[]')
+				if (op == '[')
 					return '[' + params.join(', ') + ']'
 				if (op == ';')
 					return '{' + params.join('; ') + '}';
@@ -1200,9 +1226,9 @@
 			const TRUE_INDEX:int = 1;
 			const FALSE_INDEX:int = 2;
 			const BRANCH_LOOKUP:Dictionary = new Dictionary();
-			BRANCH_LOOKUP[constants[OPERATOR_PREFIX + '?:']] = true;
-			BRANCH_LOOKUP[constants[OPERATOR_PREFIX + '&&']] = true;
-			BRANCH_LOOKUP[constants[OPERATOR_PREFIX + '||']] = false;
+			BRANCH_LOOKUP[constants[OPERATOR_PREFIX + '?:' + OPERATOR_SUFFIX]] = true;
+			BRANCH_LOOKUP[constants[OPERATOR_PREFIX + '&&' + OPERATOR_SUFFIX]] = true;
+			BRANCH_LOOKUP[constants[OPERATOR_PREFIX + '||' + OPERATOR_SUFFIX]] = false;
 			const ASSIGN_OP_LOOKUP:Object = new Dictionary();
 			for each (var assigOp:Function in assignmentOperators)
 				ASSIGN_OP_LOOKUP[assigOp] = true;


Added RemotingMessage to AsyncToken so that clients can get the messageId for example

--- src/main/flex/mx/rpc/remoting/test/RemoteOperationStub.as
+++ src/main/flex/mx/rpc/remoting/test/RemoteOperationStub.as
@@ -4,7 +4,8 @@
    import flash.events.TimerEvent;
    import flash.utils.Dictionary;
    import flash.utils.Timer;
-
+
+   import mx.messaging.messages.RemotingMessage;
    import mx.rpc.AsyncToken;
    import mx.rpc.Fault;
    import mx.rpc.IResponder;
@@ -52,7 +53,11 @@

       private function configureResponseTimer (args : Array) : AsyncToken
       {
-         token = new AsyncToken(null);
+		  var message:RemotingMessage = new RemotingMessage();
+		  message.operation = name;
+		  message.body = args;
+		  token = new AsyncToken(message);
+
          this.args = args;

          var stub : RemoteObjectStub = RemoteObjectStub(service);


Precalculated weights moved to static variable

--- extension/src/starling/shaders/FastGaussianBlurShader.as
+++ extension/src/starling/shaders/FastGaussianBlurShader.as
@@ -22,6 +22,7 @@

     private static var _verticalOffsets:Vector.<Number>     = new <Number>[0.0, 1.3846153846, 0.0, 3.2307692308];
     private static var _horizontalOffsets:Vector.<Number>   = new <Number>[1.3846153846, 0.0, 3.2307692308, 0.0];
+    private static var _weights:Vector.<Number>             = new <Number>[0.2270270270, 0.3162162162, 0.0702702703, 0];

     private var _type:String                    = HORIZONTAL;
     private var _pass:int                       = 0;
@@ -36,7 +37,6 @@
     private var _strengths:Vector.<Number>      = new <Number>[];
     private var _offsets:Vector.<Number>        = new <Number>[0, 0, 0, 0];
     private var _uv:Vector.<Number>             = new <Number>[0, 1, 0, 1];
-    private var _weights:Vector.<Number>        = new <Number>[0.2270270270, 0.3162162162, 0.0702702703, 0];

     public function get type():String { return _type; }
     public function set type(value:String):void {


Transferred from the Adobe Open Source Subversion Repository

Revision: 2106
Author:   jimurphy@adobe.com
Date:     2008-06-17T15:08:59.757217Z

Log Message:
-----------
Merge 3.0.x revisions [2073,2075-2077,2079,2093,2095,2103] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ButtonBarButtonSkin.as</path>
<path kind="dir" action="M">/flex/sdk/trunk/modules/asc</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MultiTopicConsumer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/air-config.xml</path>

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

--- frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridHeader.as
+++ frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridHeader.as
@@ -1053,6 +1053,8 @@
                         break;
                     }
                 }
+                if (i >= visibleColumns.length)
+                    return;
             }
             else
             {


Transferred from the Adobe Open Source Subversion Repository

Revision: 17520
Author:   hmuller@adobe.com
Date:     2010-08-30T20:47:16.318727Z

Log Message:
-----------
Added support for dataTips: Grid/DataGrid showDataTips, dataTipField, and dataTipFunction properties.

QE notes: Should have no affect on existing code.
Doc notes:
Bugs: SDK-27063
Reviewer: Darrell
Tests run: checkin, mustella cyclone
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/GridItemRenderer.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/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@1281412 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
@@ -169,7 +169,6 @@
     //----------------------------------

     private var _dataTipField:String = null;
-    private var dataTipFieldPath:Array = [];

     [Bindable("dataTipFieldChanged")]

@@ -201,10 +200,8 @@

         _dataTipField = value;

-        if (value.indexOf(".") != -1)
-            dataTipFieldPath = value.split(".");
-        else
-            dataTipFieldPath = [value];
+        if (grid)
+            grid.invalidateDisplayList();

         dispatchChangeEvent("dataTipFieldChanged");
     }
@@ -255,6 +252,10 @@
             return;

         _dataTipFunction = value;
+
+        if (grid)
+            grid.invalidateDisplayList();
+
         dispatchChangeEvent("dataTipFunctionChanged");
     }

@@ -586,16 +587,22 @@
     //  showDataTips
     //----------------------------------

-    private var _showDataTips:Boolean = false;
+    private var _showDataTips:* = undefined;

     [Bindable("showDataTipsChanged")]

     /**
-     *  Show dataTips for the cells in this column.
-     *
-     *  @default false
-     */
-    public function get showDataTips():Boolean
+     *  Show dataTips for the cells in this column.
+     *
+     *
If this property's value is undefined(the default), then the grid's showDataTips
+     *  property determines if dataTips will be shown.   If this property is set, then
+     *  the grid's showDataTips property is ignored.
+     *
+     *  @default undefined
+     *
+     *  @see #getShowDataTips
+     */
+    public function get showDataTips():*
     {
         return _showDataTips;
     }
@@ -603,13 +610,23 @@
     /**
      *  @private
      */
-    public function set showDataTips(value:Boolean):void
-    {
-        if (_showDataTips == value)
+    public function set showDataTips(value:*):void
+    {
+        if (_showDataTips === value)
             return;

         _showDataTips = value;
+
+        if (grid)
+            grid.invalidateDisplayList();
+
         dispatchChangeEvent("showDataTipsChanged");
+    }
+
+
+    mx_internal function getShowDataTips():Boolean
+    {
+        return (showDataTips === undefined) ? grid && grid.showDataTips : showDataTips;
     }

     //----------------------------------
@@ -715,7 +732,7 @@
      *  item[dataField].toString().   If dataField is a "." separated
      *  path, then this method looks up each successive path element.  For example if
      *  ="foo.bar.baz" then this method would return
-     *  the value of item.foo.bar.baz.   If resolving the item's
+     *  the value of item.foo.bar.baz.   If resolving the item's dataField
      *  causes an error to be thrown, ERROR_TEXT is returned.

      *
      *
If item and labelFunction are not null then this method returns
@@ -734,8 +751,13 @@
     /**
      *  Convert the specified dataProvider item to a column-specific dataTip String.
      *
-     *
This method is similar to itemToLabel(): dataTipField can be "." separated
-     *  path, and if ERROR_TEXT is returned if resolving the field/path fails..

+     *
This method uses the values dataTipField and dataTipFunction and if
+     *  they're null, it uses the corresponding Grid properties.  If both dataTipField
+     *  properties are null then the dataField property is used.

+     *
+     *
If dataTipFunction is null, then this method is equivalent to:
+     *  item[dataTipField].toString().   If resolving the item's dataField
+     *  causes an error to be thrown, ERROR_TEXT is returned.

      *
      *
If item and dataTipFunction are not null then this method returns
      *  dataTipFunction(item, this), where the second argument is
@@ -747,7 +769,11 @@
      */
     public function itemToDataTip(item:Object):String
     {
-        return itemToString(item, dataTipFieldPath, dataTipFunction);
+        const tipFunction:Function = (dataTipFunction != null) ? dataTipFunction : grid.dataTipFunction;
+        const tipField:String = (dataTipField) ? dataTipField : grid.dataTipField;
+        const tipPath:Array = (tipField) ? [tipField] : dataFieldPath;
+
+        return itemToString(item, tipPath, tipFunction);
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 16772
Author:   hmuller@adobe.com
Date:     2010-07-01T16:10:56.127425Z

Log Message:
-----------
The following changes apply to Spark DataGrid only.   Code reviews have been deferred until the implementation is closer to completion.

Added variableRowHeight and rowHeight properties to Grid,DataGrid.

GridLayout now (lazily) computes typical item cell widths/heights at measure() time.

Removed temporary fixedRowHeight property from Grid.

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/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/GridContainerBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
@@ -120,6 +120,11 @@
     {
         if (!grid)
             return;
+
+        const width:Number = grid.width;
+        const height:Number = grid.height;
+        if ((width > 0) && (height > 0))
+            updateGridDimensions(horizontalScrollPosition, verticalScrollPosition, width, height);

         var measuredWidth:Number = gridDimensions.getContentWidth(grid.requestedColumnCount);
         var measuredHeight:Number = gridDimensions.getContentHeight(grid.requestedRowCount);
@@ -321,7 +326,7 @@
 		const columnCount:int = gridDimensions.columnCount;
 		const columnGap:int = gridDimensions.columnGap;
 		const startCellX:Number = gridDimensions.getCellX(0 /* rowIndex */, startIndex);
-        const isFixedRowHeight:Boolean = !isNaN(grid.fixedRowHeight);
+        const isFixedRowHeight:Boolean = !grid.variableRowHeight;

         // Update the typicalCellWidth,Height as needed.   Avoid creating renderers or
         // the indices vector if possible


Transferred from the Adobe Open Source Subversion Repository

Revision: 17344
Author:   cframpto@adobe.com
Date:     2010-08-17T14:58:06.334825Z

Log Message:
-----------
Rollback 17342 until we can figure out why it didn't merge well with the prior change to GridLayout.

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
@@ -40,7 +40,6 @@
 import spark.layouts.supportClasses.LayoutBase;
 import spark.primitives.supportClasses.GraphicElement;
 import spark.skins.spark.DefaultGridItemRenderer;
-import spark.skins.spark.DefaultGridItemRenderer;

 use namespace mx_internal;

@@ -197,9 +196,17 @@
         if (!grid)
             return;

-        grid.hoverRowIndex = -1;
-        grid.hoverColumnIndex = -1;
-
+        // If the hoverIndicator is visible then we're going to have to fixup its location
+        // at updateDisplayList() time.
+
+        if ((grid.hoverRowIndex != -1) || (grid.hoverColumnIndex != -1))
+        {
+            const oldScrollR:Rectangle = grid.scrollRect;
+            const dx:Number = grid.horizontalScrollPosition - oldScrollR.x;
+            const dy:Number = grid.verticalScrollPosition - oldScrollR.y;
+            invalidateHoverLocation(dx, dy);
+        }
+
         super.scrollPositionChanged();  // sets grid.scrollRect

         // Only invalidate if we're clipping and scrollR extends outside validBounds
@@ -447,16 +454,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;
-
-		layoutGridElement(renderer, 0, 0, w, NaN);
+		layoutItemRenderer(renderer, 0, 0, column.width, NaN);

 		grid.itemRendererGroup.removeElement(renderer);
 		return renderer;
@@ -926,8 +924,6 @@
     {
         renderer.visible = visible;

-        // This is needed so DataGrid's NonInheriting styles will be seen
-        // by the renderer.
         if (renderer is ISimpleStyleClient)
             ISimpleStyleClient(renderer).styleName = grid.gridOwner;

@@ -1473,11 +1469,39 @@
     }

+    private var hoverLocationIsValid:Boolean = true;
     private var mouseXOffset:Number = 0;
     private var mouseYOffset:Number = 0;
-
+
+    /**
+     *  @private
+     *  In theory it would be enough to just set a flag here and then fixup the
+     *  grid's hoverRow,ColumnIndex properties at updateDisplayList() time, based
+     *  on the current mouse position (grid.mouseX,Y).  Unfortunately, the mouseX,Y
+     *  DisplayObject properties aren't updated per the scrollRect until after
+     *  the new layout has appeared on screen.  To account for that we accumulate
+     *  the deltas for grid.scrollRect.x,y here.
+     */
+    private function invalidateHoverLocation(dx:Number, dy:Number):void
+    {
+        hoverLocationIsValid = false;
+        mouseXOffset += dx;
+        mouseYOffset += dy;
+    }
+
     private function layoutHoverIndicator(container:IVisualElementContainer):void
     {
+        if (!hoverLocationIsValid)
+        {
+            const mouseX:Number = grid.mouseX + mouseXOffset;
+            const mouseY:Number = grid.mouseY + mouseYOffset;
+            grid.hoverRowIndex = gridDimensions.getRowIndexAt(mouseX, mouseY);
+            grid.hoverColumnIndex = gridDimensions.getColumnIndexAt(mouseX, mouseY);
+            hoverLocationIsValid = true;
+            mouseXOffset = 0;
+            mouseYOffset = 0;
+        }
+
         const rowIndex:int = grid.hoverRowIndex;
         const columnIndex:int = grid.hoverColumnIndex;
         const factory:IFactory = grid.hoverIndicator;


dont send osmfPluginReady twice

dont send osmfPluginReady twice

--- plugins/akamaiMediaAnalyticsPlugin/src/akamaiMediaAnalyticsPluginCode.as
+++ plugins/akamaiMediaAnalyticsPlugin/src/akamaiMediaAnalyticsPluginCode.as
@@ -87,6 +87,7 @@
 		 */
 		protected function onOSMFPluginLoaded (e : MediaFactoryEvent) : void
 		{
+			e.target.removeEventListener(MediaFactoryEvent.PLUGIN_LOAD, onOSMFPluginLoaded);
 			dispatchEvent( new KPluginEvent (KPluginEvent.KPLUGIN_INIT_COMPLETE) );
 		}
 		/**
@@ -96,6 +97,7 @@
 		 */
 		protected function onOSMFPluginLoadError (e : MediaFactoryEvent) : void
 		{
+			e.target.removeEventListener(MediaFactoryEvent.PLUGIN_LOAD_ERROR, onOSMFPluginLoaded);
 			dispatchEvent( new KPluginEvent (KPluginEvent.KPLUGIN_INIT_FAILED) );
 		}


删除尾部的分号

删除尾部的分号

--- as3/com/netease/protobuf/SimpleWebRPC.as
+++ as3/com/netease/protobuf/SimpleWebRPC.as
@@ -14,10 +14,10 @@
 	public final class SimpleWebRPC {
 		private var urlPrefix:String
 		public function SimpleWebRPC(urlPrefix:String) {
-			this.urlPrefix = urlPrefix;
+			this.urlPrefix = urlPrefix
 		}

-		private static const REF:Dictionary = new Dictionary();
+		private static const REF:Dictionary = new Dictionary

 		public function send(qualifiedMethodName:String,
 							 input:IExternalizable,


Transferred from the Adobe Open Source Subversion Repository

Revision: 19619
Author:   cframpto@adobe.com
Date:     2011-01-06T16:16:35.817882Z

Log Message:
-----------
Per a request by Greg Dow, change the source arg of the InitializeEvent I just added for Catalyst from this to child since it is the child that had the initialize error.

QE notes:
Doc notes:
Bugs: SDK-28743
Reviewer: Darrell
Tests run: there aren't any
Is noteworthy for integration:

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -7553,7 +7553,7 @@
 				// Dispatch a initializeError dynamic event for tooling.
 				var initializeErrorEvent:DynamicEvent = new DynamicEvent("initializeError");
 				initializeErrorEvent.error = e;
-				initializeErrorEvent.source = this;
+				initializeErrorEvent.source = child;
 				systemManager.dispatchEvent(initializeErrorEvent);
 			}
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 4073
Author:   rfrishbe@adobe.com
Date:     2008-11-11T22:09:40.130593Z

Log Message:
-----------
Add IViewport properties to FxContainer and FxDataContainer.  This is using a new property delegation pattern.  This pattern may be refined later on.  For part of it, we are doing bit manipulation to store a set of booleans efficiently.  I removed the Flags32 class and replaced it with static helpers because it's more efficient without the object overhead.  So I cleaned up Button and ToggleButton to use the new static helper class.

Ran checkintests and mustella tests for: List, FxContainer, FxDataContainer, Button, ToggleButton, CheckBox, RadioButton.

QE Notes: Need to test these new properties (how they facade, setting them explicitly, what happens when skins changed, bindability of these properties, etc...)
Doc Notes: None
Bugs: -
Reviewer: Hans, Evtim

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxToggleButton.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/utils/Flags32.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/BitFlagUtil.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/flex4/src/mx/components/FxContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/Button.as
+++ frameworks/projects/spark/src/spark/components/Button.as
@@ -20,12 +20,11 @@
 import flash.ui.Keyboard;
 import flash.utils.Timer;

-import mx.utils.Flags32;
 import mx.components.baseClasses.FxComponent;
+import mx.events.FlexEvent;
 import mx.graphics.graphicsClasses.TextGraphicElement;
-
-import mx.events.FlexEvent;
 import mx.managers.IFocusManagerComponent;
+import mx.utils.BitFlagUtil;

 /**
  *  Dispatched when the user presses the FxButton control.
@@ -190,7 +189,7 @@
      */
     protected function get hoveredOver():Boolean
     {
-        return flags.isSet(hoveredOverFlag);
+        return BitFlagUtil.isSet(flags, hoveredOverFlag);
     }

     /**
@@ -198,9 +197,11 @@
      */
     protected function set hoveredOver(value:Boolean):void
     {
-        if (!flags.update(hoveredOverFlag, value))
-            return;
-
+        if (BitFlagUtil.isSet(flags, hoveredOverFlag) == value)
+            return;
+
+        flags = BitFlagUtil.update(flags, hoveredOverFlag, value);
+
         invalidateButtonState();
     }

@@ -211,7 +212,7 @@
      */
     protected function get mouseCaptured():Boolean
     {
-        return flags.isSet(mouseCapturedFlag);
+        return BitFlagUtil.isSet(flags, mouseCapturedFlag);
     }

     /**
@@ -219,9 +220,11 @@
      */
     protected function set mouseCaptured(value:Boolean):void
     {
-        if (!flags.update(mouseCapturedFlag, value))
-            return;
-
+        if (BitFlagUtil.isSet(flags, mouseCapturedFlag) == value)
+            return;
+
+        flags = BitFlagUtil.update(flags, mouseCapturedFlag, value);
+
         invalidateButtonState();

         // System mouse handlers are not needed when the button is not mouse captured
@@ -247,7 +250,7 @@
      */
     protected function get keyboardPressed():Boolean
     {
-        return flags.isSet(keyboardPressedFlag);
+        return BitFlagUtil.isSet(flags, keyboardPressedFlag);
     }

     /**
@@ -255,8 +258,10 @@
      */
     protected function set keyboardPressed(value:Boolean):void
     {
-        if (!flags.update(keyboardPressedFlag, value))
-            return;
+        if (BitFlagUtil.isSet(flags, keyboardPressedFlag) == value)
+            return;
+
+        flags = BitFlagUtil.update(flags, keyboardPressedFlag, value);

         invalidateButtonState();
     }
@@ -273,7 +278,7 @@
      */
     public function get stickyHighlighting():Boolean
     {
-        return flags.isSet(stickyHighlightingFlag);
+        return BitFlagUtil.isSet(flags, stickyHighlightingFlag);
     }

     /**
@@ -281,8 +286,10 @@
      */
     public function set stickyHighlighting(value:Boolean):void
     {
-        if (!flags.update(stickyHighlightingFlag, value))
-            return;
+        if (BitFlagUtil.isSet(flags, stickyHighlightingFlag) == value)
+            return;
+
+        flags = BitFlagUtil.update(flags, stickyHighlightingFlag, value);

         invalidateButtonState();
     }
@@ -321,9 +328,9 @@
     protected static const lastFlag:uint                = 1 << 6;

     /**
-     *  An instance of the Flags32 class used to manipulate Boolean properties.
-     */
-    protected var flags:Flags32 = new Flags32();
+     *  A uint to store bitflags (booleans compressed down into one integer).
+     */
+    protected var flags:uint = 0;

     //--------------------------------------------------------------------------
     //
@@ -362,8 +369,9 @@
             var isCurrentlyDown:Boolean = isDown();

             // Only if down state has changed, do we need to do something
-            if (flags.update(downEventFiredFlag, isCurrentlyDown))
+            if (BitFlagUtil.isSet(flags, downEventFiredFlag) != isCurrentlyDown)
             {
+                flags = BitFlagUtil.update(flags, downEventFiredFlag, isCurrentlyDown);
                 if (isCurrentlyDown)
                     dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));

@@ -607,7 +615,7 @@
      */
     public function get autoRepeat():Boolean
     {
-        return flags.isSet(autoRepeatFlag);
+        return BitFlagUtil.isSet(flags, autoRepeatFlag);
     }

     /**
@@ -615,8 +623,10 @@
      */
     public function set autoRepeat(value:Boolean):void
     {
-        if (!flags.update(autoRepeatFlag, value))
-            return;
+        if (BitFlagUtil.isSet(flags, autoRepeatFlag) == value)
+            return;
+
+        flags = BitFlagUtil.update(flags, autoRepeatFlag, value);

         checkAutoRepeatTimerConditions( isDown() );
     }
@@ -692,12 +702,12 @@
     {
         super.toolTip = value;

-        flags.update(explicitToolTip, value != null);
+        flags = BitFlagUtil.update(flags, explicitToolTip, value != null);

         // If explicit tooltip is cleared, we need to make sure our
         // updateDisplayList is called, so that we add automatic tooltip
         // in case the label is truncated.
-        if (!flags.isSet(explicitToolTip))
+        if (!BitFlagUtil.isSet(flags, explicitToolTip))
             invalidateDisplayList();
     }

@@ -710,7 +720,7 @@
         super.updateDisplayList(unscaledWidth, unscaledHeight);

         // Bail out if we don't have a label or the tooltip is not explicitly set.
-        if (!labelField || flags.isSet(explicitToolTip))
+        if (!labelField || BitFlagUtil.isSet(flags, explicitToolTip))
             return;

         // Check if the label text is truncated


Transferred from the Adobe Open Source Subversion Repository

Revision: 3691
Author:   chaase@adobe.com
Date:     2008-10-16T19:19:46.736687Z

Log Message:
-----------
Fixed sdk-16853, sdk-17341, sdk-16855, sdk-16681, sdk-16668, sdk-16851, sdk-16480. The main change is that the new Wait effect has gone away and its functionality (optionally waiting for an event) is instead merged into the old Pause effect. Some enhancements were added to Pause along the way. Also fixed other random effects issues, such as waiting to raise the effectStart event until after startDelay elapses (like the old Flex3 effect behavior).

reviewed by Jason and Evtim
tests: checkintests, Mustella tests/Effects, tests/ListDataEffects, tests/gumbo/effects (minus Wait and CallAction tests, which need to be updated)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/PauseInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/ArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Pause.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/WaitInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Wait.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/AddActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/AddAction.as</path>

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

--- frameworks/projects/spark/src/spark/effects/AddAction.as
+++ frameworks/projects/spark/src/spark/effects/AddAction.as
@@ -15,11 +15,8 @@
 import flash.display.DisplayObjectContainer;

 import mx.components.Group;
+import mx.core.mx_internal;
 import mx.effects.effectClasses.AddActionInstance;
-
-import mx.core.mx_internal;
-import mx.effects.Effect;
-import mx.effects.IEffectInstance;
 import mx.effects.effectClasses.PropertyChanges;

 //--------------------------------------
@@ -70,6 +67,37 @@
 	 *  @private
 	 */
 	private static var AFFECTED_PROPERTIES:Array = [ "parent", "elementHost", "index" ];
+
+	/**
+	 * Constant used to specify the position to add the item.
+	 *
+	 * @see #position
+	 */
+    public static const BEFORE:String = "before";
+    /**
+     * Constant used to specify the position to add the item.
+     *
+     * @see #position
+     */
+    public static const AFTER:String = "after";
+    /**
+     * Constant used to specify the position to add the item.
+     *
+     * @see #position
+     */
+    public static const FIRST_CHILD:String = "firstChild";
+    /**
+     * Constant used to specify the position to add the item.
+     *
+     * @see #position
+     */
+    public static const LAST_CHILD:String = "lastChild";
+    /**
+     * Constant used to specify the position to add the item.
+     *
+     * @see #position
+     */
+    public static const INDEX:String = "index";

 	//--------------------------------------------------------------------------
 	//
@@ -136,14 +164,20 @@
 	/**
 	 *  The position of the child in the display list, relative to the
 	 *  object specified by the relativeTo property.
-	 *  Valid values are "before", "after",
-	 *  "firstChild", "lastChild", and "index",
-	 *  where "index" specifies to use the index property
+	 *  Valid values are AddAction.BEFORE, AddAction.AFTER,
+	 *  AddAction.FIRST_CHILD, AddAction.LAST_CHILD,
+	 *  and AddAction.INDEX, where AddAction.INDEX
+	 *  specifies the use of the index property
 	 *  to determine the position of the child.
 	 *
-	 *  @default "index"
-	 */
-	public var position:String = "index";
+	 *  @default AddAction.INDEX
+     *  @see #BEFORE
+     *  @see #AFTER
+     *  @see #FIRST_CHILD
+     *  @see #LAST_CHILD
+     *  @see #INDEX
+	 */
+	public var position:String = INDEX;

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