Transferred from the Adobe Open Source Subversion Repository

Revision: 3935
Author:   hmuller@adobe.com
Date:     2008-10-28T23:06:19.450100Z

Log Message:
-----------
Fix for 17281, 17751, 17765, and PARB changes: ClipContent now defaults to false, defined ScrollUnit enum and changed IViewport ScrollPositionDelta methods to use it.   Added "get" prefix to the ScrollPositionDelta methods.

Changed the default value of the clipContent property in GroupBase
and FxContainer from true to false.

Scroller now sets the clipContent of its viewport to true.

Removed clipContent="false" from spark skins, since false is
now the default.

Removed a clipContent="false" hack from CircularScrollbar test.

Removed calls to updateScrollRect from layout updateDisplayList()
methods, since the scrollRect is no longer contingent on
the value of the contentWidth,Height properties.  To keep
the scrollRect in sync with a component's size, we call
layout.updateScrollRect() in GroupBase::updateDisplayList()
and FxContainer::updateDisplayList().

Revised (simplified) the LayoutBase::updateScrollRect ASDoc.

Provisional change to make the FxContainer clipContent property work
correctly.

LayoutBase method renames per PARB feedback:
verticalScrollPositionDelta() => getVerticalScrollPositionDelta()
horizontalScrollPositionDelta() => getHorizontalScrollPositionDelta()

Defined a new mx.core.ScrollUnit enum per PARB feedback.  The
IViewport getHorizontal,VerticalScrollPositionDelta() methods now take
a ScrollUnit type argument, instead of a (character code) uint.

QE Notes: clipContent and ScrollUnit changes will break tests
Doc Notes: None
Bugs: sdk-17751, sdk-17257, sdk-17765
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxVSliderThumbSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/IViewport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/ScrollUnit.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxCheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxHSliderThumbSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxRadioButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxContainer.as</path>

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

--- frameworks/projects/spark/src/spark/core/IViewport.as
+++ frameworks/projects/spark/src/spark/core/IViewport.as
@@ -19,14 +19,26 @@
     function get height():Number;

     /**
-     * The positive extent of the content, relative to the 0,0
-     * origin, along the X axis.
+     *  The positive extent of the content, relative to the 0,0
+     *  origin, along the X axis.
+     *
+     *  The value of this property is defined relative to the container's
+     *  coordinate system.
+     *
+     *  Implementations of this property must be Bindable and
+     *  they must generate events of type "propertyChange".
      */
     function get contentWidth():Number;

     /**
-     * The positive extent of the content, relative to the 0,0
-     * origin, along the Y axis.
+     *  The positive extent of the content, relative to the 0,0
+     *  origin, along the Y axis.
+     *
+     *  The value of this property is defined relative to the container's
+     *  coordinate system.
+     *
+     *  Implementations of this property must be Bindable and
+     *  they must generate events of type "propertyChange".
      */
     function get contentHeight():Number;

@@ -42,6 +54,9 @@
      *  Where width and height are properties
      *  of the target.
      *
+     *  Implementations of this property must be Bindable and
+     *  they must generate events of type "propertyChange".
+     *
      *  @default 0
      *  @see target
      *  @see verticalScrollPosition
@@ -61,6 +76,9 @@
      *  Where width and height are properties
      *  of the target.
      *
+     *  Implementations of this property must be Bindable and
+     *  they must generate events of type "propertyChange".
+     *
      *  @default 0
      *  @see horizontalScrollPosition
      */
@@ -77,7 +95,7 @@
      *  To scroll by a single row use UP or DOWN and to scroll to the
      *  first or last row, use HOME or END.
      */
-    function horizontalScrollPositionDelta(unit:uint):Number
+    function getHorizontalScrollPositionDelta(unit:ScrollUnit):Number

     /**
      *  Returns the amount one would have to add to the viewport's current
@@ -89,18 +107,18 @@
      *  To scroll by a single row use UP or DOWN and to scroll to the
      *  first or last row, use HOME or END.
      */
-    function verticalScrollPositionDelta(unit:uint):Number
+    function getVerticalScrollPositionDelta(unit:ScrollUnit):Number

     /**
-     *  When scrolling is enabled, clip the target's contents by
-     *  setting its scrollRect.  If this property is set to false,
-     *  then the target's scrollRect will be null, even if its
-     *  scrollPosition is non-zero or its content size is larger
-     *  than its actual size.
+     *  If true then clip the viewport's contents by setting its scrollRect
+     *  to a rectangle with origin at horizontalScrollPosition,
+     *  verticalScrollPosition and width and height equal to the
+     *  viewport's width and height.
      *
-     *  @default true
-     *  @see target
-     *  @see updateScrollRect
+     *  If false, the scrollRect is set to null.
+     *
+     *  @default false
+     *  @see LayoutBase#updateScrollRect
      *  @see verticalScrollPosition
      *  @see horizontalScrollPosition
      */


Clean up LayerCreator.

Clean up LayerCreator.

--- src/com/esri/viewer/managers/LayerCreator.as
+++ src/com/esri/viewer/managers/LayerCreator.as
@@ -125,20 +125,11 @@
         if (layerCreationProperties.showInLegend
             && layerCreationProperties.showInLegendHiddenLayers)
         {
-            var hiddenLayers:Array = layerCreationProperties.showInLegendHiddenLayers.split(",");
-            for (var i:int = 0; i < hiddenLayers.length; i++)
-            {
-                hiddenLayers[i] = Number(hiddenLayers[i]); // convert to Numbers
-            }
-            tiledLayer.showInLegendHiddenLayers = hiddenLayers;
+            tiledLayer.showInLegendHiddenLayers = toNumericArray(layerCreationProperties.showInLegendHiddenLayers.split(","));
         }
         if (layerCreationProperties.displayLevels)
         {
-            tiledLayer.displayLevels = layerCreationProperties.displayLevels.split(",");
-            for (var i:int = 0; i < tiledLayer.displayLevels.length; i++)
-            {
-                tiledLayer.displayLevels[i] = Number(tiledLayer.displayLevels[i]); // convert to Numbers
-            }
+            tiledLayer.displayLevels = toNumericArray(layerCreationProperties.displayLevels.split(","));
         }
         if (layerCreationProperties.proxyUrl && layerCreationProperties.useProxy)
         {
@@ -153,6 +144,16 @@
             tiledLayer.maxScale = layerCreationProperties.maxScale;
         }
         return tiledLayer;
+    }
+
+    private static function toNumericArray(textualNumberArray:Array):Array
+    {
+        var numericArray:Array = [];
+        for (var i:int = 0; i < textualNumberArray.length; i++)
+        {
+            numericArray.push(Number(textualNumberArray[i]));
+        }
+        return numericArray;
     }

     private static function createDynamicLayer(layerCreationProperties:LayerCreationProperties):ArcGISDynamicMapServiceLayer
@@ -175,12 +176,7 @@
         if (layerCreationProperties.showInLegend
             && layerCreationProperties.showInLegendHiddenLayers)
         {
-            var hiddenLayers:Array = layerCreationProperties.showInLegendHiddenLayers.split(",");
-            for (var i:int = 0; i < hiddenLayers.length; i++)
-            {
-                hiddenLayers[i] = Number(hiddenLayers[i]); // convert to Numbers
-            }
-            dynLayer.showInLegendHiddenLayers = hiddenLayers;
+            dynLayer.showInLegendHiddenLayers = toNumericArray(layerCreationProperties.showInLegendHiddenLayers.split(","));
         }
         if (layerCreationProperties.autoRefresh > 0)
         {
@@ -192,12 +188,7 @@
         }
         if (layerCreationProperties.visibleLayers)
         {
-            var vizLayers:Array = layerCreationProperties.visibleLayers.split(",");
-            for (var i:int = 0; i < vizLayers.length; i++)
-            {
-                vizLayers[i] = Number(vizLayers[i]); // convert to Numbers
-            }
-            dynLayer.visibleLayers = new ArrayCollection(vizLayers);
+            dynLayer.visibleLayers = new ArrayCollection(toNumericArray(layerCreationProperties.visibleLayers.split(",")));
         }
         if (layerCreationProperties.proxyUrl && layerCreationProperties.useProxy)
         {
@@ -311,11 +302,7 @@
         }
         if (layerCreationProperties.displayLevels)
         {
-            veTiledLayer.displayLevels = layerCreationProperties.displayLevels.split(",");
-            for (var i:int = 0; i < veTiledLayer.displayLevels.length; i++)
-            {
-                veTiledLayer.displayLevels[i] = Number(veTiledLayer.displayLevels[i]); // convert to Numbers
-            }
+            veTiledLayer.displayLevels = toNumericArray(layerCreationProperties.displayLevels.split(","));
         }
         if (!isNaN(layerCreationProperties.minScale))
         {
@@ -350,11 +337,7 @@
         }
         if (layerCreationProperties.bandIds)
         {
-            imgLayer.bandIds = layerCreationProperties.bandIds.split(",");
-            for (var i:int = 0; i < imgLayer.bandIds.length; i++)
-            {
-                imgLayer.bandIds[i] = Number(imgLayer.bandIds[i]); // convert to Numbers
-            }
+            imgLayer.bandIds = toNumericArray(layerCreationProperties.bandIds.split(","));
         }
         if (layerCreationProperties.proxyUrl && layerCreationProperties.useProxy)
         {
@@ -694,11 +677,7 @@
         }
         if (layerCreationProperties.displayLevels)
         {
-            webTiledLayer.displayLevels = layerCreationProperties.displayLevels.split(",");
-            for (var i:int = 0; i < webTiledLayer.displayLevels.length; i++)
-            {
-                webTiledLayer.displayLevels[i] = Number(webTiledLayer.displayLevels[i]); // convert to Numbers
-            }
+            webTiledLayer.displayLevels = toNumericArray(layerCreationProperties.displayLevels.split(","));
         }
         if (!isNaN(layerCreationProperties.minScale))
         {


XIFF-71: Add support for retrieving one's own vCard

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

--- src/org/igniterealtime/xiff/vcard/VCard.as
+++ src/org/igniterealtime/xiff/vcard/VCard.as
@@ -24,16 +24,15 @@
  */
 package org.igniterealtime.xiff.vcard
 {
+	import com.hurlant.util.Base64;
+
 	import flash.display.*;
 	import flash.events.*;
 	import flash.utils.ByteArray;
 	import flash.utils.Timer;
 	import flash.xml.XMLDocument;
-	import flash.xml.XMLNode;
-
-	//import mx.utils.Base64Decoder;
-	import com.hurlant.util.Base64;
-
+
+	import org.igniterealtime.xiff.core.EscapedJID;
 	import org.igniterealtime.xiff.core.UnescapedJID;
 	import org.igniterealtime.xiff.core.XMPPConnection;
 	import org.igniterealtime.xiff.data.IQ;
@@ -52,7 +51,7 @@
 	 * @eventType org.igniterealtime.xiff.events.VCardEvent.AVATAR_SENT
 	 */
 	[Event(name="vcardAvatarSent", type="org.igniterealtime.xiff.events.VCardEvent")]
-
+
 	/**
 	 * @eventType org.igniterealtime.xiff.events.VCardEvent.LOADED
 	 */
@@ -62,14 +61,14 @@
 	 * @eventType org.igniterealtime.xiff.events.VCardEvent.ERROR
 	 */
 	[Event(name="vcardError", type="org.igniterealtime.xiff.events.VCardEvent")]
-
+
 	/**
 	 * @see http://tools.ietf.org/html/rfc2426
 	 */
 	public class VCard extends EventDispatcher
 	{
 		/**
-		 * VCard cache indexed by the UnescapedJID.toString() of the user.
+		 * VCard cache indexed by the UnescapedJID.bareJID of the contact or current user.
 		 */
 		private static var cache:Object = {};

@@ -278,7 +277,7 @@
 		 *
 		 */
 		private var _avatar:DisplayObject;
-
+
 		/**
 		 *
 		 * @hint for saving avatar
@@ -300,7 +299,6 @@
 		 */
 		public function VCard()
 		{
-
 		}

 		/**
@@ -308,10 +306,10 @@
 		 * var vCard:VCard = VCard.getVCard(_connection, item);

 		 * vCard.addEventListener(VCardEvent.LOADED, onVCard);
 		 * @param connection
-		 * @param user
+		 * @param contact (if null, will get current user's vCard)
 		 * @return Reference to the VCard which will be filled once the loaded event occurs.
 		 */
-		public static function getVCard( connection:XMPPConnection, user:RosterItemVO ):VCard
+		public static function getVCard( connection:XMPPConnection, contact:RosterItemVO=null ):VCard
 		{
 			if ( !cacheFlushTimer.running )
 			{
@@ -326,7 +324,7 @@
 				} );
 			}

-			var bareJID:String = user.jid.bareJID;
+			var bareJID:String = contact ? contact.jid.bareJID : connection.jid.bareJID;

 			var cachedCard:VCard = cache[ bareJID ] as VCard;
 			if ( cachedCard )
@@ -335,8 +333,11 @@
 			}

 			var vcard:VCard = new VCard();
-			vcard.contact = user;
-			vcard.jid = user.jid;
+			if( contact )
+			{
+				vcard.contact = contact;
+				vcard.jid = contact.jid;
+			}
 			cache[ bareJID ] = vcard;

 			pushRequest( connection, vcard );
@@ -374,10 +375,11 @@
 			var req:Object = requestQueue.pop();
 			var connection:XMPPConnection = req.connection;
 			var vcard:VCard = req.card;
-			var user:RosterItemVO = vcard.contact;
-
-			var iq:IQ = new IQ( user.jid.escaped, IQ.TYPE_GET );
-			vcard.jid = user.jid;
+			var contact:RosterItemVO = vcard.contact;
+
+			var recipient:EscapedJID = contact ? contact.jid.escaped : null;
+			var iq:IQ = new IQ( recipient, IQ.TYPE_GET );
+			vcard.jid = contact ? contact.jid : connection.jid;

 			iq.callback = vcard.handleVCard;
 			iq.addExtension( new VCardExtension() );
@@ -418,7 +420,7 @@
 		{
 			_imageBytes = value;
 		}
-
+
 		/**
 		 * The image type of the avatar. Used for saving the image.
 		 * If this is blank, the avatar will not be saved.
@@ -427,7 +429,7 @@
 		{
 			_avatarType = value;
 		}
-
+
 		/**
 		 * Deserializes the incoming IQ to fill the values of this vcard.
 		 * @param iq
@@ -436,7 +438,7 @@
 		{
 			namespace ns = "vcard-temp";
 			use namespace ns;
-
+
 			var node:XML = XML( iq.getNode() );
 			var vCardNode:XML = node.children()[ 0 ];

@@ -461,15 +463,8 @@

 							if ( photo.localName() == "BINVAL" && value.length > 0 )
 							{
-								/*
-								var decoder:Base64Decoder = new Base64Decoder();
-								decoder.decode( value );
-								_imageBytes = decoder.flush();
-								*/
-
 								_imageBytes = Base64.decodeToByteArrayB( value );
-								dispatchEvent( new VCardEvent( VCardEvent.AVATAR_LOADED,
-															   this, true, false ) );
+								dispatchEvent( new VCardEvent( VCardEvent.AVATAR_LOADED, this, true, false ) );
 							}
 						}
 						break;
@@ -599,14 +594,14 @@

 					case "AGE":
 						break;
-
+
 					//there is some ambiguity surrounding how vCard versions are handled
 					//so we need to check it here as well as looking for the attribute
 					//as above.  SEE:  http://xmpp.org/extensions/xep-0054.html#impl
 					case "VERSION":
 						version = Number(child.text());
 						break;
-
+
 					default:
 						trace( "handleVCard. unhandled case child.name(): " + child.name() );
 						break;
@@ -620,9 +615,8 @@
 		/**
 		 *
 		 * @param connection
-		 * @param user
-		 */
-		public function saveVCard( connection:XMPPConnection, user:RosterItemVO ):void
+		 */
+		public function saveVCard( connection:XMPPConnection ):void
 		{
 			var id:String = XMPPStanza.generateID( "save_vcard_" );
 			var iq:IQ = new IQ( null, IQ.TYPE_SET, id, _vCardSent );
@@ -792,7 +786,6 @@

 				vcardExtNode.appendChild( homeAddressNode );
 			}
-

 			var phoneNode:XML = <TEL/>;
 			phoneNode.setChildren( <WORK/> );
@@ -830,7 +823,7 @@
 			}

 			phoneNode.setChildren( <HOME/> );
-
+
 			if ( homeCellNumber )
 			{
 				var homeCellNode:XML = phoneNode.copy();
@@ -862,7 +855,7 @@
 				homeVoiceNode.NUMBER = homeVoiceNumber;
 				vcardExtNode.appendChild( homeVoiceNode );
 			}
-
+
 			if ( avatar != null && _avatarType != null)
 			{
 				var avatarNode:XML = <PHOTO/>
@@ -876,7 +869,7 @@
 				{
 					throw new Error("VCard:saveVCard Error encoding bytes " + error.getStackTrace());
 				}
-
+
 				try
 				{
 					var binaryNode:XML = <BINVAL/>;
@@ -891,10 +884,10 @@
 				var typeNode:XML = <TYPE/>;
 				typeNode.appendChild(_avatarType);
 				avatarNode.appendChild(typeNode);
-
+
 				vcardExtNode.appendChild( avatarNode );
 			}
-
+
 			var xmlDoc:XMLDocument = new XMLDocument(vcardExtNode.toString());
 			vcardExt.setNode(xmlDoc.firstChild);
 			//vcardExt.node = vcardExtNode;


I screwed up the sign for the ty component. This is the real deal. Binaries later.

--- tamarin-central/thane/as3src/flash/geom/Matrix.as
+++ tamarin-central/thane/as3src/flash/geom/Matrix.as
@@ -129,7 +129,7 @@
         if (Math.abs(det) < 1E-8) {
             throw new Error("Matrix is singular, can't invert");
         }
-        configure(d/det, -b/det, -c/det, a/det, (c*ty - d*tx) / det, (a*ty - b*tx) / det);
+        configure(d/det, -b/det, -c/det, a/det, (c*ty - d*tx)/det, (b*tx - a*ty)/det);
     }

     /**


Put the default facilitator address inside the SWF.

--- swfcat.as
+++ swfcat.as
@@ -21,6 +21,10 @@
             host: "69.164.193.231",
             port: 9001
         };
+        private const DEFAULT_FACILITATOR_ADDR:Object = {
+            host: "173.255.221.44",
+            port: 9002
+        };

         // Milliseconds.
         private const FACILITATOR_POLL_INTERVAL:int = 10000;
@@ -71,15 +75,15 @@
                 addChild(new BadgeImage());

             fac_spec = this.loaderInfo.parameters["facilitator"];
-            if (!fac_spec) {
-                puts("Error: no \"facilitator\" specification provided.");
-                return;
-            }
-            puts("Facilitator spec: \"" + fac_spec + "\"");
-            fac_addr = parse_addr_spec(fac_spec);
-            if (!fac_addr) {
-                puts("Error: Facilitator spec must be in the form \"host:port\".");
-                return;
+            if (fac_spec) {
+                puts("Facilitator spec: \"" + fac_spec + "\"");
+                fac_addr = parse_addr_spec(fac_spec);
+                if (!fac_addr) {
+                    puts("Error: Facilitator spec must be in the form \"host:port\".");
+                    return;
+                }
+            } else {
+                fac_addr = DEFAULT_FACILITATOR_ADDR;
             }

             main();


FLEX-33657 Stop stepper showing 2 decimal places on windows

--- frameworks/projects/spark/src/spark/components/NumericStepper.as
+++ frameworks/projects/spark/src/spark/components/NumericStepper.as
@@ -796,6 +796,7 @@
             if (dataFormatter == null)
             {
                 dataFormatter = new NumberFormatter();
+				dataFormatter.fractionalDigits = Math.max(0, (stepSize - Math.floor(stepSize)).toString().length - 2);
                 addStyleClient(dataFormatter);
             }


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

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

 package spark.components
 {


Make sure test files are uploaded before publishing them

--- test/src/FRESteamWorksTest.as
+++ test/src/FRESteamWorksTest.as
@@ -159,10 +159,9 @@
 		private function publishFile(e:Event = null):void {
 			if(!Steamworks.isReady) return;

-			var res:Boolean = Steamworks.publishWorkshopFile("test.txt", "", _appId,
-				"Test.txt", "Test.txt", WorkshopConstants.VISIBILITY_Private,
-				["TestTag"], WorkshopConstants.FILETYPE_Community);
-			log("publishWorkshopFile('test.txt' ...) == " + res);
+			// we need to make sure the file has actually been uploaded before we can
+			// call publishWorkshopFile
+			log("fileShare('test.txt') == " + Steamworks.fileShare("test.txt"));
 		}

 		private function toggleFullscreen(e:Event = null):void {
@@ -258,6 +257,14 @@
 					break;
 				case SteamConstants.RESPONSE_OnAchievementStored:
 					log("RESPONSE_OnAchievementStored: "+e.response);
+					break;
+				case SteamConstants.RESPONSE_OnFileShared:
+					log("RESPONSE_OnFileShared: " + e.response);
+					if(e.response != SteamResults.OK) return;
+					apiCall = Steamworks.publishWorkshopFile("test.txt", "", _appId,
+						"Test.txt", "Test.txt", WorkshopConstants.VISIBILITY_Private,
+						["TestTag"], WorkshopConstants.FILETYPE_Community);
+					log("publishWorkshopFile('test.txt' ...) == " + apiCall);
 					break;
 				case SteamConstants.RESPONSE_OnPublishWorkshopFile:
 					log("RESPONSE_OnPublishWorkshopFile: " + e.response);


Use correct app ID for file publishing

Use correct app ID for file publishing

--- test/src/FRESteamWorksTest.as
+++ test/src/FRESteamWorksTest.as
@@ -30,6 +30,7 @@
 		public var tf:TextField;

 		private var _buttonPos:int = 5;
+		private var _appId:uint;

 		public function FRESteamWorksTest()
 		{
@@ -50,7 +51,7 @@
 			Steamworks.addEventListener(SteamEvent.STEAM_RESPONSE, onSteamResponse);
 			NativeApplication.nativeApplication.addEventListener(Event.EXITING, onExit);
 			try {
-				Steamworks.useCrashHandler(480, "1.0", "Feb 20 2013", "21:42:20");
+				//Steamworks.useCrashHandler(480, "1.0", "Feb 20 2013", "21:42:20");
 				if(!Steamworks.init()){
 					log("STEAMWORKS API is NOT available");
 					return;
@@ -58,7 +59,8 @@

 				log("STEAMWORKS API is available\n");
 				log("User ID: " + Steamworks.getUserID());
-				log("App ID: " + Steamworks.getAppID());
+				_appId = Steamworks.getAppID();
+				log("App ID: " + _appId);
 				log("Persona name: " + Steamworks.getPersonaName());
 				log("isCloudEnabledForApp() == "+Steamworks.isCloudEnabledForApp() );
 				log("getFileCount() == "+Steamworks.getFileCount() );
@@ -145,7 +147,7 @@
 		private function publishFile(e:Event = null):void {
 			if(!Steamworks.isReady) return;

-			var res:Boolean = Steamworks.publishWorkshopFile("test.txt", "", 480,
+			var res:Boolean = Steamworks.publishWorkshopFile("test.txt", "", _appId,
 				"Test.txt", "Test.txt", WorkshopConstants.VISIBILITY_Private,
 				["TestTag"], WorkshopConstants.FILETYPE_Community);
 			log("publishWorkshopFile('test.txt' ...) == " + res);


Extend frames averaged in FrameTimer

Extend frames averaged in FrameTimer

--- src/org/flintparticles/common/debug/FrameTimer.as
+++ src/org/flintparticles/common/debug/FrameTimer.as
@@ -58,7 +58,7 @@

 		private function onEnterFrame1( ev:Event ):void
 		{
-			if ( _times.push( getTimer() ) > 9 )
+			if ( _times.push( getTimer() ) > 29 )
 			{
 				removeEventListener( Event.ENTER_FRAME, onEnterFrame1 );
 				addEventListener( Event.ENTER_FRAME, onEnterFrame2, false, 0, true );
@@ -69,7 +69,7 @@
 		{
 			var t:Number;
 			_times.push( t = getTimer() );
-			text = ( Math.round( 10000 / ( t - _times.shift() ) ) ).toString() + " fps";
+			text = ( Math.round( 30000 / ( t - _times.shift() ) ) ).toString() + " fps";
 		}
 	}
 }


Fixed menu not respecting U.SKIP_TUTORIAL

--- src/Menu/MenuState.as
+++ src/Menu/MenuState.as
@@ -15,7 +15,7 @@
 			C.setPrintReady();
 			U.init();

-			if (!U.tutorialState) {
+			if (!U.tutorialState && !U.DEBUG_SKIP_TUT) {
 				FlxG.switchState(new HowToPlayState); return;
 			}


Улучшения

Улучшения

--- src/main/org/shypl/common/util/CollectionUtils.as
+++ src/main/org/shypl/common/util/CollectionUtils.as
@@ -2,30 +2,29 @@
 	import flash.utils.Dictionary;
 	import flash.utils.getDefinitionByName;
 	import flash.utils.getQualifiedClassName;
-
+
 	import org.shypl.common.lang.IllegalArgumentException;
 	import org.shypl.common.lang.NullPointerException;
-	import org.shypl.common.lang.isEquals;

 	public final class CollectionUtils {
-
+
 		public static const VECTOR_CLASS_NAME:String = getQualifiedClassName(Vector);
 		public static const VECTOR_CLASSES_CACHE:Dictionary = new Dictionary();
-
+
 		public static function isVector(collection:Object):Boolean {
 			if (collection === null) {
 				throw new NullPointerException();
 			}
 			return isVector0(collection);
 		}
-
+
 		public static function isArrayOrVector(collection:Object):Boolean {
 			if (collection === null) {
 				throw new NullPointerException();
 			}
 			return collection is Array || isVector0(collection);
 		}
-
+
 		public static function isEmpty(collectionOrObject:Object):Boolean {
 			if (collectionOrObject === null) {
 				return true;
@@ -33,16 +32,16 @@
 			if (collectionOrObject is Array || isVector0(collectionOrObject)) {
 				return collectionOrObject.length === 0;
 			}
-
+
 			for (var k:String in collectionOrObject) {
 				if (collectionOrObject.hasOwnProperty(k)) {
 					return false;
 				}
 			}
-
-			return true;
-		}
-
+
+			return true;
+		}
+
 		public static function isEquals(collectionA:Object, collectionB:Object):Boolean {
 			if (collectionA === collectionB) {
 				return true;
@@ -51,20 +50,20 @@
 				throw new IllegalArgumentException();
 			}
 			var length:uint = collectionA.length;
-
+
 			if (length !== collectionB.length) {
 				return false;
 			}
-
+
 			for (var i:uint = 0; i < length; ++i) {
 				if (!org.shypl.common.lang.isEquals(collectionA[i], collectionB[i])) {
 					return false;
 				}
 			}
-
-			return true;
-		}
-
+
+			return true;
+		}
+
 		public static function isEqualsDeep(collectionA:Object, collectionB:Object):Boolean {
 			if (collectionA === collectionB) {
 				return true;
@@ -73,11 +72,11 @@
 				throw new IllegalArgumentException();
 			}
 			var length:uint = collectionA.length;
-
+
 			if (length !== collectionB.length) {
 				return false;
 			}
-
+
 			for (var i:uint = 0; i < length; ++i) {
 				var a:Object = collectionA[i];
 				var b:Object = collectionB[i];
@@ -85,29 +84,66 @@
 					return false;
 				}
 			}
-
-			return true;
-		}
-
+
+			return true;
+		}
+
+		public static function convert(collection:Object, mapper:Function):Array {
+			var result:Array = [];
+
+			if (isArrayOrVector(collection)) {
+				for each (var element:Object in collection) {
+					result.push(mapper.call(null, element));
+				}
+			}
+			else {
+				//noinspection JSValidateTypes
+				for (var key:Object in collection) {
+					result.push(mapper.call(null, key, collection[key]));
+				}
+			}
+
+			return result;
+		}
+
+		public static function convertToVector(collection:Object, elementClass:Class, mapper:Function):* {
+			const result:Object = createVector(elementClass);
+
+			if (isArrayOrVector(collection)) {
+				for each (var element:Object in collection) {
+					result.push(mapper.call(null, element));
+				}
+			}
+			else {
+				//noinspection JSValidateTypes
+				for (var key:Object in collection) {
+					result.push(mapper.call(null, key, collection[key]));
+				}
+			}
+
+			return result;
+		}
+
+
 		public static function contains(collection:Object, element:Object):Boolean {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
 			return collection.indexOf(element) !== -1;
 		}
-
+
 		public static function addUnique(collection:Object, element:Object):Boolean {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
-
+
 			if (contains(collection, element)) {
 				return false;
 			}
 			collection.push(element);
 			return true;
 		}
-
+
 		public static function shuffle(collection:Object):void {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
@@ -119,7 +155,7 @@
 				collection[i] = item;
 			}
 		}
-
+
 		public static function fill(collection:Object, value:Object):void {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
@@ -128,12 +164,12 @@
 				collection[i] = value;
 			}
 		}
-
+
 		public static function remove(collection:Object, element:Object):Boolean {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
-
+
 			const i:int = collection.indexOf(element);
 			if (i === -1) {
 				return false;
@@ -141,72 +177,72 @@
 			collection.splice(i, 1);
 			return true;
 		}
-
-		public static function clear(collectionOrObject:Object):void {
-			if (collectionOrObject === null) {
+
+		public static function clear(collection:Object):void {
+			if (collection === null) {
 				return;
 			}
-
-			if (collectionOrObject is Array) {
-				collectionOrObject.length = 0;
-			}
-			else if (isVector0(collectionOrObject)) {
-				collectionOrObject.fixed = false;
-				collectionOrObject.length = 0;
+
+			if (collection is Array) {
+				collection.length = 0;
+			}
+			else if (isVector0(collection)) {
+				collection.fixed = false;
+				collection.length = 0;
 			}
 			else {
-				for (var k:String in collectionOrObject) {
-					delete collectionOrObject[k];
-				}
-			}
-		}
-
+				for (var k:String in collection) {
+					delete collection[k];
+				}
+			}
+		}
+
 		public static function sum(collection:Object):int {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
-
+
 			var sum:int = 0;
 			for (var i:int = 0, l:int = collection.length; i < l; ++i) {
 				sum += collection[i];
 			}
 			return sum;
 		}
-
+
 		public static function sumUint(collection:Object):uint {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
-
+
 			var sum:uint = 0;
 			for (var i:int = 0, l:int = collection.length; i < l; ++i) {
 				sum += collection[i];
 			}
 			return sum;
 		}
-
+
 		public static function sumNumber(collection:Object):Number {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
-
+
 			var sum:Number = 0;
 			for (var i:int = 0, l:int = collection.length; i < l; ++i) {
 				sum += collection[i];
 			}
 			return sum;
 		}
-
+
 		public static function move(collection:Object, length:int, insertValue:Object = null):void {
 			if (!isArrayOrVector(collection)) {
 				throw new IllegalArgumentException();
 			}
-
+
 			var l:int = collection.length;
-
+
 			if (l !== 0 && length !== 0) {
 				var i:int;
-
+
 				if (length > 0) {
 					for (i = l - 1; i >= 0; i--) {
 						collection[i] = i < length ? insertValue : collection[i - length];
@@ -220,7 +256,7 @@
 				}
 			}
 		}
-
+
 		public static function getVectorClass(elementClass:Class):Class {
 			var cls:Class = VECTOR_CLASSES_CACHE[elementClass];
 			if (cls === null) {
@@ -229,17 +265,17 @@
 			}
 			return cls;
 		}
-
+
 		public static function createVector(elementClass:Class, length:uint = 0, fixed:Boolean = false):* {
 			return new (getVectorClass(elementClass))(length, fixed);
 		}
-
+
 		public static function createVectorAndFill(elementClass:Class, length:uint, value:Object, fixed:Boolean = false):* {
 			var vector:Object = new (getVectorClass(elementClass))(length, fixed);
 			fill(vector, value);
 			return vector;
 		}
-
+
 		public static function arrayToVector(array:Array, elementClass:Class):Object {
 			const vector:Object = createVector(elementClass, array.length, true);
 			for (var i:int = 0; i < array.length; i++) {
@@ -247,19 +283,19 @@
 			}
 			return vector;
 		}
-
+
 		public static function vectorToArray(vector:Object):Array {
 			if (!isVector(vector)) {
 				throw new IllegalArgumentException();
 			}
-
+
 			const array:Array = new Array(vector.length);
 			for (var i:int = 0; i < vector.length; i++) {
 				array[i] = vector[i];
 			}
 			return array;
 		}
-
+
 		public static function objectKeysToArray(object:Object):Array {
 			const array:Array = [];
 			for (var key:String in object) {
@@ -267,7 +303,7 @@
 			}
 			return array;
 		}
-
+
 		public static function objectValuesToArray(object:Object):Array {
 			const array:Array = [];
 			for each (var value:Object in object) {
@@ -275,7 +311,7 @@
 			}
 			return array;
 		}
-
+
 		public static function objectKeysToVector(object:Object):Vector.<String> {
 			const vector:Vector.<String> = new Vector.<String>();
 			for (var key:String in object) {
@@ -283,7 +319,7 @@
 			}
 			return vector;
 		}
-
+
 		public static function objectValuesToVector(object:Object, elementClass:Class):* {
 			const vector:Object = createVector(elementClass, 0, false);
 			for each (var value:Object in object) {
@@ -291,7 +327,7 @@
 			}
 			return vector;
 		}
-
+
 		private static function isVector0(collection:Object):Boolean {
 			return collection is Vector.<*>
 				|| collection is Vector.<int>


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

--- frameworks/projects/framework/src/mx/core/ButtonAsset.as
+++ frameworks/projects/framework/src/mx/core/ButtonAsset.as
@@ -0,0 +1,122 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.core
+{
+
+import mx.core.FlexSimpleButton;
+
+/**
+ *  ButtonAsset is a subclass of the flash.display.SimpleButton class
+ *  which represents button symbols that you embed in a Flex
+ *  application from a SWF file produced by Flash.
+ *  It implements the IFlexDisplayObject interface, which makes it
+ *  possible for a SimpleButtonAsset to be displayed in an Image control,
+ *  or to be used as a container background or a component skin.
+ *
+ *
This class is included in Flex for completeness, so that any kind
+ *  of symbol in a SWF file produced by Flash can be embedded
+ *  in a Flex application.
+ *  However, Flex applications do not typically use embedded SimpleButtons.
+ *  Refer to more commonly-used asset classes such as BitmapAsset
+ *  for more information about how embedded assets work in Flex.

+ */
+public class ButtonAsset extends FlexSimpleButton
+                         implements IFlexAsset, IFlexDisplayObject
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     */
+    public function ButtonAsset()
+    {
+        super();
+
+        // Remember initial size as our measured size.
+        _measuredWidth = width;
+        _measuredHeight = height;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  measuredHeight
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the measuredWidth property.
+     */
+    private var _measuredHeight:Number;
+
+    /**
+     *  @inheritDoc
+     */
+    public function get measuredHeight():Number
+    {
+        return _measuredHeight;
+    }
+
+    //----------------------------------
+    //  measuredWidth
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the measuredWidth property.
+     */
+    private var _measuredWidth:Number;
+
+    /**
+     *  @inheritDoc
+     */
+    public function get measuredWidth():Number
+    {
+        return _measuredWidth;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @inheritDoc
+     */
+    public function move(x:Number, y:Number):void
+    {
+        this.x = x;
+        this.y = y;
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function setActualSize(newWidth:Number, newHeight:Number):void
+    {
+        width = newWidth;
+        height = newHeight;
+    }
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/framework/src/mx/core/IFlexModule.as
+++ frameworks/projects/framework/src/mx/core/IFlexModule.as
@@ -16,6 +16,11 @@
  *  The IFlexModule interface is used as an optional contract with IFlexModuleFactory.
  *  When an IFlexModule instance is created with the IFlexModuleFactory, the factory
  *  stores a reference to itself after creation.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public interface IFlexModule
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 14663
Author:   cframpto@adobe.com
Date:     2010-03-10T13:39:34.321681Z

Log Message:
-----------
Merge 14649 from 4.x

Change FTETextField fontContext to IFlexModuleFactory and check if it is ISWFContext before using.  Do not mirror mx:VideoPlayer, s:CheckBox and mx:CheckBox.  Fix dumb editing mistake in UIComponent.

QE notes:
Doc notes: None
Bugs: SDK-25824, SDK-25790, SDK-25817, SDK-25781
Reviewed By: Jason and Alex
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/FTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -9833,7 +9833,7 @@
             case Keyboard.UP:
             {
                 // typically, if ltr, the same as LEFT
-                if (mapUpDown && LayoutDirection.RTL)
+                if (mapUpDown && layoutDirection == LayoutDirection.RTL)
                     keyCode = Keyboard.RIGHT;
                 break;
             }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 19722
Author:   egeorgie@adobe.com
Date:     2011-01-12T00:53:24.336848Z

Log Message:
-----------
Fix popups/tooltips and scaling bugs:
Slider tooltip renders far above under 2.0 scaling - http://bugs.adobe.com/jira/browse/SDK-28833
Mobile HSliderSkin dataTip sometimes stops following the thumb all the way to the right edge - http://bugs.adobe.com/jira/browse/SDK-28762
When the app is scaled, DropDownList shows the list at wrong place - http://bugs.adobe.com/jira/browse/SDK-28818

In this change:
- update popup/tooltip positioning code to work with scaling.

QE notes:  make another test pass on tooltips/pop-ups
Doc notes:
Bugs: SDK-28833, SDK-28762, SDK-28818
Reviewer: Alex
Tests run: full mustella cyclone
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/VSlider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/utils/BitmapUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/DataGridEditor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/PopUpUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/mx/controls/dataGridClasses/FTEDataGridItemRenderer.as</path>

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

--- frameworks/projects/framework/src/mx/utils/MatrixUtil.as
+++ frameworks/projects/framework/src/mx/utils/MatrixUtil.as
@@ -1592,6 +1592,8 @@
      *  hierarchy. Walk the parent tree manually, calculating the matrix manually.
      *
      *  @param displayObject Calculate the concatenatedMatrix for this displayObject
+     *
+     *  @param excludingRootSprite Whether to exclude the root's transformation in the calculations.
      *
      *  @return The concatenatedMatrix for the displayObject
      *
@@ -1600,9 +1602,9 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public static function getConcatenatedMatrix(displayObject:DisplayObject):Matrix
+    public static function getConcatenatedMatrix(displayObject:DisplayObject, excludingRootSprite:Boolean):Matrix
     {
-        return getConcatenatedMatrixHelper(displayObject, false);
+        return getConcatenatedMatrixHelper(displayObject, false, excludingRootSprite);
     }

     /**
@@ -1615,6 +1617,8 @@
      *
      *  @param displayObject Calculate the concatenatedMatrix for this displayObject
      *
+     *  @param excludingRootSprite Whether to exclude the root's transformation in the calculations.
+     *
      *  @return The concatenatedMatrix for the displayObject
      *
      *  @langversion 3.0
@@ -1622,15 +1626,15 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public static function getConcatenatedComputedMatrix(displayObject:DisplayObject):Matrix
+    public static function getConcatenatedComputedMatrix(displayObject:DisplayObject, excludingRootSprite:Boolean):Matrix
     {
-        return getConcatenatedMatrixHelper(displayObject, true);
+        return getConcatenatedMatrixHelper(displayObject, true, excludingRootSprite);
     }

     /**
      *  @private
      */
-    private static function getConcatenatedMatrixHelper(displayObject:DisplayObject, useComputedMatrix:Boolean):Matrix
+    private static function getConcatenatedMatrixHelper(displayObject:DisplayObject, useComputedMatrix:Boolean, excludingRootSprite:Boolean):Matrix
     {
         var m:Matrix = new Matrix();

@@ -1646,13 +1650,20 @@
                 uiComponentClass = Class(ApplicationDomain.currentDomain.getDefinition("mx.core.UIComponent"));
         }

+        // Note, root will be "null" if the displayObject is off the display list. In particular,
+        // during start-up, before applicationComplete is dispatched, root will be null.
+        // Note that getConcatenatedMatrixHelper() with excludeRootSprite == true will still work
+        // correctly in those cases as we use ".$parent" to walk up the parent chain and during start-up
+        // $parent will be null for the application before applicationComplete has been dispatched.
+        var root:DisplayObject = displayObject.root;
+
         if (fakeDollarParent == null)
             fakeDollarParent = new QName(mx_internal, "$parent");

         if (useComputedMatrix && computedMatrixProperty == null)
             computedMatrixProperty = new QName(mx_internal, "computedMatrix");

-        while (displayObject && displayObject.transform.matrix)
+        while (displayObject && displayObject.transform.matrix && (!excludingRootSprite || displayObject != root))
         {
             var scrollRect:Rectangle = displayObject.scrollRect;
             if (scrollRect != null)


FLEX-16235 Fixed issue with XML caching in getClassInfo

--- frameworks/projects/framework/src/mx/utils/ObjectUtil.as
+++ frameworks/projects/framework/src/mx/utils/ObjectUtil.as
@@ -1134,7 +1134,8 @@
         }

         // For normal, non-dynamic classes we cache the class info
-        if (!dynamic)
+		// Don't cache XML as it can be dynamic
+        if (!dynamic && className != "XML")
         {
             cacheKey = getCacheKey(obj, excludes, options);
             CLASS_INFO_CACHE[cacheKey] = result;


Transferred from the Adobe Open Source Subversion Repository

Revision: 8591
Author:   clucier@adobe.com
Date:     2009-07-15T19:39:05.785983Z

Log Message:
-----------
Fix for SDK-18328 - NumericStepper not stripping leading zeroes upon commit.
Bugs: SDK-18328
QE Notes: None
Doc Notes: None
Reviewer: Deepa

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>

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

--- frameworks/projects/mx/src/mx/controls/NumericStepper.as
+++ frameworks/projects/mx/src/mx/controls/NumericStepper.as
@@ -1396,7 +1396,8 @@
         var inputValue:Number = Number(inputField.text);
         if ((inputValue != lastValue &&
             (Math.abs(inputValue - lastValue) >= 0.000001 || isNaN(inputValue))) ||
-            inputField.text == "")
+            inputField.text == "" || (inputField.text &&
+           inputField.text.length != lastValue.toString().length))
         {
             var newValue:Number = checkValidValue(Number(inputField.text));
             inputField.text = newValue.toString();
@@ -1553,12 +1554,20 @@
             case Keyboard.TAB:
             {
                 var inputValue:Number = Number(inputField.text);
+
                 if (inputValue != lastValue &&
                     (Math.abs(inputValue - lastValue) >= 0.000001 ||
-                     isNaN(inputValue)))
+                     isNaN(inputValue)) || (inputField.text &&
+                    inputField.text.length != lastValue.toString().length))
                 {
                     var newValue:Number = checkValidValue(Number(inputField.text));
+
+                    // When the TextInput receives our key, it will ignore
+                    // the programmatically set text, unless we push it through
+                    // here.
                     inputField.text = newValue.toString();
+                    inputField.validateNow();
+
                     setValue(newValue, true);
                 }


We don't use the 0.0.0.0:0 convention to mean no clients anymore.

--- swfcat.as
+++ swfcat.as
@@ -176,10 +176,6 @@
                 puts("Error: Client spec must be in the form \"host:port\".");
                 return;
             }
-            if (client_addr.host == "0.0.0.0" && client_addr.port == 0) {
-                puts("Error: Facilitator has no clients.");
-                return;
-            }

             num_proxy_pairs++;
             proxy_pair = new ProxyPair(this, client_addr, DEFAULT_TOR_ADDR);


Transferred from the Adobe Open Source Subversion Repository

Revision: 18323
Author:   smgilson@adobe.com
Date:     2010-10-26T17:50:12.524532Z

Log Message:
-----------
Fix invalid HTML in ASDoc comments for the [DiscouragedForProfile] metadata tag

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/NumericStepper.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/VSlider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TitleWindow.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/Spinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/BorderContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/FormHeading.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/VideoPlayer.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/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/ToolTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TabBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/VideoDisplay.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ButtonBarButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Panel.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Form.as</path>

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

--- frameworks/projects/mx/src/mx/controls/ProgressBar.as
+++ frameworks/projects/mx/src/mx/controls/ProgressBar.as
@@ -260,7 +260,7 @@
  * Because this component does not define a skin for the mobile theme, Adobe
  * recommends that you not use it in a mobile application. Alternatively, you
  * can define your own mobile skin for the component. For more information,
- * see Spark Skinning.
+ * see Spark Skinning.
  */
 [DiscouragedForProfile("mobileDevice")]

@@ -1020,7 +1020,7 @@
             }
         }

-	if (_source && _source is IEventDispatcher)
+    if (_source && _source is IEventDispatcher)
             removeSourceListeners();

         if (value)


Cleanup the code.

Cleanup the code.

--- Bin/Data/Scripts/Editor/EditorNodeWindow.as
+++ Bin/Data/Scripts/Editor/EditorNodeWindow.as
@@ -387,7 +387,7 @@
                 Array<Variant>@ ids = variant.GetVariantVector();
                 for (uint i = 0; i < ids.length; ++i)
                 {
-                    UIElement@ element = editorUIElement.GetChild(UI_ELEMENT_ID_VAR, Variant(ids[i].GetUInt()), true);
+                    UIElement@ element = editorUIElement.GetChild(UI_ELEMENT_ID_VAR, ids[i], true);
                     if (element !is null)
                         ret.Push(element);
                 }


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

--- frameworks/projects/charts/src/mx/charts/BubbleChart.as
+++ frameworks/projects/charts/src/mx/charts/BubbleChart.as
@@ -0,0 +1,432 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.charts
+{
+
+import mx.charts.chartClasses.CartesianChart;
+import mx.charts.chartClasses.DataTip;
+import mx.charts.chartClasses.IAxis;
+import mx.charts.chartClasses.Series;
+import mx.charts.series.BubbleSeries;
+import mx.charts.styles.HaloDefaults;
+import mx.graphics.SolidColor;
+import mx.graphics.Stroke;
+import mx.styles.CSSStyleDeclaration;
+import mx.core.IFlexModuleFactory;
+import mx.core.mx_internal;
+
+use namespace mx_internal;
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+/**
+ *  The maximum radius of the largest chart element, in pixels
+ *  Flex assigns this radius to the data point with the largest value;
+ *  all other data points are assigned a smaller radius
+ *  based on their value relative to the smallest and largest value.
+ *  The default value is 50 pixels.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="maxRadius", type="Number", format="Length", inherit="no")]
+
+/**
+ *  The minimum radius of the smallest chart element, in pixels
+ *  Flex assigns this radius to the data point with the smallest value;
+ *  all other data points are assigned a larger radius
+ *  based on their value relative to the smallest and largest value.
+ *  The default value is 0 pixels.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+[Style(name="minRadius", type="Number", format="Length", inherit="no")]
+
+//--------------------------------------
+//  Other metadata
+//--------------------------------------
+
+[DefaultBindingProperty(destination="dataProvider")]
+
+[DefaultTriggerEvent("itemClick")]
+
+[IconFile("BubbleChart.png")]
+
+/**
+ *  The BubbleChart control represents data with three values
+ *  for each data point.
+ *  Each data point is defined by a value determining its position
+ *  along the horizontal axis, a value determining its position
+ *  along the vertical axis, and a value determining the size
+ *  of the chart element, relative to the other data points on the chart.
+ *
+ *
The BubbleChart control expects its series property
+ *  to contain an array of BubbleSeries objects.

+ *
+ *  @mxml
+ *
+ *  The <mx:BubbleChart> tag inherits all the properties
+ *  of its parent classes and adds the following properties:

+ *
+ *

+ *  <mx:BubbleChart
+ *    Properties
+ *    radiusAxis="LinearAxis"
+ *    secondRadiusAxis="LinearAxis"
+ *
+ *    Styles
+ *    maxRadius="50"
+ *    minRadius="0"
+ *  />
+ *

+ *
+ *  @includeExample examples/BubbleChartExample.mxml
+ *
+ *  @see mx.charts.series.BubbleSeries
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class BubbleChart extends CartesianChart
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class initialization
+	//
+	//--------------------------------------------------------------------------
+
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function BubbleChart()
+	{
+		super();
+
+		var zAxis:LinearAxis = new LinearAxis();
+		zAxis.autoAdjust = false;
+		zAxis.minimum = 0;
+		zAxis.interval = 1;
+		radiusAxis = zAxis;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Variables
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private var _moduleFactoryInitialized:Boolean = false;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+    //----------------------------------
+	//  radiusAxis
+    //----------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the radiusAxis property.
+	 */
+	private var _radiusAxis:IAxis;
+
+    [Inspectable(category="Data")]
+
+	/**
+	 *  The axis the bubble radius is mapped against
+	 *  Bubble charts treat the size of the individual bubbles
+	 *  as a third dimension of data which is transformed
+	 *  in a similar manner to how x and y position is transformed.
+	 *  By default, the radiusAxis is a LinearAxis
+	 *  with the autoAdjust property set to false.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function get radiusAxis():IAxis
+	{
+		return _transforms[0].getAxis(BubbleSeries.RADIUS_AXIS);
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set radiusAxis(value:IAxis):void
+	{
+		_radiusAxis = value;
+		_transforms[0].setAxis(BubbleSeries.RADIUS_AXIS, value);
+
+		invalidateData();
+	}
+
+    //----------------------------------
+	//  secondRadiusAxis
+    //----------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the secondRadiusAxis property.
+	 */
+	private var _secondRadiusAxis:IAxis;
+
+    [Inspectable(category="Data")]
+    [Deprecated(replacement="series specific axis, example:BubbleSeries.radiusAxis")]
+
+	/**
+	 *  The axis the bubble radius of secondary series is mapped against.
+	 *  Bubble charts treat the size of the individual bubbles
+	 *  as a third dimension of data which is transformed
+	 *  in a similar manner to how x and y position is transformed.
+	 *  By default, the secondRadisAxis is a LinearAxis
+	 *  with the autoAdjust property set to false.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function get secondRadiusAxis():IAxis
+	{
+		return _secondRadiusAxis;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set secondRadiusAxis(value:IAxis):void
+	{
+		_secondRadiusAxis = value;
+
+		initSecondaryMode();
+
+		_transforms[1].setAxis(2, value);
+
+		invalidateData();
+		invalidateProperties();
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: UIComponent
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private function initStyles():Boolean
+	{
+		HaloDefaults.init(styleManager);
+
+		var bubbleChartStyle:CSSStyleDeclaration =
+			HaloDefaults.createSelector("mx.charts.BubbleChart", styleManager);
+
+		bubbleChartStyle.defaultFactory = function():void
+		{
+			this.axisColor = 0xD5DEDD;
+			this.chartSeriesStyles = HaloDefaults.chartBaseChartSeriesStyles;
+			this.dataTipCalloutStroke = new Stroke(2, 0);
+			this.dataTipRenderer = DataTip;
+			this.fill = new SolidColor(0xFFFFFF, 0);
+			this.calloutStroke = new Stroke(0x888888,2);
+			this.fontSize = 10;
+			this.gridLinesStyleName = "bothGridLines";
+			this.horizontalAxisStyleName = "blockNumericAxis";
+			this.maxRadius = 50;
+			this.minRadius = 0;
+			this.secondHorizontalAxisStyleName = "blockNumericAxis";
+			this.secondVerticalAxisStyleName = "blockNumericAxis";
+			this.textAlign = "left";
+			this.verticalAxisStyleName = "blockNumericAxis";
+			this.horizontalAxisStyleNames = ["blockNumericAxis"];
+			this.verticalAxisStyleNames = ["blockNumericAxis"];
+		}
+
+		return true;
+	}
+
+	/**
+	 *  @inheritDoc
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	override public function set moduleFactory(factory:IFlexModuleFactory):void
+	{
+		super.moduleFactory = factory;
+
+		if (_moduleFactoryInitialized)
+			return;
+
+		_moduleFactoryInitialized = true;
+
+		// our style settings
+		initStyles();
+	}
+
+	/**
+	 *  @private
+	 */
+	override public function styleChanged(styleProp:String):void
+	{
+		var series:Array /* of Series */;
+		var n:int;
+		var i:int;
+
+		if (styleProp == null || styleProp == "maxRadius")
+		{
+			var maxRadius:Number = getStyle("maxRadius");
+
+			series = this.series;
+			n = series.length;
+			for (i = 0; i < n; i++)
+			{
+				if (series[i] is BubbleSeries)
+				{
+					series[i].maxRadius = maxRadius;
+					series[i].invalidateDisplayList();
+				}
+			}
+
+			series = secondSeries;
+			n = series.length;
+			for (i = 0; i < n;i++)
+			{
+				if (series[i] is BubbleSeries)
+				{
+					series[i].maxRadius = maxRadius;
+					series[i].invalidateDisplayList();
+				}
+			}
+		}
+		if (styleProp == null || styleProp == "minRadius")
+		{
+			var minRadius:Number = getStyle("minRadius");
+
+			series = this.series;
+			n = series.length;
+			for (i = 0; i < n; i++)
+			{
+				if (series[i] is BubbleSeries)
+				{
+					series[i].minRadius = minRadius;
+					series[i].invalidateDisplayList();
+				}
+			}
+
+			series = secondSeries;
+			n = series.length;
+			for (i = 0; i < n;i++)
+			{
+				if (series[i] is BubbleSeries)
+				{
+					series[i].minRadius = minRadius;
+					series[i].invalidateDisplayList();
+				}
+			}
+		}
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: ChartBase
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override protected function customizeSeries(seriesGlyph:Series, i:uint):void
+	{
+		var maxRadius:Number = getStyle("maxRadius");
+		var minRadius:Number = getStyle("minRadius");
+
+		if ((seriesGlyph is BubbleSeries) && !isNaN(maxRadius))
+			BubbleSeries(seriesGlyph).maxRadius = maxRadius;
+		if ((seriesGlyph is BubbleSeries) && !isNaN(minRadius))
+			BubbleSeries(seriesGlyph).minRadius = minRadius;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: CartesianChart
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override protected function initSecondaryMode():void
+	{
+		super.initSecondaryMode();
+
+		if (!secondVerticalAxis)
+			secondVerticalAxis = new LinearAxis();
+
+		if (!secondHorizontalAxis)
+			secondHorizontalAxis = new LinearAxis();
+
+		if (!_secondRadiusAxis)
+		{
+			var la:LinearAxis = new LinearAxis();
+			la.autoAdjust = false;
+			la.minimum = 0;
+			la.interval = 1;
+			_secondRadiusAxis = la;
+			_transforms[1].setAxis(2, _secondRadiusAxis);
+		}
+
+		if (!secondVerticalAxisRenderer)
+			secondVerticalAxisRenderer = new AxisRenderer();
+
+		if (!secondHorizontalAxis)
+			secondHorizontalAxis = new LinearAxis();
+
+		if (!secondHorizontalAxisRenderer)
+			secondHorizontalAxisRenderer = new AxisRenderer();
+	}
+}
+
+}


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

--- frameworks/projects/spark/src/spark/components/Label.as
+++ frameworks/projects/spark/src/spark/components/Label.as
@@ -9,7 +9,7 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package flex.graphics
+package mx.graphics
 {

 import flash.display.DisplayObjectContainer;
@@ -18,8 +18,8 @@
 import flash.text.engine.FontDescription;
 import flash.text.engine.Kerning;

-import flex.graphics.graphicsClasses.TextBlockComposer;
-import flex.graphics.graphicsClasses.TextGraphicElement;
+import mx.graphics.graphicsClasses.TextBlockComposer;
+import mx.graphics.graphicsClasses.TextGraphicElement;

 [DefaultProperty("text")]


Added StandardLib.join, a faster alternative to Array.join().

--- WeaveCore/src/weave/compiler/StandardLib.as
+++ WeaveCore/src/weave/compiler/StandardLib.as
@@ -19,6 +19,7 @@

 package weave.compiler
 {
+	import flash.utils.ByteArray;
 	import flash.utils.getQualifiedClassName;

 	import mx.formatters.DateFormatter;
@@ -38,6 +39,29 @@
 	 */
 	public class StandardLib
 	{
+		/**
+		 * Same functionality as Array.join, only twice as fast.
+		 * @param array The Array (or Vector)
+		 * @param separator The separator
+		 * @return Each item in the array concatenated into a String using the given separator.
+		 */
+		public static function join(array:*, separator:String = ','):String
+		{
+			var first:Boolean = true;
+			var out:ByteArray = new ByteArray();
+			for each (var item:String in array)
+			{
+				if (first)
+					first = false;
+				else
+					out.writeUTFBytes(separator);
+
+				out.writeUTFBytes(item);
+			}
+			out.position = 0;
+			return out.readUTFBytes(out.length);
+		}
+
 		/**
 		 * This function will cast a value of any type to a Number,
 		 * interpreting the empty string ("") and null as NaN.


Fixed asClass() return type

Fixed asClass() return type

--- frameworks/projects/Core/as/src/org/apache/flex/utils/Language.as
+++ frameworks/projects/Core/as/src/org/apache/flex/utils/Language.as
@@ -195,7 +195,7 @@
         /**
          * Implementation of "classDef as Class"
          */
-        public function asClass(classDef:*):Boolean
+        public function asClass(classDef:*):Class
         {
             return isClass(classDef) ? classDef : null;
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 20435
Author:   eday@adobe.com
Date:     2011-02-23T23:28:15.708264Z

Log Message:
-----------
Fix for SDK-29521.
- Flip transition no longer leaves views unnecessarily in advanced layout mode.
- Slide transition forces validation as necessary for views in advanced layout mode.

QE notes:
Doc notes:
Bugs: SDK-29521
Reviewer: Evtim, Corey
Tests run: checkintests, full cyclone
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/transitions/FlipViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/transitions/SlideViewTransition.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -12344,7 +12344,7 @@
     {
         if (event.eventPhase != EventPhase.AT_TARGET)
             return;
-
+
         try
         {
             if (parent is IContainer && IContainer(parent).creatingContentPane)
@@ -12355,7 +12355,7 @@
         }
         catch (error:SecurityError)
         {
-
+
         }
     }

@@ -13151,6 +13151,29 @@
         internal_initAdvancedLayoutFeatures();
     }

+
+    /**
+     *  @private
+     */
+    mx_internal function transformRequiresValidations():Boolean
+    {
+        return (_layoutFeatures != null);
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function clearAdvancedLayoutFeatures():void
+    {
+        if (_layoutFeatures)
+        {
+            // Make sure the matrix is validated before we free the
+            // layout features.
+            validateMatrix();
+            _layoutFeatures = null;
+        }
+    }
+
     /**
      *  Passed to TransformUtil to create the layout features when performing
      *  transformation operations.


Transferred from the Adobe Open Source Subversion Repository

Revision: 17114
Author:   matamel@adobe.com
Date:     2010-07-29T08:15:41.870649Z

Log Message:
-----------
Revert the fix to  SDK-16648; it broke backwards compatibility in MXML.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/rpc/src/mx/messaging/Channel.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/MessageAgent.as
+++ frameworks/projects/rpc/src/mx/messaging/MessageAgent.as
@@ -86,7 +86,7 @@
  *  @productversion BlazeDS 4
  *  @productversion LCDS 3
  */
-[Event(name="connect", type="mx.messaging.events.ChannelEvent")]
+[Event(name="channelConnect", type="mx.messaging.events.ChannelEvent")]

 /**
  *  Dispatched when the underlying Channel the MessageAgent is using disconnects.
@@ -99,7 +99,7 @@
  *  @productversion BlazeDS 4
  *  @productversion LCDS 3
  */
-[Event(name="disconnect", type="mx.messaging.events.ChannelEvent")]
+[Event(name="channelDisconnect", type="mx.messaging.events.ChannelEvent")]

 /**
  *  Dispatched when the underlying Channel the MessageAgent is using faults.
@@ -112,7 +112,7 @@
  *  @productversion BlazeDS 4
  *  @productversion LCDS 3
  */
-[Event(name="fault", type="mx.messaging.events.ChannelFaultEvent")]
+[Event(name="channelFault", type="mx.messaging.events.ChannelFaultEvent")]

 /**
  *  Dispatched when the connected property of the MessageAgent changes.


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

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

 package mx.automation.delegates.controls
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 18544
Author:   rfrishbe@adobe.com
Date:     2010-11-11T21:48:17.001134Z

Log Message:
-----------
Making StyleableTextField changes.  StyleableTextField now implements ISimpleStyleClient.  styleProvider has been renamed to styleName.  Also, there's no need to call styleChanged() on StyleableTextField anymore since it implements ISimpleStyleClient and can be done automatically.

Also, fixing an issue in MobileIconItemRenderer where icons were refreshing if they were embedded.  We now handle embedded assets better in the icon setter because we set them immiedately, rather than wait for a 500ms delay.

QE notes:
Doc notes:
Bugs:
Reviewer: Eric Day, Glenn
Tests run: checkintests, mustella DataGroup, List, ListDND
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileIconItemRenderer.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
@@ -25,7 +25,13 @@
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
 import mx.resources.ResourceManager;
+import mx.styles.CSSStyleDeclaration;
+import mx.styles.ISimpleStyleClient;
 import mx.styles.IStyleClient;
+import mx.styles.IStyleManager2;
+import mx.styles.StyleManager;
+import mx.styles.StyleProtoChain;
+import mx.utils.NameUtil;

 import spark.core.IEditableText;
 import spark.events.TextOperationEvent;
@@ -38,7 +44,7 @@
 // To use:
 //   in createChildren():
 //       var tf:StyleableTextField = createInFontContext(StyleableTextField);
-//       tf.styleProvider = this;
+//       tf.styleName = this;
 //       tf.editable = true|false;   // for editable text
 //       tf.multiline = true|false;  // for multiline text
 //       tf.wordWrap = true|false;   // for word wrapping
@@ -48,9 +54,14 @@
 //       tf.text = "...." - if needed
 //
 //   in measure();
-//       Use UIComponent.measureText()
+//       if (tf.isTruncated)     // if text may be truncated
+//           tf.text = "...";
+//       tf.commitStyles();    // Always call this. No-op if styles already applied.
+//       Use tf.textWidth, tf.textHeight;
 //
 //   in updateDisplayList():
+//       if (tf.isTruncated)    // if text may be truncated
+//           tf.text = "...";
 //       tf.commitStyles();    // Always call this. No-op if styles already applied.
 //       tf.x = ...
 //       tf.y = ...
@@ -58,9 +69,6 @@
 //       tf.height = ...
 //       // if you want truncated text:
 //       tf.truncateToFit();
-//
-//   in styleChanged():
-//       tf.styleChanged(styleProp);
 //
 // Supported styles: textAlign, fontFamily, fontWeight, "colorName", fontSize, fontStyle,
 //                   textDecoration, textIndent, leading, letterSpacing
@@ -74,7 +82,8 @@
  *  @playerversion AIR 2.0
  *  @productversion Flex 4.5
  */
-public class StyleableTextField extends TextField implements IEditableText
+public class StyleableTextField extends TextField
+    implements IEditableText, ISimpleStyleClient
 {

     //--------------------------------------------------------------------------
@@ -136,6 +145,85 @@

     //--------------------------------------------------------------------------
     //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  styleDeclaration
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the styleDeclaration property.
+     */
+    private var _styleDeclaration:CSSStyleDeclaration;
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  Storage for the inline inheriting styles on this object.
+     *  This CSSStyleDeclaration is created the first time that
+     *  the setStyle() method
+     *  is called on this component to set an inheriting style.
+     *  Developers typically never need to access this property directly.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.0
+     *  @productversion Flex 4.5
+     */
+    public function get styleDeclaration():CSSStyleDeclaration
+    {
+        return _styleDeclaration;
+    }
+
+    /**
+     *  @private
+     */
+    public function set styleDeclaration(value:CSSStyleDeclaration):void
+    {
+        _styleDeclaration = value;
+    }
+
+    //----------------------------------
+    //  styleName
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the styleName property.
+     */
+    private var _styleName:Object /* UIComponent */;
+
+    /**
+     *  The class style used by this component. This should be an IStyleClient.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.0
+     *  @productversion Flex 4.5
+     */
+    public function get styleName():Object /* UIComponent */
+    {
+        return _styleName;
+    }
+
+    /**
+     *  @private
+     */
+    public function set styleName(value:Object /* UIComponent */):void
+    {
+        if (_styleName === value)
+            return;
+
+        _styleName = value;
+
+        styleChanged("styleName");
+    }
+
+    //--------------------------------------------------------------------------
+    //
     //  IDisplayText implementation
     //
     //--------------------------------------------------------------------------
@@ -526,42 +614,6 @@
     //
     //--------------------------------------------------------------------------

-    //----------------------------------
-    //  styleProvider
-    //----------------------------------
-
-   /**
-     *  The object that provides styles for this text component. This
-     *  property must be set for the text to pick up the correct styles.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.1
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    public var styleProvider:IStyleClient;
-
-    /**
-     *  @private
-     *  An mx_internal hook developers can set to control where the styles
-     *  come from for the StyleableTextField.  By default, StyleableTextField
-     *  uses a function that just grabs the styles from styleProvider.
-     *
-     *
This takes precedence over styleProvider and should never
-     *  be set to null.

-     */
-    mx_internal var getStyleFunction:Function = defaultGetStyleFunction;
-
-    /**
-     *  @private
-     *  The object that provides styles for this text component. This
-     *  property must be set for the text to pick up the correct styles.
-     */
-    private function defaultGetStyleFunction(styleProp:String):*
-    {
-        return styleProvider.getStyle(styleProp);
-    }
-
     //--------------------------------------------------------------------------
     //
     //  Methods
@@ -580,38 +632,38 @@
      */
     public function commitStyles():void
     {
-        if ((getStyleFunction != defaultGetStyleFunction || styleProvider) && invalidateStyleFlag)
+        if (invalidateStyleFlag)
         {
-            var align:String = getStyleFunction("textAlign");
+            var align:String = getStyle("textAlign");
             if (align == "start")
                 align = TextFormatAlign.LEFT;
             if (align == "end")
                 align = TextFormatAlign.RIGHT;
             textFormat.align = align;
-            textFormat.font = getStyleFunction("fontFamily");
-            textFormat.bold = getStyleFunction("fontWeight") == "bold";
-            textFormat.color = getStyleFunction(colorName);
-            textFormat.size = getStyleFunction("fontSize");
-            textFormat.italic = getStyleFunction("fontStyle") == "italic";
-            textFormat.underline = getStyleFunction("textDecoration") == "underline";
-            textFormat.indent = getStyleFunction("textIndent");
-            textFormat.leading = getStyleFunction("leading");
-            textFormat.letterSpacing = getStyleFunction("letterSpacing");
-			var kerning:* = getStyleFunction("kerning");
+            textFormat.font = getStyle("fontFamily");
+            textFormat.bold = getStyle("fontWeight") == "bold";
+            textFormat.color = getStyle(colorName);
+            textFormat.size = getStyle("fontSize");
+            textFormat.italic = getStyle("fontStyle") == "italic";
+            textFormat.underline = getStyle("textDecoration") == "underline";
+            textFormat.indent = getStyle("textIndent");
+            textFormat.leading = getStyle("leading");
+            textFormat.letterSpacing = getStyle("letterSpacing");
+			var kerning:* = getStyle("kerning");
 			if (kerning == "auto" || kerning == "on")
 				kerning = true;
 			else if (kerning == "default" || kerning == "off")
 				kerning = false;
 			textFormat.kerning = kerning;

-			antiAliasType = getStyleFunction("fontAntiAliasType");
-			gridFitType = getStyleFunction("fontGridFitType");
-			sharpness = getStyleFunction("fontSharpness");
-			thickness = getStyleFunction("fontThickness");
+			antiAliasType = getStyle("fontAntiAliasType");
+			gridFitType = getStyle("fontGridFitType");
+			sharpness = getStyle("fontSharpness");
+			thickness = getStyle("fontThickness");

             // ignore padding in the text...most components deal with it themselves
-            //textFormat.leftMargin = getStyleFunction("paddingLeft");
-            //textFormat.rightMargin = getStyleFunction("paddingRight");
+            //textFormat.leftMargin = getStyle("paddingLeft");
+            //textFormat.rightMargin = getStyle("paddingRight");

             // Check for embedded fonts
             embedFonts = isFontEmbedded(textFormat);
@@ -634,9 +686,53 @@
     }

     /**
-     *  Notify the text field that a style is changed.
-     *  This method is typically called by the styleChanged() method
-     *  of the style provider.
+     *  @copy mx.core.UIComponent#getStyle()
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.0
+     *  @productversion Flex 4.5
+     */
+    public function getStyle(styleProp:String):*
+    {
+        // check out inline style first
+        if (_inlineStyleObject && _inlineStyleObject[styleProp] !== undefined)
+            return _inlineStyleObject[styleProp];
+
+        // check styles that are on us via styleDeclaration
+        if (styleDeclaration && styleDeclaration.getStyle(styleProp) !== undefined)
+            return styleDeclaration.getStyle(styleProp);
+
+        // if not inlined, check our style provider
+        if (styleName is IStyleClient)
+            return IStyleClient(styleName).getStyle(styleProp);
+
+        // if can't find it, return undefined
+        return undefined;
+    }
+
+    /**
+     *  @copy mx.core.UIComponent#setStyle()
+     *
+     *  @param styleProp Name of the style property.
+     *
+     *  @param newValue New value for the style.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.0
+     *  @productversion Flex 4.5
+     */
+    public function setStyle(styleProp:String, value:*):void
+    {
+        if (!_inlineStyleObject)
+            _inlineStyleObject = {styleProp: value};
+        else
+            _inlineStyleObject[styleProp] = value;
+    }
+
+    /**
+     *  @copy mx.core.UIComponent#styleChanged()
      *
      *  @param styleProp The style property that changed.
      *
@@ -690,8 +786,9 @@
         {
             // This should get us into the ballpark.
             var s:String = super.text = originalText;
-            originalText.slice(0,
-                Math.floor((w / (textWidth + TEXT_WIDTH_PADDING)) * originalText.length));
+            // TODO (rfrishbe): why is this here below...it does nothing (see SDK-26438)
+            //originalText.slice(0,
+            //    Math.floor((w / (textWidth + TEXT_WIDTH_PADDING)) * originalText.length));

             while (s.length > 1 && textWidth + TEXT_WIDTH_PADDING > w)
             {
@@ -808,6 +905,17 @@

     /**
      *  @private
+     *  Storage for the inline styles on this StyleableTextField instance
+     *
+     *  There's no real need for _inlineStyleObject because we could
+     *  just piggy-back off of styleDeclaration (and create a new
+     *  CSSStyleDeclaration when setStyle() is called, but this is easier
+     *  and there seems to be less overhead with this approach).
+     */
+    private var _inlineStyleObject:Object;
+
+    /**
+     *  @private
      *  The padding to be added to textWidth to get the width
      *  of a TextField that can display the text without clipping.
      */