Geometry Plotter now correctly changes to whatever link image the user desires. UI could possibly use some work and also look into image downloading error.

--- WeaveUI/src/weave/visualization/plotters/GeometryPlotter.as
+++ WeaveUI/src/weave/visualization/plotters/GeometryPlotter.as
@@ -106,12 +106,7 @@

 		public const useImages:LinkableBoolean = registerLinkableChild(this, new LinkableBoolean(false), updatePoints);

-		public const urlString:LinkableString = registerLinkableChild(this, new LinkableString(""), updateURL);
-
-		private function updateURL():void
-		{
-
-		}
+		public const urlString:LinkableString = registerLinkableChild(this, new LinkableString(""));

 		private function updatePoints():void
 		{
@@ -251,7 +246,10 @@
 		{
 			if( useImages.value == true )
 			{
-				var _imageURL:String = imagePointColumn.defaultValue.value as String;
+				if( urlString.value != "")
+					var _imageURL:String = urlString.value;
+				else
+					var _imageURL:String = imagePointColumn.defaultValue.value as String;
 				if( _urlToImageMap[_imageURL] == undefined ){
 					_urlToImageMap[_imageURL] = _missingImage;
 					WeaveAPI.URLRequestUtils.getContent(new URLRequest(_imageURL), handleImageDownload, handleFault, _imageURL);


Fixed issues with ManagedObjectId serialization

--- src/Modi/ManagedObject.as
+++ src/Modi/ManagedObject.as
@@ -228,9 +228,15 @@
 			}
 			else if (type == "ManagedValue")
 			{
-				object[name] = deserializator.readString(name);
-			}
-			else if (type == "ManagedArray")
+                var managedValue:String = deserializator.readString(name);
+				object[name] = new ManagedValue(managedValue);
+			}
+            else if (type == "ManagedObjectId")
+            {
+                var objectIdValue:String = deserializator.readString(name);
+                object[name] = new ManagedObjectId(objectIdValue);
+            }
+            else if (type == "ManagedArray")
 			{
 				deserializator.pushArray(name);
 				(object[name] as ManagedArray).deserialize(deserializator);
@@ -294,6 +300,10 @@
 			{
 				serializator.writeArray(name, object as Array);
 			}
+            else if (type == "ManagedObjectId")
+            {
+                serializator.writeString(name, (object as ManagedObjectId).objectId);
+            }
 			else if (type == "ManagedValue")
 			{
 				serializator.writeString(name, object.toString());


Change 20080723-hqm-a by hqm@badtzmaru.home on 2008-07-23 16:27:48 EDT
    in /Users/hqm/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: fix for swf9 resource loading

New Features:

Bugs Fixed:

Technical Reviewer: max
QA Reviewer: pbr
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:

Tests:

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

--- WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
@@ -223,36 +223,40 @@
       }

       public function loaderEventHandler(event:Event):void {
-          var loader:Loader = Loader(event.target.loader);
-          this.resourcewidth = 0;
-          this.resourceheight = 0;
           try {
-              this.resourcewidth = loader.width;
-              this.resourceheight = loader.height;
-          } catch (e) {
-          }
-          if (event.type == Event.COMPLETE) {
-              this.resourceLoaded = true;
-              // Apply stretch if needed, now that we know the asset dimensions.
-              this.applyStretchResource();
-              // send events, including onload
-              sendResourceLoad();
-          } else if (event.type == IOErrorEvent.IO_ERROR) {
-              // TODO [hqm 2007-12] is this the right event type? Should we be looking
-              // at HTTP_STATUS event error codes also?
-              if (this.owner != null) {
-                  this.owner.resourceloaderror( event );
+              var loader:Loader = Loader(event.target.loader);
+              this.resourcewidth = 0;
+              this.resourceheight = 0;
+              try {
+                  this.resourcewidth = loader.width;
+                  this.resourceheight = loader.height;
+              } catch (e) {
               }
-          } else if (event.type == ProgressEvent.PROGRESS) {
-              var ev = event;
-              if (ev) {
-                  var lr = ev.bytesLoaded / ev.bytesTotal;
-                  if (!isNaN(lr)) {
-                      this.owner.resourceevent('loadratio', lr);
+              if (event.type == Event.COMPLETE) {
+                  this.resourceLoaded = true;
+                  // Apply stretch if needed, now that we know the asset dimensions.
+                  this.applyStretchResource();
+                  // send events, including onload
+                  sendResourceLoad();
+              } else if (event.type == IOErrorEvent.IO_ERROR) {
+                  // TODO [hqm 2007-12] is this the right event type? Should we be looking
+                  // at HTTP_STATUS event error codes also?
+                  if (this.owner != null) {
+                      this.owner.resourceloaderror( event );
                   }
+              } else if (event.type == ProgressEvent.PROGRESS) {
+                  var ev = event;
+                  if (ev) {
+                      var lr = ev.bytesLoaded / ev.bytesTotal;
+                      if (!isNaN(lr)) {
+                          this.owner.resourceevent('loadratio', lr);
+                      }
+                  }
+              } else if (event.type == Event.OPEN) {
+                  this.owner.resourceevent('loadratio', 0);
               }
-          } else if (event.type == Event.OPEN) {
-              this.owner.resourceevent('loadratio', 0);
+          } catch (error:Error) {
+              trace(error);
           }
       }


QKeyManager speed optimizations

QKeyManager speed optimizations

Change-Id: I90a97c655bcc1f4d2d23af4aa0a998c4aea57164

--- WeaveData/src/weave/data/QKeyManager.as
+++ WeaveData/src/weave/data/QKeyManager.as
@@ -26,6 +26,7 @@
 	import mx.utils.object_proxy;

 	import weave.api.WeaveAPI;
+	import weave.api.core.ICallbackCollection;
 	import weave.api.core.ILinkableObject;
 	import weave.api.data.AttributeColumnMetadata;
 	import weave.api.data.DataTypes;
@@ -49,7 +50,9 @@
 	 * @author adufilie
 	 */
 	public final class QKeyManager implements IQualifiedKeyManager
-	{
+	{
+		private var _callbackCollection:ICallbackCollection = getCallbackCollection(this as ILinkableObject);
+
 		/**
 		 * Get the QKey object for a given key type and key.
 		 *
@@ -87,11 +90,11 @@
 			if (qkey == null)
 			{
 				// QKey not created for this key yet (or it has been garbage-collected)
-				qkey = new QKey().init(keyType, localName);
+				qkey = new QKey(keyType, localName);
 				qkeyRef[qkey] = null; //save weak reference

 				// trigger callbacks whenever a new key is created
-				getCallbackCollection(this).triggerCallbacks();
+				_callbackCollection.triggerCallbacks();
 			}

 			return qkey;
@@ -103,10 +106,15 @@
 		 * @return An array of QKeys.
 		 */
 		public function getQKeys(keyType:String, keyStrings:Array):Array
-		{
-			var keys:Array = new Array(keyStrings.length);
-			for (var i:int = 0; i < keyStrings.length; i++)
-				keys[i] = getQKey(keyType, keyStrings[i]);
+		{
+			_callbackCollection.delayCallbacks();
+
+			var i:int = keyStrings.length;
+			var keys:Array = new Array(i);
+			while (--i >= 0)
+				keys[i] = getQKey(keyType, keyStrings[i]);
+
+			_callbackCollection.resumeCallbacks();
 			return keys;
 		}

@@ -194,7 +202,7 @@
 					refList.push(refHash); // append
 			}

-			getCallbackCollection(this).triggerCallbacks();
+			_callbackCollection.triggerCallbacks();
 		}

 		/**
@@ -280,11 +288,10 @@
  */
 internal class QKey implements IQualifiedKey
 {
-	internal function init(keyType:String, key:String):QKey
+	public function QKey(keyType:String, key:String)
 	{
 		_keyType = keyType;
 		_localName = key;
-		return this;
 	}

 	private var _keyType:String; // namespace


Even stolen code should conform to our style.

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

--- src/as/com/threerings/util/Random.as
+++ src/as/com/threerings/util/Random.as
@@ -110,16 +110,18 @@
         return (mh << 16) | (ml & 0xffff);
     }

-    protected const N :int = 624;
-    protected const M :int = 397;
-    protected const UPPER_MASK :uint = 0x80000000;
-    protected const LOWER_MASK :uint = 0x7fffffff;
-    protected const MATRIX_A :uint   = 0x9908b0df;
     protected var x :Array;
     protected var p :int;
     protected var q :int;
     protected var r :int;

     protected static var seedUniquifier :uint = 2812526361;
+
+    protected static const N :int = 624;
+    protected static const M :int = 397;
+    protected static const UPPER_MASK :uint = 0x80000000;
+    protected static const LOWER_MASK :uint = 0x7fffffff;
+    protected static const MATRIX_A :uint   = 0x9908b0df;
+
 }
 }


fixed display bug in thermometer tool when value was undefined

--- WeaveUI/src/weave/visualization/plotters/ThermometerPlotter.as
+++ WeaveUI/src/weave/visualization/plotters/ThermometerPlotter.as
@@ -62,21 +62,19 @@
 		override public function drawPlot(recordKeys:Array, dataBounds:IBounds2D, screenBounds:IBounds2D, destination:BitmapData):void
 		{
 			//compute the meter value by averaging all record values
-			var meterValue:Number = 0, n:Number = recordKeys.length;
+			var meterValue:Number = 0;
+			var n:Number = recordKeys.length;

-			if(n > 0){
-				if(n == 1)
-					meterValue = meterColumn.getValueFromKey(recordKeys[i] as IQualifiedKey, Number)
-				else{
-					for (var i:int = 0; i < n; i++)//TODO handle missing values
-						meterValue += meterColumn.getValueFromKey(recordKeys[i] as IQualifiedKey, Number);
-					meterValue /= n;
-				}
-
+			for (var i:int = 0; i < n; i++)//TODO handle missing values
+				meterValue += meterColumn.getValueFromKey(recordKeys[i] as IQualifiedKey, Number);
+			meterValue /= n;
+
+			if (isFinite(meterValue))
+			{
 				//clear the graphics
 				var graphics:Graphics = tempShape.graphics;
 				graphics.clear();
-
+
 				//project bottom point
 				bottom.x = bottom.y = 0;
 				dataBounds.projectPointTo(bottom, screenBounds);
@@ -95,7 +93,6 @@

 				destination.draw(tempShape);
 			}
-
 		}

 		/**
@@ -126,11 +123,11 @@
 			graphics.moveTo(bottom.x, bottom.y+bulbRadius);
 			graphics.lineTo(top.x, top.y);

-			//draw background red circle
-			graphics.lineStyle(5,backgroundCenterLineColor);
-			graphics.beginFill(0xff0000);
-			graphics.drawCircle(bottom.x,bottom.y+bulbRadius,bulbRadius);
-			graphics.endFill();
+			//draw background circle
+			graphics.lineStyle(5,backgroundCenterLineColor);
+			graphics.beginFill(0xFF0000);
+			graphics.drawCircle(bottom.x,bottom.y+bulbRadius,bulbRadius);
+			graphics.endFill();

 			destination.draw(tempShape);
 		}


Group.load* functions options argument is now optional

--- src/aerys/minko/scene/node/Group.as
+++ src/aerys/minko/scene/node/Group.as
@@ -242,7 +242,7 @@
 		}

 		public function load(request	: URLRequest,
-							 options	: ParserOptions) : ILoader
+							 options	: ParserOptions	= null) : ILoader
 		{
 			var loader	: SceneLoader	= new SceneLoader(options);

@@ -253,7 +253,7 @@
 		}

 		public function loadClass(classObject	: Class,
-								  options		: ParserOptions) : ILoader
+								  options		: ParserOptions	= null) : ILoader
 		{
 			var loader	: SceneLoader	= new SceneLoader(options);

@@ -264,7 +264,7 @@
 		}

 		public function loadBytes(bytes		: ByteArray,
-								  options	: ParserOptions) : ILoader
+								  options	: ParserOptions	= null) : ILoader
 		{
 			var loader	: SceneLoader	= new SceneLoader(options);


Transferred from the Adobe Open Source Subversion Repository

Revision: 8343
Author:   jszeto@adobe.com
Date:     2009-06-26T23:56:03.762584Z

Log Message:
-----------
BitmapFill Matrix support

http://bugs.adobe.com/jira/browse/SDK-22008 - BitmapFill doesn't support the matrix property

Added support for the matrix property. BitmapFill uses a CompoundTransform instance to keep the transform convenience properties and the matrix in sync.

QE Notes: Add tests for the matrix property
Doc Notes: Need documentation for matrix property
Bugs: SDK-22008
Reviewer: Glenn
Integration: Yes. New property on BitmapFill.

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/BitmapFill.as

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

--- frameworks/projects/framework/src/mx/graphics/BitmapFill.as
+++ frameworks/projects/framework/src/mx/graphics/BitmapFill.as
@@ -22,6 +22,7 @@
 import flash.utils.getDefinitionByName;

 import mx.events.PropertyChangeEvent;
+import mx.geom.CompoundTransform;

 /**
@@ -68,13 +69,78 @@
 	//--------------------------------------------------------------------------

 	private static const RADIANS_PER_DEGREES:Number = Math.PI / 180;
-
+	private static var transformMatrix:Matrix = new Matrix();
+
+
 	//--------------------------------------------------------------------------
 	//
 	//  Properties
 	//
 	//--------------------------------------------------------------------------

+    //----------------------------------
+    //  compoundTransform
+    //----------------------------------
+
+    protected var compoundTransform:CompoundTransform;
+
+    //----------------------------------
+    //  matrix
+    //----------------------------------
+
+    [Inspectable(category="General")]
+
+    /**
+     *  By default, the LinearGradientStroke defines a transition
+     *  from left to right across the control.
+     *  Use the rotation property to control the transition direction.
+     *  For example, a value of 180.0 causes the transition
+     *  to occur from right to left, rather than from left to right.
+     *
+     *  @default 0.0
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get matrix():Matrix
+    {
+        return compoundTransform ? compoundTransform.matrix : null;
+    }
+
+    /**
+     *  @private
+     */
+    public function set matrix(value:Matrix):void
+    {
+        var oldValue:Matrix = matrix;
+
+        var oldX:Number = x;
+        var oldY:Number = y;
+        var oldRotation:Number = rotation;
+        var oldScaleX:Number = scaleX;
+        var oldScaleY:Number = scaleY;
+
+        if (value == null)
+        {
+            compoundTransform = null;
+        }
+        else
+        {
+            // Create the transform if none exists.
+            if(compoundTransform == null)
+                compoundTransform = new CompoundTransform();
+            compoundTransform.matrix = value; // CompoundTransform will create a clone
+
+            dispatchFillChangedEvent("x", oldX, compoundTransform.x);
+            dispatchFillChangedEvent("y", oldY, compoundTransform.y);
+            dispatchFillChangedEvent("scaleX", oldScaleX, compoundTransform.scaleX);
+            dispatchFillChangedEvent("scaleY", oldScaleY, compoundTransform.scaleY);
+            dispatchFillChangedEvent("rotation", oldRotation, compoundTransform.rotationZ);
+        }
+    }
+
 	//----------------------------------
 	//  originX
 	//----------------------------------
@@ -259,17 +325,21 @@
 	 */
 	public function get rotation():Number
 	{
-		return _rotation;
+        return compoundTransform ? compoundTransform.rotationZ : _rotation;
 	}

 	public function set rotation(value:Number):void
-	{
-		var oldValue:Number = _rotation;
-		if (value != oldValue)
-		{
-			_rotation = value;
-			dispatchFillChangedEvent("rotation", oldValue, value);
-		}
+	{
+        if (value != rotation)
+        {
+            var oldValue:Number = rotation;
+
+            if (compoundTransform)
+                compoundTransform.rotationZ = value;
+            else
+                _rotation = value;
+            dispatchFillChangedEvent("rotation", oldValue, value);
+        }
 	}

 	//----------------------------------
@@ -295,15 +365,22 @@
 	 */
 	public function get scaleX():Number
 	{
-		return _scaleX;
-	}
-
+        return compoundTransform ? compoundTransform.scaleX : _scaleX;
+	}
+
+    /**
+     *  @private
+     */
 	public function set scaleX(value:Number):void
 	{
-		var oldValue:Number = _scaleX;
-		if (value != oldValue)
+		if (value != scaleX)
 		{
-			_scaleX = value;
+            var oldValue:Number = scaleX;
+
+            if (compoundTransform)
+                compoundTransform.scaleX = value;
+            else
+			    _scaleX = value;
 			dispatchFillChangedEvent("scaleX", oldValue, value);
 		}
 	}
@@ -331,17 +408,24 @@
 	 */
 	public function get scaleY():Number
 	{
-		return _scaleY;
-	}
-
+        return compoundTransform ? compoundTransform.scaleY : _scaleY;
+	}
+
+    /**
+     *  @private
+     */
 	public function set scaleY(value:Number):void
 	{
-		var oldValue:Number = _scaleY;
-		if (value != oldValue)
-		{
-			_scaleY = value;
-			dispatchFillChangedEvent("scaleY", oldValue, value);
-		}
+        if (value != scaleY)
+        {
+            var oldValue:Number = scaleY;
+
+            if (compoundTransform)
+                compoundTransform.scaleY = value;
+            else
+                _scaleY = value;
+            dispatchFillChangedEvent("scaleY", oldValue, value);
+        }
 	}

 	//----------------------------------
@@ -489,7 +573,7 @@
      */
     public function get transformX():Number
     {
-        return _transformX;
+        return compoundTransform ? compoundTransform.transformX : _transformX;
     }

     /**
@@ -497,11 +581,16 @@
      */
     public function set transformX(value:Number):void
     {
-        if (_transformX == value)
+        if (transformX == value)
             return;
+
+        var oldValue:Number = transformX;

-        var oldValue:Number = _transformX;
-        _transformX = value;
+        if (compoundTransform)
+            compoundTransform.transformX = value;
+        else
+            _transformX = value;
+
         dispatchFillChangedEvent("transformX", oldValue, value);
     }

@@ -523,7 +612,7 @@
      */
     public function get transformY():Number
     {
-        return _transformY;
+        return compoundTransform ? compoundTransform.transformY : _transformY;
     }

     /**
@@ -531,11 +620,16 @@
      */
     public function set transformY(value:Number):void
     {
-        if (_transformY == value)
+        if (transformY == value)
             return;

-        var oldValue:Number = _transformY;
-        _transformY = value;
+        var oldValue:Number = transformY;
+
+        if (compoundTransform)
+            compoundTransform.transformY = value;
+        else
+            _transformY = value;
+
         dispatchFillChangedEvent("transformY", oldValue, value);
     }

@@ -559,7 +653,7 @@
      */
     public function get x():Number
     {
-    	return _x;
+        return compoundTransform ? compoundTransform.x : _x;
     }

 	/**
@@ -567,12 +661,15 @@
 	 */
     public function set x(value:Number):void
     {
-    	var oldValue:Number = _x;
-    	if (value != oldValue)
-    	{
-    		_x = value;
-    		dispatchFillChangedEvent("x", oldValue, value);
-    	}
+        var oldValue:Number = x;
+        if (value != oldValue)
+        {
+            if (compoundTransform)
+                compoundTransform.x = value;
+            else
+                _x = value;
+            dispatchFillChangedEvent("x", oldValue, value);
+        }
     }

     //----------------------------------
@@ -594,7 +691,7 @@
      */
     public function get y():Number
     {
-    	return _y;
+        return compoundTransform ? compoundTransform.y : _y;
     }

     /**
@@ -602,12 +699,16 @@
      */
     public function set y(value:Number):void
     {
-    	var oldValue:Number = _y;
-    	if (value != oldValue)
-    	{
-    		_y = value;
-    		dispatchFillChangedEvent("y", oldValue, value);
-    	}
+        var oldValue:Number = y;
+        if (value != oldValue)
+        {
+            if (compoundTransform)
+                compoundTransform.y = value;
+            else
+                _y = value;
+
+            dispatchFillChangedEvent("y", oldValue, value);
+        }
     }

 	//--------------------------------------------------------------------------
@@ -623,14 +724,21 @@
 	{
 		if (!source)
 			return;
-
-		var matrix:Matrix = new Matrix();
-		matrix.translate(-transformX, -transformY);
-		matrix.scale(scaleX, scaleY);
-		matrix.rotate(rotation * RADIANS_PER_DEGREES);
-		matrix.translate(x + bounds.left + transformX, y + bounds.top + transformY);
-
-		target.beginBitmapFill(source as BitmapData, matrix, repeat, smooth);
+
+        if (compoundTransform)
+        {
+            transformMatrix = compoundTransform.matrix;
+            transformMatrix.translate(bounds.left, bounds.top);
+        }
+        else
+        {
+            transformMatrix.identity();
+            transformMatrix.translate(-transformX, -transformY);
+            transformMatrix.scale(scaleX, scaleY);
+            transformMatrix.rotate(rotation * RADIANS_PER_DEGREES);
+            transformMatrix.translate(x + bounds.left + transformX, y + bounds.top + transformY);
+        }
+		target.beginBitmapFill(source as BitmapData, transformMatrix, repeat, smooth);
 	}

 	/**


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


Transferred from the Adobe Open Source Subversion Repository

Revision: 1098
Author:   jimurphy@adobe.com
Date:     2008-04-03T21:50:39.896200Z

Log Message:
-----------
Merge 3.0.x -- 362:394, 427:429, 603:608, 644:645, 651:663, 672:676, 755:756, 763:766, 785:790, 812:814, 854:861, 862:866, 866:933,971:1009, 1050:1056 --> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/DefaultDataDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VRule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncRequest.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/IList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/StreamingConnectionHandler.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IRepeaterClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/VideoError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/HTTPRequestMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/Locale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/Responder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/MessageSerializationError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/SOAPMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IBrowserManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ComponentDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/FaultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/IViewCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/AbstractWebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Tween.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/menuClasses/IMenuItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageResponder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridBase.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/preloaders/Preloader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ILayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Spacer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/Fault.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/XMLListCollection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectTargetFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/SliderEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncToken.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/ScrollEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/CuePointManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/NumericStepperEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/BrowserManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/events/ChannelFaultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/CursorBookmark.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/WSDLLoadEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/LoadEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ListCollectionView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/FlexClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/SubscriptionInfo.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/DescribeTypeCache.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/logging/LogLogger.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/build_framework.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/HeaderEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/DownloadProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/ITreeDataDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>

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

--- frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPService.as
+++ frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPService.as
@@ -97,6 +97,10 @@
     /**
      * Creates a new HTTPService. This constructor is usually called by the generated code of an MXML document.
      * You usually use the mx.rpc.http.HTTPService class to create an HTTPService in ActionScript.
+     *
+     * @param rootURL The URL the HTTPService should use when computing relative URLS.
+     *
+     * @param destination An HTTPService destination name in the service-config.xml file.
      */
     public function HTTPService(rootURL:String = null, destination:String = null)
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 6266
Author:   egeorgie@adobe.com
Date:     2009-04-24T23:09:01.304621Z

Log Message:
-----------
Layout PARB changes

Major (most probably will require updates):
- LayoutBase.getScrollPositionDelta() -> getScrollPositionDeltaToElement()
- HorizontalLayout, VerticalLayout method inView() -> fractionOfElementInView()
- LayoutElementFactory is deleted, interface ILayoutElement is implemented by UIComponent, GraphicElement, VisualSprite, no need for casting in those cases, cast to ILayoutElement in case of type Object.
- TileLayout.elementHorizontalAlign -> horizontalAlign
- TileLayout.elementVerticalAlign -> verticalAlign
- TileJustifyRows -> RowAlign
- TileJustifyColumsn > ColumnAlign
- TileLayout.justifyRows -> rowAlign
- TileLayout.justifyColumns -> columnAling
- TileJustifyRows.NONE, "none" -> TOP, "top"
- TileJustifyRows.GAP_SIZE, "gapSize" -> JUSTIFY_USING_GAP, "justifyUsingGap"
- TileJustifyRows.ROW_SIZE, "rowSize" -> JUSTIFY_USING_HEIGHT, "justifyUsingHeight"
- TileJustifyColumns.NONE, "none" -> LEFT, "left"
- TileJustifyColumns.GAP_SIZE, "gapSize" -> JUSTIFY_USING_GAP, "justifyUsingGap"
- TileJustifyColumns.COLUMN_SIZE, "columnSize" -> JUSTIFY_USING_WIDTH, "justifyUsingWidth"
- TileLayout.set rowCount -> set requestedRowCount
- add TileLayout.get requestedRowCount
- TileLayout.set columnCount -> set requestedColumnCount
- add TileLayout.get requestedColumnCount

Minor (may require updates, but not that probable):
- get baselinePosition() is moved from IVisualElement to ILayoutElement.
- setLayoutBoundsSize() does not have default NaN values for width & height (but still logic is the same).
- name of ILayoutInterface methods' parameter "postTransform" is renamed to "postLayoutTransform".
- name of ILayoutInterface methods' parameter "triggerLayout" is renamed to "invalidateLayout".
- LayoutBase methods invalidateTargetSizeAndDisplayList() and invalidateTargetSize() are removed.
- LayoutBase method getTargetScrollRect() is renamed to getScrollRect().

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Hans, Ryan
tests: checkintests, mustella (gumbo/layout, gumbo/group, gumbo/dataGroup)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/layout/layout_tester.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/Ellipse.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/RowAlign.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutElementUIComponentUtils.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/TileJustifyRows.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/Animate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HScrollBar.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/ColumnAlign.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/LayoutElementFactory.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ButtonBarHorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/Path.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/Rect.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/TileJustifyColumns.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/TextBaseClass.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/Block.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollerLayout.as</path>

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

--- frameworks/projects/spark/src/spark/components/DataGroup.as
+++ frameworks/projects/spark/src/spark/components/DataGroup.as
@@ -13,25 +13,21 @@
 {
 import flash.display.DisplayObject;
 import flash.events.Event;
-import flash.utils.Dictionary;
-
-import mx.collections.IList;
+
+import mx.collections.IList;
 import mx.core.IDataRenderer;
 import mx.core.IFactory;
 import mx.core.IInvalidating;
 import mx.core.ILayoutElement;
 import mx.core.IVisualElement;
 import mx.core.mx_internal;
-import mx.core.UIComponent;
 import mx.events.CollectionEvent;
 import mx.events.CollectionEventKind;
 import mx.events.PropertyChangeEvent;

-import spark.components.IItemRendererOwner;
 import spark.components.supportClasses.GroupBase;
 import spark.events.RendererExistenceEvent;
 import spark.layout.supportClasses.LayoutBase;
-import spark.layout.supportClasses.LayoutElementFactory;

 use namespace mx_internal;  // for mx_internal property contentChangeDelta

@@ -176,12 +172,11 @@
         invalidateProperties();
     }

-    private function setTypicalLayoutElement(obj:DisplayObject):void
-    {
-        var elt:ILayoutElement = (obj) ? LayoutElementFactory.getLayoutElementFor(obj) : null;
-        typicalLayoutElement = elt;
+    private function setTypicalLayoutElement(element:ILayoutElement):void
+    {
+        typicalLayoutElement = element;
         if (layout)
-            layout.typicalLayoutElement = elt;
+            layout.typicalLayoutElement = element;
     }

     private function initializeTypicalItem():void
@@ -204,7 +199,7 @@
         updateRendererInformation(renderer, _typicalItem);
         if (obj is IInvalidating)
             IInvalidating(obj).validateNow();
-        setTypicalLayoutElement(obj);
+        setTypicalLayoutElement(renderer);
         super.removeChild(obj);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3489
Author:   clucier@adobe.com
Date:     2008-10-06T17:21:09.552786Z

Log Message:
-----------
Just a small semantic change.
Bugs: SDK-17168
QA: Yes

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/flex/filters/ShaderFilter.as

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

--- frameworks/projects/spark/src/spark/filters/ShaderFilter.as
+++ frameworks/projects/spark/src/spark/filters/ShaderFilter.as
@@ -327,7 +327,8 @@
      */
     private function applyProperty(property:String, value:*):void
     {
-        if (!value) return;
+        if (value == null)
+            return;

         var suffixPattern:RegExp = /_.$/;
         var match:Array = property.match(suffixPattern);


Fixed a bug in class PlayState

Fixed a bug in class PlayState

--- source/fairygui/display/PlayState.as
+++ source/fairygui/display/PlayState.as
@@ -38,9 +38,9 @@
 				if(this.reversed)
 				{
 					this._curFrame--;
-					if(this._curFrame<0)
+					if(this._curFrame<=0)
 					{
-						this._curFrame = Math.min(1, mc.frameCount-1);
+						this._curFrame = 0;
 						this.repeatedCount++;
 						this.reversed = !this.reversed;
 					}


* 一个判断问题

* 一个判断问题

--- age/src/age/renderers/ObjectRenderer.as
+++ age/src/age/renderers/ObjectRenderer.as
@@ -287,7 +287,7 @@
 			// 清理工作
 			if (actionInfo)
 			{
-				removeAllLayerRenderers(info.isShowGhost);
+				removeAllLayerRenderers(info ? info.isShowGhost : true);
 				avatarID = null;
 				actionName = null;
 			}


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

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

--- frameworks/projects/advancedgrids/src/mx/olap/QueryCubeBuilder.as
+++ frameworks/projects/advancedgrids/src/mx/olap/QueryCubeBuilder.as
@@ -0,0 +1,757 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.olap
+{
+import flash.utils.Dictionary;
+
+import mx.collections.IList;
+import mx.core.mx_internal;
+
+use namespace mx_internal;
+
+/**
+* @private
+*/
+public class QueryCubeBuilder
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    private var prevNodeAtLevel:Array; //of CubeNodes
+    private var allNodeAtLevel:Array;  // of CubeNodes
+    private var prevValueAtLevel:Array; // type depends on data (mostly string)
+
+    // the level at which the new property is going to be placed
+    private var currentLevel:int;
+    private var prevLevel:int;
+    private var nextLevel:int;
+
+    //the nodes whose values are going to be aggregated as the above node
+    //value has changed.
+    private var closingNodesBelow:Array;
+    private var closingValues:Array;
+
+    //list of measures in the cube
+    private var measureMembers:IList;
+
+    // the maps holding nodes which are used to finalize the aggregation
+
+    // simple aggregation map
+    private var computeEndMap:Dictionary = new Dictionary(false);
+
+    //aggregation of aggregations map
+    private var computeObjEndMap:Dictionary = new Dictionary(false);
+
+    private var measureMap:Object = {};
+
+    private var allLevelNames:Array;
+
+    private var nodesToClose:Array = [];
+    private var nodesToAggregate:Array;
+    private var dataToAggregate:Array;
+    private var measureToAggregate:Array;
+    private var valueToAggregate:Array;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    // cube
+    //----------------------------------
+
+    private var _cube:OLAPCube;
+
+    public function set cube(c:IOLAPCube):void
+    {
+        _cube = c as OLAPCube;
+    }
+
+    //----------------------------------
+    // rootNode
+    //----------------------------------
+
+    /**
+    *  Top most node which can be used to access the query cube.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+    public var rootNode:CubeNode;
+
+    //----------------------------------
+    // allNodePropertyName
+    //----------------------------------
+
+    /**
+    * The property name used to refer to the property
+    * pointing at the aggregation of nodes below a CubeNode
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
+    */
+    public var allNodePropertyName:String ="(QAll)";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    public function initNodeBuilding():void
+    {
+        prevNodeAtLevel = [];
+        allNodeAtLevel = [];
+        prevValueAtLevel = [];
+        measureMap = {};
+
+        //compute for all the measures
+        measureMembers = _cube.findDimension("Measures").members;
+
+        for each (var measure:OLAPMeasure in measureMembers)
+        {
+            computeEndMap[measure] = [];
+            computeObjEndMap[measure] = [];
+            measureMap[measure.name] = measure;
+        }
+
+        nodesToClose = [];
+
+        nodesToAggregate = [];
+        dataToAggregate = [];
+        measureToAggregate = [];
+        valueToAggregate = [];
+
+
+        //prepare a dictionary of all level names
+        allLevelNames = [];
+
+        for each (var d:OLAPDimension in _cube.dimensions)
+        {
+        	if (d.isMeasure)
+        		continue;
+            for each (var a:OLAPAttribute in d.attributes)
+            {
+                allLevelNames.push(a.findMember(a.allMemberName).uniqueName);
+            }
+
+            for each (var h:OLAPHierarchy in d.hierarchies)
+            {
+                allLevelNames.push(h.findMember(h.allMemberName).uniqueName);
+            }
+        }
+    }
+
+    public function moveToNextRound():void
+    {
+        currentLevel = 0;
+        prevLevel = -1;
+        nextLevel = 1;
+    }
+
+    private function sortCubeNodes(p1:CubeNode, p2:CubeNode):int
+    {
+        if (p1.level == p2.level)
+            return 0;
+        if (p1.level < p2.level)
+            return 1;
+        return -1;
+    }
+
+    /**
+     *  @private
+     *  Check whether the cubeNode has any entry for a (All) field
+     *  from any level.
+     */
+    private function allPropertyPresent(node:CubeNode):Boolean
+    {
+        for (var p:String in node)
+        {
+            if (allLevelNames.indexOf(p) > -1)
+            	return true;
+        }
+        return false;
+    }
+
+    public function completeNodeBuilding():void
+    {
+        //TODO initializing rootNode twice
+        rootNode = prevNodeAtLevel[0];
+        closingNodesBelow = prevNodeAtLevel.reverse();
+        closingValues = prevValueAtLevel.reverse();
+
+        var tempLevel:int = closingNodesBelow.length-1;
+        var p:String;
+        var n:int = closingNodesBelow.length;
+        for (var i:int = 0; i < n; ++i)
+        {
+            if (tempLevel < 1)
+                continue;
+            var closingValue:Object = closingValues[i];
+            //OLAPTrace.traceMsg("Closing value:" + closingValues[i], //OLAPTrace.TRACE_LEVEL_2);
+            var closingNode:Object = closingNodesBelow[i];
+            if (closingNode[closingValue] is CubeNode)
+            {
+                if (closingNode[allNodePropertyName] is CubeNode)
+                {
+                    var index:int = nodesToClose.indexOf(closingNode);
+                    if (index == -1)
+                        nodesToClose.push(closingNode);
+                }
+            }
+
+            --tempLevel;
+        }
+
+        n = nodesToAggregate.length;
+        for (i = 0; i < n; ++ i)
+        {
+            var prevNode:Object = nodesToAggregate[i];
+            if (prevNode.numCells > 2 && allLevelNames.indexOf(valueToAggregate[i]) > -1)
+                continue;
+            var tempAllNode:Object;
+
+			if (prevNode.numCells == 2)
+        	{
+        		if (prevNode.hasOwnProperty(allNodePropertyName))
+	        	{
+		        	for (p in prevNode)
+			        {
+			        	if (p == allNodePropertyName)
+			        		continue;
+			        	if (prevNode[allNodePropertyName] != prevNode[p])
+			        		prevNode[allNodePropertyName] = prevNode[p];
+			        	break;
+			        }
+			        continue;
+			    }
+		   }
+
+            if (prevNode[allNodePropertyName] is CubeNode || prevNode[allNodePropertyName] is Number)
+                tempAllNode = prevNode[allNodePropertyName] = new SummaryNode;
+            else
+                tempAllNode = prevNode[allNodePropertyName];
+            aggregateAllValue(tempAllNode, dataToAggregate[i], measureToAggregate[i]);
+        }
+
+        // we sort the nodes in their order of level to do aggregation
+        // bottom up to get correct results
+        nodesToClose.sort(sortCubeNodes);
+
+        // close all nodes pending
+        for each (var node:CubeNode in nodesToClose)
+        {
+        	var allPropPresent:Boolean = allPropertyPresent(node);
+            for (p in node)
+            {
+                if (p == allNodePropertyName)
+                    continue;
+                // if there are other paths leading to the nodes below
+                // do not include the all property in aggregation because that would
+                // lead to multiple aggregations of same values
+                if (node.numCells > 2 && allLevelNames.indexOf(p) > -1)
+                    continue;
+
+            	// if we have only one extra entry in the node other than allNodeProperty
+                // then we can optimize.
+                if (allPropPresent && node.numCells == 3)
+            		node[allNodePropertyName] = node[p];
+				else
+                	accumValuesFromNode(node[allNodePropertyName], node[p]);
+            }
+        }
+
+        for (p in rootNode)
+        {
+            if (p == allNodePropertyName || (rootNode.numCells > 2 && allLevelNames.indexOf(p) > -1))
+                continue;
+            // can we accumulate everything from the tree to the all tree here?
+            accumValuesFromNode(rootNode[allNodePropertyName], rootNode[p]);
+        }
+
+        var temp:Array;
+        var y:Object;
+        var measure:OLAPMeasure;
+        var aggregator:IOLAPCustomAggregator;
+        for (var x:Object in computeEndMap)
+        {
+            measure = x as OLAPMeasure;
+            aggregator = measure.aggregator as IOLAPCustomAggregator;
+            temp = computeEndMap[x];
+            for each (y in temp)
+                y[measure.name] = aggregator.computeEnd(y[measure.name], measure.dataField);
+        }
+
+        for (x in computeObjEndMap)
+        {
+            measure = x as OLAPMeasure;
+            aggregator = measure.aggregator as IOLAPCustomAggregator;
+            temp = computeObjEndMap[x];
+            for each (y in temp)
+                y[measure.name] = aggregator.computeObjectEnd(y[measure.name], measure.dataField);
+        }
+    }
+
+    public function addValueToNodeBuilder(value:Object, currentData:Object):void
+    {
+        // decide whether to create a new node or use the previous node
+        var prevNode:CubeNode = prevNodeAtLevel[currentLevel];
+        var prevValue:Object = prevValueAtLevel[currentLevel];
+        var closingValue:Object;
+        var closingNode:Object
+
+        if (prevValue)
+        {
+            if (prevValue == value)
+            {
+                // continue to process the same value
+                // update nodes
+                //OLAPTrace.traceMsg("Continue with value:" + prevValue, OLAPTrace.TRACE_LEVEL_2);
+            }
+            else
+            {
+                // no more processing of this value.
+                // time to compute update all nodes etc
+
+                // close all nodes below this node
+                closingNodesBelow = prevNodeAtLevel.splice(nextLevel).reverse();
+                closingValues = prevValueAtLevel.splice(nextLevel).reverse();
+                var tempLevel:int = currentLevel + closingNodesBelow.length;
+                var n:int = closingNodesBelow.length;
+                for (var i:int = 0; i < n; ++i)
+                {
+                    closingValue = closingValues[i];
+                    //OLAPTrace.traceMsg("Closing value:" + closingValues[i], OLAPTrace.TRACE_LEVEL_2);
+                    closingNode = closingNodesBelow[i];
+                    if (closingNode[closingValue] is CubeNode)
+                    {
+                        if (tempLevel != 0)
+                        {
+                            if (closingNode[allNodePropertyName] is CubeNode)
+                            {
+                                if (nodesToClose.indexOf(closingNode) == -1)
+                                    nodesToClose.push(closingNode);
+                            }
+                        }
+                    }
+
+                    --tempLevel;
+                }
+
+                //OLAPTrace.traceMsg("Closing value:" + prevValue, //OLAPTrace.TRACE_LEVEL_2);
+                closingValue = prevValue;
+                closingNode = prevNode;
+                if (closingNode[closingValue] is CubeNode)
+                {
+                    if (currentLevel != 0)
+                    {
+                        if (closingNode[allNodePropertyName] is CubeNode)
+                        {
+                            if (nodesToClose.indexOf(closingNode) == -1)
+                                nodesToClose.push(closingNode);
+                        }
+                    }
+                }
+
+                //OLAPTrace.traceMsg("New value:" + value, //OLAPTrace.TRACE_LEVEL_2);
+            }
+        }
+
+        var allNode:CubeNode = allNodeAtLevel[currentLevel];
+
+        if (!prevNode)
+        {
+            //OLAPTrace.traceMsg("Creating new node: " + value, //OLAPTrace.TRACE_LEVEL_2);
+            // - create a new node, put the pointer to the ALL node, add new key to the ALL node
+            var newNode:CubeNode = new CubeNode(currentLevel);
+
+            // create a all node to summaries the cells of this node
+            newNode[allNodePropertyName] = new CubeNode(currentLevel+1);
+            ++newNode.numCells;
+            //TODO initializing rootNode twice
+            if (currentLevel == 0 && prevNodeAtLevel.length == 0)
+                rootNode = newNode;
+
+            prevNodeAtLevel[currentLevel] = newNode;
+            if (!allNode)
+            {
+                // for the top most level we would have only one node
+                // which is also the all node
+                // for other levels we have one node which is a all node
+                // containing aggr value of all cells in the nodes at that level
+                if (currentLevel > 0)
+                {
+                    allNodeAtLevel[currentLevel] = allNode = new CubeNode(currentLevel+1);
+                    allNode[allNodePropertyName] = {};
+                    allNodeAtLevel[prevLevel][allNodePropertyName] = allNode;
+                    ++allNode.numCells;
+                }
+                else
+                {
+                    // special case of zero level
+                    allNodeAtLevel[currentLevel] = newNode;
+                }
+            }
+
+            prevNode = newNode;
+        }
+        else
+        {
+            // add a new cell/property to the previous node if it doesn't exist
+            if (!prevNode.hasOwnProperty(value))
+            {
+                //prevNode[value] = 0;
+                prevNodeAtLevel.splice(nextLevel);
+                prevValueAtLevel.splice(nextLevel);
+            }
+            else
+            {
+                if (!prevNodeAtLevel[nextLevel])
+                {
+                    //assigning a summary node was causing a issue(1096)
+                    if (prevNode[value] is CubeNode)
+                    {
+                        // a node already seems to be present for this value
+                        prevNodeAtLevel[nextLevel] = prevNode[value];
+                        // we cannot set what the previous value for next level should be
+                        // because we have already cleared it and lost it.
+                    }
+                }
+            }
+        }
+
+        // make the node at previous level point to the node
+        if (currentLevel > 0)
+        {
+            var prevLevelNode:Object = prevNodeAtLevel[prevLevel];
+            if (!prevLevelNode.hasOwnProperty(prevValueAtLevel[prevLevel]))
+            {
+                var prevLevelValue:Object = prevValueAtLevel[prevLevel];
+                prevLevelNode[prevLevelValue] = newNode;
+                ++prevLevelNode.numCells;
+            }
+        }
+
+        prevValueAtLevel[currentLevel] = value;
+        ++prevLevel;
+        ++currentLevel;
+        ++nextLevel;
+
+    }
+
+    public function addMeasureValueToNode(value:Object, currentData:Object, measureToUpdate:OLAPMeasure):void
+    {
+        var prevNode:CubeNode = prevNodeAtLevel[currentLevel-1];
+        var prevValue:Object = prevValueAtLevel[currentLevel-1];
+
+        if (!prevNode.hasOwnProperty(value))
+        {
+            prevNode[value] = new SummaryNode;
+            ++prevNode.numCells;
+        }
+
+        aggregateAllValue(prevNode[value], currentData, measureToUpdate);
+
+        nodesToAggregate.push(prevNode);
+        dataToAggregate.push(currentData);
+        measureToAggregate.push(measureToUpdate);
+        valueToAggregate.push(value);
+    }
+
+    private function addValueToNode(node:Object, name:String,
+                        value:Object, measure:OLAPMeasure):void
+    {
+        var aggregator:IOLAPCustomAggregator;
+        if (value is Number)
+        {
+            aggregator = measure.aggregator as IOLAPCustomAggregator;
+            if (!node.hasOwnProperty(name))
+            {
+                node[name] = aggregator.computeBegin(name);
+                computeEndMap[measure].push(node);
+                //if (node is SummaryNode)
+                //  node["measures"][name] = measure;
+                aggregator.computeLoop(node[name], name, value);
+            }
+            else
+            {
+                aggregator.computeLoop(node[name], name, value);
+            }
+        }
+        else
+        {
+            var temp:Object;
+            if (!node.hasOwnProperty(name))
+            {
+                node[name] = temp = new SummaryNode;
+                ++node.numCells;
+                for (var p:String in value)
+                {
+                    if (value is SummaryNode)
+                        measure = measureMap[p];
+
+                    if (measure)
+                    {
+                        aggregator = measure.aggregator as IOLAPCustomAggregator;
+                        if (value[p] is Number)
+                        {
+                            temp[name] = aggregator.computeBegin(p);
+                            computeEndMap[measure].push(temp);
+                            aggregator.computeLoop(temp[name], p, value[p]);
+                        }
+                        else
+                        {
+                            if (temp.hasOwnProperty(p))
+                            {
+                                aggregator.computeObjectLoop(temp[p], value[p]);
+                            }
+                            else
+                            {
+                                temp[p] = aggregator.computeObjectBegin(value[p]);
+                                computeObjEndMap[measure].push(temp);
+                            }
+
+                        }
+                    }
+                }
+            }
+            else
+            {
+                if (value is SummaryNode && !(node[name] is SummaryNode))
+                {
+                	var incr:Boolean = false;
+                	if (!node.hasOwnProperty(name))
+	                	incr = true;
+                    temp = node[name] = new SummaryNode;
+                	if (incr)
+                		++node.numCells;
+                }
+                else
+                {
+                    temp = node[name];
+                }
+
+                for (p in value)
+                {
+                    if (temp.hasOwnProperty(p))
+                    {
+                        measure = measureMap[p];
+                        aggregator = measure.aggregator as IOLAPCustomAggregator;
+                        aggregator.computeObjectLoop(temp[p], value[p]);
+                    }
+                    else
+                    {
+                        if (temp is SummaryNode)
+                            measure = measureMap[p];
+
+                        if (measure)
+                        {
+                            aggregator = measure.aggregator as IOLAPCustomAggregator;
+                            if (value[p] is Number)
+                            {
+                                temp[p] = aggregator.computeBegin(p);
+                                aggregator.computeLoop(temp[p], p, value[p]);
+                            }
+                            else
+                            {
+                                temp[p] = aggregator.computeObjectBegin(value[p]);
+                                computeObjEndMap[measure].push(temp);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private function accumValuesFromNode(target:Object,
+                                source:Object):void
+    {
+        for (var p:String in source)
+        {
+	    	if (p == allNodePropertyName)
+				continue;
+
+            // if there are other paths leading to the nodes below
+            // do not include the all property in aggregation because that would
+            // lead to multiple aggregations of same values
+            if (source.numCells > 2 && allLevelNames.indexOf(p) > -1)
+                continue;
+
+            var value:Object = source[p];
+            if (value is CubeNode)
+            {
+                var newNode:CubeNode;
+                if (target[p] is CubeNode)
+                {
+                    newNode = target[p];
+                }
+                else
+                {
+                    target[p] = newNode = new CubeNode(value.level);
+                	++target.numCells;
+                }
+                accumValuesFromNode(newNode, value);
+            }
+            else
+            {
+                addValueToNode(target, p, value, null);
+            }
+        }
+
+        if (target.numCells == 1)
+        {
+        	for (p in target)
+	        {
+	        	target[allNodePropertyName] = target[p];
+	        	break;
+	        }
+	        ++target.numCells;
+        }
+        else if (target.numCells == 2 && target.hasOwnProperty(allNodePropertyName))
+        {
+        	for (p in target)
+	        {
+	        	if (p == allNodePropertyName)
+	        		continue;
+	        	if (target[allNodePropertyName] != target[p])
+	        		target[allNodePropertyName] = target[p];
+	        	break;
+	        }
+        }
+        else
+        {
+        	var done:Boolean = false;
+        	var otherProperty:String;
+        	for (p in target)
+	        {
+	        	if (p == allNodePropertyName)
+	        		continue;
+	        	if (target[allNodePropertyName] == target[p])
+	        	{
+	        		value = target[p];
+	        		if (value is CubeNode)
+                	{
+                		target[allNodePropertyName] = newNode = new CubeNode(value.level);
+	        			accumValuesFromNode(newNode, value);
+						for (otherProperty in target)
+                		{
+                			if (otherProperty == allNodePropertyName ||
+                				otherProperty == p)
+                				continue;
+                			//now we have the other property.
+			            	accumValuesFromNode(newNode, source[otherProperty]);
+                		}
+                		done = true;
+                	}
+                	else
+                	{
+                		target[allNodePropertyName] = null;
+		            	addValueToNode(target, allNodePropertyName, value, null);
+						for (otherProperty in target)
+                		{
+                			if (otherProperty == allNodePropertyName ||
+                				otherProperty == p)
+                				continue;
+                			//now we have the other property.
+			            	addValueToNode(target, allNodePropertyName, target[otherProperty], null);
+                		}
+                		done = true;
+                	}
+	        		break;
+	        	}
+	        }
+
+	        if (!done)
+        	{
+	        	p = allNodePropertyName;
+	            value = source[p];
+	        	if (value is CubeNode)
+	        	{
+	                if (target[p] is CubeNode)
+	                {
+	                    newNode = target[p];
+	                }
+	                else
+	                {
+	                	target[p] = newNode = new CubeNode(value.level);
+	                	++target.numCells;
+	                }
+	                accumValuesFromNode(newNode, value);
+	            }
+	            else
+	            {
+	            	addValueToNode(target, p, value, null);
+	            }
+	        }
+        }
+    }
+
+    public function aggregateAllValue(node:Object,/* name:String,*/
+                        value:Object, measure:OLAPMeasure):void
+    {
+        var measureName:String = measure.name;
+        var aggregator:IOLAPCustomAggregator = measure.aggregator as IOLAPCustomAggregator;
+        var prop:String = "saved_" + measureName;
+        var temp:Object;
+        if (!node.hasOwnProperty(measureName))
+        {
+            temp = node;
+            if (measure)
+            {
+                if (temp.hasOwnProperty(measureName))
+                {
+                    aggregator.computeObjectLoop(temp[measureName], value[prop]);
+                }
+                else
+                {
+                    temp[measureName] = aggregator.computeObjectBegin(value[prop]);
+                    computeObjEndMap[measure].push(temp);
+                }
+            }
+        }
+        else
+        {
+            temp = node;
+            if (temp.hasOwnProperty(measureName))
+            {
+                aggregator.computeObjectLoop(temp[measureName], value[prop]);
+            }
+            else
+            {
+                if (value[prop] is Number)
+                {
+                    temp[prop] = aggregator.computeBegin(prop);
+                    aggregator.computeLoop(temp[prop], prop, value[prop]);
+                }
+                else
+                {
+                    temp[measureName] = aggregator.computeObjectBegin(value[prop]);
+                    computeObjEndMap[measure].push(temp);
+                }
+           }
+       }
+   }
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 14869
Author:   cframpto@adobe.com
Date:     2010-03-19T02:24:27.434644Z

Log Message:
-----------
Merge mirroring changes 14728-14730, 14772-14775, 14806 from 4.x to trunk.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airspark/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VSlider.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Scroller.as</path>

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

--- frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as
+++ frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as
@@ -44,6 +44,7 @@
 import mx.core.IUIComponent;
 import mx.core.IVisualElement;
 import mx.core.LayoutElementUIComponentUtils;
+import mx.core.LayoutDirection;
 import mx.core.UIComponentDescriptor;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
@@ -3101,7 +3102,7 @@
             return _layoutDirection;

         const parentElt:IVisualElement = parent as IVisualElement;
-        return (parentElt) ? parentElt.layoutDirection : "ltr";
+        return (parentElt) ? parentElt.layoutDirection : LayoutDirection.LTR;
 	}

     /**


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

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

 package mx.managers
 {


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

--- frameworks/projects/framework/src/mx/events/FlexChangeEvent.as
+++ frameworks/projects/framework/src/mx/events/FlexChangeEvent.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2006-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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

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

--- frameworks/projects/framework/src/mx/geom/CompoundTransform.as
+++ frameworks/projects/framework/src/mx/geom/CompoundTransform.as
@@ -23,6 +23,11 @@
 	/**
 	 *  A CompoundTransform represents a 2D or 3D matrix transform.  A compound transform represents a matrix that can be queried or set either as a 2D matrix,
 	 *  a 3D matrix, or as individual convenience transform properties such as x, y, scaleX, rotationZ, etc.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public class CompoundTransform
 	{
@@ -33,6 +38,11 @@
     //--------------------------------------------------------------------------
     /**
      *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
 		public function CompoundTransform()
 		{
@@ -135,6 +145,11 @@

 	/**
 	 * the  x value of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set x(value:Number):void
 	{
@@ -155,6 +170,11 @@

 	/**
 	 * the y value of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set y(value:Number):void
 	{
@@ -176,6 +196,11 @@

 	/**
 	 * the z value of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set z(value:Number):void
 	{
@@ -200,6 +225,11 @@

 	/**
 	 * the rotationX, in degrees, of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set rotationX(value:Number):void
 	{
@@ -233,6 +263,11 @@

 	/**
 	 * the rotationY, in degrees, of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set rotationY(value:Number):void
 	{
@@ -266,6 +301,11 @@

 	/**
 	 * the rotationZ, in degrees, of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set rotationZ(value:Number):void
 	{
@@ -302,6 +342,11 @@

 	/**
 	 * the scaleX of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set scaleX(value:Number):void
 	{
@@ -323,6 +368,11 @@

 	/**
 	 * the scaleY of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set scaleY(value:Number):void
 	{
@@ -345,6 +395,11 @@

 	/**
 	 * the scaleZ of the transform
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set scaleZ(value:Number):void
 	{
@@ -379,6 +434,11 @@
 	//------------------------------------------------------------------------------
 	/**
 	 * the x value of the tansform center.  The transform center is kept fixed as rotation and scale are applied.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set transformX(value:Number):void
 	{
@@ -400,6 +460,11 @@
 	//------------------------------------------------------------------------------
 	/**
 	 * the y value of the tansform center.  The transform center is kept fixed as rotation and scale are applied.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set transformY(value:Number):void
 	{
@@ -420,6 +485,11 @@
 	//------------------------------------------------------------------------------
 	/**
 	 * the z value of the tansform center.  The transform center is kept fixed as rotation and scale are applied.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function set transformZ(value:Number):void
 	{
@@ -526,6 +596,11 @@

 	/** applies the delta to the transforms translation component. Unlike setting the x/y/z properties directly,.
 	 * this method can be safely called without changing the transform's concept of 'the source of truth.'
+	*
+	*  @langversion 3.0
+	*  @playerversion Flash 9
+	*  @playerversion AIR 1.1
+	*  @productversion Flex 3
 	*/
 	public function translateBy(x:Number,y:Number,z:Number = 0):void
 	{
@@ -555,6 +630,11 @@
 	/**
 	 * the 2D matrix either set directly by the user, or composed by combining the transform center, scale, rotation
 	 * and translation, in that order.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get matrix():Matrix
 	{
@@ -702,6 +782,11 @@
 	/**
 	 * the 3D matrix either set directly by the user, or composed by combining the transform center, scale, rotation
 	 * and translation, in that order.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get matrix3D():Matrix3D
 	{


Transferred from the Adobe Open Source Subversion Repository

Revision: 4726
Author:   gosmith@adobe.com
Date:     2009-01-29T02:47:59.868818Z

Log Message:
-----------
Accessibility changes to the MSAA name of several components, as requested by Freedom Scientific. These changes make Flex controls behave more like standard Windows controls.

In Accordion and TabBar, the name is now just what is displayed, without " Tab" or " Tab, Active" appended.

In ComboBox, List, and Tree, the name of each item is now just what it displays, without, for example, "2 of 7" appended.

Removed an artificial limit of 100000 items in List and Menu.

A Slider with an MXML id no longer returns that id as its name; no other component does this and id's are certainly no intended to be spoken.

Removed the getName() method of ComboBase, which isn't used.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Jason

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ColorPickerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AlertAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccordionHeaderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBaseAccImpl.as</path>

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

--- frameworks/projects/mx/src/mx/accessibility/ListBaseAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/ListBaseAccImpl.as
@@ -354,25 +354,14 @@
 	 */
 	override protected function getName(childID:uint):String
 	{
-		if (childID == 0 || childID > 100000)
+		if (childID == 0)
 			return "";

 		var listBase:ListBase = ListBase(master);
+
 		var item:Object = getItemAt(childID - 1);

-		// Assuming childID is always ItemID + 1
-		// because getChildIDArray is not always invoked.
-
-		// Sometimes item may be an object.
-		if (item is String)
-		{
-			return item + " " + childID + " of " + listBase.dataProvider.length;
-		}
-		else
-		{
-			return listBase.itemToLabel(item) + " " + childID +
-				   " of " + listBase.dataProvider.length;
-		}
+		return listBase.itemToLabel(item);
 	}

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


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 11472
Author:   mhorn@adobe.com
Date:     2009-11-05T19:21:49.242148Z

Log Message:
-----------
ASDoc edits for l10n bug fixes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSSelector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IToggleButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Image.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>

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

--- frameworks/projects/mx/src/mx/controls/sliderClasses/Slider.as
+++ frameworks/projects/mx/src/mx/controls/sliderClasses/Slider.as
@@ -1760,7 +1760,7 @@
      *  is equal to the available width minus the trackMargin times 2.
      *
      *
Tick marks are spaced at even intervals along the track starting from the beginning of the track. An additional tick mark is placed
-     *  at the end of the track if one doesn't already exist (if the tick interval isn't a multiple of the maximum value). The tick mark
+     *  at the end of the track if one doesn't already exist (if the tick interval isn't a factor of the maximum value). The tick mark
      *  y-position is based on the tickOffset. An offset of 0 places the bottom of the tick at the top of the track. Negative offsets
      *  move the ticks upwards while positive offsets move them downward through the track.

      *


Transferred from the Adobe Open Source Subversion Repository

Revision: 12852
Author:   smgilson@adobe.com
Date:     2009-12-11T16:03:54.532817Z

Log Message:
-----------
update ASDoc on matchesCSSState() and matchesCSSType()

hid some OSMF classes

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoDisplay.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IAdvancedStyleClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/VideoDisplay.as
+++ frameworks/projects/spark/src/spark/components/VideoDisplay.as
@@ -803,6 +803,8 @@
      *  this property has no effect.</p>
      *
      *  @default "letterbox"
+     *
+     *  @see org.osmf.display.ScaleMode
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Automatically unwrap any Wrapped arguments to any Receiver.

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

--- src/as/com/threerings/presents/client/InvocationDirector.as
+++ src/as/com/threerings/presents/client/InvocationDirector.as
@@ -3,6 +3,7 @@
 import flash.utils.getTimer; // function import

 import com.threerings.util.Hashtable;
+import com.threerings.util.Wrapped;

 import com.threerings.presents.data.InvocationMarshaller_ListenerMarshaller;

@@ -237,6 +238,14 @@
             return;
         }

+        if (args != null) {
+            for (var ii :int = 0; ii < args.length; ii++) {
+                if (args[ii] is Wrapped) {
+                    args[ii] = (args[ii] as Wrapped).unwrap();
+                }
+            }
+        }
+
 //         log.info("Dispatching invocation notification " +
 //                  "[receiver=" + decoder.receiver + ", methodId=" + methodId +
 //                  ", args=" + StringUtil.toString(args) + "].");


M decode returns an array only if multiple objects where encoded

git-svn-id: 3704838867447408e01268abee7e32a5bd8c3d03@4 5cda2b45-c24c-6f34-eaa9-e0910a1cbe04

--- src/aerys/qark/Qark.as
+++ src/aerys/qark/Qark.as
@@ -63,14 +63,14 @@
 			return data;
 		}

-		public static function decode(source : ByteArray) : Array
+		public static function decode(source : ByteArray) : *
 		{
 			var result : Array = new Array();

 			while (source.bytesAvailable)
 				result.push(decodeRecursive(source));

-			return result;
+			return result.length == 1 ? result[0] : result;
 		}

 		public static function encodeRecursive(source : *, target : ByteArray) : void


Fix stderr().

Fix stderr().

	* src/tests/bin/liburbi-check.as: Output should be on several lines.

--- sdk-remote/src/tests/bin/liburbi-check.as
+++ sdk-remote/src/tests/bin/liburbi-check.as
@@ -35,7 +35,11 @@
 # Overriden to include the test name.
 stderr ()
 {
-  echo >&2 "$(basename $0): $me: $@"
+  local i
+  for i
+  do
+    echo >&2 "$(basename $0): $me: $i"
+  done
   echo >&2
 }


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

--- frameworks/projects/advancedgrids/src/mx/olap/IOLAPDimension.as
+++ frameworks/projects/advancedgrids/src/mx/olap/IOLAPDimension.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: 15494
Author:   dloverin@adobe.com
Date:     2010-04-16T15:38:54.580909Z

Log Message:
-----------
Merge revision 15450 from 4.x to trunk

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

Modified Paths:
--------------
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>

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

--- frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as
+++ frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as
@@ -848,6 +848,19 @@
                                 styleDeclaration:CSSStyleDeclaration,
                                 update:Boolean):void
     {
+        // For Flex 3 and earlier, if we were passed a selector with a package
+        // name, such as "mx.controls.Button", strip off the package name
+        // leaving just "Button" and look for that type selector.
+        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0)
+        {
+            if (selector.charAt(0) != ".")
+            {
+                var index:int = selector.lastIndexOf(".");
+                if (index != -1)
+                    selector = selector.substr(index + 1);
+            }
+        }
+
         // Populate the selectors Array for this style declaration
         styleDeclaration.selectorRefCount++;
         _selectors[selector] = styleDeclaration;


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

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