Transferred from the Adobe Open Source Subversion Repository

Revision: 19231
Author:   jszeto@adobe.com
Date:     2010-12-09T19:25:51.943016Z

Log Message:
-----------
Mobile Skin Fixes

Merging in revisions 18989-19158 from hero_skin_sandbox.

The following component skins have been updated and 320 DPI skins added:

Button
CheckBox
RadioButton
TextInput
TextArea
ActionBar
HSlider

Updating MobileSkins test project

QE notes: baseline regen
Doc notes: none
Bugs: none
Reviewer: Jason San Jose, Tom Krakit
Tests run: full cyclone
Is noteworthy for integration: yes, updated skins!

Modified Paths:
--------------
129 paths were modified

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as
@@ -13,16 +13,20 @@
 {

 import flash.display.DisplayObject;
+import flash.display.GradientType;
 import flash.display.Graphics;

 import mx.core.DeviceDensity;
 import mx.core.mx_internal;
+import mx.utils.ColorUtil;

 import spark.skins.mobile.supportClasses.ButtonSkinBase;
 import spark.skins.mobile160.assets.Button_down;
 import spark.skins.mobile160.assets.Button_up;
 import spark.skins.mobile240.assets.Button_down;
 import spark.skins.mobile240.assets.Button_up;
+import spark.skins.mobile320.assets.Button_down;
+import spark.skins.mobile320.assets.Button_up;

 use namespace mx_internal;
@@ -58,21 +62,37 @@

         switch (authorDensity)
         {
-            case DeviceDensity.PPI_240:
-            {
-                upBorderSkin = spark.skins.mobile240.assets.Button_up;
-                downBorderSkin = spark.skins.mobile240.assets.Button_down;
-
-                // FIXME (jasonsj) subract gutter for measurement
-                layoutGap = 7;
+            case DeviceDensity.PPI_320:
+            {
+                upBorderSkin = spark.skins.mobile320.assets.Button_up;
+                downBorderSkin = spark.skins.mobile320.assets.Button_down;
+
+                layoutGap = 10;
                 layoutCornerEllipseSize = 20;
                 layoutPaddingLeft = 20;
                 layoutPaddingRight = 20;
                 layoutPaddingTop = 20;
                 layoutPaddingBottom = 20;
-                layoutBottomBorderShadow = 1;
+                layoutBorderSize = 2;
+                layoutMeasuredWidth = 64;
+                layoutMeasuredHeight = 86;
+
+                break;
+            }
+            case DeviceDensity.PPI_240:
+            {
+                upBorderSkin = spark.skins.mobile240.assets.Button_up;
+                downBorderSkin = spark.skins.mobile240.assets.Button_down;
+
+                layoutGap = 7;
+                layoutCornerEllipseSize = 15;
+                layoutPaddingLeft = 15;
+                layoutPaddingRight = 15;
+                layoutPaddingTop = 15;
+                layoutPaddingBottom = 14;
                 layoutBorderSize = 1;
                 layoutMeasuredWidth = 48;
+                layoutMeasuredHeight = 65;

                 break;
             }
@@ -82,16 +102,15 @@
                 upBorderSkin = spark.skins.mobile160.assets.Button_up;
                 downBorderSkin = spark.skins.mobile160.assets.Button_down;

-                // FIXME (jasonsj) subract gutter for measurement
-                layoutGap = 9;
-                layoutCornerEllipseSize = 12;
-                layoutPaddingLeft = 15;
-                layoutPaddingRight = 15;
-                layoutPaddingTop = 15;
-                layoutPaddingBottom = 15;
-                layoutBottomBorderShadow = 1;
+                layoutGap = 5;
+                layoutCornerEllipseSize = 10;
+                layoutPaddingLeft = 10;
+                layoutPaddingRight = 10;
+                layoutPaddingTop = 10;
+                layoutPaddingBottom = 10;
                 layoutBorderSize = 1;
                 layoutMeasuredWidth = 32;
+                layoutMeasuredHeight = 43;

                 break;
             }
@@ -105,8 +124,6 @@
     //--------------------------------------------------------------------------

     protected var layoutCornerEllipseSize:uint;
-
-    protected var layoutBottomBorderShadow:uint;

     //--------------------------------------------------------------------------
     //
@@ -148,7 +165,7 @@
      *  @default Button_down
      */
     protected var downBorderSkin:Class;
-
+
     //--------------------------------------------------------------------------
     //
     //  Overridden methods
@@ -215,13 +232,22 @@
         setElementPosition(bgImg, 0, 0);
     }

+	override protected function beginChromeColorFill(chromeColorGraphics:Graphics):void
+	{
+		// In the down state, the fill shadow is defined in the FXG asset
+		if (currentState == "down")
+			chromeColorGraphics.beginFill(getChromeColor());
+		else
+			super.beginChromeColorFill(chromeColorGraphics);
+	}
+
     override protected function drawChromeColor(chromeColorGraphics:Graphics, unscaledWidth:Number, unscaledHeight:Number):void
     {
         // inset chrome color by BORDER_SIZE
         // bottom line is a shadow
         chromeColorGraphics.drawRoundRect(layoutBorderSize, layoutBorderSize,
             unscaledWidth - (layoutBorderSize * 2),
-            unscaledHeight - layoutBottomBorderShadow - (layoutBorderSize * 2),
+            unscaledHeight - (layoutBorderSize * 2),
             layoutCornerEllipseSize, layoutCornerEllipseSize);
     }


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

--- frameworks/projects/rpc/src/mx/messaging/messages/AbstractMessage.as
+++ frameworks/projects/rpc/src/mx/messaging/messages/AbstractMessage.as
@@ -0,0 +1,603 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.messaging.messages
+{
+
+import flash.utils.ByteArray;
+import flash.utils.IDataInput;
+import flash.utils.IDataOutput;
+import flash.utils.getQualifiedClassName;
+
+import mx.core.mx_internal;
+import mx.utils.ObjectUtil;
+import mx.utils.StringUtil;
+import mx.utils.UIDUtil;
+
+use namespace mx_internal;
+
+/**
+ *  Abstract base class for all messages.
+ *  Messages have two customizable sections; headers and body.
+ *  The headers property provides access to specialized meta
+ *  information for a specific message instance.
+ *  The headers property is an associative array with the specific
+ *  header name as the key.
+ *

+ *  The body of a message contains the instance specific data that needs to be
+ *  delivered and processed by the remote destination.
+ *  The body is an object and is the payload for a message.
+ *

+ */
+public class AbstractMessage implements IMessage
+{
+    //--------------------------------------------------------------------------
+    //
+    // Static Constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Messages pushed from the server may arrive in a batch, with messages in the
+     *  batch potentially targeted to different Consumer instances.
+     *  Each message will contain this header identifying the Consumer instance that
+     *  will receive the message.
+     */
+    public static const DESTINATION_CLIENT_ID_HEADER:String = "DSDstClientId";
+
+    /**
+     *  Messages are tagged with the endpoint id for the Channel they are sent over.
+     *  Channels set this value automatically when they send a message.
+     */
+	public static const ENDPOINT_HEADER:String = "DSEndpoint";
+
+	/**
+	 *  This header is used to transport the global FlexClient Id value in outbound
+	 *  messages once it has been assigned by the server.
+	 */
+	public static const FLEX_CLIENT_ID_HEADER:String = "DSId";
+
+	/**
+     *  Messages that need to set remote credentials for a destination
+     *  carry the Base64 encoded credentials in this header.
+	 */
+	public static const REMOTE_CREDENTIALS_HEADER:String = "DSRemoteCredentials";
+
+	/**
+     *  Messages that need to set remote credentials for a destination
+     *  may also need to report the character-set encoding that was used to
+     *  create the credentials String using this header.
+	 */
+	public static const REMOTE_CREDENTIALS_CHARSET_HEADER:String = "DSRemoteCredentialsCharset";
+
+	/**
+	 *  Messages sent with a defined request timeout use this header.
+	 *  The request timeout value is set on outbound messages by services or
+	 *  channels and the value controls how long the corresponding MessageResponder
+	 *  will wait for an acknowledgement, result or fault response for the message
+	 *  before timing out the request.
+	 */
+	public static const REQUEST_TIMEOUT_HEADER:String = "DSRequestTimeout";
+
+
+    //--------------------------------------------------------------------------
+    //
+    // Private Static Constants for Serialization
+    //
+    //--------------------------------------------------------------------------
+
+    private static const HAS_NEXT_FLAG:uint = 128;
+    private static const BODY_FLAG:uint = 1;
+    private static const CLIENT_ID_FLAG:uint = 2;
+    private static const DESTINATION_FLAG:uint = 4;
+    private static const HEADERS_FLAG:uint = 8;
+    private static const MESSAGE_ID_FLAG:uint = 16;
+    private static const TIMESTAMP_FLAG:uint = 32;
+    private static const TIME_TO_LIVE_FLAG:uint = 64;
+    private static const CLIENT_ID_BYTES_FLAG:uint = 1;
+    private static const MESSAGE_ID_BYTES_FLAG:uint = 2;
+
+
+    //--------------------------------------------------------------------------
+    //
+    // Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructs an instance of an AbstractMessage with an empty body and header.
+     *  This message type should not be instantiated or used directly.
+     */
+    public function AbstractMessage()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+	//  body
+	//----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _body:Object = {};
+
+    /**
+     *  The body of a message contains the specific data that needs to be
+     *  delivered to the remote destination.
+     */
+    public function get body():Object
+    {
+        return _body;
+    }
+
+    /**
+     *  @private
+     */
+    public function set body(value:Object):void
+    {
+        _body = value;
+    }
+
+    //----------------------------------
+	//  clientId
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	private var _clientId:String;
+
+	/**
+	 * @private
+	 */
+    private var clientIdBytes:ByteArray;
+
+    /**
+     *  The clientId indicates which MessageAgent sent the message.
+     */
+    public function get clientId():String
+    {
+        return _clientId;
+    }
+
+    /**
+	 *  @private
+	 */
+    public function set clientId(value:String):void
+    {
+        _clientId = value;
+        clientIdBytes = null;
+    }
+
+    //----------------------------------
+	//  destination
+	//----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _destination:String = "";
+
+    /**
+     *  The message destination.
+     */
+    public function get destination():String
+    {
+        return _destination;
+    }
+
+    /**
+     *  @private
+     */
+    public function set destination(value:String):void
+    {
+        _destination = value;
+    }
+
+    //----------------------------------
+	//  headers
+	//----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _headers:Object;
+
+    /**
+     *  The headers of a message are an associative array where the key is the
+     *  header name and the value is the header value.
+     *  This property provides access to the specialized meta information for the
+     *  specific message instance.
+     *  Core header names begin with a 'DS' prefix. Custom header names should start
+     *  with a unique prefix to avoid name collisions.
+     */
+    public function get headers():Object
+    {
+        if (_headers == null)
+             _headers = {};
+
+        return _headers;
+    }
+
+    /**
+     *  @private
+     */
+    public function set headers(value:Object):void
+    {
+        _headers = value;
+    }
+
+    //----------------------------------
+	//  messageId
+	//----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _messageId:String;
+
+    /**
+     * @private
+     */
+    private var messageIdBytes:ByteArray;
+
+    /**
+     *  The unique id for the message.
+     */
+    public function get messageId():String
+    {
+        if (_messageId == null)
+            _messageId = UIDUtil.createUID();
+
+        return _messageId;
+    }
+
+    /**
+     *  @private
+     */
+    public function set messageId(value:String):void
+    {
+        _messageId = value;
+        messageIdBytes = null;
+    }
+
+    //----------------------------------
+	//  timestamp
+	//----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _timestamp:Number = 0;
+
+    /**
+     *  Provides access to the time stamp for the message.
+     *  A time stamp is the date and time that the message was sent.
+     *  The time stamp is used for tracking the message through the system,
+     *  ensuring quality of service levels and providing a mechanism for
+     *  message expiration.
+     *
+     *  @see #timeToLive
+     */
+    public function get timestamp():Number
+    {
+        return _timestamp;
+    }
+
+    /**
+     *  @private
+     */
+    public function set timestamp(value:Number):void
+    {
+        _timestamp = value;
+    }
+
+    //----------------------------------
+	//  timeToLive
+	//----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _timeToLive:Number = 0;
+
+    /**
+     *  The time to live value of a message indicates how long the message
+     *  should be considered valid and deliverable.
+     *  This value works in conjunction with the timestamp value.
+     *  Time to live is the number of milliseconds that this message remains
+     *  valid starting from the specified timestamp value.
+     *  For example, if the timestamp value is 04/05/05 1:30:45 PST
+     *  and the timeToLive value is 5000, then this message will
+     *  expire at 04/05/05 1:30:50 PST.
+     *  Once a message expires it will not be delivered to any other clients.
+     */
+    public function get timeToLive():Number
+    {
+        return _timeToLive;
+    }
+
+    /**
+     *  @private
+     */
+    public function set timeToLive(value:Number):void
+    {
+        _timeToLive = value;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     * @private
+     *
+     * While this class itself does not implement flash.utils.IExternalizable,
+     * ISmallMessage implementations will typically use IExternalizable to
+     * serialize themselves in a smaller form. This method supports this
+     * functionality by implementing IExternalizable.readExternal(IDataInput) to
+     * deserialize the properties for this abstract base class.
+     */
+    public function readExternal(input:IDataInput):void
+    {
+        var flagsArray:Array = readFlags(input);
+
+        for (var i:uint = 0; i < flagsArray.length; i++)
+        {
+            var flags:uint = flagsArray[i] as uint;
+            var reservedPosition:uint = 0;
+
+            if (i == 0)
+            {
+                if ((flags & BODY_FLAG) != 0)
+                    body = input.readObject();
+                else
+                    body = null; // default body is {} so need to set it here
+
+                if ((flags & CLIENT_ID_FLAG) != 0)
+                    clientId = input.readObject();
+
+                if ((flags & DESTINATION_FLAG) != 0)
+                    destination = input.readObject() as String;
+
+                if ((flags & HEADERS_FLAG) != 0)
+                    headers = input.readObject();
+
+                if ((flags & MESSAGE_ID_FLAG) != 0)
+                    messageId = input.readObject() as String;
+
+                if ((flags & TIMESTAMP_FLAG) != 0)
+                    timestamp = input.readObject() as Number;
+
+                if ((flags & TIME_TO_LIVE_FLAG) != 0)
+                    timeToLive = input.readObject() as Number;
+
+                reservedPosition = 7;
+            }
+            else if (i == 1)
+            {
+                if ((flags & CLIENT_ID_BYTES_FLAG) != 0)
+                {
+                    clientIdBytes = input.readObject() as ByteArray;
+                    clientId = UIDUtil.fromByteArray(clientIdBytes);
+                }
+
+                if ((flags & MESSAGE_ID_BYTES_FLAG) != 0)
+                {
+                    messageIdBytes = input.readObject() as ByteArray;
+                    messageId = UIDUtil.fromByteArray(messageIdBytes);
+                }
+
+                reservedPosition = 2;
+            }
+
+            // For forwards compatibility, read in any other flagged objects to
+            // preserve the integrity of the input stream...
+            if ((flags >> reservedPosition) != 0)
+            {
+                for (var j:uint = reservedPosition; j < 6; j++)
+                {
+                    if (((flags >> j) & 1) != 0)
+                    {
+                        input.readObject();
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     *  Returns a string representation of the message.
+     *
+     *  @return String representation of the message.
+     */
+    public function toString():String
+    {
+        return ObjectUtil.toString(this);
+    }
+
+    /**
+     * @private
+     *
+     * While this class itself does not implement flash.utils.IExternalizable,
+     * ISmallMessage implementations will typically use IExternalizable to
+     * serialize themselves in a smaller form. This method supports this
+     * functionality by implementing IExternalizable.writeExternal(IDataOutput)
+     * to efficiently serialize the properties for this abstract base class.
+     */
+    public function writeExternal(output:IDataOutput):void
+    {
+        var flags:uint = 0;
+
+        // Since we're using custom serialization, we have to invoke the
+        // messageId getter to ensure we have a valid id for the message.
+        var checkForMessageId:String = messageId;
+
+        if (clientIdBytes == null)
+            clientIdBytes = UIDUtil.toByteArray(_clientId);
+
+        if (messageIdBytes == null)
+            messageIdBytes = UIDUtil.toByteArray(_messageId);
+
+        if (body != null)
+            flags |= BODY_FLAG;
+
+        if (clientId != null && clientIdBytes == null)
+            flags |= CLIENT_ID_FLAG;
+
+        if (destination != null)
+            flags |= DESTINATION_FLAG;
+
+        if (headers != null)
+            flags |= HEADERS_FLAG;
+
+        if (messageId != null && messageIdBytes == null)
+            flags |= MESSAGE_ID_FLAG;
+
+        if (timestamp != 0)
+            flags |= TIMESTAMP_FLAG;
+
+        if (timeToLive != 0)
+            flags |= TIME_TO_LIVE_FLAG;
+
+        if (clientIdBytes != null || messageIdBytes != null)
+            flags |= HAS_NEXT_FLAG;
+
+        output.writeByte(flags);
+
+        flags = 0;
+
+        if (clientIdBytes != null)
+            flags |= CLIENT_ID_BYTES_FLAG;
+
+        if (messageIdBytes != null)
+            flags |= MESSAGE_ID_BYTES_FLAG;
+
+        // This is only read if the previous flag has HAS_NEXT_FLAG set
+        if (flags != 0)
+            output.writeByte(flags);
+
+        if (body != null)
+            output.writeObject(body);
+
+        if (clientId != null && clientIdBytes == null)
+            output.writeObject(clientId);
+
+        if (destination != null)
+            output.writeObject(destination);
+
+        if (headers != null)
+            output.writeObject(headers);
+
+        if (messageId != null && messageIdBytes == null)
+            output.writeObject(messageId);
+
+        if (timestamp != 0)
+            output.writeObject(timestamp);
+
+        if (timeToLive != 0)
+            output.writeObject(timeToLive);
+
+        if (clientIdBytes != null)
+            output.writeObject(clientIdBytes);
+
+        if (messageIdBytes != null)
+            output.writeObject(messageIdBytes);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Protected Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    protected function addDebugAttributes(attributes:Object):void
+    {
+        attributes["body"] = body;
+        attributes["clientId"] = clientId;
+        attributes["destination"] = destination;
+        attributes["headers"] = headers;
+        attributes["messageId"] = messageId;
+        attributes["timestamp"] = timestamp;
+        attributes["timeToLive"] = timeToLive;
+    }
+
+    /**
+     *  @private
+     */
+    final protected function getDebugString():String
+    {
+        var result:String = "(" + getQualifiedClassName(this) + ")";
+
+        var attributes:Object = {};
+        addDebugAttributes(attributes);
+
+        var propertyNames:Array = [];
+        for (var propertyName:String in attributes)
+        {
+            propertyNames.push(propertyName);
+        }
+        propertyNames.sort();
+
+        for (var i:uint = 0; i < propertyNames.length; i++)
+        {
+            var name:String = String(propertyNames[i]);
+            var value:String = ObjectUtil.toString(attributes[name]);
+            result += StringUtil.substitute("\n  {0}={1}", name, value);
+        }
+
+        return result;
+    }
+
+    /**
+     * @private
+     * To support efficient serialization for ISmallMessage implementations,
+     * this utility method reads in the property flags from an IDataInput
+     * stream. Flags are read in one byte at a time. Flags make use of
+     * sign-extension so that if the high-bit is set to 1 this indicates that
+     * another set of flags follows.
+     *
+     * @return The Array of property flags. Each flags byte is stored as a uint
+     * in the Array.
+     */
+    protected function readFlags(input:IDataInput):Array
+    {
+        var hasNextFlag:Boolean = true;
+        var flagsArray:Array = [];
+
+        while (hasNextFlag && input.bytesAvailable > 0)
+        {
+            var flags:uint = input.readUnsignedByte();
+            flagsArray.push(flags);
+
+            if ((flags & HAS_NEXT_FLAG) != 0)
+                hasNextFlag = true;
+            else
+                hasNextFlag = false;
+        }
+
+        return flagsArray;
+    }
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package spark.skins.mobile
 {


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

--- frameworks/projects/rpc/src/mx/rpc/Fault.as
+++ frameworks/projects/rpc/src/mx/rpc/Fault.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-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.rpc
 {


fixed some error formatting

fixed some error formatting

--- source/com/nextgenactionscript/asconfigc/CompilerOptionsParser.as
+++ source/com/nextgenactionscript/asconfigc/CompilerOptionsParser.as
@@ -211,7 +211,7 @@
 			var firstValue:Object = values[0];
 			if(firstValue === null)
 			{
-				console.error("Value for option \"" + optionName + "\" not valid:" + firstValue);
+				console.error("Value for option \"" + optionName + "\" not valid: " + firstValue);
 				process.exit(1);
 			}
 			result.push("--" + optionName + "=" + firstValue.toString());
@@ -230,7 +230,7 @@
 				var currentValue:Object = values[i];
 				if(currentValue === null)
 				{
-					console.error("Value for option \"" + CompilerOptions.NAMESPACE + "\" not valid:" + currentValue);
+					console.error("Value for option \"" + CompilerOptions.NAMESPACE + "\" not valid: " + currentValue);
 					process.exit(1);
 				}
 				result.push("--" + CompilerOptions.NAMESPACE);
@@ -251,7 +251,7 @@
 				var currentValue:Object = values[i];
 				if(currentValue === null)
 				{
-					console.error("Value for option \"" + optionName + "\" not valid:" + currentValue);
+					console.error("Value for option \"" + optionName + "\" not valid: " + currentValue);
 					process.exit(1);
 				}
 				result.push("--" + optionName + "+=" + currentValue.toString());
@@ -266,7 +266,7 @@
 				var currentPath:String = paths[i];
 				if(!fs.existsSync(currentPath))
 				{
-					console.error("Path for option \"" + optionName + "\" not found:" + currentPath);
+					console.error("Path for option \"" + optionName + "\" not found: " + currentPath);
 					process.exit(1);
 				}
 				result.push("--" + optionName + "+=" + currentPath);


set VertexIterator.length type to uint

set VertexIterator.length type to uint

--- src/aerys/minko/render/geometry/stream/iterator/VertexIterator.as
+++ src/aerys/minko/render/geometry/stream/iterator/VertexIterator.as
@@ -50,7 +50,7 @@
 			return _vstream;
 		}

-		public function get length() : int
+		public function get length() : uint
 		{
 			return _istream ? _istream.length : _vstream.numVertices;
 		}


Bugfix.
When a menu is popped up but contains no items, the listData is null
(rather than empty). Special!

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@850 ed5b42cb-e716-0410-a449-f6a68f950b19

--- src/as/com/threerings/flex/menuClasses/CommandMenuItemRenderer.as
+++ src/as/com/threerings/flex/menuClasses/CommandMenuItemRenderer.as
@@ -38,6 +38,7 @@
     override protected function commitProperties () :void
     {
         super.commitProperties();
+        // Note: a menu with no items will have a null listData

         if ((icon == null) && (listData is CommandListData)) {
             icon = CommandListData(listData).iconObject;
@@ -46,7 +47,7 @@
             }
         }

-        if (label.visible) {
+        if (label.visible && (listData != null)) {
             var dataDescriptor :IMenuDataDescriptor = Menu(listData.owner).dataDescriptor;
             var typeVal :String = dataDescriptor.getType(data);
             if (typeVal == "title") {


cosmetics

cosmetics

--- src/eu/stefaner/elasticlists/ui/elements/InteractiveNodeSprite.as
+++ src/eu/stefaner/elasticlists/ui/elements/InteractiveNodeSprite.as
@@ -19,11 +19,14 @@
 package eu.stefaner.elasticlists.ui.elements {
 	import eu.stefaner.elasticlists.data.DataItem;
 	import eu.stefaner.elasticlists.ui.DefaultGraphicsFactory;
+
 	import flare.vis.data.NodeSprite;
+
 	import flash.display.Sprite;
 	import flash.events.Event;
 	import flash.events.MouseEvent;
 	import flash.text.TextField;
+
 	/**
 	 *	Base class for ContentItemSprites, FacetBoxElements
 	 *	provides click handler, selection state etc.
@@ -35,20 +38,24 @@
 	 *	@since  23.11.2007
 	 */
 	public class InteractiveNodeSprite extends NodeSprite {
+
 		private var _label : String;
 		private var _selected : Boolean = false;
 		public var filteredOut : Boolean = false;
 		public var bg : Sprite;
 		public var title_tf : TextField;
 		public var selectionMarker : Sprite;
-		public function InteractiveNodeSprite(o : Object = null) {
-			super();
+
+		public function InteractiveNodeSprite(o : Object = null) {
+			super();
+
 			if(o != null) {
 				data = o;
 			}

 			addEventListener(Event.ADDED_TO_STAGE, onStageInit);
 		}
+
 		protected function onStageInit(event : Event) : void {
 			initGraphics();
 			renderer = null;
@@ -62,6 +69,7 @@

 			onSelectionStatusChange();
 		}
+
 		protected function initGraphics() : void {
 			if(bg == null) {
 				bg = DefaultGraphicsFactory.getContentItemBackground();
@@ -78,6 +86,7 @@
 				addChild(title_tf);
 			}
 		}
+
 		//--------------------------------------
 		//  CLASS METHODS
 		//--------------------------------------
@@ -86,6 +95,7 @@
 		public static function getVisibility(n : InteractiveNodeSprite) : Boolean {
 			return !n.data.filteredOut;
 		};
+
 		//--------------------------------------
 		//  GETTER/SETTERS
 		//--------------------------------------
@@ -94,6 +104,7 @@
 		override public function get data() : Object {
 			return DataItem(_data);
 		}
+
 		override public function set data(d : Object) : void {
 			if(!d is DataItem) {
 				throw new Error("InteractiveNodeSprite needs a DataItem as data");
@@ -103,6 +114,7 @@

 			onSelectionStatusChange();
 		}
+
 		// label
 		public function set label( arg : String ) : void {
 			_label = arg;
@@ -110,23 +122,29 @@
 				title_tf.text = arg ? arg : "";
 			}
 		}
+
 		public function get label() : String {
 			return _label;
 		}
+
 		// height
 		override public function set height( h : Number ) : void {
 			bg.height = selectionMarker.height = h;
 		}
+
 		override public function get height() : Number {
 			return bg.height;
 		}
+
 		// width
 		override public function set width( w : Number ) : void {
 			bg.width = selectionMarker.width = w;
 		}
+
 		override public function get width() : Number {
 			return bg.width;
 		}
+
 		// selected
 		public function set selected( arg : Boolean ) : void {
 			_selected = arg;
@@ -135,17 +153,21 @@
 				selectionMarker.alpha = 1;
 			}
 		}
+
 		public function get selected() : Boolean {
 			return _selected;
 		}
+
 		public function onSelectionStatusChange(e : Event = null) : void {
 			selected = data.selected;
 		};
+
 		// MOUSE EVENTS
 		protected function onRollOver(e : MouseEvent) : void {
 			selectionMarker.visible = true;
 			selectionMarker.alpha = .5;
 		};
+
 		protected function onRollOut(e : MouseEvent) : void {
 			if(selected) {
 				selectionMarker.visible = true;
@@ -155,6 +177,7 @@
 				selectionMarker.alpha = .5;
 			}
 		};
+
 		protected function onClick(e : MouseEvent) : void {
 			data.toggleSelected();
 		};


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

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

 package mx.styles
 {


Added assertThrows along with a couple of examples

--- as3/src/asunit/framework/Assert.as
+++ as3/src/asunit/framework/Assert.as
@@ -62,15 +62,60 @@
             assertTrue(message, !condition);
         }
         /**
-         * Fails a test with the given message.
+         *  Fails a test with the given message.
+         *
+         *  This method can be called anytime you want to break out and fail
+         *  the current test.
+         *
+         *

+         *
+         *

          */
         static public function fail(message:String):void {
             throw new AssertionFailedError(message);
         }
-
-        /**
-         * Asserts that two objects are equal. If they are not
-         * an AssertionFailedError is thrown with the given message.
+
+        /**
+        *  Asserts that the provided block throws an exception that matches
+        *  the type provided.
+        *
+        *

+        *  public function testFailingCode():void {
+        *     assertThrows(CustomError, function():void {
+        *           var instance:Sprite = new Sprite();
+        *           instance.callMethodThatThrows();
+        *     });
+        *  }
+        *

+        **/
+        static public function assertThrows(errorType:Class, block:Function):void {
+            try {
+                block.call();
+                fail("assertThrows block did not throw an expected exception");
+            }
+            catch(e:Error) {
+                if(!(e is errorType)) {
+                    fail("assertThrows did not throw the expected error type.");
+                }
+            }
+        }
+
+        /**
+         *  Asserts that two objects are equal. If they are not
+         *  an AssertionFailedError is thrown with the given message.
+         *
+         *  This assertion should be (by far) the one you use the most.
+         *  It automatically provides useful information about what
+         *  the failing values were.
+         *
+         *

+         *  public function testNames():void {
+         *      var name1:String = "Federico Aubele";
+         *      var name2:String = "Frederico Aubele";
+         *
+         *      assertEquals(name1, name2);
+         *  }
+         *

          */
         static public function assertEquals(...args:Array):void {
             var message:String;


Update HLSManifestEncryptionKey.as

Update HLSManifestEncryptionKey.as

Case correction.

--- HLSPlugin/src/com/kaltura/hls/manifest/HLSManifestEncryptionKey.as
+++ HLSPlugin/src/com/kaltura/hls/manifest/HLSManifestEncryptionKey.as
@@ -182,7 +182,7 @@
 			if (paddingValue > 15)
 			{
 				//Return early, since any values bigger than 15 aren't actually padding.
-				return bytesTounpad;
+				return bytesToUnpad;
 			}
 			var doUnpad:Boolean = true;
 			for (var i:int = 0; i<paddingValue; i++)


Ensure all symbols are in this map before assigning references.

--- runtime/src/main/as/flump/xfl/XflLibrary.as
+++ runtime/src/main/as/flump/xfl/XflLibrary.as
@@ -47,13 +47,15 @@
         for each (var movie :XflMovie in movies) {
             if (movie.symbol != null) _symbols[movie.symbol] = movie;
             _libraryItems[movie.libraryItem] = movie;
+        }
+        for each (movie in movies) {
+            movie.checkSymbols(this);
             for each (var layer :XflLayer in movie.layers) {
                 for each (var kf :XflKeyframe in layer.keyframes) {
                     if (kf.libraryItem != null) kf.symbol = _libraryItems[kf.libraryItem].symbol;
                 }
             }
         }
-        for each (movie in movies) movie.checkSymbols(this);
     }

     override public function getErrors (sev :String=null) :Vector.<ParseError>{


Transferred from the Adobe Open Source Subversion Repository

Revision: 10286
Author:   clucier@adobe.com
Date:     2009-09-16T00:22:27.590014Z

Log Message:
-----------
Beta blocker.  Addressed a DesignLayer issue which was preventing layer children from synching their visible properties properly when their layer hierarchies were built up dynamically (script) at runtime.

QE notes: None
Doc notes: None
Bugs: SDK-23254
Reviewer: Chet
Tests run: Checkin, DesignLayer musstella
Is noteworthy for integration: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/DesignLayer.as

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

--- frameworks/projects/framework/src/mx/core/DesignLayer.as
+++ frameworks/projects/framework/src/mx/core/DesignLayer.as
@@ -131,7 +131,10 @@
          */
         protected function parentChanged(value:DesignLayer):void
         {
-            if (_parent)
+            // We remove our layer from the old parent unless the new
+            // parent is null (in this case we know we are invoking this
+            // directly from removeLayer).
+            if (_parent && value)
                 _parent.removeLayer(this);

             _parent = value;
@@ -224,7 +227,8 @@
         protected function effectiveVisibilityChanged(value:Boolean):void
         {
             dispatchEvent(new PropertyChangeEvent("layerPropertyChange", false,
-                false, PropertyChangeEventKind.UPDATE, "effectiveVisibility", !value, value));
+                false, PropertyChangeEventKind.UPDATE, "effectiveVisibility",
+                !effectiveVisibility, effectiveVisibility));

             for (var i:int = 0; i < layerChildren.length; i++)
             {
@@ -316,7 +320,8 @@
         protected function effectiveAlphaChanged(oldAlpha:Number):void
         {
             dispatchEvent(new PropertyChangeEvent("layerPropertyChange", false,
-                false, PropertyChangeEventKind.UPDATE, "effectiveAlpha", oldAlpha, effectiveAlpha));
+                false, PropertyChangeEventKind.UPDATE, "effectiveAlpha",
+                oldAlpha, effectiveAlpha));

             for (var i:int = 0; i < layerChildren.length; i++)
             {
@@ -408,6 +413,7 @@
             {
                 if (layerChildren[i] == value)
                 {
+                    value.parentChanged(null);
                     layerChildren.splice(i,1);
                     return;
                 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 4364
Author:   smgilson@adobe.com
Date:     2008-12-19T15:54:46.325001Z

Log Message:
-----------
Update ASDoc comments for enterState and exitState events

QE Notes: None
Doc Notes: None
Bugs: -

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/states/State.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -496,14 +496,14 @@
 [Event(name="currentStateChange", type="mx.events.StateChangeEvent")]

 /**
- *  Dispatched after the component has returned to the root view state.
+ *  Dispatched after the component has entered a view state.
  *
  *  @eventType mx.events.FlexEvent.ENTER_STATE
  */
 [Event(name="enterState", type="mx.events.FlexEvent")]

 /**
- *  Dispatched before the component exits from the root view state.
+ *  Dispatched just before the component exits a view state.
  *
  *  @eventType mx.events.FlexEvent.EXIT_STATE
  */
@@ -1681,7 +1681,7 @@
         if (rotation == value)
             return;

-   		hasDeltaIdentityTransform = false;
+        hasDeltaIdentityTransform = false;
         if(_layoutFeatures == null)
         {
             // clamp the rotation value between -180 and 180.  This is what
@@ -2021,8 +2021,8 @@
             if (prevValue == value)
                 return;

-    		hasDeltaIdentityTransform = false;
-
+            hasDeltaIdentityTransform = false;
+
             // trace("set scaleX:" + this + "value = " + value);
             if(_layoutFeatures == null)
                 super.scaleX = value;
@@ -2099,7 +2099,7 @@
             if (prevValue == value)
                 return;

-    		hasDeltaIdentityTransform = false;
+            hasDeltaIdentityTransform = false;
             if(_layoutFeatures == null)
                 super.scaleY = value;
             else
@@ -6692,8 +6692,8 @@
     /**
      *  @private
      */
-	protected function validateMatrix():void
-	{
+    protected function validateMatrix():void
+    {
         if(_layoutFeatures != null && _layoutFeatures.updatePending == true)
         {
             applyComputedMatrix();
@@ -6707,14 +6707,14 @@
                 pmatrix.projectionCenter = new Point(unscaledWidth/2,unscaledHeight/2);
             }
         }
-	}
+    }
     /**
      *  @inheritDoc
      */
     public function validateDisplayList():void
     {
-    	validateMatrix();
-
+        validateMatrix();
+
         if (invalidateDisplayListFlag)
         {
             // Check if our parent is the top level system manager
@@ -9754,8 +9754,8 @@
     {
         var features:AdvancedLayoutFeatures = new AdvancedLayoutFeatures();

-   		hasDeltaIdentityTransform = false;
-
+        hasDeltaIdentityTransform = false;
+
         features.layoutScaleX = scaleX;
         features.layoutScaleY = scaleY;
         features.layoutScaleZ = scaleZ;
@@ -9923,15 +9923,15 @@
     {
         if(_layoutFeatures != null)
         {
-			// esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
-			// since this is an internal class, we don't need to worry about developers
-			// accidentally messing with this matrix, _unless_ we hand it out. Instead,
-			// we hand out a clone.
+            // esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
+            // since this is an internal class, we don't need to worry about developers
+            // accidentally messing with this matrix, _unless_ we hand it out. Instead,
+            // we hand out a clone.
             return _layoutFeatures.layoutMatrix.clone();
         }
         else
         {
-        	// flash also returns copies.
+            // flash also returns copies.
             return super.transform.matrix;
         }
     }
@@ -9941,17 +9941,17 @@
      */
     public function set layoutMatrix(value:Matrix):void
     {
-   		hasDeltaIdentityTransform = false;
+        hasDeltaIdentityTransform = false;
         if(_layoutFeatures == null)
         {
-        	// flash will make a copy of this on assignment.
+            // flash will make a copy of this on assignment.
             super.transform.matrix = value;
             invalidateSize();
         }
         else
         {
-	        // layout features will internally make a copy of this matrix rather than
-    	    // holding onto a reference to it.
+            // layout features will internally make a copy of this matrix rather than
+            // holding onto a reference to it.
             _layoutFeatures.layoutMatrix = value;
             invalidateTransform();
             invalidateParentSizeAndDisplayList();
@@ -9964,15 +9964,15 @@
      */
     public function setLayoutMatrix(value:Matrix):void
     {
-       	hasDeltaIdentityTransform = false;
+        hasDeltaIdentityTransform = false;
         if (_layoutFeatures == null)
         {
             super.transform.matrix = value;
         }
         else
         {
-	        // layout features will internally make a copy of this matrix rather than
-    	    // holding onto a reference to it.
+            // layout features will internally make a copy of this matrix rather than
+            // holding onto a reference to it.
             _layoutFeatures.layoutMatrix = value;
             invalidateTransform(false /*triggerPropertyInvalidation*/);
         }
@@ -9987,7 +9987,7 @@
         if (_layoutFeatures == null)
             initAdvancedLayoutFeatures();
         // layout features will internally make a copy of this matrix rather than
-   	    // holding onto a reference to it.
+        // holding onto a reference to it.
         _layoutFeatures.layoutMatrix3D = value;
         invalidateTransform(false /*triggerPropertyInvalidation*/);
     }
@@ -10058,10 +10058,10 @@
     public function get layoutMatrix3D():Matrix3D
     {
         if(_layoutFeatures == null) initAdvancedLayoutFeatures();
-		// esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
-		// since this is an internal class, we don't need to worry about developers
-		// accidentally messing with this matrix, _unless_ we hand it out. Instead,
-		// we hand out a clone.
+        // esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
+        // since this is an internal class, we don't need to worry about developers
+        // accidentally messing with this matrix, _unless_ we hand it out. Instead,
+        // we hand out a clone.
         return _layoutFeatures.layoutMatrix3D.clone();
     }

@@ -10141,12 +10141,12 @@
      */
     public function getPreferredBoundsWidth(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getPreferredBoundsWidth(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getPreferredBoundsWidth(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     public function getPreferredBoundsHeight(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getPreferredBoundsHeight(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getPreferredBoundsHeight(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     /**
@@ -10154,12 +10154,12 @@
      */
     public function getMinBoundsWidth(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getMinBoundsWidth(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getMinBoundsWidth(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     public function getMinBoundsHeight(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getMinBoundsHeight(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getMinBoundsHeight(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     /**
@@ -10167,12 +10167,12 @@
      */
     public function getMaxBoundsWidth(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getMaxBoundsWidth(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getMaxBoundsWidth(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     public function getMaxBoundsHeight(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getMaxBoundsHeight(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getMaxBoundsHeight(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     /**
@@ -10180,12 +10180,12 @@
      */
     public function getLayoutBoundsWidth(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getLayoutBoundsWidth(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getLayoutBoundsWidth(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     public function getLayoutBoundsHeight(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getLayoutBoundsHeight(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getLayoutBoundsHeight(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     /**
@@ -10193,12 +10193,12 @@
      */
     public function getLayoutBoundsX(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getLayoutBoundsX(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getLayoutBoundsX(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     public function getLayoutBoundsY(postTransform:Boolean=true):Number
     {
-    	return LayoutElementUIComponentUtils.getLayoutBoundsY(this,postTransform? nonDeltaLayoutMatrix():null);
+        return LayoutElementUIComponentUtils.getLayoutBoundsY(this,postTransform? nonDeltaLayoutMatrix():null);
     }

     /**
@@ -10206,7 +10206,7 @@
      */
     public function setLayoutBoundsPosition(x:Number, y:Number, postTransform:Boolean=true):void
     {
-    	LayoutElementUIComponentUtils.setLayoutBoundsPosition(this,x,y,postTransform? nonDeltaLayoutMatrix():null);
+        LayoutElementUIComponentUtils.setLayoutBoundsPosition(this,x,y,postTransform? nonDeltaLayoutMatrix():null);
     }

     /**
@@ -10216,7 +10216,7 @@
                                   height:Number = Number.NaN,
                                   postTransform:Boolean=true):void
     {
-    	LayoutElementUIComponentUtils.setLayoutBoundsSize(this,width,height,postTransform? nonDeltaLayoutMatrix():null);
+        LayoutElementUIComponentUtils.setLayoutBoundsSize(this,width,height,postTransform? nonDeltaLayoutMatrix():null);
     }

     /**
@@ -10224,7 +10224,7 @@
      */
     public function getLayoutMatrix():Matrix
     {
-		return layoutMatrix;
+        return layoutMatrix;
     }

     /**
@@ -10232,7 +10232,7 @@
      */
     public function getLayoutMatrix3D():Matrix3D
     {
-    	return layoutMatrix3D;
+        return layoutMatrix3D;
     }

     protected function nonDeltaLayoutMatrix():Matrix
@@ -10248,7 +10248,7 @@
         }
 */
         if(hasDeltaIdentityTransform)
-        	return null;
+            return null;
         if(_layoutFeatures != null)
         {
             return _layoutFeatures.layoutMatrix;
@@ -10257,7 +10257,7 @@
         {
             return super.transform.matrix;
         }
-
+
     }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 9209
Author:   egeorgie@adobe.com
Date:     2009-08-10T21:19:44.304070Z

Log Message:
-----------
Fix bug http://bugs.adobe.com/jira/browse/SDK-22457 [Gumbo_Priority] Layout bounds for FXG items are incorrect

Fix:
1. Add resizeMode property with default of 'scale' to SpriteVisualElement
2. Switch the Graphic class default for the resizeMode property to 'scale'
3. Beef up the transformation and sizing logic of the SpriteVisualElement.as
4. Minor clean-up and fixes for UIComponent and UIMovieClip transformations

QE notes: None
Doc notes: None
Bugs: SDK-22457
Reviewer: Ryan
Tests run: checkintests, spark/primitives/graphic, graphics, graphicTags

Is noteworthy for integration: Yes, bug came from Thermo.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/MatrixUtil.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/framework/src/mx/geom/CompoundTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Graphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/utils/MatrixUtil.as
+++ frameworks/projects/framework/src/mx/utils/MatrixUtil.as
@@ -37,6 +37,25 @@
     //  Class methods
     //
     //--------------------------------------------------------------------------
+
+	/**
+	 *  Returns rotation value clamped between -180 and 180 degreeds.
+	 *  This mimicks the Flash player behavior.
+	 */
+	public static function clampRotation(value:Number):Number
+	{
+	 	// Flash player doesn't handle values larger than 2^15 - 1 (FP-749).
+		if (value > 180 || value < -180)
+		{
+			value = value % 360;
+
+			if (value > 180)
+				value = value - 360;
+			else if (value < -180)
+				value = value + 360;
+		}
+		return value;
+	}

 	/**
 	 *  Retunrns a static Point object with the result.


Transferred from the Adobe Open Source Subversion Repository

Revision: 2154
Author:   jspiro@adobe.com
Date:     2008-06-20T01:47:21.797404Z

Log Message:
-----------
SDK-15589 -  ObjectUtil.toString() not displaying the values of a Dictionary object with object keys.
* This was missing functionality in toString() -- it never worked and is a special case, keys were always toString()ed (improperly, IMO), and values were always null. This was because Dictionaries were treated as dynamic Objects that were not Arrays.
* This differs from how Array and Object toString() because keys are not just strings, they can be object references, and they can toString() to the same value if toString() is not overridden. So I recursively break down both the key and the value.
* I added curly brace syntax (rather than reusing brackets from Array] for Dictionary to distinguish its semantics from Array and Object, in case anyone is relying on this for something important. e.g. toString(dictionary) will emit  "{3} = 3" when dictionary["3"] = 3
* getClassInfo() may now return properties that are regular objects if the input is a dictionary, whereas before it would definitely be a String or QName.

Reviewer: gosmith, jasowill
Bugs: SDK-15589
QA: Yes, probably want a test suite for the new functionality (and regress that existing functionality was not broken, if tests exist). A good test case is "example 3" in the asdoc comments for ObjectUtil.toString().
Doc: Yes, I updated the docs for two functions.

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectUtil.as

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

--- frameworks/projects/framework/src/mx/utils/ObjectUtil.as
+++ frameworks/projects/framework/src/mx/utils/ObjectUtil.as
@@ -397,8 +397,37 @@
      *      deeper2 = (Object)#6
      *        deeperStill = (Object)#7
      *          yetDeeper = (Object)#0
-     *

-     *
+     *
+     * // example 3 with Dictionary
+     * var point:Point = new Point(100, 100);
+     * var point2:Point = new Point(100, 100);
+     * var obj:Dictionary = new Dictionary();
+     * obj[point] = "point";
+     * obj[point2] = "point2";
+     * obj["1"] = { name: "one", num: 1};
+     * obj["two"] = { name: "2", num: 2};
+     * obj[3] = 3;
+     * trace(ObjectUtil.toString(obj));
+     *
+     * // will output to flashlog.txt
+     * (flash.utils::Dictionary)#0
+     *   {(flash.geom::Point)#1
+     *     length = 141.4213562373095
+     *     x = 100
+     *     y = 100} = "point2"
+     *   {(flash.geom::Point)#2
+     *     length = 141.4213562373095
+     *     x = 100
+     *     y = 100} = "point"
+     *   {1} = (Object)#3
+     *     name = "one"
+     *     num = 1
+     *   {3} = 3
+     *   {"two"} = (Object)#4
+     *     name = "2"
+     *     num = 2
+     *
+     *

      */
     public static function toString(value:Object,
                                     namespaceURIs:Array = null,
@@ -485,6 +514,7 @@
                     }

                     var isArray:Boolean = value is Array;
+                    var isDict:Boolean = value is Dictionary;
                     var prop:*;
                     indent += 2;

@@ -493,18 +523,36 @@
                     {
                         str = newline(str, indent);
                         prop = properties[j];
+
                         if (isArray)
                             str += "[";
-                        str += prop.toString();
+                        else if (isDict)
+                            str += "{";
+
+
+                        if (isDict)
+                        {
+                            // in dictionaries, recurse on the key, because it can be a complex object
+                            str += internalToString(prop, indent, refs,
+                                                    namespaceURIs, exclude);
+                        }
+                        else
+                        {
+                            str += prop.toString();
+                        }
+
                         if (isArray)
                             str += "] ";
+                        else if (isDict)
+                            str += "} = ";
                         else
                             str += " = ";
+
                         try
                         {
-                            str += internalToString(
-                                        value[prop], indent, refs, namespaceURIs,
-                                        exclude);
+                            // print the value
+                            str += internalToString(value[prop], indent, refs,
+                                                    namespaceURIs, exclude);
                         }
                         catch(e:Error)
                         {
@@ -740,7 +788,8 @@
      *  @return An Object containing the following properties:
      *

      *
name: String containing the name of the class;

-     *
properties: Sorted list of the property names of the specified object.

+     *
properties: Sorted list of the property names of the specified object,
+     *    or references to the original key if the specified object is a Dictionary

      *

     */
     public static function getClassInfo(obj:Object,
@@ -816,8 +865,21 @@
             }
         }

-        var isArray:Boolean = className == "Array";
-        if (dynamic)
+        //TODO this seems slightly fragile, why not use the 'is' operator?
+        var isArray:Boolean = (className == "Array");
+        var isDict:Boolean  = (className == "flash.utils::Dictionary");
+
+        if (isDict)
+        {
+            // dictionaries can have multiple keys of the same type,
+            // (they can index by reference rather than QName, String, or number),
+            // which cannot be looked up by QName, so use references to the actual key
+            for (var key:* in obj)
+            {
+                propertyNames.push(key);
+            }
+        }
+        else if (dynamic)
         {
             for (var p:String in obj)
             {
@@ -827,7 +889,7 @@
                     {
                          var pi:Number = parseInt(p);
                          if (isNaN(pi))
-                             propertyNames.push(new QName("", p));
+                            propertyNames.push(new QName("", p));
                          else
                             propertyNames.push(pi);
                     }
@@ -840,7 +902,7 @@
             numericIndex = isArray && !isNaN(Number(p));
         }

-        if (className == "Object" || isArray)
+        if (isArray || isDict || className == "Object")
         {
             // Do nothing since we've already got the dynamic members
         }
@@ -926,15 +988,23 @@

         propertyNames.sort(Array.CASEINSENSITIVE |
                            (numericIndex ? Array.NUMERIC : 0));
-        // remove any duplicates, i.e. any items that can't be distingushed by toString()
-        for (i = 0; i < propertyNames.length - 1; i++)
-        {
-            // the list is sorted so any duplicates should be adjacent
-            // two properties are only equal if both the uri and local name are identical
-            if (propertyNames[i].toString() == propertyNames[i + 1].toString())
-            {
-                propertyNames.splice(i, 1);
-                i--; // back up
+
+        // dictionary keys can be indexed by an object reference
+        // there's a possibility that two keys will have the same toString()
+        // so we don't want to remove dupes
+        if (!isDict)
+        {
+            // for Arrays, etc., on the other hand...
+            // remove any duplicates, i.e. any items that can't be distingushed by toString()
+            for (i = 0; i < propertyNames.length - 1; i++)
+            {
+                // the list is sorted so any duplicates should be adjacent
+                // two properties are only equal if both the uri and local name are identical
+                if (propertyNames[i].toString() == propertyNames[i + 1].toString())
+                {
+                    propertyNames.splice(i, 1);
+                    i--; // back up
+                }
             }
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3509
Author:   jimurphy@adobe.com
Date:     2008-10-07T18:19:17.646255Z

Log Message:
-----------
Rename of flex -> mx.

For compatibility reasons it was decided that the new functionality remain integrated with the old framework, although we will continue to build two separate SWCs, one with primarily existing framework classes, and one with new Flex 4 classes. This change removes duplicate names from the Flex 4 framework to avoid class name overlapping with the old framework code.  The naming overlap consists of two major areas:  New Components, and New Effects

Modified Paths:
--------------
386 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/SetAction.as
+++ frameworks/projects/spark/src/spark/effects/SetAction.as
@@ -9,10 +9,10 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package flex.effects
+package mx.effects
 {

-import flex.effects.effectClasses.SetActionInstance;
+import mx.effects.effectClasses.SetActionInstance;

 import mx.effects.Effect;
 import mx.effects.IEffectInstance;
@@ -45,7 +45,7 @@
  *  />
  *  </pre>
  *
- *  @see flex.effects.effectClasses.SetActionInstance
+ *  @see mx.effects.effectClasses.SetActionInstance
  */
 public class SetAction extends Effect
 {


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

--- frameworks/projects/automation_flashflexkit/src/mx/core/Version.as
+++ frameworks/projects/automation_flashflexkit/src/mx/core/Version.as
@@ -0,0 +1,19 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+import mx.core.mx_internal;
+
+/**
+ *  @private
+ *  Version string for this class.
+ */
+mx_internal static const VERSION:String = "4.0.0.0";


Transferred from the Adobe Open Source Subversion Repository

Revision: 21594
Author:   deeptika@adobe.com
Date:     2011-07-18T11:39:38.158141Z

Log Message:
-----------
Changing the style setting mechanism in charts (moving to defaults.css) to fix memory leak in charts.
QE notes:
Doc notes:
Bugs: FLEXDMV-2626 (Views with charts not getting GC-ed)
Reviewer:
Tests run: Mustella test suite for charts - cyclone tested by QE
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/charts.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/chartClasses/CartesianChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/chartClasses/ChartBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/AreaSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/BubbleChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/chartClasses/PolarChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/ColumnChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/charts-4.X.0.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/GridLines.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/PieSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/PlotSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/BarChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/CandlestickSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/AreaChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/HLOCSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/AxisRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/LineSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/PieChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/BubbleSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/PlotChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/ColumnSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/CandlestickChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/charts-3.0.0.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/HLOCChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/LineChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/BarSeries.as</path>

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

--- frameworks/projects/charts/src/mx/charts/chartClasses/ChartBase.as
+++ frameworks/projects/charts/src/mx/charts/chartClasses/ChartBase.as
@@ -52,6 +52,7 @@
 import mx.graphics.IFill;
 import mx.graphics.IStroke;
 import mx.graphics.SolidColor;
+import mx.graphics.SolidColorStroke;
 import mx.graphics.Stroke;
 import mx.managers.DragManager;
 import mx.managers.IFocusManagerComponent;
@@ -1856,21 +1857,12 @@
     private function initStyles():Boolean
     {
         HaloDefaults.init(styleManager);
-
-        var chartBaseFill:IFill = IFill(new SolidColor(0xFFFFFF, 0));
-
-        var selector:CSSStyleDeclaration =
-            HaloDefaults.createSelector("mx.charts.chartClasses.ChartBase", styleManager);
-
-        selector.defaultFactory = function():void
-        {
-            this.chartSeriesStyles = HaloDefaults.chartBaseChartSeriesStyles;
-            this.fill = chartBaseFill;
-            this.calloutStroke = new Stroke(0x888888,2);
-            this.dataTipRenderer = DataTip;
-            this.fontSize = 10;
-        }
-
+
+		var chartBaseStyle:CSSStyleDeclaration = styleManager.getStyleDeclaration("mx.charts.chartClasses.ChartBase");
+		chartBaseStyle.setStyle("chartSeriesStyles", HaloDefaults.chartBaseChartSeriesStyles);
+		chartBaseStyle.setStyle("fill", new SolidColor(0xFFFFFF, 0));
+		chartBaseStyle.setStyle("calloutStroke", new SolidColorStroke(0x888888,2));
+
         return true;
     }


FLEX-34285 fix issue with remove

FLEX-34285 fix issue with remove

--- frameworks/projects/framework/src/mx/collections/XMLListAdapter.as
+++ frameworks/projects/framework/src/mx/collections/XMLListAdapter.as
@@ -420,7 +420,7 @@
 	 */
 	public function removeItem( item:Object ):Boolean
 	{
-		var _item:Object = removeItemAt[getItemIndex(item)];
+		var _item:Object = removeItemAt(getItemIndex(item));
 		return _item != null;
 	}


FLEX-33893 CSS memory / performance fix

FLEX-33893 CSS memory / performance fix

--- frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as
+++ frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as
@@ -113,6 +113,11 @@
      *  @private
      */
     private static const FILTERMAP_PROP:String = "__reserved__filterMap";
+
+    /**
+     *  @private
+     */
+    private static var emptyObjectFactory:Function = function():void {};

     //--------------------------------------------------------------------------
     //
@@ -934,9 +939,6 @@
             if (addedParentStyleToProtoChain)
             {
                 // There are parent styles so create an empty node.
-                var emptyObjectFactory:Function = function():void
-                {
-                };
                 emptyObjectFactory.prototype = chain;
                 chain = new emptyObjectFactory();
                 emptyObjectFactory.prototype = null;
@@ -994,10 +996,8 @@

         // If there's a factory for this style sheet,
         // then add the object it produces to the chain.
-        var objectFactory:Object = null;
         if (factory != null)
         {
-            objectFactory = new factory();
             factory.prototype = chain;
             chain = new factory();
             factory.prototype = null;
@@ -1013,9 +1013,6 @@
             // of the chain.
             if (factory == null)
             {
-                var emptyObjectFactory:Function = function():void
-                {
-                };
                 emptyObjectFactory.prototype = chain;
                 chain = new emptyObjectFactory();
                 emptyObjectFactory.prototype = null;
@@ -1052,12 +1049,9 @@
     {
         var filteredChain:Object = {};
         // Create an object on the head of the chain using the original chain
-        var filterObjectFactory:Function = function():void
-        {
-        };
-        filterObjectFactory.prototype = originalChain;
-        filteredChain = new filterObjectFactory();
-        filterObjectFactory.prototype = null;
+        emptyObjectFactory.prototype = originalChain;
+        filteredChain = new emptyObjectFactory();
+        emptyObjectFactory.prototype = null;

         for (var i:String in chain)
         {


Transferred from the Adobe Open Source Subversion Repository

Revision: 5412
Author:   cframpto@adobe.com
Date:     2009-03-19T13:04:04.644768Z

Log Message:
-----------
setSelection again.  I found the correct API to use to update just the selection on the display (which doesn't trigger the damage handler).

QE Notes: test SDK-20096 and SDK-16010
Doc Notes:
Bugs: SDK-20096
Reviewers: will be Gordon

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -2251,8 +2251,10 @@
             _selectable = true;
         }

-        // The damage handler will update the display.
         textFlow.interactionManager.setSelection(anchorPosition, activePosition);
+
+        // Update the display with the new selection.
+        textFlow.interactionManager.refreshSelection();
       }

     /**


??????? null ??toString ??? bug

??????? null ??toString ??? bug

--- as3/com/netease/protobuf/messageToString.as
+++ as3/com/netease/protobuf/messageToString.as
@@ -35,8 +35,8 @@
 		return ""
 	}
 	var field:* = message[name]
-	if (field.constructor == Array && field.length == 0) {
+	if (field != null && field.constructor == Array && field.length == 0) {
 		return ""
 	}
-	return name + "=" + message[name] + ";\n"
+	return name + "=" + field + ";\n"
 }


Reformatted

Reformatted

--- sh/saqoo/util/ArrayUtil.as
+++ sh/saqoo/util/ArrayUtil.as
@@ -1,35 +1,49 @@
-package sh.saqoo.util {
-
-
-	public class ArrayUtil {
+package sh.saqoo.util
+{
+    /**
+     * @author Saqoosha
+     */
+    public class ArrayUtil
+    {
+        /**
+         * Fisher-Yates shuffle
+         * @see http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
+         */
+        public static function shuffle(arrayOrVector:*):*
+        {
+            var n:int = arrayOrVector.length;
+            var i:int;
+            var tmp:*;
+            while (n)
+            {
+                i = Math.random() * n;
+                tmp = arrayOrVector[--n];
+                arrayOrVector[n] = arrayOrVector[i];
+                arrayOrVector[i] = tmp;
+            }
+            return arrayOrVector;
+        }

-
-		public static function shuffle(arrayOrVector:*):* {
-			var n:int = arrayOrVector.length;
-			var i:int;
-			var tmp:*;
-			while (n) {
-				i = Math.random() * n;
-				tmp = arrayOrVector[--n];
-				arrayOrVector[n] = arrayOrVector[i];
-				arrayOrVector[i] = tmp;
-			}
-			return arrayOrVector;
-		}
+		/**
+		 *
+		 */
+        public static function fromArguments(arg:Object):Array
+        {
+            var arr:Array = [];
+            var n:int = arg.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                arr.push(arg[i]);
+            }
+            return arr;
+        }

-
-		public static function fromArguments(arg:Object):Array {
-			var arr:Array = [];
-			var n:int = arg.length;
-			for (var i:int = 0; i < n; i++) {
-				arr.push(arg[i]);
-			}
-			return arr;
-		}
-
-
-		public static function fromVector(vector:*):Array {
-			return fromArguments(vector);
-		}
-	}
+		/**
+		 *
+		 */
+        public static function fromVector(vector:*):Array
+        {
+            return fromArguments(vector);
+        }
+    }
 }


Re-added delay adder tut

Re-added delay adder tut

--- src/Levels/Level.as
+++ src/Levels/Level.as
@@ -87,12 +87,17 @@

 			levels.push(WIRE_TUT, MOD_TUT, ACC_TUT, INSTR_TUT);

+			var D0_TUT:Level = new Level("Delay 1", new WireTutorialGoal(15), true,
+										 [Adder, DataWriter], [], [new ConstIn(12, 16, 1)]);
+			D0_TUT.predecessors.push(ACC_TUT);
 			var D1_TUT:Level = new Level("Delay 2A: Basic Acc.", new MagicAccumDelayTutGoal, true,
 										 [ConstIn, Adder, Latch, MagicWriter, SysDelayClock]);
-			D1_TUT.predecessors.push(ACC_TUT);
+			D1_TUT.predecessors.push(D0_TUT);
 			var D2_TUT:Level = new Level("Delay 2B: Full Acc.", new AccumDelayTutGoal, true,
 										 [ConstIn, Adder, Latch, DataMemory, SysDelayClock]);
 			D2_TUT.predecessors.push(D1_TUT);
+
+			levels.push(D0_TUT, D1_TUT, D2_TUT);

 			var addCPU:Level = new ShardLevel("Add-CPU", "Make a basic CPU!", LevelShard.CORE);
 			addCPU.predecessors.push(INSTR_TUT, OP_TUT);
@@ -132,6 +137,7 @@
 			columns.push(makeVec([ACC_TUT]));
 			columns.push(makeVec([INSTR_TUT, OP_TUT]));
 			columns.push(makeVec([addCPU, cpuJMP, cpuADV, cpuLD]));
+			columns.push(makeVec([D0_TUT]));
 			columns.push(makeVec([D1_TUT]));
 			columns.push(makeVec([D2_TUT]));
 			columns.push(makeVec([addCPU_D, cpuADVLDD]));


currentFPS added to the debug info

currentFPS added to the debug info

--- KalturaHLSPlugin/src/com/kaltura/kdpfl/plugin/KalturaHLSMediator.as
+++ KalturaHLSPlugin/src/com/kaltura/kdpfl/plugin/KalturaHLSMediator.as
@@ -29,9 +29,10 @@
 		private var _subtitleTrait:SubtitleTrait;
 		private var _loadTrait:NetStreamLoadTrait;
 		private var _dynamicTrait:DynamicStreamTrait;
-		private var _bufferLength:Number;
-		private var _droppedFrames:Number;
+		private var _bufferLength:Number = -1;
+		private var _droppedFrames:Number = -1;
 		private var _currentBitrateValue:Number;
+		private var _currentFPS:Number = -1;

 		public function KalturaHLSMediator( viewComponent:Object=null)
 		{
@@ -136,8 +137,9 @@
 			if (!trait)
 				return;

-			_bufferLength = trait.netStream.bufferLength | 0;
-			_droppedFrames = trait.netStream.info.droppedFrames;
+			_bufferLength = trait.netStream ? trait.netStream.bufferLength : -1;
+			_droppedFrames = trait.netStream ? trait.netStream.info.droppedFrames : -1;
+			_currentFPS = trait.netStream ? trait.netStream.currentFPS : -1;
 		}

 		protected function setupDynamicStreamTrait(trait:DynamicStreamTrait):void
@@ -150,20 +152,27 @@
 		protected function sendHLSDebug(debugInfo:Object):void
 		{
 			//check for buffer and droppedFrames values
-			if ( _bufferLength != _loadTrait.netStream.bufferLength ){
-				_bufferLength = _loadTrait.netStream.bufferLength;
-				debugInfo['bufferLength'] = _bufferLength;
-			}
-
-			if ( _droppedFrames != _loadTrait.netStream.info.droppedFrames ){
-				_droppedFrames = _loadTrait.netStream.info.droppedFrames;
-				debugInfo['droppedFrames'] = _droppedFrames;
-			}
-
-			if( _currentBitrateValue != _dynamicTrait.getBitrateForIndex(_dynamicTrait.currentIndex) ){
-				_currentBitrateValue = _dynamicTrait.getBitrateForIndex(_dynamicTrait.currentIndex);
-				debugInfo['currentBitrate'] = _currentBitrateValue;
-			}
+			if ( _loadTrait && _loadTrait.netStream ){
+				if ( _bufferLength != _loadTrait.netStream.bufferLength ){
+					_bufferLength = _loadTrait.netStream.bufferLength;
+					debugInfo['bufferLength'] = _bufferLength;
+					}
+
+				if ( _droppedFrames != _loadTrait.netStream.info.droppedFrames ){
+					_droppedFrames = _loadTrait.netStream.info.droppedFrames;
+					debugInfo['droppedFrames'] = _droppedFrames;
+					}
+
+				if ( _currentFPS != _loadTrait.netStream.currentFPS ){
+					_currentFPS = _loadTrait.netStream.currentFPS;
+					debugInfo['FPS'] = _currentFPS;
+					}
+				}
+
+				if( _dynamicTrait && _currentBitrateValue != _dynamicTrait.getBitrateForIndex(_dynamicTrait.currentIndex) ){
+					_currentBitrateValue = _dynamicTrait.getBitrateForIndex(_dynamicTrait.currentIndex);
+					debugInfo['currentBitrate'] = _currentBitrateValue;
+				}

 			sendNotification("debugInfoReceived", debugInfo);
 		}


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

--- frameworks/projects/mx/src/mx/accessibility/TreeAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/TreeAccImpl.as
@@ -0,0 +1,581 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.accessibility
+{
+
+import flash.accessibility.Accessibility;
+import flash.events.Event;
+import mx.collections.ICollectionView;
+import mx.collections.CursorBookmark;
+import mx.collections.IViewCursor;
+import mx.controls.Tree;
+import mx.controls.listClasses.IListItemRenderer;
+import mx.controls.treeClasses.HierarchicalCollectionView;
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+import mx.events.TreeEvent;
+
+use namespace mx_internal;
+
+/**
+ *  The TreeAccImpl class is the accessibility class for Tree.
+ *
+ *  @helpid 3009
+ *  @tiptext This is the Tree Accessibility Class.
+ *  @review
+ */
+public class TreeAccImpl extends AccImpl
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class initialization
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Static variable triggering the hookAccessibility() method.
+	 *  This is used for initializing TreeAccImpl class to hook its
+	 *  createAccessibilityImplementation() method to Tree class
+	 *  before it gets called from UIComponent.
+	 */
+	private static var accessibilityHooked:Boolean = hookAccessibility();
+
+	/**
+	 *  @private
+	 *  Static method for swapping the createAccessibilityImplementation()
+	 *  method of Tree with the TreeAccImpl class.
+	 */
+	private static function hookAccessibility():Boolean
+	{
+		Tree.createAccessibilityImplementation =
+			createAccessibilityImplementation;
+
+		return true;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Role of treeItem.
+	 */
+	private static const ROLE_SYSTEM_OUTLINEITEM:uint = 0x24;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_COLLAPSED:uint = 0x00000400;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_EXPANDED:uint = 0x00000200;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_FOCUSED:uint = 0x00000004;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_INVISIBLE:uint = 0x00008000;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_SELECTABLE:uint = 0x00200000;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_SELECTED:uint = 0x00000002;
+
+	/**
+	 *  @private
+	 *  Event emitted if 1 item is selected.
+	 */
+	private static const EVENT_OBJECT_FOCUS:uint = 0x8005;
+
+	/**
+	 *  @private
+	 *  Event emitted if 1 item is selected.
+	 */
+	private static const EVENT_OBJECT_SELECTION:uint = 0x8006;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_OBJECT_STATECHANGE:uint = 0x800A;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Method for creating the Accessibility class.
+	 *  This method is called from UIComponent.
+	 *  @review
+	 */
+	mx_internal static function createAccessibilityImplementation(
+								component:UIComponent):void
+	{
+		component.accessibilityImplementation =
+			new TreeAccImpl(component);
+	}
+
+	/**
+	 *  Method call for enabling accessibility for a component.
+	 *  This method is required for the compiler to activate
+	 *  the accessibility classes for a component.
+	 */
+	public static function enableAccessibility():void
+	{
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @param master The UIComponent instance that this AccImpl instance
+	 *  is making accessible.
+	 */
+	public function TreeAccImpl(master:UIComponent)
+	{
+		super(master);
+
+		role = 0x23;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden properties: AccImpl
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  eventsToHandle
+	//----------------------------------
+
+	/**
+	 *  @private
+	 *	Array of events that we should listen for from the master component.
+	 */
+	override protected function get eventsToHandle():Array
+	{
+		return super.eventsToHandle.concat(
+			[ "change", TreeEvent.ITEM_OPEN, TreeEvent.ITEM_CLOSE ]);
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: AccessibilityImplementation
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Gets the role for the component.
+	 *
+	 *  @param childID children of the component
+	 */
+	override public function get_accRole(childID:uint):uint
+	{
+		if (childID == 0)
+			return role;
+
+		return ROLE_SYSTEM_OUTLINEITEM;
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for returning the value of the TreeItem/Tree
+	 *  which is spoken out by the screen reader
+	 *  The Tree should return the name of the currently selected item
+	 *  with m of n string with level info as value when focus moves to Tree.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return Name String
+	 *  @review
+	 */
+	override public function get_accValue(childID:uint):String
+	{
+		var accValue:String;
+
+		var tree:Tree = Tree(master);
+		var index:int;
+		var item:Object;
+
+		if (childID == 0)
+		{
+			index = tree.selectedIndex;
+			if (index > -1)
+			{
+				item = getItemAt(index);
+				if (!item)
+					return accValue;
+
+				if (tree.itemToLabel(item))
+					accValue = tree.itemToLabel(item)
+
+				accValue += getMOfN(item);
+			}
+		}
+		else
+		{
+			// Assuming childID is always ItemID + 1
+			// because getChildIDArray is not always invoked.
+			index = childID - 1;
+
+			item = getItemAt(index);
+			if (!item)
+				return accValue;
+
+			accValue = tree.getItemDepth(item, index - tree.verticalScrollPosition) + "";
+		}
+
+		return accValue;
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for returning the state of the TreeItem.
+	 *  States are predefined for all the components in MSAA.
+	 *  Values are assigned to each state.
+	 *  Depending upon the treeItem being Selected, Selectable,
+	 *  Invisible, Offscreen, a value is returned.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return State uint
+	 */
+	override public function get_accState(childID:uint):uint
+	{
+		var accState:uint = getState(childID);
+
+		if (childID > 0)
+		{
+			var tree:Tree = Tree(master);
+
+			var index:int = childID - 1;
+
+			// For returning states (OffScreen and Invisible)
+			// when the list Item is not in the displayed rows.
+			if (index < tree.verticalScrollPosition ||
+				index >= tree.verticalScrollPosition + tree.rowCount)
+			{
+				accState |= STATE_SYSTEM_INVISIBLE;
+			}
+			else
+			{
+				accState |= STATE_SYSTEM_SELECTABLE;
+
+				var item:Object = getItemAt(index);
+
+				if (item && tree.dataDescriptor.isBranch(item, tree.dataProvider))
+				{
+					if (tree.isItemOpen(item))
+						accState |= STATE_SYSTEM_EXPANDED;
+					else
+						accState |= STATE_SYSTEM_COLLAPSED;
+				}
+
+				var renderer:IListItemRenderer =
+					tree.itemToItemRenderer(item);
+
+				if (renderer != null && tree.isItemSelected(renderer.data))
+					accState |= STATE_SYSTEM_SELECTED | STATE_SYSTEM_FOCUSED;
+			}
+		}
+		return accState;
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for returning the Default Action.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return name of default action.
+	 */
+	override public function get_accDefaultAction(childID:uint):String
+	{
+		if (childID == 0)
+			return null;
+
+		var tree:Tree = Tree(master);
+
+		var item:Object = getItemAt(childID - 1);
+		if (!item)
+			return null;
+
+		if (tree.dataDescriptor.isBranch(item, tree.dataProvider))
+			return tree.isItemOpen(item) ? "Collapse" : "Expand";
+
+		return null;
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for executing the Default Action.
+	 *
+	 *  @param childID uint
+	 */
+	override public function accDoDefaultAction(childID:uint):void
+	{
+		var tree:Tree = Tree(master);
+
+		if (childID == 0 || !tree.enabled)
+			return;
+
+		var item:Object = getItemAt(childID - 1);
+		if (!item)
+			return;
+
+		if (tree.dataDescriptor.isBranch(item, tree.dataProvider))
+			tree.expandItem(item, !tree.isItemOpen(item));
+	}
+
+ 	/**
+	 *  @private
+	 *  Method to return an array of childIDs.
+	 *
+	 *  @return Array
+	 */
+	override public function getChildIDArray():Array
+	{
+		var childIDs:Array = [];
+
+		if (Tree(master).dataProvider)
+		{
+			var n:int = Tree(master).collectionLength;
+			for (var i:int = 0; i < n; i++)
+			{
+				childIDs[i] = i + 1;
+			}
+		}
+		return childIDs;
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for returning the bounding box of the TreeItem.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return Location Object
+	 */
+	override public function accLocation(childID:uint):*
+	{
+		var tree:Tree = Tree(master);
+
+		var index:int = childID - 1;
+
+		if (index < tree.verticalScrollPosition ||
+			index >= tree.verticalScrollPosition + tree.rowCount)
+		{
+			return null;
+		}
+
+		return tree.itemToItemRenderer(getItemAt(index));
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for returning the childFocus of the List.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return focused childID.
+	 */
+	override public function get_accFocus():uint
+	{
+		var index:int = Tree(master).selectedIndex;
+
+		return index >= 0 ? index + 1 : 0;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: AccImpl
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  method for returning the name of the TreeItem/Tree
+	 *  which is spoken out by the screen reader
+	 *  The TreeItem should return the label as the name
+	 *  with m of n string with level info and
+	 *  Tree should return the name specified in the Accessibility Panel.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return Name String
+	 *  @review
+	 */
+	override protected function getName(childID:uint):String
+	{
+		if (childID == 0)
+			return "";
+
+		var name:String = "";
+
+		var tree:Tree = Tree(master);
+
+		// Assuming childID is always ItemID + 1
+		// because getChildIDArray is not always invoked.
+		var index:int = childID - 1;
+
+		var item:Object = getItemAt(childID - 1);
+		if (!item)
+			return name;
+
+		if (tree.itemToLabel(item))
+			name = tree.itemToLabel(item);
+
+		name += getMOfN(item);
+
+		return name;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+
+	private function getItemAt(index:int):Object
+	{
+		var iterator:IViewCursor = Tree(master).collectionIterator;
+		iterator.seek(CursorBookmark.FIRST, index);
+		return iterator.current;
+	}
+
+	/**
+	 *  @private
+	 *  Local method to return m of n String.
+	 *
+	 *  @param item Object
+	 *
+	 *  @return string.
+	 */
+	private function getMOfN(item:Object):String
+	{
+		var tree:Tree = Tree(master);
+		var i:int = 0;
+		var n:int = 0;
+
+		var view:HierarchicalCollectionView = HierarchicalCollectionView(tree.wrappedCollection);
+
+		var parent:Object = view.getParentItem(item);
+		if (parent)
+		{
+			var childNodes:ICollectionView =
+				tree.dataDescriptor.getChildren(parent, tree.collectionIterator.view);
+
+			if (childNodes)
+			{
+				n = childNodes.length;
+				for (i = 0; i < n; i++)
+				{
+					if (item == childNodes[i])
+						break;
+				}
+			}
+		}
+		else
+		{
+			var cursor:IViewCursor = ICollectionView(tree.collectionIterator.view).createCursor();
+			while (!cursor.afterLast)
+			{
+				if (item == cursor.current)
+					i = n;
+				n++;
+				cursor.moveNext();
+			}
+		}
+
+		if (i == n)
+			i = 0;
+
+		// Make it 1-based.
+		if (n > 0)
+			i++;
+
+		return ", " + i + " of " + n;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden event handlers: AccImpl
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Override the generic event handler.
+	 *  All AccImpl must implement this
+	 *  to listen for events from its master component.
+	 */
+	override protected function eventHandler(event:Event):void
+	{
+		var index:int = Tree(master).selectedIndex;
+
+		var childID:uint = index + 1;
+
+		switch (event.type)
+		{
+			case "change":
+			{
+				if (index >= 0)
+				{
+					Accessibility.sendEvent(master, childID,
+											EVENT_OBJECT_FOCUS);
+
+					Accessibility.sendEvent(master, childID,
+											EVENT_OBJECT_SELECTION);
+				}
+				break;
+			}
+
+			case TreeEvent.ITEM_OPEN:
+			case TreeEvent.ITEM_CLOSE:
+			{
+				if (index >= 0)
+				{
+					Accessibility.sendEvent(master, childID,
+											EVENT_OBJECT_STATECHANGE);
+				}
+				break;
+			}
+		}
+	}
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 16937
Author:   smgilson@adobe.com
Date:     2010-07-15T16:35:17.543693Z

Log Message:
-----------
Add ASDoc comment about using component in an item renderer

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RadioButtonGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ComboBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Button.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ToggleButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Image.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>

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

--- frameworks/projects/spark/src/spark/components/CheckBox.as
+++ frameworks/projects/spark/src/spark/components/CheckBox.as
@@ -59,9 +59,9 @@
  *  the CheckBox component sets its selected property
  *  to true for checked, and to false for unchecked.

  *
- *
An item renderer lets you customize the display of a list-based component,
- *  such as a List or DataGrid control.
- *  For information about using this component in an item renderer, see
+ *
To use this component in a list-based component, such as a List or DataGrid,
+ *  create an item renderer.
+ *  For information about creating an item renderer, see
  *
  *  Custom Spark item renderers.

  *