Transferred from the Adobe Open Source Subversion Repository

Revision: 18038
Author:   hmuller@adobe.com
Date:     2010-10-06T20:10:48.132975Z

Log Message:
-----------
Added DataGrid rowBackground skin part.

Added DataGrid/resizableColumns cover property for the Grid resizableColumns property.

Updated DataGrid skin part ASDoc.

Removed ColumnHeaderBarSkin.

Changed GridEvent itemRenderer property type from IVisualElement to IGridItemRenderer.

Added ColumnHeaderBar support for dispatching separator click/double-click events.

QE notes:
Doc notes:
Bugs:
Reviewer: Kevin
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/events/GridEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ColumnHeaderBar.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/ColumnHeaderBarSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>
<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/DataGridSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ColumnHeaderBarLayout.as</path>

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

--- frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -304,14 +304,17 @@
         overlayGroup.layout = new LayoutBase(); // no layout
         overlay.addDisplayObject(overlayGroup);

-        // Event handler that dispatch GridEvents
+        // Event handlers that dispatch GridEvents

         MouseEventUtil.addDownDragUpListeners(this,
             chb_mouseDownDragUpHandler,
             chb_mouseDownDragUpHandler,
             chb_mouseDownDragUpHandler);
+
         addEventListener(MouseEvent.MOUSE_MOVE, chb_mouseMoveHandler);
-        addEventListener(MouseEvent.ROLL_OUT, chb_mouseRollOutHandler);
+        addEventListener(MouseEvent.ROLL_OUT, chb_mouseRollOutHandler);
+        addEventListener(MouseEvent.CLICK, chb_clickHandler);
+        addEventListener(MouseEvent.DOUBLE_CLICK, chb_doubleClickHandler);
     }

     //--------------------------------------------------------------------------
@@ -547,7 +550,7 @@
     //--------------------------------------------------------------------------

     // The down,roll pairs of variables below define column indices.  Only one
-    // member of each pair will be not equal to -1 at a time.
+    // member of each pair will be not equal to -1 at a time.

     private var rollColumnIndex:int = -1;      // column mouse has rolled into
     private var rollSeparatorIndex:int = -1;   // separator mouse has rolled into
@@ -605,7 +608,7 @@
                 {
                     gridEventType = GridEvent.GRID_MOUSE_DOWN;
                     downSeparatorIndex = -1;
-                    downColumnIndex = eventSeparatorIndex;
+                    downColumnIndex = eventColumnIndex;
                 }
                 break;
         }
@@ -751,7 +754,7 @@
     {
         const column:GridColumn = getColumnAt(columnIndex);
         const item:Object = null;
-        const itemRenderer:IVisualElement = getHeaderRendererAt(columnIndex);
+        const itemRenderer:IGridItemRenderer = getHeaderRendererAt(columnIndex);
         const bubbles:Boolean = mouseEvent.bubbles;
         const cancelable:Boolean = mouseEvent.cancelable;
         const relatedObject:InteractiveObject = mouseEvent.relatedObject;


Added CustomTree.expandMatchingItems()

Added CustomTree.expandMatchingItems()

--- WeaveUI/src/weave/ui/CustomTree.as
+++ WeaveUI/src/weave/ui/CustomTree.as
@@ -103,6 +103,21 @@
 				horizontalScrollPolicy = hspolicy;
 		}

+		/**
+		 * This will expand all matching items in the collection.
+		 * @param itemTest A function to test for a matching item:  function(item:Object):Boolean
+		 * @param open Parameter for expandItem().
+		 */
+		public function expandMatchingItems(itemTest:Function, open:Boolean = true):void
+		{
+			var cursor:IViewCursor = collection.createCursor();
+			do
+			{
+				if (itemTest(cursor.current))
+					expandItem(cursor.current, open);
+			}
+			while (cursor.moveNext());
+		}

 		/**
 		 * @param itemTest A function to test for a matching item:  function(item:Object):Boolean


improved backwards compatibility code.

improved backwards compatibility code.

Change-Id: Ie5fa7c64c3f60c5d97e4101a7b99b60d3b7482ce

--- WeaveUI/src/weave/ui/DataFilter.as
+++ WeaveUI/src/weave/ui/DataFilter.as
@@ -15,35 +15,37 @@

 package weave.ui
 {
+	import avmplus.getQualifiedClassName;
+
+	import weave.api.core.DynamicState;
 	import weave.api.objectWasDisposed;
-	import weave.editors.NumberDataFilterEditor;
 	import weave.editors.StringDataFilterEditor;

-	[Deprecated] [ExcludeClass] public class DataFilter extends DataFilterTool
+	[ExcludeClass]
+	[Deprecated(replacement="weave.ui.DataFilterTool")]
+	public class DataFilter extends DataFilterTool
 	{
 		public function DataFilter()
 		{
 			super();
 			callLater(init);
 		}
+
 		private function init():void
 		{
 			if (objectWasDisposed(this))
 				return;

-			var sdfe:StringDataFilterEditor = editor.target as StringDataFilterEditor;
-			var ndfe:NumberDataFilterEditor = editor.target as NumberDataFilterEditor;
-			if (sdfe)
-			{
-				sdfe.layoutMode.value = MenuToolViewStack.LAYOUT_COMBO;
-				sdfe.showToggle.value = true;
-			}
-			else if (ndfe)
-			{
-				ndfe.showToggle.value = true;
-			}
-			else
-				callLater(init);
+			editor.setSessionState([
+				DynamicState.create(
+					null,
+					getQualifiedClassName(StringDataFilterEditor),
+					{
+						layoutMode: MenuToolViewStack.LAYOUT_COMBO,
+						showToggle: true
+					}
+				)
+			], true);
 		}
 	}
 }


Ye olde razor. Now that I know abjectscript like the back of my hand,
reviewing some of the first code written in it might be a good idea.

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

--- src/as/com/threerings/io/TypedArray.as
+++ src/as/com/threerings/io/TypedArray.as
@@ -80,9 +80,7 @@
      */
     public function addAll (other :Array) :TypedArray
     {
-        for (var ii :int = 0; ii < other.length; ii++) {
-            push(other[ii]);
-        }
+        push.apply(this, other);
         return this;
     }

@@ -96,9 +94,7 @@
     {
         var clazz :Class = ClassUtil.getClass(this);
         var copy :TypedArray = new clazz(_jtype);
-        for (var ii :int = length - 1; ii >= 0; ii--) {
-            copy[ii] = this[ii];
-        }
+        copy.addAll(this);
         return copy;
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 8385
Author:   smgilson@adobe.com
Date:     2009-07-06T19:38:43.090419Z

Log Message:
-----------
ASDoc updates for Spark layouts and core

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

Modified Paths:
--------------
<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/layouts/supportClasses/LayoutElementHelper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/RowAlign.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/ISharedDisplayObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/VerticalAlign.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/MaskType.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/NavigationUnit.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/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.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/layouts/HorizontalAlign.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/DisplayObjectSharingMode.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/layouts/ColumnAlign.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileOrientation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>

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

--- frameworks/projects/spark/src/spark/core/DisplayObjectSharingMode.as
+++ frameworks/projects/spark/src/spark/core/DisplayObjectSharingMode.as
@@ -11,8 +11,8 @@
 package spark.core
 {
 /**
- *  Enumerated type for the IGraphicElement's displayObjectSharingMode
- *  property.
+ *  The DisplayObjectSharingMode class defines the possible values for the
+ *  displayObjectSharingMode property of the IGraphicElement class.
  *
  *  @see IGraphicElement#displayObjectSharingMode
  *
@@ -24,7 +24,7 @@
 public final class DisplayObjectSharingMode
 {
     /**
-     *  Such IGraphicElement owns a DisplayObject exclusively.
+     *  IGraphicElement owns a DisplayObject exclusively.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -34,9 +34,9 @@
     public static const OWNS_UNSHARED_OBJECT:String = "ownsUnsharedObject";

     /**
-     *  Such IGraphicElement owns a DisplayObject that is also
-     *  assigned to some other IGraphicElement by the parent
-     *  Group.
+     *  IGraphicElement owns a DisplayObject that is also
+     *  assigned to some other IGraphicElement by the parent
+     *  Group container.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -46,8 +46,8 @@
     public static const OWNS_SHARED_OBJECT:String = "ownsSharedObject";

     /**
-     *  Such IGraphicElement is assigned a DisplayObject by
-     *  its parent Group.
+     *  IGraphicElement is assigned a DisplayObject by
+     *  its parent Group container.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


fixed error in type info

fixed error in type info

--- WeaveJS/src/weavejs/util/ArrayUtils.as
+++ WeaveJS/src/weavejs/util/ArrayUtils.as
@@ -527,7 +527,7 @@
 		 * @param propertyChain A property name or chain of property names to index on rather than the item itself.
 		 * @return A reverse lookup Map.
 		 */
-		public static function createLookup/*/<T>/*/(array:/*/Array<T>|{[key:string]:T}/*/*, ...propertyChain/*/<string>/*/):/*/Map<T,string>/*/Object
+		public static function createLookup(array:/*/any[]|{[key:string]:any}/*/*, ...propertyChain/*/<string>/*/):/*/Map<any,string>/*/Object
 		{
 			var lookup:Object = new JS.Map();
 			for (var key:* in array)


Fixed bug in root node that made it look like a column reference.

Change-Id: I4e8cbc3b41cab7154b0fa5e9a8ce6bb69d05806e

--- WeaveData/src/weave/data/DataSources/GeoJSONDataSource.as
+++ WeaveData/src/weave/data/DataSources/GeoJSONDataSource.as
@@ -183,7 +183,7 @@
 				var meta:Object = {};
 				meta[ColumnMetadata.TITLE] = WeaveAPI.globalHashMap.getName(this);

-				var rootChildren:Array = null;
+				var rootChildren:Array = [];
 				if (jsonData)
 				{
 					// include empty string for the geometry column
@@ -388,7 +388,7 @@
 	}
 	public function getColumnMetadata():Object
 	{
-		return metadata;
+		return children ? null : metadata;
 	}
 }


Whoops

Whoops

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

--- src/as/com/threerings/util/Enum.as
+++ src/as/com/threerings/util/Enum.as
@@ -148,8 +148,8 @@
      */
     public static function fromOrdinal (clazz :Class, ordinal :int) :Enum
     {
-        var values :Array = (_enums[ClassUtil.getClass(clazz)] as Array);
-        if (values != null && ordinal >= 0 && ordinal < values.length) {
+        var values :Array = values(clazz);
+        if (ordinal >= 0 && ordinal < values.length) {
             return values[ordinal];
         }
         throw new ArgumentError("No such enum [class=" + clazz + ", ordinal=" + ordinal + "].");


Added default Flex 4.x compatibility for the Console class.

--- net/flashpunk/debug/Console.as
+++ net/flashpunk/debug/Console.as
@@ -867,7 +867,7 @@
 		/** @private */ private const WATCH_LIST:Vector.<String> = Vector.<String>(["x", "y"]);

 		// Embedded assets.
-		[Embed(source = '../graphics/04B_03__.TTF', fontFamily = 'console')] private const FONT_SMALL:Class;
+		[Embed(source = '../graphics/04B_03__.TTF', embedAsCFF="false", fontFamily = 'console')] private const FONT_SMALL:Class;
 		[Embed(source = 'console_logo.png')] private const CONSOLE_LOGO:Class;
 		[Embed(source = 'console_debug.png')] private const CONSOLE_DEBUG:Class;
 		[Embed(source = 'console_output.png')] private const CONSOLE_OUTPUT:Class;


Don't print parse errors since they're in the gui

--- exporter/src/main/as/flump/export/Exporter.as
+++ exporter/src/main/as/flump/export/Exporter.as
@@ -194,10 +194,7 @@
             load.succeeded.add(function (lib :XflLibrary) :void {
                 status.lib = lib;
                 status.updateModified(Ternary.of(_publisher == null || _publisher.modified(lib)));
-                for each (var err :ParseError in lib.getErrors()) {
-                    _errors.dataProvider.addItem(err);
-                    trace(err);
-                }
+                for each (var err :ParseError in lib.getErrors()) _errors.dataProvider.addItem(err);
                 status.updateValid(Ternary.of(lib.valid));
             });
         } else loadFla(status.file);


put unit count above building count

put unit count above building count

--- src/battlecode/client/viewer/render/DrawHUD.as
+++ src/battlecode/client/viewer/render/DrawHUD.as
@@ -114,8 +114,8 @@
             repositionWinMarkers();
             resizeHQBox();
             drawTowerBoxes();
+            drawUnitCounts();
             drawBuildingCounts();
-            drawUnitCounts();
         }

         private function onRoundChange(e:MatchEvent):void {
@@ -148,15 +148,16 @@
             maxTowers = Math.max(maxTowers, towerCount);
             drawTowerBoxes();

+            for each (var unitBox:DrawHUDUnit in unitBoxes) {
+                unitBox.setCount(controller.currentState.getUnitCount(unitBox.getType(), team));
+            }
+
             for each (var buildingBox:DrawHUDUnit in buildingBoxes) {
                 buildingBox.setCount(controller.currentState.getUnitCount(buildingBox.getType(), team));
             }
+
+            drawUnitCounts();
             drawBuildingCounts();
-
-            for each (var unitBox:DrawHUDUnit in unitBoxes) {
-                unitBox.setCount(controller.currentState.getUnitCount(unitBox.getType(), team));
-            }
-            drawUnitCounts();

             if (controller.currentRound == controller.match.getRounds()) {
                 drawWinMarkers();
@@ -198,9 +199,34 @@
             }
         }

-        private function drawBuildingCounts():void {
+        private function drawUnitCounts():void {
             var towerBoxTop:Number = Math.ceil(maxTowers / 3.0) * (DrawHUDTower.HEIGHT + 10);
             var top:Number = hqBox.height + hqBox.y + towerBoxTop + 10;
+            unitLabel.y = top + 10;
+            top = unitLabel.height + unitLabel.y + 5;
+            var i:uint = 0;
+            for each (var unitBox:DrawHUDUnit in unitBoxes) {
+                unitBox.x = (width - unitBox.width * 3) / 2 + (i % 3) * unitBox.width;
+                unitBox.y = ((unitBox.height + 10) * Math.floor(i / 3)) + top;
+                if (unitBox.getCount() > 0) {
+                    unitBox.visible = true;
+                    i++;
+                } else {
+                    unitBox.visible = false;
+                }
+            }
+        }
+
+        private function drawBuildingCounts():void {
+            var topUnitBox:DrawHUDUnit = unitBoxes[unitBoxes.length-1];
+            for (var j:int = unitBoxes.length - 1; j >= 0; j--) {
+                topUnitBox = unitBoxes[j];
+                if (topUnitBox.visible) {
+                    break;
+                }
+            }
+
+            var top:Number = topUnitBox.height + topUnitBox.y + 10;
             buildingLabel.y = top + 10;
             top = buildingLabel.height + buildingLabel.y + 5;
             var i:uint = 0;
@@ -212,31 +238,6 @@
                     i++;
                 } else {
                     buildingBox.visible = false;
-                }
-            }
-        }
-
-        private function drawUnitCounts():void {
-            var topBuildingBox:DrawHUDUnit = buildingBoxes[buildingBoxes.length-1];
-            for (var j:int = buildingBoxes.length - 1; j >= 0; j--) {
-                topBuildingBox = buildingBoxes[j];
-                if (topBuildingBox.visible) {
-                    break;
-                }
-            }
-
-            var top:Number = topBuildingBox.height + topBuildingBox.y + 10;
-            unitLabel.y = top + 10;
-            top = unitLabel.height + unitLabel.y + 5;
-            var i:uint = 0;
-            for each (var unitBox:DrawHUDUnit in unitBoxes) {
-                unitBox.x = (width - unitBox.width * 3) / 2 + (i % 3) * unitBox.width;
-                unitBox.y = ((unitBox.height + 10) * Math.floor(i / 3)) + top;
-                if (unitBox.getCount() > 0) {
-                    unitBox.visible = true;
-                    i++;
-                } else {
-                    unitBox.visible = false;
                 }
             }
         }
@@ -271,8 +272,8 @@
             repositionWinMarkers();
             resizeHQBox();
             drawTowerBoxes();
+            drawUnitCounts();
             drawBuildingCounts();
-            drawUnitCounts();
         }

     }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.controls
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 11587
Author:   smgilson@adobe.com
Date:     2009-11-09T21:54:52.485227Z

Log Message:
-----------
ASDoc bug fixes:

FLEXDOCS-1065 mx tile should list TileGroup as its Spark replacement
FLEXDOCS-1042 remove old refs to Flex Builder
FLEXDOCS-1049 doc spar.components.CheckBox.focusColor
FLEXDOCS-1100 fix fx:Library example

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

Modified Paths:
--------------
<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/core/FlexVersion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponentGlobals.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/containers/Tile.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Panel.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/spark/src/spark/components/supportClasses/ButtonBase.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/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/netmon/NetworkMonitor.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
@@ -92,7 +92,7 @@
 [Style(name="contentBackgroundAlpha", type="Number", inherit="yes", theme="spark")]

 /**
- *  Color of the fill of an item renderer
+ *  Color of the fill of an item renderer.
  *
  *  @default 0xFFFFFF
  *
@@ -114,7 +114,7 @@
 [Style(name="disabledAlpha", type="Number", inherit="no", theme="spark")]

 /**
- *  Color of focus ring when the component is in focus
+ *  Color of focus ring when the component is in focus.
  *
  *  @default 0x70B2EE
  *
@@ -126,7 +126,7 @@
 [Style(name="focusColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
- *  Color of the highlights when the mouse is over the component
+ *  Color of the highlights when the mouse is over the component.
  *
  *  @default 0xCEDBEF
  *
@@ -139,7 +139,7 @@

 /**
  *  Color of any symbol of a component. Examples include the check mark of a CheckBox or
- *  the arrow of a scroll button
+ *  the arrow of a scroll button.
  *
  *  @default 0x000000
  *


* ageb 中的 FlashTip 文字出现在窗口底部

* ageb 中的 FlashTip 文字出现在窗口底部

--- ageb/src/ageb/utils/FlashTip.as
+++ ageb/src/ageb/utils/FlashTip.as
@@ -62,12 +62,13 @@
 				tip = new FlashTip();
 				tip.text = message;
 				PopUpManager.addPopUp(tip, Modules.getInstance().root, false);
-				tip.y = (tip.parent.height - tip.height) * 0.33;
 			}
 			else
 			{
 				tip.text += "\n" + message;
 			}
+			tip.validateNow();
+			tip.y = tip.stage.stageHeight - tip.height;
 			tip.x = (tip.parent.width - tip.width) / 2;
 		}
 	}


Reverting the signature for the exec() function call.

--- src/org/openPyro/effects/Effect.as
+++ src/org/openPyro/effects/Effect.as
@@ -311,7 +311,7 @@
 			if(props.onComplete){
 				var fn:Function = props.onComplete;
 				props.onComplete = function():void{
-					fn(self);
+					fn();
 					if(_currentEffectDescriptor.onComplete != null){
 						_currentEffectDescriptor.onComplete();
 					}


Testing hudson ci server 3

Testing hudson ci server 3

--- src/as3spec/Printer.as
+++ src/as3spec/Printer.as
@@ -24,7 +24,7 @@
       trace("<testsuite name='AllSpecs' errors='" + counter.errors + "' failures='" + counter.failures + "' tests='" + counter.specifications + "' time='" + (counter.time/1000) + "'>");
       for(var countName:String in counter.contexts) {
         for each(var specification:Specification in counter.contexts[countName]) {
-          trace("<testcase classname='"+countName+"' name='"+specification.story+"' time='"+(specification.time/1000)+"'></testcase>");
+          trace("<testcase classname='"+countName+'.'+specification.story"' name='"+specification.story+"' time='"+(specification.time/1000)+"'></testcase>");
         }
       }
       trace("</testsuite>");


Bug 608760: Update test to be ATS compatible (r=jsudduth)

--- test/acceptance/as3/Vector/nonindexproperty.as
+++ test/acceptance/as3/Vector/nonindexproperty.as
@@ -43,7 +43,15 @@
    * SWF version 11 and above.  It is retained to preserve existing tests applicable to prior versions.
    */

-import avmplus.System;
+import avmplus.*;
+import flash.display.*;
+
+if (playerType == 'AVMPlus') {
+    swfVersion = System.swfVersion;
+} else {
+    swfVersion = LoaderInfo.swfVersion;
+}
+

 var SECTION = " ";
 var VERSION = "AS3";
@@ -172,7 +180,7 @@
 }

 // 5.1
-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     AddVectorReadExceptionTest    ("5.1", 5.1, RANGE);
     AddVectorWriteExceptionTest   ("5.1", 5.1, RANGE);
     AddVectorReadExceptionTest_D  ("5.1", 5.1, RANGE);
@@ -185,7 +193,7 @@
 }

 // "5.1"
-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     AddVectorReadExceptionTest  ("'5.1'", "5.1", RANGE);
     AddVectorWriteExceptionTest ("'5.1'", "5.1", RANGE);
 } else {
@@ -194,7 +202,7 @@
 }

 // -5.1
-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     AddVectorReadExceptionTest    ("-5.1", -5.1, RANGE);
     AddVectorWriteExceptionTest   ("-5.1", -5.1, RANGE);
     AddVectorReadExceptionTest_D  ("-5.1", -5.1, RANGE);
@@ -207,7 +215,7 @@
 }

 // "-5.1"
-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     AddVectorReadExceptionTest  ("'-5.1'", "-5.1", RANGE);
     AddVectorWriteExceptionTest ("'-5.1'", "-5.1", RANGE);
 } else {
@@ -216,7 +224,7 @@
 }

 // -6
-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     // Compiled code may specialize vector indexing to throw a more informative
     // exception for an otherwise valid index property that denotes a negative
     // index value.  In SWF11+, we extend this to all cases of vector indexing.
@@ -228,19 +236,21 @@
 } else {
     AddVectorReadExceptionTest    ("-6", -6, REFREAD);
     AddVectorWriteExceptionTest   ("-6", -6, REFWRITE);
-    if (System.getRunmode().indexOf('interp') != -1) {
-        // Forced interpretation.
-        AddVectorReadExceptionTest_I  ("-6", -6, REFREAD);
-        AddVectorWriteExceptionTest_I ("-6", -6, REFWRITE);
-    } else {
-        // Compiled by default.  This is JIT behavior.
-        AddVectorReadExceptionTest_I  ("-6", -6, RANGE);
-        AddVectorWriteExceptionTest_I ("-6", -6, RANGE);
+    if (playerType == 'AVMPlus') {
+        if (System.getRunmode().indexOf('interp') != -1) {
+            // Forced interpretation.
+            AddVectorReadExceptionTest_I  ("-6", -6, REFREAD);
+            AddVectorWriteExceptionTest_I ("-6", -6, REFWRITE);
+        } else {
+            // Compiled by default.  This is JIT behavior.
+            AddVectorReadExceptionTest_I  ("-6", -6, RANGE);
+            AddVectorWriteExceptionTest_I ("-6", -6, RANGE);
+        }
     }
 }

 // -6.0
-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     // Compiled code may specialize vector indexing to throw a more informative
     // exception for an otherwise valid index property that denotes a negative
     // index value.  In SWF11+, we extend this to all cases of vector indexing.
@@ -257,7 +267,7 @@
 }

 // "-6"
-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     // JIT doesn't specialize this, so result prior to SWF11 was the same as for the interpreter.
     AddVectorReadExceptionTest  ("'-6'", "-6", RANGE);
     AddVectorWriteExceptionTest ("'-6'", "-6", RANGE);
@@ -267,7 +277,7 @@
 }

 // "-6.0"
-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     // JIT doesn't specialize this, so result prior to SWF11 was the same as for the interpreter.
     AddVectorReadExceptionTest  ("'-6.0'", "-6.0", RANGE);
     AddVectorWriteExceptionTest ("'-6.0'", "-6.0", RANGE);
@@ -289,7 +299,7 @@
     err1 = e.toString();
 }

-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
    AddTestCase("when Vector.<*>.prototype[3.14] is set throws exception because non-uint property",
                RANGE,
                parseError(err1, RANGE.length));
@@ -320,7 +330,7 @@
 // Implementation limits prevent us from actually allocating a vector as large
 // as these sizes, so all of these references will be to undefined properties.

-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     AddVectorReadExceptionTest  ("max_uint_p1", max_uint_p1,   RANGE);
     AddVectorWriteExceptionTest ("max_uint_p1", max_uint_p1,   RANGE);
     AddVectorReadExceptionTest  ("max_uint",    max_uint,      RANGE);
@@ -328,14 +338,16 @@
 } else {
     AddVectorReadExceptionTest  ("max_uint_p1", max_uint_p1,   REFREAD);
     AddVectorWriteExceptionTest ("max_uint_p1", max_uint_p1,   REFWRITE);
-    if (System.getRunmode().indexOf('interp') != -1) {
-        // Forced interpretation.
-        AddVectorReadExceptionTest  ("max_uint",    max_uint,  REFREAD);
-        AddVectorWriteExceptionTest ("max_uint",    max_uint,  REFWRITE);
-    } else {
-        // Compiled by default.  This is JIT behavior.
-        AddVectorReadExceptionTest  ("max_uint",    max_uint,  REFREAD);
-        AddVectorWriteExceptionTest ("max_uint",    max_uint,  RANGE);
+    if (playerType == 'AVMPlus') {
+        if (System.getRunmode().indexOf('interp') != -1) {
+            // Forced interpretation.
+            AddVectorReadExceptionTest  ("max_uint",    max_uint,  REFREAD);
+            AddVectorWriteExceptionTest ("max_uint",    max_uint,  REFWRITE);
+        } else {
+            // Compiled by default.  This is JIT behavior.
+            AddVectorReadExceptionTest  ("max_uint",    max_uint,  REFREAD);
+            AddVectorWriteExceptionTest ("max_uint",    max_uint,  RANGE);
+        }
     }
 }

@@ -357,7 +369,7 @@
 AddVectorReadExceptionTest  ("max_int28_m1", max_int28_m1, RANGE);
 AddVectorWriteExceptionTest ("max_int28_m1", max_int28_m1, RANGE);

-if (System.swfVersion >= 11) {
+if (swfVersion >= 11) {
     AddVectorReadExceptionTest  ("min_int_p1",  min_int_p1,    RANGE);     // Negative index not allowed.
     AddVectorWriteExceptionTest ("min_int_p1",  min_int_p1,    RANGE);     // Negative index not allowed.
     AddVectorReadExceptionTest  ("min_int",     min_int,       RANGE);     // Negative index not allowed.
@@ -374,3 +386,6 @@
 }

 test();
+
+// restore prototype properties
+delete Vector.<*>.prototype[3.14];


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

--- frameworks/projects/advancedgrids/src/mx/styles/metadata/IconColorStyles.as
+++ frameworks/projects/advancedgrids/src/mx/styles/metadata/IconColorStyles.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: 22118
Author:   jasonsj@adobe.com
Date:     2011-08-19T22:45:54.903069Z

Log Message:
-----------
SDK-31259 CalloutSkin graphic ordering
SDK-29673 default button skins for ActionBar buttons.

Update CalloutArrow to match spec, useBackgroundGradient should be protected.

Update mobile skins test app with emphasized examples and fix Callout examples to use to contentBackgroundAppearance.

QE notes: Fixed regression from contentBackgroundAppearance. Update baselines for ActionBar accentColor tests.
Doc notes: ActionBar buttons now support emphasized (i.e. accentColor)
Bugs:
SDK-31259 slight difference in callout content for 320 and 240/160 runs
SDK-29673 accentColor not working inside ActionBarsdk
Reviewer: tkraikit, betravis
Tests run: checkintests, mustella-mobile
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultButtonSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile320/assets/CalloutContentBackground.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentNavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/BeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledActionButtonSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultButtonSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultButtonSkin.as
@@ -11,11 +11,7 @@

 package spark.skins.mobile
 {
-import flash.display.GradientType;
-import flash.display.Graphics;
-
 import mx.core.mx_internal;
-import mx.utils.ColorUtil;

 use namespace mx_internal;

@@ -40,35 +36,8 @@
     public function DefaultButtonSkin()
     {
         super();
-    }
-
-    override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-    {
-        super.drawBackground(unscaledWidth, unscaledHeight);
-
-        // In the down state, the fill shadow is defined in the FXG asset
-        if (currentState == "down")
-        {
-            graphics.beginFill(getStyle("accentColor"));
-        }
-        else
-        {
-            var colors:Array = [];
-            colorMatrix.createGradientBox(unscaledWidth, unscaledHeight, Math.PI / 2, 0, 0);
-            var chromeColor:uint = getStyle("accentColor");
-            colors[0] = ColorUtil.adjustBrightness2(chromeColor, 70);
-            colors[1] = chromeColor;
-
-            graphics.beginGradientFill(GradientType.LINEAR, colors, CHROME_COLOR_ALPHAS, CHROME_COLOR_RATIOS, colorMatrix);
-        }

-        // inset chrome color by BORDER_SIZE
-        // bottom line is a shadow
-        graphics.drawRoundRect(layoutBorderSize, layoutBorderSize,
-            unscaledWidth - (layoutBorderSize * 2),
-            unscaledHeight - (layoutBorderSize * 2),
-            layoutCornerEllipseSize, layoutCornerEllipseSize);
-        graphics.endFill();
+        fillColorStyleName = "accentColor";
     }
 }
 }


renamed ShaderInstance.generator to ShaderInstance.shader

--- src/aerys/minko/render/shader/ShaderInstance.as
+++ src/aerys/minko/render/shader/ShaderInstance.as
@@ -36,7 +36,7 @@
 		private var _begin		: Signal			= new Signal('ShaderInstance.begin');
 		private var _end		: Signal			= new Signal('ShaderInstance.end');

-		public function get generator() : Shader
+		public function get shader() : Shader
 		{
 			return _generator;
 		}


Add a globalToScreen matrix getter in LocalData

--- src/aerys/minko/scene/visitor/data/LocalData.as
+++ src/aerys/minko/scene/visitor/data/LocalData.as
@@ -24,6 +24,8 @@
 		public static const LOCAL_TO_SCREEN				: String = 'localToScreen';
 		public static const LOCAL_TO_UV					: String = 'localToUv';

+		public static const GLOBAL_TO_SCREEN			: String = 'globalToScreen';
+
 		protected var _world							: Matrix4x4;
 		protected var _view								: Matrix4x4;
 		protected var _projection						: Matrix4x4;
@@ -44,6 +46,10 @@

 		protected var _localToUv						: Matrix4x4;
 		protected var _localToUv_localToScreenVersion	: uint;
+
+		protected var _globalToScreen					: Matrix4x4;
+		protected var _globalToScreen_viewVersion		: uint;
+		protected var _globalToScreen_projectionVersion	: uint;

 		public function get view() : Matrix4x4
 		{
@@ -137,6 +143,22 @@
 			return _localToUv;
 		}

+		public function get globalToScreen() : Matrix4x4
+		{
+			var projectionMatrix	: Matrix4x4 = projection;
+			var viewMatrix			: Matrix4x4 = view;
+
+			if (_globalToScreen_projectionVersion != projectionMatrix.version ||
+				_globalToScreen_viewVersion != viewMatrix.version)
+			{
+				_globalToScreen = Matrix4x4.multiply(projectionMatrix, viewMatrix, _globalToScreen);
+				_globalToScreen_projectionVersion	= projectionMatrix.version;
+				_globalToScreen_viewVersion			= viewMatrix.version;
+			}
+
+			return _globalToScreen;
+		}
+
 		public function set world(value : Matrix4x4) : void
 		{
 			Matrix4x4.copy(value, _world);
@@ -169,6 +191,8 @@
 			_localToView_worldVersion			= uint.MAX_VALUE;
 			_localToScreen_localToViewVersion	= uint.MAX_VALUE;
 			_localToScreen_projectionVersion	= uint.MAX_VALUE;
+			_globalToScreen_projectionVersion	= uint.MAX_VALUE;
+			_globalToScreen_viewVersion			= uint.MAX_VALUE;
 		}
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package spark.preloaders
 {


utility method deleteNode

utility method deleteNode

--- collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/EntityProxy.as
+++ collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/EntityProxy.as
@@ -108,6 +108,15 @@
 			children.addItem(node);
 		}

+		public function removeChild(node:NodeProxy):void {
+			var name:String = node.name;
+			var children:IList = childrenByName.get(name);
+			var index:int = children.getItemIndex(node);
+			if(index >= 0) {
+				children.removeItemAt(index);
+			}
+		}
+
 		public function getKeyLabel(entityDefinition:EntityDefinitionProxy):String {
 			var keyDefs:IList = entityDefinition.keyAttributeDefinitions;
 			var keyParts:Array = new Array();


OFC-233 Input field has to be considered as not visited when changing
its parent entity

Added saved property (set to true when the record have been saved the
first time by the user)

--- collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
+++ collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
@@ -17,6 +17,7 @@
     public class RecordProxy extends RecordProxyBase {

 		private var _updated:Boolean = false;
+		private var _saved:Boolean = false;

 		private var validationResults:ValidationResultsProxy;

@@ -83,6 +84,15 @@
 		public function get updated():Boolean {
 			return _updated;
 		}
+
+		public function get saved():Boolean {
+			return _saved;
+		}
+
+		public function set saved(value:Boolean):void {
+			_saved = value;
+		}
+

     }
 }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package spark.automation.tabularData
 {


http://www.igniterealtime.org/issues/browse/XIFF-60 A part which I seemed to missed. Patches delivered my Mark Walters.

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

--- src/org/igniterealtime/xiff/events/RoomEvent.as
+++ src/org/igniterealtime/xiff/events/RoomEvent.as
@@ -68,6 +68,8 @@
 		public static const USER_JOIN:String = "userJoin";

 		public static const USER_KICKED:String = "userKicked";
+
+		public static const USER_PRESENCE_CHANGE:String = "userPresenceChange";

 		private var _data:*;


Transferred from the Adobe Open Source Subversion Repository

Revision: 21974
Author:   jszeto@adobe.com
Date:     2011-08-13T04:39:10.916633Z

Log Message:
-----------
SpinnerList Bug Fixes

SDK-31149 - SpinnerListSkin should split updateDisplayList into layoutContents and drawBackground

SDK-31148 - SpinnerListContainer layout should have verticalAlign="center" by default

SDK-31075 - Date spinner in DATE_TIME mode is sluggish

Optimize VerticalSpinnerLayout to move the scrollRect and only update when a new item is needed

SDK-31053 - SpinnerList does not dispatch change event when user taps on item to have it snap into selection

Added dispatchChangeEvent parameter to animateToSelectedIndex and set it to true on item click

SDK-31001 - NumericDataProvider only supports sequences of increasing values

StepSize now supports negative values. If stepSize is negative, then the maximum is the first value

SDK-30892 - SpinnerListContainer doesn't respect the backgroundColor/backgroundAlpha styles

Exclude these two styles

QE notes: none
Doc notes: none
Bugs:
Reviewer: Tom Kraikit, Evtim, Kyu
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/bundles/en_US/collections.properties</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/layouts/VerticalSpinnerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/NumericDataProvider.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListSkin.as
@@ -149,20 +149,26 @@
 		measuredWidth = measuredMinWidth;
 		measuredHeight = measuredMinHeight;
 	}
+
+    override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
+    {
+        graphics.clear();
+
+        super.drawBackground(unscaledWidth, unscaledHeight);
+
+		// Drawing the left and right borders
+        graphics.beginFill(0xB3B3B3);
+        graphics.drawRect(0,0, borderThickness, unscaledHeight);
+        graphics.endFill();
+
+        graphics.beginFill(0xFFFFFF);
+        graphics.drawRect(unscaledWidth - borderThickness, 0, borderThickness, unscaledHeight);
+        graphics.endFill();
+    }

-	override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+	override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
 	{
-		graphics.clear();
-
-		super.updateDisplayList(unscaledWidth, unscaledHeight);
-
-		graphics.beginFill(0xB3B3B3);
-		graphics.drawRect(0,0, borderThickness, unscaledHeight);
-		graphics.endFill();
-
-		graphics.beginFill(0xFFFFFF);
-		graphics.drawRect(unscaledWidth - borderThickness, 0, borderThickness, unscaledHeight);
-		graphics.endFill();
+		super.layoutContents(unscaledWidth, unscaledHeight);

 		// Scroller
 		setElementSize(scroller, unscaledWidth - borderThickness * 2, unscaledHeight);


Transferred from the Adobe Open Source Subversion Repository

Revision: 13016
Author:   rfrishbe@adobe.com
Date:     2009-12-16T23:55:05.968905Z

Log Message:
-----------
Cleaning up a FIXME in Listbase, which also caused me to discover a bug.  We are now looping through the renderers correctly in the ListBase in the virtualized and non-virtualized test-case.

QE notes: -
Doc notes: -
Bugs:  SDK-24754
Reviewer: -
Tests run: checkintests, mustella List, ListDragDrop
Is noteworthy for integration: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -808,25 +808,44 @@

         if (labelFieldOrFunctionChanged)
         {
-            //Cycle through all instantiated renderers
+            // Cycle through all instantiated renderers to push the correct text
+            // in to the renderer by setting its label property
             if (dataGroup)
             {
-                for (var i:int = 0; i < dataGroup.numChildren; i++)
+                var itemIndex:int;
+
+                // if virtual layout, only loop through the indices in view
+                // otherwise, loop through all of the item renderers
+                if (layout && layout.useVirtualLayout)
                 {
-                    // FIXME (rfrishbe):(dsubrama) Ryan, figure out numChildren/numElement vs. getElement/getChild
-                    //and which is more performant.
-                    var renderer:IItemRenderer = dataGroup.getElementAt(i) as IItemRenderer;
-                    //Push the correct text into the renderer by settings its label
-                    //property
-                    if (renderer)
+                    for each (itemIndex in dataGroup.getItemIndicesInView())
                     {
-                        renderer.label = itemToLabel(renderer.data);
+                        updateRendererLabelProperty(itemIndex);
+                    }
+                }
+                else
+                {
+                    var n:int = dataGroup.numElements;
+                    for (itemIndex = 0; itemIndex < n; itemIndex++)
+                    {
+                        updateRendererLabelProperty(itemIndex);
                     }
                 }
             }

             labelFieldOrFunctionChanged = false;
         }
+    }
+
+    /**
+     *  @private
+     */
+    private function updateRendererLabelProperty(itemIndex:int):void
+    {
+        // grab the renderer at that index and re-compute it's label property
+        var renderer:IItemRenderer = dataGroup.getElementAt(itemIndex) as IItemRenderer;
+        if (renderer)
+            renderer.label = itemToLabel(renderer.data);
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/spark/src/spark/effects/animation/SimpleMotionPath.as
+++ frameworks/projects/spark/src/spark/effects/animation/SimpleMotionPath.as
@@ -25,6 +25,8 @@
  *  The MotionPath class itself can define any number of keyframes.</p>
  *
  *  @see MotionPath
+ *
+ *  @includeExample examples/SimpleMotionPathEffectExample.mxml
  *
  *  @langversion 3.0
  *  @playerversion Flash 10


sneakey .*

sneakey .*

--- test/org/robotlegs/v2/extensions/guardsAndHooks/impl/GuardsProcessorTest.as
+++ test/org/robotlegs/v2/extensions/guardsAndHooks/impl/GuardsProcessorTest.as
@@ -12,7 +12,6 @@
 	import org.robotlegs.v2.extensions.guards.support.GrumpyGuard;
 	import org.robotlegs.v2.extensions.guards.support.HappyGuard;
 	import org.robotlegs.v2.extensions.guards.support.JustTheMiddleManGuard;
-	import org.robotlegs.v2.extensions.guardsAndHooks.support.*;
 	import org.swiftsuspenders.Injector;

 	[Deprecated(replacement="org.robotlegs.v2.extensions.guards.impl.GuardGroupTests")]


- RMTP fixes - additional play/playing events

--- src/flash/htmlelements/VideoElement.as
+++ src/flash/htmlelements/VideoElement.as
@@ -1,5 +1,4 @@
-
-package htmlelements
+package htmlelements
 {
 	import flash.display.Sprite;
 	import flash.events.*;
@@ -8,92 +7,95 @@
 	import flash.media.Video;
 	import flash.media.SoundTransform;
 	import flash.utils.Timer;
-
+
 	import FlashMediaElement;
 	import HtmlMediaEvent;
-
+
 	public class VideoElement extends Sprite implements IMediaElement
 	{
 		private var _currentUrl:String = "";
 		private var _autoplay:Boolean = true;
-
+
         private var _connection:NetConnection;
         private var _stream:NetStream;
         private var _video:Video;
 		private var _element:FlashMediaElement;
 		private var _soundTransform;
 		private var _oldVolume:Number = 1;
-
+
 		// event values
 		private var _duration:Number = 0;
 		private var _framerate:Number;
 		private var _isPaused:Boolean = true;
 		private var _isEnded:Boolean = false;
-		private var _isLoaded:Boolean = false;
 		private var _volume:Number = 1;
 		private var _isMuted:Boolean = false;
-
+
 		private var _bytesLoaded:Number = 0;
 		private var _bytesTotal:Number = 0;
 		private var _bufferedTime:Number = 0;
-
+
 		private var _videoWidth:Number = -1;
 		private var _videoHeight:Number = -1;
-
+
 		private var _timer:Timer;

 		private var _isRTMP:Boolean = false;
-		private var _playRTMPasap:Boolean = false;
-
+		private var _isConnected:Boolean = false;
+		private var _playWhenConnected:Boolean = false;
+		private var _hasStartedPlaying:Boolean = false;
+

 		public function get video():Video {
 			return _video;
 		}
-
+
 		public function get videoHeight():Number {
 			return _videoHeight;
 		}
-
+
 		public function get videoWidth():Number {
 			return _videoWidth;
 		}
-
-
+
+
 		public function duration():Number {
 			return _duration;
 		}
-
+
 		public function currentTime():Number {
 			return _stream.time;
 		}
-
-
-
+
+		// (1) load()
+		// calls _connection.connect();
+		// waits for NetConnection.Connect.Success
+		// _stream gets created
+
+
 		public function VideoElement(element:FlashMediaElement, autoplay:Boolean, timerRate:Number)
 		{
 			_element = element;
 			_autoplay = autoplay;
-
+
 			_video = new Video();
 			addChild(_video);
-
+
             _connection = new NetConnection();
             _connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
             _connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
-
-            //will be called in load()
-            //_connection.connect(null);
-
+			//_connection.connect(null);
+
 			_timer = new Timer(timerRate);
 			_timer.addEventListener("timer", timerHandler);
-
-		}
-
+
+		}
+
 		private function timerHandler(e:TimerEvent) {

 			_bytesLoaded = _stream.bytesLoaded;
 			_bytesTotal = _stream.bytesTotal;
-
+
 			sendEvent(HtmlMediaEvent.TIMEUPDATE);

 			trace("bytes", _bytesLoaded, _bytesTotal);
@@ -101,18 +103,18 @@
 			if (_bytesLoaded < _bytesTotal)
 				sendEvent(HtmlMediaEvent.PROGRESS);
 		}
-
+
 		// internal events
         private function netStatusHandler(event:NetStatusEvent):void {
 			trace("netStatus", event.info.code);

 			switch (event.info.code) {
-
+
 				case "NetStream.Buffer.Empty":
                 case "NetStream.Buffer.Full":
 					_bytesLoaded = _stream.bytesLoaded;
 					_bytesTotal = _stream.bytesTotal;
-
+
 					sendEvent(HtmlMediaEvent.PROGRESS);
                     break;

@@ -122,122 +124,128 @@
                 case "NetStream.Play.StreamNotFound":
                     trace("Unable to locate video");
                     break;
-
+
 				// STREAM
                 case "NetStream.Play.Start":
 					_isPaused = false;
 					sendEvent(HtmlMediaEvent.PLAY);
+					sendEvent(HtmlMediaEvent.PLAYING);
 					_timer.start();
                     break;
-
+
                 case "NetStream.Seek.Notify":
 					sendEvent(HtmlMediaEvent.SEEKED);
                     break;
-
+
 				case "NetStream.Pause.Notify":
 					_isPaused = true;
-					sendEvent(HtmlMediaEvent.PAUSED);
+					sendEvent(HtmlMediaEvent.PAUSE);
                     break;
-
+
 				case "NetStream.Play.Stop":
 					_isPaused = false;
 					_timer.stop();
 					sendEvent(HtmlMediaEvent.ENDED);
                     break;
-
+
             }
         }
-
+
         private function connectStream():void {
 			trace("connectStream");
             _stream = new NetStream(_connection);

 			_stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // same event as connection
             _stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
-
+
 			var customClient:Object = new Object();
 			customClient.onMetaData = onMetaDataHandler;
 			_stream.client = customClient;

-
-            _video.attachNetStream(_stream);
-
-
-			if (_playRTMPasap) {
+            _video.attachNetStream(_stream);
+
+			_isConnected = true;
+
+			if (_playWhenConnected && !_hasStartedPlaying) {
 				play();
-				_playRTMPasap=false;
-			}
+				_playWhenConnected = false;
+			}
+
         }
-
+
         private function securityErrorHandler(event:SecurityErrorEvent):void {
             trace("securityErrorHandler: " + event);
         }
-
+
 		private function asyncErrorHandler(event:AsyncErrorEvent):void {
             // ignore AsyncErrorEvent events.
         }
-
-
+
+
 		private function onMetaDataHandler(info:Object):void {
 			_duration = info.duration;
 			_framerate = info.framerate;
 			_videoWidth = info.width;
 			_videoHeight = info.height;
-
+
 			// set size?
-
+
 			sendEvent(HtmlMediaEvent.LOADEDMETADATA);
 		}
-
-
-
-
+
+
+
+
 		// interface members
 		public function setSrc(url:String):void {
-			if (_isLoaded) {
+			if (_isConnected && _stream) {
 				// stop and restart
 				_stream.pause();
 			}

-			_currentUrl = url;
-
-
 			_isRTMP = !!_currentUrl.match(/^rtmp(s|t|e|te)?\:\/\//);
-		}
-
+			_currentUrl = url;
+			_isConnected = false;
+			_hasStartedPlaying = false;
+		}
+
 		public function load():void {
-			// there really isn't an equivalent here
-			if (_stream)
+			// as far as I know there is no way to start downloading a file without playing it (preload="auto" in HTML5)
+			// so this "load" just begins a Flash connection
+			if (_isConnected && _stream) {
 				_stream.pause();
-
-			// there really isn't an equivalent here
+			}
+			_isConnected = false;
+
 			if (_isRTMP) {
 				_connection.connect(_currentUrl.replace(/\/[^\/]+$/,"/"));
 			} else {
 				_connection.connect(null);
 			}
-			_isLoaded =false;
-		}
-
-		public function play():void {
-
-			// RTMP streams have to wait for the first NetConnection.Connect.Success event to begin playing
-			if (_isRTMP && !_stream) {
-				trace("Delaying RTMP play()");
-				_playRTMPasap=true;
-				return;
-			}
-			_playRTMPasap=false;
-
-
-			if (_isLoaded) {
-				_stream.resume();
-				_timer.start();
-				_isPaused = false;
-				_isLoaded = true;
-				sendEvent(HtmlMediaEvent.PLAYING);
+			// in a few moments the "NetConnection.Connect.Success" event will fire
+			// and call createConnection which finishes the "load" sequence
+
+
+		}
+
+		public function play():void {
+
+			if (!_hasStartedPlaying && !_isConnected) {
+				_playWhenConnected = true;
+				load();
+				return;
+			}
+
+			if (_hasStartedPlaying) {
+				if (_isPaused) {
+					_stream.resume();
+					_timer.start();
+					_isPaused = false;
+					sendEvent(HtmlMediaEvent.PLAY);
+					sendEvent(HtmlMediaEvent.PLAYING);
+				}
 			} else {
-				// error: play() called without a URL
+
 				if (_isRTMP) {
 					_stream.play(_currentUrl.split("/").pop());
 				} else {
@@ -245,58 +253,68 @@
 				}
 				_timer.start();
 				_isPaused = false;
-				_isLoaded = true;
-				sendEvent(HtmlMediaEvent.PLAYING);
+				sendEvent(HtmlMediaEvent.PLAY);
+				sendEvent(HtmlMediaEvent.PLAYING);
+				_hasStartedPlaying = true;
 			}

 		}
-
+
 		public function pause():void {
+			if (_stream == null)
+				return;
+
 			_stream.pause();
 			_isPaused = true;
 			_timer.stop();
-
+
 			_isPaused = true;
-			sendEvent(HtmlMediaEvent.PAUSED);
+			sendEvent(HtmlMediaEvent.PAUSE);
 		}
-
+
 		public function setCurrentTime(pos:Number):void {
+			if (_stream == null)
+				return;
+
 			_stream.seek(pos);
 			sendEvent(HtmlMediaEvent.SEEKED);
 		}
-
+
 		public function setVolume(volume:Number):void {
+			if (_stream == null)
+				return;
+
 			_soundTransform = new SoundTransform(volume);
 			_stream.soundTransform = _soundTransform;
 			_volume = volume;
-
+
 			_isMuted = (_volume == 0);
-
+
 			sendEvent(HtmlMediaEvent.VOLUMECHANGE);
 		}

-
+
 		public function setMuted(muted:Boolean):void {
-
+
 			if (_isMuted == muted)
 				return;
-
+
 			if (muted) {
 				_oldVolume = _stream.soundTransform.volume;
 				setVolume(0);
 			} else {
 				setVolume(_oldVolume);
 			}
-
+
 			_isMuted = muted;
 		}

-
+
 		private function sendEvent(eventName:String) {
-
+
 			// calculate this to mimic HTML5
 			_bufferedTime = _bytesLoaded / _bytesTotal + _duration;
-
+
 			// build JSON
 			var values:String =
 							"{duration:" + _duration +
@@ -313,9 +331,8 @@
 							",videoWidth:" + _videoWidth +
 							",videoHeight:" + _videoHeight +
 							"}";
-
+
 			_element.sendEvent(eventName, values);
 		}
 	}
-}
-
+}


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

--- frameworks/projects/framework/src/mx/validators/CurrencyValidatorAlignSymbol.as
+++ frameworks/projects/framework/src/mx/validators/CurrencyValidatorAlignSymbol.as
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.validators
+{
+
+/**
+ *  The CurrencyValidatorAlignSymbol class defines value constants
+ *  for specifying currency symbol alignment.
+ *  These values are used in the CurrencyValidator.alignSymbol
+ *  property.
+ *
+ *  @see mx.validators.CurrencyValidator
+ */
+public final class CurrencyValidatorAlignSymbol
+{
+	include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Specifies "any" as the alignment of the currency symbol
+	 *  for the CurrencyValidator class.
+	 */
+	public static const ANY:String = "any";
+
+	/**
+	 *  Specifies "left" as the alignment of the currency symbol
+	 *  for the CurrencyValidator class.
+	 */
+	public static const LEFT:String = "left";
+
+	/**
+	 *  Specifies "right" as the alignment of the currency symbol
+	 *  for the CurrencyValidator class.
+	 */
+	public static const RIGHT:String = "right";
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 16019
Author:   hmuller@adobe.com
Date:     2010-05-10T23:09:46.617663Z

Log Message:
-----------
New classes: DataGrid, DataGridSkin, SelectionMode.  I've moved event handling from Grid to DataGrid and moved selectionMode property from Grid to GridSelection.  Added Grid.defaultItemRenderer property.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridSelection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/DataGridSkin.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/SelectionMode.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridSelectionMode.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridSelectionMode.as
@@ -0,0 +1,28 @@
+package spark.components.supportClasses
+{
+
+/**
+ *  The SelectionMode class defines the legal constant values for the DataGrid
+ *  slectionMode property
+ */
+public final class SelectionMode
+{
+    public function SelectionMode()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    public static const NONE:String = "none";
+    public static const SINGLE_ROW:String = "row";
+    public static const MULTIPLE_ROWS:String = "multipleRows";
+    public static const SINGLE_CELL:String = "cell";
+    public static const MULTIPLE_CELLS:String = "multipleCells";
+
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 7447
Author:   chaase@adobe.com
Date:     2009-05-29T21:11:10.326849Z

Log Message:
-----------
Fixed bug with new Fade effect. Fade automatically manages parenting/unparenting objects which go away during a transition, but it was not doing this correctly for GraphicElements, which do not parent their underlying display object until a layout pass. This caused a failure in Rotate3D, which called a function in GraphicElement that relied on the existence of that display object parent. Fix was to force a validation to occur on the graphic element to parent it correctly and also to check for a null parent just in case.

QE Notes: None
Doc Notes: None
Bugs: sdk-21442
Reviewer: Jason
Tests: checkintests, Mustella spark/effects/Fade, mx/states/Transition

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/GraphicElement.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
@@ -2458,8 +2458,9 @@
      */
     public function localToGlobal(point:Point):Point
     {
-        // Probably won't hit this case
-        if (!displayObject)
+        // If there is not yet a displayObject or it's not parented, just
+        // return its local position
+        if (!displayObject || !displayObject.parent)
             return new Point(x, y);

         if (needsDisplayObject)


- remove unused file

- remove unused file

--- src/flash/htmlelements/VideoElementVP.as
+++ src/flash/htmlelements/VideoElementVP.as
@@ -1,211 +0,0 @@
-
-package htmlelements
-{
-	import flash.display.Sprite;
-	import flash.events.*;
-	import flash.net.NetConnection;
-	import flash.net.NetStream;
-	import flash.media.Video;
-	import flash.media.SoundTransform;
-	import flash.utils.Timer;
-	import fl.video.*
-
-	import FlashMediaElement;
-	import HtmlMediaEvent;
-
-	public class VideoElement extends Sprite implements IMediaElement
-	{
-		private var _currentUrl:String = "";
-		private var _autoplay:Boolean = true;
-
-		private var _video:VideoPlayer;
-		private var _ncManager:NCManager;
-
-		private var _soundTransform;
-		private var _element:FlashMediaElement;
-		private var _oldVolume:Number = 1;
-
-		// event values
-		private var _duration:Number;
-		private var _framerate:Number;
-		private var _isPaused:Boolean = false;
-		private var _isEnded:Boolean = false;
-		private var _isLoaded:Boolean = false;
-		private var _volume:Number = 1;
-		private var _isMuted:Boolean = false;
-
-		private var _bytesLoaded:Number = 0;
-		private var _bytesTotal:Number = 0;
-		private var _bufferedTime:Number = 0;
-
-
-		private var _timer:Timer;
-
-
-		public function get video():Video {
-			return _video;
-		}
-
-
-		public function VideoElement(element:FlashMediaElement, autoplay:Boolean)
-		{
-			_element = element;
-			_autoplay = autoplay;
-
-			_video = new VideoPlayer();
-			_video.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO;
-			_video.width = _element.stage.stageWidth;
-			_video.height = _element.stage.stageHeight;
-			_ncManager = _video.ncMgr;
-			addChild(_video);
-
-
-			_video.addEventListener(VideoEvent.READY, videoReadyHandler);
-			_video.addEventListener(MetadataEvent.METADATA_RECEIVED, videoMetadataReceivedHandler);
-			_video.addEventListener(VideoEvent.COMPLETE, videoCompleteHandler);
-			_video.addEventListener(VideoEvent.STATE_CHANGE, videoStateChangeHandler);
-
-
-			_timer = new Timer(200);
-			_timer.addEventListener("timer", timerHandler);
-		}
-
-		private function timerHandler(e:TimerEvent) {
-
-			_bytesLoaded = _video.bytesLoaded;
-			_bytesTotal = _video.bytesTotal;
-
-			sendEvent(HtmlMediaEvent.TIMEUPDATE);
-
-			trace("bytes", _bytesLoaded, _bytesTotal);
-
-			if (_bytesLoaded < _bytesTotal)
-				sendEvent(HtmlMediaEvent.PROGRESS);
-		}
-
-		private function videoReadyHandler(e) {
-			_isLoaded = true;
-			sendEvent(HtmlMediaEvent.LOADED_DATA);
-		}
-
-		private function videoMetadataReceivedHandler(e:MetadataEvent) {
-			_duration = e.info.duration;
-
-			sendEvent(HtmlMediaEvent.LOADED_DATA);
-		}
-
-		private function videoCompleteHandler(e) {
-
-			sendEvent(HtmlMediaEvent.ENDED);
-		}
-
-		private function videoProgressHandler(e) {
-			_bytesLoaded = _video.bytesLoaded;
-			_bytesTotal = _video.bytesTotal;
-			sendEvent(HtmlMediaEvent.PROGRESS);
-		}
-		private function videoStateChangeHandler(e) {
-			//sendEvent(HtmlMediaEvent.PROGRESS);
-		}
-
-
-
-		// interface members
-		public function setSrc(url:String):void {
-			if (_isLoaded) {
-				// stop and restart
-				_video.pause();
-			}
-
-			_currentUrl = url;
-		}
-
-		public function load():void {
-			_video.load(_currentUrl);
-			_isLoaded =false;
-		}
-
-		public function play():void {
-
-			if (_isLoaded) {
-				_video.play();
-				_timer.start();
-				_isPaused = false;
-				_isLoaded = true;
-				sendEvent(HtmlMediaEvent.PLAYING);
-			} else {
-				// error: play() called without a URL
-				_video.play(_currentUrl);
-				_timer.start();
-				_isPaused = false;
-				_isLoaded = true;
-				sendEvent(HtmlMediaEvent.PLAYING);
-			}
-
-		}
-
-		public function pause():void {
-			_video.pause();
-			_isPaused = true;
-			_timer.stop();
-
-			_isPaused = true;
-			sendEvent(HtmlMediaEvent.PAUSED);
-		}
-
-		public function setCurrentTime(pos:Number):void {
-			_video.seek(pos);
-			sendEvent(HtmlMediaEvent.SEEKED);
-		}
-
-		public function setVolume(volume:Number):void {
-			_soundTransform = new SoundTransform(volume);
-			_video.soundTransform = _soundTransform;
-			_volume = volume;
-
-			_isMuted = (_volume == 0);
-
-			sendEvent(HtmlMediaEvent.VOLUMECHANGE);
-		}
-
-
-		public function setMuted(muted:Boolean):void {
-
-			if (_isMuted == muted)
-				return;
-
-			if (muted) {
-				_oldVolume = _video.soundTransform.volume;
-				setVolume(0);
-			} else {
-				setVolume(_oldVolume);
-			}
-
-			_isMuted = muted;
-		}
-
-
-		private function sendEvent(eventName:String) {
-
-			// calculate this to mimic HTML5
-			_bufferedTime = _bytesLoaded / _bytesTotal + _duration;
-
-			// build JSON
-			var values:String =
-							"{duration:" + _duration +
-							",framerate:" + _framerate +
-							",currentTime:" + _video.playheadTime +
-							",muted:" + _isMuted +
-							",paused:" + _isPaused +
-							",ended:" + _isEnded +
-							",volume:" + _volume +
-							",bytesTotal:" + _bytesTotal +
-							",bufferedBytes:" + _bytesLoaded +
-							",bufferedTime:" + _bufferedTime +
-							"}";
-
-			_element.sendEvent(eventName, values);
-		}
-	}
-}
-


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

--- frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridHeaderBase.as
+++ frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridHeaderBase.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2007 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.
 //
 ////////////////////////////////////////////////////////////////////////////////


added validates_length_of

added validates_length_of

--- src/ras3r/Validates.as
+++ src/ras3r/Validates.as
@@ -136,6 +136,23 @@
 		}

 		/**
+		* validates_length_of('zip', {
+		*	minimum:	5,
+		* 	message: 	'must be at least {{count}} characters long',
+		* 	iff: 		function,
+		*	unless: 	function
+		* })
+		**/
+		static public function length_of (object:Object, ...attr_names) :void
+		{
+			var options:Hash = new Hash({ message: "{attr} is too short" }).update(extract_options(attr_names));
+			add_validator(object, attr_names, options, function (e:PropertyChangeEvent) :void
+			{
+				dispatch_result_event_for(e, object, Boolean(e.newValue.length >= options.minimum), options.message);
+			});
+		}
+
+		/**
 		* validates_presence_of('first_name', {
 		* 	message: 	'can\'t be blank',
 		* 	iff: 		function,


Use this keyword + Send sound url to ImpetusSound

--- Impetus.as
+++ Impetus.as
@@ -9,11 +9,11 @@

         public function Impetus():void
         {
-            sounds = new Vector.<ImpetusSound>();
+            this.sounds = new Vector.<ImpetusSound>();

             if(ExternalInterface.available)
             {
-                ExternalInterface.addCallback('getSound', getSound);
+                ExternalInterface.addCallback('getSound', this.getSound);

                 ExternalInterface.call("console.log", "Impetus loaded. (https://github.com/JWhile/Impetus)");
             }
@@ -21,19 +21,19 @@

         public function getSound(url:String)
         {
-            var len:int = sounds.length;
+            var len:int = this.sounds.length;

             for(var i:int = 0; i < len; i++)
             {
-                if(sounds[i].getUrl() === url)
+                if(this.sounds[i].getUrl() === url)
                 {
-                    return sounds[i];
+                    return this.sounds[i];
                 }
             }

-            var s:ImpetusSound = new ImpetusSound();
+            var s:ImpetusSound = new ImpetusSound(url);

-            sounds.push(s);
+            this.sounds.push(s);

             return s;
         }


set ArcBallController.minDistance to 1.0 by default

--- src/aerys/minko/scene/controller/camera/ArcBallController.as
+++ src/aerys/minko/scene/controller/camera/ArcBallController.as
@@ -32,7 +32,7 @@
 		private var _lookAt				: Vector4	= new Vector4(0, 0, 0, 1);
 		private var _up					: Vector4	= new Vector4(0, 1, 0, 1);

-		private var _minDistance		: Number	= 0.1;
+		private var _minDistance		: Number	= 1.;
 		private var _maxDistance		: Number	= 1000;

 		private var _distanceStep		: Number	= 1;


TransposedDataSource columns now support deriveStringFromNumber() with string formatting scripts.

--- WeaveData/src/weave/data/DataSources/TransposedDataSource.as
+++ WeaveData/src/weave/data/DataSources/TransposedDataSource.as
@@ -81,10 +81,10 @@
 		private function validateKeyType():void
 		{
 			// make sure keyType is set
-			if (internalData.keyType == null)
+			if (internalData.transposedKeyType == null)
 			{
 				var owner:ILinkableHashMap = getLinkableOwner(this) as ILinkableHashMap;
-				internalData.keyType = owner ? owner.getName(this) : DataTypes.STRING;
+				internalData.transposedKeyType = owner ? owner.getName(this) : DataTypes.STRING;
 			}
 		}

@@ -96,14 +96,14 @@
 			var objects:Array = columns.getObjects();

 			// update transposed keys to correspond to column names
-			internalData.transposedKeys = WeaveAPI.QKeyManager.getQKeys(internalData.keyType, names);
+			internalData.transposedKeys = WeaveAPI.QKeyManager.getQKeys(internalData.transposedKeyType, names);

 			// update column lookup
-			internalData.columnsArray = objects;
+			internalData.sourceColumnsArray = objects;
 			for (var i:int = 0; i < names.length; i++)
-				internalData.columnNameIndex[names[i]] = i;
+				internalData.sourceColumnNameToIndex[names[i]] = i;
 			if (columns.childListCallbacks.lastNameRemoved)
-				delete internalData.columnNameIndex[columns.childListCallbacks.lastNameRemoved];
+				delete internalData.sourceColumnNameToIndex[columns.childListCallbacks.lastNameRemoved];

 			setColumnKeySources();
 		}
@@ -112,7 +112,7 @@
 		{
 			// get union of original keys
 			(filteredKeySet as FilteredKeySet).setColumnKeySources(
-				VectorUtils.flatten(internalData.columnsArray, metadata.getObjects())
+				VectorUtils.flatten(internalData.sourceColumnsArray, metadata.getObjects())
 			);
 		}

@@ -143,7 +143,7 @@
 			{
 				validateKeyType();

-				var hierarchy:XML = <hierarchy title={ internalData.keyType }/>;
+				var hierarchy:XML = <hierarchy title={ internalData.transposedKeyType }/>;

 				var metaCategory:XML = <category title={ lang('Source column metadata') }/>;
 				var propertyName:String;
@@ -231,18 +231,34 @@
 	public var callbacks:ICallbackCollection;
 	public var triggerCounter:uint = 0;

-	public var columnsArray:Array = [];
-	public var columnNameIndex:Object = {};
+	public var sourceColumnsArray:Array = [];
+	public var sourceColumnNameToIndex:Object = {};
+	public var sourceMetadataCache:Object;
 	public var transposedKeys:Array = [];
-	public var keyType:String;
-	public var metadataCache:Object;
+	public var transposedKeyType:String;
+	public var deriveStringFromNumber:Function;
+
+	public var lastError:String;
+	public var lastErrorColumn:IAttributeColumn;
+	public function errorHandler(e:Error):void
+	{
+		var str:String = e is Error ? e.message : String(e);
+		str = StandardLib.substitute("Error in string formatting script for transposed column {0}:\n{1}", lastErrorColumn.getMetadata(ColumnMetadata.TITLE), str);
+		if (lastError != str)
+		{
+			lastError = str;
+			reportError(e);
+		}
+	}
+
+
 	public function getMetadataPropertyNames():Array
 	{
 		if (detectLinkableObjectChange(getMetadataPropertyNames, dataSource.columns))
 		{
 			// get sorted union of all metadata property names from data columns
 			var propertyNameHash:Object = {};
-			for each (var column:IAttributeColumn in columnsArray)
+			for each (var column:IAttributeColumn in sourceColumnsArray)
 				VectorUtils.fillKeys(propertyNameHash, column.getMetadataPropertyNames());
 			_metadataPropertyNames = VectorUtils.getKeys(propertyNameHash);
 			ColumnUtils.sortMetadataPropertyNames(_metadataPropertyNames);
@@ -264,17 +280,21 @@
 import weave.utils.EquationColumnLib;
 import weave.api.data.DataTypes;
 import weave.compiler.ProxyObject;
-
-internal class TransposedRecord implements IAttributeColumn, IDisposableObject
+import weave.api.data.IPrimitiveColumn;
+import weave.compiler.StandardLib;
+import weave.compiler.Compiler;
+import weave.api.reportError;
+
+internal class TransposedRecord implements IAttributeColumn, IDisposableObject, IPrimitiveColumn
 {
 	private var dataSource:TransposedDataSource;
 	private var columnCallbacks:ICallbackCollection;
 	private var internalData:InternalData;
 	private var callbacks:ICallbackCollection;
-	private var originalKey:IQualifiedKey;
-	private var metadataName:String;
-
-	public function TransposedRecord(dataSource:TransposedDataSource, internalData:InternalData, originalKey:IQualifiedKey, metadataName:String)
+	private var sourceKey:IQualifiedKey;
+	private var sourceMetadataName:String;
+
+	public function TransposedRecord(dataSource:TransposedDataSource, internalData:InternalData, sourceKey:IQualifiedKey, metadataName:String)
 	{
 		registerDisposableChild(dataSource, this);

@@ -282,8 +302,8 @@
 		this.columnCallbacks = getCallbackCollection(dataSource.columns);
 		this.internalData = internalData;
 		this.callbacks = getCallbackCollection(dataSource);
-		this.originalKey = originalKey;
-		this.metadataName = metadataName;
+		this.sourceKey = sourceKey;
+		this.sourceMetadataName = metadataName;
 	}

 	public function dispose():void
@@ -292,8 +312,8 @@
 		columnCallbacks = null;
 		internalData = null;
 		callbacks = null;
-		originalKey = null;
-		metadataName = null;
+		sourceKey = null;
+		sourceMetadataName = null;
 	}

 	public function get keys():Array
@@ -303,15 +323,15 @@

 	public function containsKey(key:IQualifiedKey):Boolean
 	{
-		return key.keyType == internalData.keyType
-			&& internalData.columnNameIndex.hasOwnProperty(key.localName);
+		return key.keyType == internalData.transposedKeyType
+			&& internalData.sourceColumnNameToIndex.hasOwnProperty(key.localName);
 	}

 	private static const META_META_PROPERTY_NAMES:Array = [ColumnMetadata.TITLE, ColumnMetadata.DATA_TYPE];

 	public function getMetadataPropertyNames():Array
 	{
-		if (metadataName)
+		if (sourceMetadataName)
 			return META_META_PROPERTY_NAMES;

 		return internalData.getMetadataPropertyNames();
@@ -319,12 +339,21 @@

 	public function getMetadata(propertyName:String):String
 	{
+		// when columns change, reset cached metadata
+		if (internalData.triggerCounter != columnCallbacks.triggerCounter)
+		{
+			internalData.triggerCounter = columnCallbacks.triggerCounter;
+			internalData.sourceMetadataCache = {};
+			internalData.deriveStringFromNumber = null;
+		}
+
 		// since this column is a transposed record, keyType is a custom value
 		if (propertyName == ColumnMetadata.KEY_TYPE)
-			return internalData.keyType;
-
-		if (metadataName)
-		{
+			return internalData.transposedKeyType;
+
+		if (sourceMetadataName)
+		{
+			// metadata for transposed metadata columns
 			if (propertyName == ColumnMetadata.TITLE)
 				return propertyName;
 			if (propertyName == ColumnMetadata.DATA_TYPE)
@@ -332,43 +361,72 @@
 			return null;
 		}

-		// see if there is an original column specified to fill this transposed metadata
+		// see if there is a source metadata column specified to fill this transposed metadata
 		var metaColumn:IAttributeColumn = dataSource.metadata.getObject(propertyName) as IAttributeColumn;
 		if (metaColumn)
-			return metaColumn.getValueFromKey(originalKey, String) as String;
+			return metaColumn.getValueFromKey(sourceKey, String) as String;

 		// for all other metadata, cache values common among all columns
-		// when columns change, reset cached metadata
+		if (internalData.sourceMetadataCache.hasOwnProperty(propertyName))
+			return internalData.sourceMetadataCache[propertyName];
+		var value:String = ColumnUtils.getCommonMetadata(internalData.sourceColumnsArray, propertyName);
+		internalData.sourceMetadataCache[propertyName] = value;
+		return value;
+	}
+
+	private static const compiler:Compiler = new Compiler();
+	public function deriveStringFromNumber(number:Number):String
+	{
+		if (sourceMetadataName)
+		{
+			// for transposed metadata column, treat number as a source column index
+			var sourceColumn:IAttributeColumn = internalData.sourceColumnsArray[number] as IAttributeColumn;
+			return sourceColumn ? sourceColumn.getMetadata(sourceMetadataName) : '';
+		}
+
 		if (internalData.triggerCounter != columnCallbacks.triggerCounter)
-		{
-			internalData.triggerCounter = columnCallbacks.triggerCounter;
-			internalData.metadataCache = {};
-		}
-		if (internalData.metadataCache.hasOwnProperty(propertyName))
-			return internalData.metadataCache[propertyName];
-		var value:String = ColumnUtils.getCommonMetadata(internalData.columnsArray, propertyName);
-		internalData.metadataCache[propertyName] = value;
-		return value;
+			getMetadata(ColumnMetadata.STRING); // this resets internalData.triggerCounter and internalData.deriveStringFromNumber
+
+		if (internalData.deriveStringFromNumber == null)
+		{
+			try
+			{
+				var script:String = getMetadata(ColumnMetadata.STRING);
+				internalData.deriveStringFromNumber = compiler.compileToFunction(script, null, internalData.errorHandler, false, [ColumnMetadata.NUMBER]);
+			}
+			catch (e:Error)
+			{
+				internalData.errorHandler(e);
+			}
+
+			if (internalData.deriveStringFromNumber == null)
+				internalData.deriveStringFromNumber = StandardLib.formatNumber;
+		}
+
+		return internalData.deriveStringFromNumber(number);
 	}

 	public function getValueFromKey(key:IQualifiedKey, dataType:Class = null):*
 	{
 		var value:* = undefined;
-		if (key.keyType == internalData.keyType)
-		{
-			var col:IAttributeColumn = internalData.columnsArray[internalData.columnNameIndex[key.localName]] as IAttributeColumn;
-			if (col)
-			{
-				if (originalKey)
+		if (key.keyType == internalData.transposedKeyType)
+		{
+			// key.localName is source column name
+			var sourceColumnIndex:* = internalData.sourceColumnNameToIndex[key.localName];
+			var sourceColumn:IAttributeColumn = internalData.sourceColumnsArray[sourceColumnIndex] as IAttributeColumn;
+			if (sourceColumn)
+			{
+				if (sourceKey)
 				{
-					return col.getValueFromKey(originalKey, dataType);
+					return sourceColumn.getValueFromKey(sourceKey, dataType);
 				}
-				if (metadataName)
+				if (sourceMetadataName)
 				{
+					// for transposed metadata column, numeric value is source column index
 					if (dataType == Number)
-						return Number(internalData.columnNameIndex[key.localName]);
+						return Number(sourceColumnIndex);

-					return col.getMetadata(metadataName);
+					return sourceColumn.getMetadata(sourceMetadataName);
 				}
 			}
 		}


Ignore meta_dirty in metadata builder

Ignore meta_dirty in metadata builder

--- src/flex/uibuilder/org/granite/tide/uibuilder/GrailsEntityMetadataBuilder.as
+++ src/flex/uibuilder/org/granite/tide/uibuilder/GrailsEntityMetadataBuilder.as
@@ -115,7 +115,7 @@

             for each (var g:XML in getters) {
             	var name:String = g.@name.toXMLString();
-            	if (name == 'id' || name == 'version' || name == 'uid')
+            	if (name == 'id' || name == 'version' || name == 'uid' || name == 'meta_dirty')
             		continue;

         		if (constraints[name] && constraints[name].display == 'false')


Fix resource browser scene node addition/removal getting reflected in the editor hierarchy window.

--- bin/Data/Scripts/Editor/EditorEventsHandlers.as
+++ bin/Data/Scripts/Editor/EditorEventsHandlers.as
@@ -152,18 +152,27 @@

 void EditorMainHandleNodeAdded(StringHash eventType, VariantMap& eventData)
 {
+    if (GetEventSender() !is editorScene)
+        return;
+
     HandleNodeAdded(eventType, eventData);
     rebuildSceneOrigins = true;
 }

 void EditorMainHandleNodeRemoved(StringHash eventType, VariantMap& eventData)
 {
+    if (GetEventSender() !is editorScene)
+        return;
+
     HandleNodeRemoved(eventType, eventData);
     rebuildSceneOrigins = true;
 }

 void EditorMainHandleNodeNameChanged(StringHash eventType, VariantMap& eventData)
 {
+    if (GetEventSender() !is editorScene)
+        return;
+
     HandleNodeNameChanged(eventType, eventData);
 }


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

--- frameworks/projects/framework/src/mx/core/IDisplayObjectContainerInterface.as
+++ frameworks/projects/framework/src/mx/core/IDisplayObjectContainerInterface.as
@@ -0,0 +1,104 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  The IDisplayObjectContainerInterface defines the basic set of APIs
+ *  for web version of flash.display.DisplayObjectContainer
+ */
+import flash.text.TextSnapshot;
+import flash.geom.Point;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#addChild()
+     */
+    function addChild(child:DisplayObject):DisplayObject;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#addChildAt()
+     */
+    function addChildAt(child:DisplayObject, index:int):DisplayObject;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#removeChild()
+     */
+    function removeChild(child:DisplayObject):DisplayObject;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#removeChildAt()
+     */
+    function removeChildAt(index:int):DisplayObject;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#getChildIndex()
+     */
+    function getChildIndex(child:DisplayObject):int;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#setChildIndex()
+     */
+    function setChildIndex(child:DisplayObject, index:int):void;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#getChildAt()
+     */
+    function getChildAt(index:int):DisplayObject;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#getChildByName()
+     */
+    function getChildByName(name:String):DisplayObject;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#numChildren
+     */
+    function get numChildren():int;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#textSnapshot
+     */
+    function get textSnapshot():TextSnapshot;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#getObjectsUnderPoint()
+     */
+    function getObjectsUnderPoint(point:Point):Array;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#areInaccessibleObjectsUnderPoint()
+     */
+    function areInaccessibleObjectsUnderPoint(point:Point):Boolean;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#tabChildren
+     */
+    function get tabChildren():Boolean;
+    function set tabChildren(enable:Boolean):void;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#mouseChildren
+     */
+    function get mouseChildren():Boolean;
+    function set mouseChildren(enable:Boolean):void;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#contains()
+     */
+    function contains(child:DisplayObject):Boolean;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#swapChildrenAt()
+     */
+    function swapChildrenAt(index1:int, index2:int):void;
+
+    /**
+     *  @copy flash.display.DisplayObjectContainer#swapChildren()
+     */
+    function swapChildren(child1:DisplayObject, child2:DisplayObject):void;