Issue #88: Order locale options alphabetically.

--- src/com/esri/builder/model/LocaleModel.as
+++ src/com/esri/builder/model/LocaleModel.as
@@ -143,11 +143,11 @@
         new Locale(CHINESE_SIMPLIFIED_HAN_ID, CHINESE_SIMPLIFIED_HAN_LABEL),
         new Locale(DANISH_ID, DANISH_LABEL),
         new Locale(DUTCH_ID, DUTCH_LABEL),
-        new Locale(GERMAN_ID, GERMAN_LABEL),
         new Locale(ENGLISH_ID, ENGLISH_LABEL),
         new Locale(ESTONIAN_ID, ESTONIAN_LABEL),
         new Locale(FINNISH_ID, FINNISH_LABEL),
         new Locale(FRENCH_ID, FRENCH_LABEL),
+        new Locale(GERMAN_ID, GERMAN_LABEL),
         new Locale(HEBREW_ID, HEBREW_LABEL),
         new Locale(ITALIAN_ID, ITALIAN_LABEL),
         new Locale(JAPANESE_ID, JAPANESE_LABEL),


Transferred from the Adobe Open Source Subversion Repository

Revision: 12280
Author:   smgilson@adobe.com
Date:     2009-11-30T17:45:36.448234Z

Log Message:
-----------
ASDoc updates in preperation for localization

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Wipe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/WipeDirection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/CrossFade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Animate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/SetAction.as</path>

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

--- frameworks/projects/spark/src/spark/effects/Wipe.as
+++ frameworks/projects/spark/src/spark/effects/Wipe.as
@@ -23,16 +23,23 @@
  *
  *
The underlying bitmap effect is run by a pixel-shader program
  *  that is loaded by the effect. If you want to use
- *  a different Wipe behavior, you can specify a custom pixel-shader program
- *  as long as it adheres to the following constraints:
- *  obey the constraints specified for the shaderByteCode
+ *  a different Wipe behavior, you can specify a custom pixel-shader program.
+ *  The pixel-shader program must adhere to the constraints
+ *  specified for the shaderByteCode
  *  property of AnimateTransitionShader class, and supply three additional
- *  parameters. The extra parameters required by the Wipe shader
- *  are an int direction parameter,
- *  whose values mean the same as the related String properties
- *  in the Wipe class, and floating point parameters
- *  imageWidth and imageHeight. All of these
- *  parameters are set on the shader when the effect starts playing,
+ *  parameters.
+ *  The extra parameters required by the Wipe shader
+ *  are:

+ *
+ *

+ *
An int direction parameter,
+ *  whose value means the same as the related String property
+ *  in the Wipe class.

+ *
Two floating point parameters:
+ *  imageWidth and imageHeight.

+ *

+ *
+ *
All of these parameters are set on the shader when the effect starts playing,
  *  so the parameters need to exist and do something appropriate in
  *  order for the effect to function correctly.

  *
@@ -53,7 +60,8 @@
  *  @see spark.effects.WipeDirection
  *  @see spark.effects.AnimateTransitionShader
  *  @see spark.effects.AnimateTransitionShader#shaderByteCode
- *  @see spark.effects.supportClasses.WipeInstance
+ *
+ *  @includeExample examples/WipeExample.mxml
  *
  *  @langversion 3.0
  *  @playerversion Flash 10


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

--- frameworks/projects/mx/src/mx/effects/Glow.as
+++ frameworks/projects/mx/src/mx/effects/Glow.as
@@ -0,0 +1,263 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.effects
+{
+
+import mx.effects.effectClasses.GlowInstance;
+import mx.styles.StyleManager;
+
+/**
+ *  The Glow effect lets you apply a visual glow effect to a component.
+ *
+ *
The Glow effect uses the Flash GlowFilter class
+ *  as part of its implementation.
+ *  For more information, see the flash.filters.GlowFilter class.
+ *  If you apply a Glow effect to a component, you cannot apply a GlowFilter
+ *  or a second Glow effect to the component.

+ *
+ *  @mxml
+ *
+ *
The <mx:Glow> tag
+ *  inherits all of the tag attributes of its superclass,
+ *  and adds the following tag attributes:

+ *
+ *

+ *  <mx:Glow
+ *    id="ID"
+ *    alphaFrom="val"
+ *    alphaTo="val"
+ *    blurXFrom="val"
+ *    blurXTo="val"
+ *    blurYFrom="val"
+ *    blurYTo="val"
+ *    color="themeColor of the application"
+ *    inner="false|true"
+ *    knockout="false|true"
+ *    strength="2"
+ *  />
+ *

+ *
+ *  @see flash.filters.GlowFilter
+ *  @see mx.effects.effectClasses.GlowInstance
+ *
+ *  @includeExample examples/GlowEffectExample.mxml
+ */
+public class Glow extends TweenEffect
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private static var AFFECTED_PROPERTIES:Array = [ "filters" ];
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @param target The Object to animate with this effect.
+	 */
+	public function Glow(target:Object = null)
+	{
+		super(target);
+
+		instanceClass = GlowInstance;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  alphaFrom
+	//----------------------------------
+
+	[Inspectable(category="General", defaultValue="NaN")]
+
+	/**
+	 *  Starting transparency level between 0.0 and 1.0,
+	 *  where 0.0 means transparent and 1.0 means fully opaque.
+	 */
+	public var alphaFrom:Number;
+
+	//----------------------------------
+	//  alphaTo
+	//----------------------------------
+
+	[Inspectable(category="General", defaultValue="NaN")]
+
+	/**
+	 *  Ending transparency level between 0.0 and 1.0,
+	 *  where 0.0 means transparent and 1.0 means fully opaque.
+	 */
+	public var alphaTo:Number;
+
+	//----------------------------------
+	//  blurXFrom
+	//----------------------------------
+
+	[Inspectable(category="General", defaultValue="NaN")]
+
+	/**
+	 *  The starting amount of horizontal blur.
+	 *  Valid values are from 0.0 to 255.0.
+	 */
+	public var blurXFrom:Number;
+
+	//----------------------------------
+	//  blurXTo
+	//----------------------------------
+
+	[Inspectable(category="General", defaultValue="NaN")]
+
+	/**
+	 *  The ending amount of horizontal blur.
+	 *  Valid values are from 0.0 to 255.0.
+	 */
+	public var blurXTo:Number;
+
+	//----------------------------------
+	//  blurYFrom
+	//----------------------------------
+
+	[Inspectable(category="General", defaultValue="NaN")]
+
+	/**
+	 *  The starting amount of vertical blur.
+	 *  Valid values are from 0.0 to 255.0.
+	 */
+	public var blurYFrom:Number;
+
+	//----------------------------------
+	//  blurYTo
+	//----------------------------------
+
+	[Inspectable(category="General", defaultValue="NaN")]
+
+	/**
+	 *  The ending amount of vertical blur.
+	 *  Valid values are from 0.0 to 255.0.
+	 */
+	public var blurYTo:Number;
+
+	//----------------------------------
+	//  color
+	//----------------------------------
+
+	[Inspectable(category="General", format="Color", defaultValue="0xFFFFFFFF")]
+
+	/**
+	 *  The color of the glow.
+	 *  The default value is the value of the themeColor style
+	 *  property of the application.
+	 */
+	public var color:uint = StyleManager.NOT_A_COLOR;
+
+	//----------------------------------
+	//  inner
+	//----------------------------------
+
+	[Inspectable(category="General", defaultValue="false")]
+
+	/**
+	 *  Specifies whether the glow is an inner glow.
+	 *  A value of true indicates an inner glow within
+	 *  the outer edges of the object.
+	 *  The default value is false, to specify
+	 *  an outer glow around the outer edges of the object.
+	 *
+	 *  @default false
+	 */
+	public var inner:Boolean;
+
+	//----------------------------------
+	//  knockout
+	//----------------------------------
+
+	[Inspectable(defaultValue="false")]
+
+	/**
+	 *  Specifies whether the object has a knockout effect.
+	 *  A value of true makes the object's fill color transparent
+	 *  to reveal the background color of the underlying object.
+	 *  The default value is false to specify no knockout effect.
+	 *
+	 *  @default false
+	 */
+	public var knockout:Boolean;
+
+	//----------------------------------
+	//  strength
+	//----------------------------------
+
+	[Inspectable(category="General", defaultValue="2")]
+
+	/**
+	 *  The strength of the imprint or spread.
+	 *  The higher the value, the more color is imprinted and the stronger the
+	 *  contrast between the glow and the background.
+	 *  Valid values are from 0 to 255.
+	 *
+	 *  @default 2
+	 */
+	public var strength:Number;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function getAffectedProperties():Array /* of String */
+	{
+		return AFFECTED_PROPERTIES;
+	}
+
+	/**
+	 *  @private
+	 */
+	override protected function initInstance(instance:IEffectInstance):void
+	{
+		super.initInstance(instance);
+
+		var glowInstance:GlowInstance = GlowInstance(instance);
+
+		glowInstance.alphaFrom = alphaFrom;
+		glowInstance.alphaTo = alphaTo;
+		glowInstance.blurXFrom = blurXFrom;
+		glowInstance.blurXTo = blurXTo;
+		glowInstance.blurYFrom = blurYFrom;
+		glowInstance.blurYTo = blurYTo;
+		glowInstance.color = color;
+		glowInstance.inner = inner;
+		glowInstance.knockout = knockout;
+		glowInstance.strength = strength;
+	}
+}
+
+}


M Invert SkinningDataProvider descriptor

--- src/aerys/minko/scene/data/SkinningDataProvider.as
+++ src/aerys/minko/scene/data/SkinningDataProvider.as
@@ -7,15 +7,15 @@

 	public final class SkinningDataProvider implements IDataProvider
 	{
-		private static const DATA_DESCRIPTOR	: Object	= {
-			"skinningMethod"		: "method",
-			"skinningNumBones"		: "numBones",
-			"skinningBindShape"		: "bindShape",
-			"skinningMaxInfluences"	: "maxInfluences",
-			"skinningMatrices"		: "matrices",
-			"skinningDQn"			: "dqN",
-			"skinningDQd"			: "dqD"
-		}
+		private static const DATA_DESCRIPTOR : Object = {
+			"method"		: "skinningMethod",
+			"numBones"		: "skinningNumBones",
+			"bindShape"		: "skinningBindShape",
+			"maxInfluences"	: "skinningMaxInfluences",
+			"matrices"		: "skinningMatrices",
+			"dqN"			: "skinningDQn",
+			"dqD"			: "skinningDQd"
+		};

 		private var _method			: uint				= 0;
 		private var _numBones		: uint				= 0;


fixed warnings

fixed warnings

--- WeaveJS/src/weavejs/util/StringView.as
+++ WeaveJS/src/weavejs/util/StringView.as
@@ -7,7 +7,7 @@
 		private static const Uint16Array:Class = JS.global.Uint16Array;
 		private static const Uint8Array:Class = JS.global.Uint8Array;

-		public var buffer, bufferView, rawData;
+		public var buffer:*, bufferView:Array, rawData:Array;

 		/*\
 		|*|
@@ -36,7 +36,7 @@

 		public function StringView (vInput, sEncoding = undefined/* optional (default: UTF-8) */, nOffset = undefined/* optional */, nLength = undefined/* optional */) {

-			var fTAView, aWhole, aRaw, fPutOutptCode, fGetOutptChrSize, nInptLen, nStartIdx = isFinite(nOffset) ? nOffset : 0, nTranscrType = 15;
+			var fTAView:Class, aWhole:Array, aRaw:Array, fPutOutptCode:Function, fGetOutptChrSize:Function, nInptLen:int, nStartIdx:int = isFinite(nOffset) ? nOffset : 0, nTranscrType:int = 15;

 			if (sEncoding) { this.encoding = sEncoding.toString(); }

@@ -126,7 +126,7 @@

 			if (nTranscrType < 8) {

-				var vSource, nOutptLen, nCharStart, nCharEnd, nEndIdx, fGetInptChrSize, fGetInptChrCode;
+				var vSource:*, nOutptLen:int, nCharStart:int, nCharEnd:int, nEndIdx:int, fGetInptChrSize:Function, fGetInptChrCode:Function;

 				if (nTranscrType & 4) { /* input is string */

@@ -172,7 +172,7 @@
 						/* both the source and the new StringView have a fixed-length encoding... */

 						aWhole = new fTAView(nOutptLen);
-						for (var nOutptIdx = 0; nOutptIdx < nOutptLen; aWhole[nOutptIdx] = vSource[nStartIdx + nOutptIdx++]);
+						for (var nOutptIdx:int = 0; nOutptIdx < nOutptLen; aWhole[nOutptIdx] = vSource[nStartIdx + nOutptIdx++]);
 						break conversionSwitch;

 					case 1:
@@ -183,7 +183,7 @@

 						nOutptLen = 0;

-						for (var nInptIdx = nStartIdx; nInptIdx < nEndIdx; nInptIdx++) {
+						for (var nInptIdx:int = nStartIdx; nInptIdx < nEndIdx; nInptIdx++) {
 							nOutptLen += fGetOutptChrSize(vSource[nInptIdx]);
 						}

@@ -191,7 +191,7 @@

 						/* transcription of the source... */

-						for (var nInptIdx = nStartIdx, nOutptIdx = 0; nOutptIdx < nOutptLen; nInptIdx++) {
+						for (nInptIdx = nStartIdx, nOutptIdx = 0; nOutptIdx < nOutptLen; nInptIdx++) {
 							nOutptIdx = fPutOutptCode(aWhole, vSource[nInptIdx], nOutptIdx);
 						}

@@ -205,7 +205,7 @@

 						nStartIdx = 0;

-						var nChrCode;
+						var nChrCode:int;

 						for (nChrIdx = 0; nChrIdx < nCharStart; nChrIdx++) {
 							nChrCode = fGetInptChrCode(vSource, nStartIdx);
@@ -216,7 +216,7 @@

 						/* transcription of the source... */

-						for (var nInptIdx = nStartIdx, nOutptIdx = 0; nOutptIdx < nOutptLen; nInptIdx += fGetInptChrSize(nChrCode), nOutptIdx++) {
+						for (nInptIdx = nStartIdx, nOutptIdx = 0; nOutptIdx < nOutptLen; nInptIdx += fGetInptChrSize(nChrCode), nOutptIdx++) {
 							nChrCode = fGetInptChrCode(vSource, nInptIdx);
 							aWhole[nOutptIdx] = nChrCode;
 						}
@@ -231,9 +231,9 @@

 						nOutptLen = 0;

-						var nChrCode;
-
-						for (var nChrIdx = 0, nInptIdx = 0; nChrIdx < nCharEnd; nInptIdx += fGetInptChrSize(nChrCode)) {
+						var nChrIdx:int;
+
+						for (nChrIdx = 0, nInptIdx = 0; nChrIdx < nCharEnd; nInptIdx += fGetInptChrSize(nChrCode)) {
 							nChrCode = fGetInptChrCode(vSource, nInptIdx);
 							if (nChrIdx === nCharStart) { nStartIdx = nInptIdx; }
 							if (++nChrIdx > nCharStart) { nOutptLen += fGetOutptChrSize(nChrCode); }
@@ -243,7 +243,7 @@

 						/* transcription... */

-						for (var nInptIdx = nStartIdx, nOutptIdx = 0; nOutptIdx < nOutptLen; nInptIdx += fGetInptChrSize(nChrCode)) {
+						for (nInptIdx = nStartIdx, nOutptIdx = 0; nOutptIdx < nOutptLen; nInptIdx += fGetInptChrSize(nChrCode)) {
 							nChrCode = fGetInptChrCode(vSource, nInptIdx);
 							nOutptIdx = fPutOutptCode(aWhole, nChrCode, nOutptIdx);
 						}
@@ -258,7 +258,7 @@

 						/* transcription... */

-						for (var nIdx = 0; nIdx < nOutptLen; nIdx++) {
+						for (var nIdx:int = 0; nIdx < nOutptLen; nIdx++) {
 							aWhole[nIdx] = vSource.charCodeAt(nIdx) & 0xff;
 						}

@@ -272,7 +272,7 @@

 						nOutptLen = 0;

-						for (var nMapIdx = 0; nMapIdx < nInptLen; nMapIdx++) {
+						for (var nMapIdx:int = 0; nMapIdx < nInptLen; nMapIdx++) {
 							if (nMapIdx === nCharStart) { nStartIdx = nOutptLen; }
 							nOutptLen += fGetOutptChrSize(vSource.charCodeAt(nMapIdx));
 							if (nMapIdx === nCharEnd) { nEndIdx = nOutptLen; }
@@ -282,7 +282,7 @@

 						/* transcription... */

-						for (var nOutptIdx = 0, nChrIdx = 0; nOutptIdx < nOutptLen; nChrIdx++) {
+						for (nOutptIdx = 0, nChrIdx = 0; nOutptIdx < nOutptLen; nChrIdx++) {
 							nOutptIdx = fPutOutptCode(aWhole, vSource.charCodeAt(nChrIdx), nOutptIdx);
 						}

@@ -296,7 +296,7 @@

 						/* transcription... */

-						for (var nIdx = 0; nIdx < nOutptLen; nIdx++) {
+						for (nIdx = 0; nIdx < nOutptLen; nIdx++) {
 							aWhole[nIdx] = vSource.charCodeAt(nIdx);
 						}

@@ -320,9 +320,9 @@

 		/* CONSTRUCTOR'S METHODS */

-		public static function loadUTF8CharCode(aChars, nIdx) {
-
-			var nLen = aChars.length, nPart = aChars[nIdx];
+		public static function loadUTF8CharCode(aChars, nIdx):int {
+
+			var nLen:int = aChars.length, nPart:int = aChars[nIdx];

 			return nPart > 251 && nPart < 254 && nIdx + 5 < nLen ?
 				/* (nPart - 252 << 30) may be not safe in ECMAScript! So...: */
@@ -340,9 +340,9 @@

 		};

-		public static function putUTF8CharCode(aTarget, nChar, nPutAt) {
-
-			var nIdx = nPutAt;
+		public static function putUTF8CharCode(aTarget, nChar, nPutAt):int {
+
+			var nIdx:int = nPutAt;

 			if (nChar < 0x80 /* 128 */) {
 				/* one byte */
@@ -383,14 +383,14 @@

 		};

-		public static function getUTF8CharLength(nChar) {
+		public static function getUTF8CharLength(nChar):int {
 			return nChar < 0x80 ? 1 : nChar < 0x800 ? 2 : nChar < 0x10000 ? 3 : nChar < 0x200000 ? 4 : nChar < 0x4000000 ? 5 : 6;
 		};

-		public static function loadUTF16CharCode(aChars, nIdx) {
+		public static function loadUTF16CharCode(aChars, nIdx):int {

 			/* UTF-16 to DOMString decoding algorithm */
-			var nFrstChr = aChars[nIdx];
+			var nFrstChr:int = aChars[nIdx];

 			return nFrstChr > 0xD7BF /* 55231 */ && nIdx + 1 < aChars.length ?
 				(nFrstChr - 0xD800 /* 55296 */ << 10) + aChars[nIdx + 1] + 0x2400 /* 9216 */
@@ -398,9 +398,9 @@

 		};

-		public static function putUTF16CharCode(aTarget, nChar, nPutAt) {
-
-			var nIdx = nPutAt;
+		public static function putUTF16CharCode(aTarget, nChar, nPutAt):int {
+
+			var nIdx:int = nPutAt;

 			if (nChar < 0x10000 /* 65536 */) {
 				/* one element */
@@ -415,13 +415,13 @@

 		};

-		public static function getUTF16CharLength(nChar) {
+		public static function getUTF16CharLength(nChar):int {
 			return nChar < 0x10000 ? 1 : 2;
 		};

 		/* Array of bytes to base64 string decoding */

-		public static function b64ToUint6(nChr) {
+		public static function b64ToUint6(nChr):int {

 			return nChr > 64 && nChr < 91 ?
 				nChr - 65
@@ -438,7 +438,7 @@

 		};

-		public static function uint6ToB64(nUint6) {
+		public static function uint6ToB64(nUint6):int {

 			return nUint6 < 26 ?
 				nUint6 + 65
@@ -457,11 +457,11 @@

 		/* Base64 string to array encoding */

-		public static function bytesToBase64(aBytes) {
-
-			var sB64Enc = "";
-
-			for (var nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {
+		public static function bytesToBase64(aBytes):String {
+
+			var sB64Enc:String = "";
+
+			for (var nMod3:int, nLen:int = aBytes.length, nUint24:int = 0, nIdx:int = 0; nIdx < nLen; nIdx++) {
 				nMod3 = nIdx % 3;
 				if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += "\r\n"; }
 				nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);
@@ -476,13 +476,14 @@
 		};

-		public static function base64ToBytes(sBase64, nBlockBytes = undefined) {
+		public static function base64ToBytes(sBase64, nBlockBytes = undefined):Array {

 			var
-			sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen = sB64Enc.length,
-				nOutLen = nBlockBytes ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockBytes) * nBlockBytes : nInLen * 3 + 1 >>> 2, aBytes = new Uint8Array(nOutLen);
-
-			for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
+			sB64Enc:String = sBase64.replace(/[^A-Za-z0-9\+\/]/g, ""), nInLen:int = sB64Enc.length,
+				nOutLen:int = nBlockBytes ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockBytes) * nBlockBytes : nInLen * 3 + 1 >>> 2,
+				aBytes:Array = new Uint8Array(nOutLen);
+
+			for (var nMod3:int, nMod4:int, nUint24:int = 0, nOutIdx:int = 0, nInIdx:int = 0; nInIdx < nInLen; nInIdx++) {
 				nMod4 = nInIdx & 3;
 				nUint24 |= StringView.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;
 				if (nMod4 === 3 || nInLen - nInIdx === 1) {
@@ -497,7 +498,7 @@

 		};

-		public static function makeFromBase64(sB64Inpt, sEncoding, nByteOffset, nLength) {
+		public static function makeFromBase64(sB64Inpt, sEncoding, nByteOffset, nLength):StringView {

 			return new StringView(sEncoding === "UTF-16" || sEncoding === "UTF-32" ? StringView.base64ToBytes(sB64Inpt, sEncoding === "UTF-16" ? 2 : 4).buffer : StringView.base64ToBytes(sB64Inpt), sEncoding, nByteOffset, nLength);

@@ -505,16 +506,16 @@

 		/* DEFAULT VALUES */

-		public var encoding = "UTF-8"; /* Default encoding... */
+		public var encoding:String = "UTF-8"; /* Default encoding... */

 		/* INSTANCES' METHODS */

-		public function makeIndex(nChrLength = undefined, nStartFrom = undefined) {
+		public function makeIndex(nChrLength = undefined, nStartFrom = undefined):int {

 			var

-			aTarget = this.rawData, nChrEnd, nRawLength = aTarget.length,
-				nStartIdx = nStartFrom || 0, nIdxEnd = nStartIdx, nStopAtChr = isNaN(nChrLength) ? Infinity : nChrLength;
+			aTarget:Array = this.rawData, nChrEnd:int, nRawLength:int = aTarget.length,
+				nStartIdx:int = nStartFrom || 0, nIdxEnd:int = nStartIdx, nStopAtChr:int = isNaN(nChrLength) ? Infinity : nChrLength;

 			if (nChrLength + 1 > aTarget.length) { throw new RangeError("public function makeIndex - The offset can\'t be major than the length of the array - 1."); }

@@ -522,7 +523,7 @@

 				case "UTF-8":

-					var nPart;
+					var nPart:int;

 					for (nChrEnd = 0; nIdxEnd < nRawLength && nChrEnd < nStopAtChr; nChrEnd++) {
 						nPart = aTarget[nIdxEnd];
@@ -556,7 +557,7 @@

 		};

-		public function toBase64(bWholeBuffer) {
+		public function toBase64(bWholeBuffer):String {

 			return StringView.bytesToBase64(
 				bWholeBuffer ?
@@ -574,12 +575,12 @@

 		};

-		public function subview(nCharOffset /* optional */, nCharLength /* optional */) {
+		public function subview(nCharOffset /* optional */, nCharLength /* optional */):StringView {

 			var

-			nChrLen, nCharStart, nStrLen, bVariableLen = this.encoding === "UTF-8" || this.encoding === "UTF-16",
-				nStartOffset = nCharOffset, nStringLength, nRawLen = this.rawData.length;
+			nChrLen:int, nCharStart:int, nStrLen:int, bVariableLen:Boolean = this.encoding === "UTF-8" || this.encoding === "UTF-16",
+				nStartOffset:int = nCharOffset, nStringLength:int, nRawLen:int = this.rawData.length;

 			if (nRawLen === 0) {
 				return new StringView(this.buffer, this.encoding);
@@ -607,15 +608,15 @@

 			return new StringView(this.buffer, this.encoding, nStartOffset, nChrLen);

-		};
-
-		public function forEachChar(fCallback, oThat, nChrOffset, nChrLen) {
-
-			var aSource = this.rawData, nRawEnd, nRawIdx;
+		}
+
+		public function forEachChar(fCallback, oThat, nChrOffset, nChrLen):void {
+
+			var aSource:Array = this.rawData, nRawEnd:int, nRawIdx:int;

 			if (this.encoding === "UTF-8" || this.encoding === "UTF-16") {

-				var fGetInptChrSize, fGetInptChrCode;
+				var fGetInptChrSize:Function, fGetInptChrCode:Function;

 				if (this.encoding === "UTF-8") {
 					fGetInptChrSize = StringView.getUTF8CharLength;
@@ -628,7 +629,7 @@
 				nRawIdx = isFinite(nChrOffset) ? this.makeIndex(nChrOffset) : 0;
 				nRawEnd = isFinite(nChrLen) ? this.makeIndex(nChrLen, nRawIdx) : aSource.length;

-				for (var nChrCode, nChrIdx = 0; nRawIdx < nRawEnd; nChrIdx++) {
+				for (var nChrCode:int, nChrIdx:int = 0; nRawIdx < nRawEnd; nChrIdx++) {
 					nChrCode = fGetInptChrCode(aSource, nRawIdx);
 					fCallback.call(oThat || null, nChrCode, nChrIdx, nRawIdx, aSource);
 					nRawIdx += fGetInptChrSize(nChrCode);
@@ -654,7 +655,7 @@
 				return String.fromCharCode.apply(null, this.rawData);
 			}

-			var fGetCode, fGetIncr, sView = "";
+			var fGetCode:Function, fGetIncr:Function, sView:String = "";

 			if (this.encoding === "UTF-8") {
 				fGetIncr = StringView.getUTF8CharLength;
@@ -664,7 +665,7 @@
 				fGetCode = StringView.loadUTF16CharCode;
 			}

-			for (var nChr, nLen = this.rawData.length, nIdx = 0; nIdx < nLen; nIdx += fGetIncr(nChr)) {
+			for (var nChr:int, nLen:int = this.rawData.length, nIdx:int = 0; nIdx < nLen; nIdx += fGetIncr(nChr)) {
 				nChr = fGetCode(this.rawData, nIdx);
 				sView += String.fromCharCode(nChr);
 			}


added a utility function and a Signal in scene for layers.

--- src/aerys/minko/scene/node/Scene.as
+++ src/aerys/minko/scene/node/Scene.as
@@ -64,6 +64,13 @@
 			return _nameToLayer[name];
 		}

+		public function belongsToLayer(leaf : ITaggable, layerName : String) : Boolean
+		{
+			var layer : uint = getLayerName(layerName);
+
+			return (leaf.tag & layer) != 0;
+		}
+
 		public function get activeCamera() : AbstractCamera
 		{
 			return _camera;
@@ -181,6 +188,7 @@
 			_renderingEnd = new Signal('Scene.renderingEnd');
 			_exitFrame = new Signal('Scene.exitFrame');
 			_layerNameChanged = new Signal('Scene.layerNameChanged');
+			_layers[0] = 'Default';
 		}

 		override protected function initializeSignalHandlers() : void


Some cleanup/fixup, although we're probably not going to use this...

git-svn-id: a3e1eb16dde062992de22c830ed8045c8013209a@268 c613c5cb-e716-0410-b11b-feb51c14d237

--- src/as/com/threerings/whirled/spot/data/Cluster.as
+++ src/as/com/threerings/whirled/spot/data/Cluster.as
@@ -34,9 +34,15 @@
 /**
  * Contains information on clusters.
  */
-public class Cluster extends Rectangle
-    implements DSet_Entry, Streamable /*, Hashable */
+public class Cluster
+    implements DSet_Entry, Streamable, Hashable
 {
+    /** The bounding rectangle of this cluster. */
+    public var x :int;
+    public var y :int;
+    public var width :int;
+    public var height :int;
+
     /** A unique identifier for this cluster (also the distributed object
      * id of the cluster chat object). */
     public var clusterOid :int;
@@ -46,18 +52,25 @@
         // nothing needed
     }

-    // documentation inherited
+    // from Hashable
     public function hashCode () :int
     {
         return clusterOid;
     }

+    // from Hashable
+    public function equals (o :Object) :Boolean
+    {
+        return (o is Cluster) && ((o as Cluster).clusterOid == this.clusterOid);
+    }
+
     /**
      * Generates a string representation of this instance.
      */
-    override public function toString () :String
+    public function toString () :String
     {
-        return super.toString() + ", clusterOid=" + clusterOid;
+        return "x=" + x + ", y=" + y + ", width=" + width + ", height=" + height +
+            ", clusterOid=" + clusterOid;
     }

     // documentation inherited from interface DSet_Entry
@@ -69,16 +82,23 @@
     // documentation inherited from interface Streamable
     public function readObject (ins :ObjectInputStream) :void
     {
+        x = ins.readInt();
+        y = ins.readInt();
+        width = ins.readInt();
+        height = ins.readInt();
+
         clusterOid = ins.readInt();
     }

     // documentation inherited from interface Streamable
     public function writeObject (out :ObjectOutputStream) :void
     {
+        out.writeInt(x);
+        out.writeInt(y);
+        out.writeInt(width);
+        out.writeInt(height);
+
         out.writeInt(clusterOid);
     }
-
-    /** Used for {@link #getKey}. */
-    protected var _key :int;
 }
 }


- bugfix: Fixed weird bug in resolving closest tickmark in Slider

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@886 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/controls/Slider.as
+++ src/reprise/controls/Slider.as
@@ -62,7 +62,9 @@
 		{
 			value = Math.min(value, m_maxValue);
 			value = Math.max(value, m_minValue);
+			log("value: " + (value));
 			m_value = m_allowsTickMarkValuesOnly ? closestTickMarkValueToValue(value) : value;
+			log("m_value: " + (m_value));
 			if (!m_isDragging)
 			{
 				applyValue();
@@ -137,7 +139,7 @@

 		public function closestTickMarkValueToValue(val:Number):Number
 		{
-			var diff:Number = (m_maxValue - m_minValue) / (m_numTickMarks - 1);
+			var diff:Number = (m_maxValue - m_minValue) / m_numTickMarks;
 			var index:int = Math.floor(val / diff);
 			if (val % diff > diff / 2) index++;
 			return index * diff;


OPEN - issue RITTERSPORTFREUNDE-215: Galerie Navigator : Farbe der Icons + -
http://j.fork.de:8080/browse/RITTERSPORTFREUNDE-215

	FIXED

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@826 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/controls/Slider.as
+++ src/reprise/controls/Slider.as
@@ -241,15 +241,13 @@
 			var pos:Number;
 			if(m_direction == DIRECTION_HORIZONTAL)
 			{
-				pos = (width - m_thumb.width) / 100 * ((value - dataMin) /
-					((dataMax - dataMin) / 100));
+				pos = (width - m_thumb.width) * ((value - dataMin) / (dataMax - dataMin));
 				pos = Math.max(0, pos);
 				pos = Math.min(width - m_thumb.width, pos);
 			}
 			else
 			{
-				pos = (height - m_thumb.height) / 100 * ((value - dataMin) /
-					((dataMax - dataMin) / 100));
+				pos = (height - m_thumb.height) * ((value - dataMin) / (dataMax - dataMin));
 				pos = Math.max(0, pos);
 				pos = Math.min(height - m_thumb.height, pos);

@@ -263,15 +261,13 @@
 			{
 				pos = Math.max(0, pos);
 				pos = Math.min(width - m_thumb.width, pos);
-				return pos / ((width - m_thumb.width) / 100) *
-					((m_maxValue - m_minValue) / 100) + m_minValue;
+				return pos / (width - m_thumb.width) * (m_maxValue - m_minValue) + m_minValue;
 			}
 			else
 			{
 				pos = Math.max(0, pos);
 				pos = Math.min(height - m_thumb.height, pos);
-				return pos / ((height - m_thumb.height) / 100) *
-					((m_maxValue - m_minValue) / 100) + m_minValue;
+				return pos / (height - m_thumb.height) * (m_maxValue - m_minValue) + m_minValue;
 			}
 		}


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

--- frameworks/projects/automation/src/mx/automation/delegates/controls/MenuBarItemAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/MenuBarItemAutomationImpl.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: 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@1251469 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation/src/mx/automation/delegates/controls/RadioButtonAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/RadioButtonAutomationImpl.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


refactored ShaderPart.localToWorld, worldToLocal, worldToView, worldToScreen, localToScreen methods and added ShaderPart.viewToScreen()

--- src/aerys/minko/render/shader/part/ShaderPart.as
+++ src/aerys/minko/render/shader/part/ShaderPart.as
@@ -154,12 +154,12 @@

 		protected function get cameraPosition() : SFloat
 		{
-			return _main._sceneBindings.getParameter('cameraPosition', 3);
+			return _main._sceneBindings.getParameter('cameraPosition', 4);
 		}

 		protected function get cameraDirection() : SFloat
 		{
-			return _main._sceneBindings.getParameter('cameraDirection', 3);
+			return _main._sceneBindings.getParameter('cameraDirection', 4);
 		}

 		protected function get cameraZNear() : SFloat
@@ -744,32 +744,42 @@
 			main._kills.push(getNode(value));
 		}

-		protected final function localToWorld(value : Object) : SFloat
-		{
-			return multiply4x4(value, localToWorldMatrix);
-		}
-
-		protected final function localToView(value : Object) : SFloat
-		{
-			return multiply4x4(localToWorld(value), worldToViewMatrix);
-		}
-
-		protected final function worldToLocal(value : Object) : SFloat
-		{
-			return multiply4x4(value, worldToLocalMatrix);
-		}
-
-		protected final function worldToView(value : Object) : SFloat
-		{
-			return multiply4x4(value, worldToViewMatrix);
-		}
-
-		protected final function localToScreen(vertex : Object) : SFloat
+		protected final function localToWorld(localSpaceVector : Object) : SFloat
+		{
+			return multiply4x4(localSpaceVector, localToWorldMatrix);
+		}
+
+		protected final function localToView(localSpaceVector : Object) : SFloat
+		{
+			return worldToView(localToWorld(localSpaceVector));
+		}
+
+		protected final function worldToLocal(worldSpaceVector : Object) : SFloat
+		{
+			return multiply4x4(worldSpaceVector, worldToLocalMatrix);
+		}
+
+		protected final function worldToView(worldSpaceVector : Object) : SFloat
+		{
+			return multiply4x4(worldSpaceVector, worldToViewMatrix);
+		}
+
+		protected final function worldToScreen(worldSpaceVector : Object) : SFloat
+		{
+			return viewToScreen(worldToView(worldSpaceVector));
+		}
+
+		protected final function localToScreen(localSpaceVector : Object) : SFloat
 		{
 			return multiply4x4(
-				localToWorld(vertex),
+				localToWorld(localSpaceVector),
 				worldToScreenMatrix
 			);
+		}
+
+		protected final function viewToScreen(viewSpaceVector : Object) : SFloat
+		{
+			return multiply4x4(viewSpaceVector, projectionMatrix);
 		}

 		protected final function deltaLocalToWorld(vertex : Object) : SFloat


Prevent the elevator puzzle to be "skipped" again once it's at the top


Added FP.stepTowards() to step an object towards a target point.

--- net/flashpunk/FP.as
+++ net/flashpunk/FP.as
@@ -186,6 +186,28 @@
 		}

 		/**
+		 * Steps the object towards a point.
+		 * @param	object		Object to move (must have an x and y property).
+		 * @param	x			X position to step towards.
+		 * @param	y			Y position to step towards.
+		 * @param	distance	The distance to step (will not overshoot target).
+		 */
+		public static function stepTowards(object:Object, x:Number, y:Number, distance:Number = 1):void
+		{
+			point.x = x - object.x;
+			point.y = y - object.y;
+			if (point.length > distance)
+			{
+				object.x = x;
+				object.y = y;
+				return;
+			}
+			point.normalize(distance);
+			object.x += point.x;
+			object.y += point.y;
+		}
+
+		/**
 		 * Finds the angle (in degrees) from point 1 to point 2.
 		 * @param	x1		The first x-position.
 		 * @param	y1		The first y-position.


Refactor for performance improvement in order injection of parameterized tests.

--- FlexUnit4/src/org/flexunit/runners/Parameterized.as
+++ FlexUnit4/src/org/flexunit/runners/Parameterized.as
@@ -231,8 +231,10 @@
 					}
 				}

+				var methodXML : XML = insertOrderMetadataIfNecessary( fwMethod.method );
+
 				for ( var j:int=0; j<results.length; j++ ) {
-					var method:Method = applyOrderToParameterizedTestMethod( fwMethod.method, j, results.length );
+					var method:Method = applyOrderToParameterizedTestMethod( methodXML, j, results.length );
 					paramMethod = new ParameterizedMethod( method, results[ j ] );
 					finalArray.push( paramMethod );
 				}
@@ -244,7 +246,7 @@
 		return finalArray;
 	}

-	protected function applyOrderToParameterizedTestMethod( method : Method, dataSetIndex : int, totalMethods : int ) : Method
+	protected function insertOrderMetadataIfNecessary( method : Method ) : XML
 	{
 		var xmlCopy:XML = method.methodXML.copy();

@@ -254,10 +256,17 @@
 		if ( a )
 			arg = a.getArgument( AnnotationArgumentConstants.ORDER );
 		else	// CJP: If the method doesn't contain a "TEST" metadata tag, we probably shouldn't be in  here anyway... throw Error?
-			return method;
+			return xmlCopy;

 		if ( !arg )
 			xmlCopy.metadata.(@name=="Test").appendChild( <arg key="order" value="0"/> );
+
+		return xmlCopy;
+	}
+
+	protected function applyOrderToParameterizedTestMethod( methodXML : XML, dataSetIndex : int, totalMethods : int ) : Method
+	{
+		var xmlCopy:XML = methodXML.copy();

 		var orderValueDec : Number = (dataSetIndex + 1) / ( Math.pow( 10, totalMethods ) );
 		var newOrderValue : Number = xmlCopy.metadata.(@name=="Test").arg.( @key == "order" ).attribute( "value" ) + orderValueDec;


Transferred from the Adobe Open Source Subversion Repository

Revision: 17108
Author:   chiedozi@adobe.com
Date:     2010-07-28T23:12:04.976302Z

Log Message:
-----------
Renamed rootView and initalData properties on MobileApplication, ViewNavigator and ViewNavigatorSection to firstView and firstViewData due to PARB requests.
Renamed ViewData to ViewHistoryData due to PARB request.
Updated performance tests to match api changes

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/tests/performance/mobile/TwitterSearch/src/TwitterSearchMXMLLabel.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/TwitterSearch/src/TwitterSearchVirtualizedASTextField.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/TwitterSearch/src/TwitterSearchVirtualizedMXMLLabel.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/TwitterSearch/src/TwitterSearchASLabel.mxml</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewData.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewData.as" copyfrom-rev="17103" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewHistoryData.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/TwitterSearch/src/TwitterSearchMXMLTextField.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/TwitterSearch/src/TwitterSearchVirtualizedASLabel.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/ComponentCatalog/src/ComponentCatalog.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/TwitterSearch/src/TwitterSearchVirtualizedMXMLTextField.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorSection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/TwitterSearch/src/TwitterSearchASTextField.mxml</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as
@@ -8,7 +8,7 @@

 import spark.components.View;

-public class ViewData implements IExternalizable
+public class ViewHistoryData implements IExternalizable
 {
     //--------------------------------------------------------------------------
     //
@@ -24,7 +24,7 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function ViewData(factory:Class = null, data:Object = null, instance:View = null)
+    public function ViewHistoryData(factory:Class = null, data:Object = null, instance:View = null)
     {
         this.factory = factory;
         this.data = data;


Transferred from the Adobe Open Source Subversion Repository

Revision: 11995
Author:   doug.lee@ssbbartgroup.com
Date:     2009-11-19T18:50:30.831767Z

Log Message:
-----------
Updated all AccImpls that use MSAA constants (except TextLayout) to
use the new AccConst references instead of hard-coding hex numbers and
local copies of the constants.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ColorPickerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/LabelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextInputAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/accessibility/WindowedApplicationAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SpinnerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/DropDownListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RichEditableTextAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AlertAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccordionHeaderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DateFieldAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/NumericStepperAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SkinnableTextBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ComboBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TitleWindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/LinkButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ToggleButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/accessibility/WindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DateChooserAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/VideoPlayerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TitleWindowAccImpl.as</path>

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

--- frameworks/projects/mx/src/mx/accessibility/LabelAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/LabelAccImpl.as
@@ -15,6 +15,7 @@
 import flash.accessibility.Accessibility;
 import flash.events.Event;
 import mx.accessibility.AccImpl;
+import mx.accessibility.AccConst;
 import mx.core.UIComponent;
 import mx.core.mx_internal;

@@ -38,27 +39,6 @@

     //--------------------------------------------------------------------------
     //
-    //  Class constants
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     */
-    private static const STATE_SYSTEM_READONLY:uint = 0x00000040;
-
-    /**
-     *  @private
-     */
-    private static const STATE_SYSTEM_FOCUSABLE:uint = 0x00100000;
-
-    /**
-     *  @private
-     */
-    private static const EVENT_OBJECT_NAMECHANGE:uint = 0x800C;
-
-    //--------------------------------------------------------------------------
-    //
     //  Class methods
     //
     //--------------------------------------------------------------------------
@@ -117,7 +97,7 @@
     {
         super(master);

-        role = 0x29; // ROLE_SYSTEM_STATICTEXT
+        role = AccConst.ROLE_SYSTEM_STATICTEXT;
     }

     //--------------------------------------------------------------------------
@@ -161,9 +141,9 @@
     {
         var accState:uint = getState(childID);

-        accState &= ~STATE_SYSTEM_FOCUSABLE;
+        accState &= ~AccConst.STATE_SYSTEM_FOCUSABLE;

-        accState |= STATE_SYSTEM_READONLY;
+        accState |= AccConst.STATE_SYSTEM_READONLY;

         return accState;
     }
@@ -215,7 +195,7 @@
         {
             case "updateComplete":
             {
-                Accessibility.sendEvent(master, 0, EVENT_OBJECT_NAMECHANGE);
+                Accessibility.sendEvent(master, 0, AccConst.EVENT_OBJECT_NAMECHANGE);
                 Accessibility.updateProperties();
                 break;
             }


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

--- frameworks/projects/mx/src/mx/skins/halo/RadioButtonIcon.as
+++ frameworks/projects/mx/src/mx/skins/halo/RadioButtonIcon.as
@@ -20,6 +20,11 @@

 /**
  *  The skin for all the states of the icon in a RadioButton.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class RadioButtonIcon extends Border
 {
@@ -79,6 +84,11 @@

 	/**
 	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function RadioButtonIcon()
 	{


Transferred from the Adobe Open Source Subversion Repository

Revision: 20828
Author:   jasonsj@adobe.com
Date:     2011-03-11T21:59:40.817900Z

Log Message:
-----------
Merge 20824.

ASDoc change. Indicate that ViewStack is not supported in mobile projects.

QE notes: none
Doc notes: none
Bugs:
SDK-29893 notes for ASDoc mobile ButtonBar and TabBar
Reviewer:  tkraikit
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>
<path kind="dir" action="M">/private/flex/sdk/trunk</path>

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

--- frameworks/projects/spark/src/spark/components/ButtonBar.as
+++ frameworks/projects/spark/src/spark/components/ButtonBar.as
@@ -61,8 +61,8 @@
  *
  *  Custom Spark item renderers.

  *
- *
You can use the ButtonBar control to set the active child of a ViewStack container,
- *  as the following example shows:

+ *
For non-mobile projects, you can use the ButtonBar control to set the
+ *  active child of a ViewStack container, as the following example shows:

  *
  *
Note: The Spark list-based controls (the Spark ListBase class and its subclasses
  *  such as ButtonBar, ComboBox, DropDownList, List, and TabBar) do not support the BasicLayout class


Transferred from the Adobe Open Source Subversion Repository

Revision: 4158
Author:   rfrishbe@adobe.com
Date:     2008-11-21T16:39:12.721615Z

Log Message:
-----------
Add class types to the FxButtonBar's IFactory skins.  These IFactories should return FxButtons.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Glenn
tests: checkintests

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

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

--- frameworks/projects/spark/src/spark/components/ButtonBar.as
+++ frameworks/projects/spark/src/spark/components/ButtonBar.as
@@ -75,7 +75,7 @@
     //  firstButton
     //----------------------------------

-    [SkinPart(required="false")]
+    [SkinPart(required="false", type="mx.components.FxButton")]
     /**
      * A skin part that defines the first button.
      */
@@ -85,7 +85,7 @@
     //  lastButton
     //----------------------------------

-    [SkinPart(required="false")]
+    [SkinPart(required="false", type="mx.components.FxButton")]
     /**
      * A skin part that defines the last button.
      */
@@ -95,7 +95,7 @@
     //  middleButton
     //----------------------------------

-    [SkinPart]
+    [SkinPart(type="mx.components.FxButton")]
     /**
      * A skin part that defines the middle button(s).
      */


Transferred from the Adobe Open Source Subversion Repository

Revision: 5175
Author:   aharui@adobe.com
Date:     2009-03-05T18:52:12.308249Z

Log Message:
-----------
Bunches of ButtonBar Bugs

QE Notes: None
Doc Notes: None
Bugs: sdk-19219, sdk-19310, sdk-19312, sdk-19431, sdk-19459
Reviewer: glenn
tests: checkintests mustella:FxButtonBar

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/ISelectableRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/utils/MouseShieldUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButtonBar.as</path>

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

--- frameworks/projects/spark/src/spark/components/ButtonBar.as
+++ frameworks/projects/spark/src/spark/components/ButtonBar.as
@@ -11,17 +11,23 @@

 package mx.components
 {
+import flash.events.Event;
+import flash.events.EventPhase;
 import flash.events.IEventDispatcher;
 import flash.events.FocusEvent;
 import flash.events.KeyboardEvent;
 import flash.events.MouseEvent;
 import flash.ui.Keyboard;

+import mx.collections.IList;
 import mx.components.baseClasses.FxListBase;
+import mx.core.EventPriority;
 import mx.core.IFactory;
 import mx.core.ISelectableRenderer;
 import mx.core.IVisualElement;
 import mx.core.mx_internal;
+import mx.events.CollectionEvent;
+import mx.events.CollectionEventKind;
 import mx.events.RendererExistenceEvent;
 import mx.managers.IFocusManagerComponent;

@@ -69,6 +75,7 @@
         //Add a keyDown event listener so we can adjust
         //selection accordingly.
         addEventListener(KeyboardEvent.KEY_DOWN, buttonBar_keyDownHandler);
+        addEventListener(KeyboardEvent.KEY_UP, buttonBar_keyUpHandler);

 		tabChildren = false;
 		tabEnabled = true;
@@ -96,7 +103,7 @@
     //  firstButton
     //----------------------------------

-    [SkinPart(required="false", type="mx.core.IDataRenderer")]
+    [SkinPart(required="false", type="mx.core.IVisualElement")]

     /**
      * A skin part that defines the first button.
@@ -112,7 +119,7 @@
     //  lastButton
     //----------------------------------

-    [SkinPart(required="false", type="mx.core.IDataRenderer")]
+    [SkinPart(required="false", type="mx.core.IVisualElement")]

     /**
      * A skin part that defines the last button.
@@ -128,7 +135,7 @@
     //  middleButton
     //----------------------------------

-    [SkinPart(required="true", type="mx.core.IDataRenderer")]
+    [SkinPart(required="true", type="mx.core.IVisualElement")]

     /**
      * A skin part that defines the middle button(s).
@@ -158,15 +165,37 @@
 		requiresSelectionChanging = true;
 	}

-	private var enabledChanging:Boolean;
-
-    /**
-     *  @private
-     */
-    override public function set enabled(value:Boolean):void
+    override public function set dataProvider(value:IList):void
+    {
+        if (dataProvider)
+            dataProvider.removeEventListener(CollectionEvent.COLLECTION_CHANGE, resetCollectionChangeHandler);
+
+		// not really a default handler, we just want it to run after the datagroup
+        if (value)
+            value.addEventListener(CollectionEvent.COLLECTION_CHANGE, resetCollectionChangeHandler, false, EventPriority.DEFAULT_HANDLER);
+
+        super.dataProvider = value;
+    }
+
+    /**
+     *  @private
+     */
+    private function resetCollectionChangeHandler(event:Event):void
 	{
-		super.enabled = value;
-		enabledChanging = true;
+        if (event is CollectionEvent)
+        {
+            var ce:CollectionEvent = CollectionEvent(event);
+
+            if (ce.kind == CollectionEventKind.ADD ||
+				ce.kind == CollectionEventKind.REMOVE)
+			{
+				// force reset here so first/middle/last skins
+				// get reassigned
+				ce = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
+				ce.kind = CollectionEventKind.RESET;
+				dataProvider.dispatchEvent(ce);
+			}
+		}
 	}

     /**
@@ -193,35 +222,12 @@
     /**
      *  @private
      */
-    override protected function updateDisplayList(w:Number, h:Number):void
-    {
-		super.updateDisplayList(w, h);
-
-        if (enabledChanging)
-		{
-			enabledChanging = false;
-			if (dataProvider)
-			{
-				var n:int = dataProvider.length;
-				for (var i:int = 0; i < n; i++)
-				{
-					var renderer:ISelectableRenderer =
-						dataGroup.getElementAt(i) as ISelectableRenderer;
-					if (renderer)
-						renderer.enabled = enabled;
-				}
-			}
-		}
-    }
-
-    /**
-     *  @private
-     */
     override public function drawFocus(isFocused:Boolean):void
     {
 		adjustLayering(focusedIndex);
         drawButtonFocus(focusedIndex, isFocused);
     }
+

     /**
      *  @private
@@ -330,7 +336,6 @@
 			if (renderer is ISelectableRenderer)
 			{
 				ISelectableRenderer(renderer).allowDeselection = !requiresSelection;
-				ISelectableRenderer(renderer).enabled = enabled;
 			}
 		}

@@ -395,6 +400,12 @@
     {
 		var currentRenderer:ISelectableRenderer;
 		var renderer:ISelectableRenderer;
+
+		if (event.eventPhase == EventPhase.BUBBLING_PHASE)
+			return;
+
+		if (!enabled)
+			return;

         switch (event.keyCode)
         {
@@ -413,6 +424,7 @@
 						renderer.showFocusIndicator = true;
 				}

+                event.stopPropagation();
                 break;
             }
             case Keyboard.DOWN:
@@ -430,6 +442,7 @@
 						renderer.showFocusIndicator = true;
 				}

+                event.stopPropagation();
                 break;
             }
             case Keyboard.SPACE:
@@ -437,16 +450,39 @@
 				currentRenderer = dataGroup.getElementAt(focusedIndex) as ISelectableRenderer;
 				if (!currentRenderer || (currentRenderer.selected && requiresSelection))
 					return;
-				currentRenderer.selected = !currentRenderer.selected;
-				if (currentRenderer.selected)
-					selectedIndex = focusedIndex;
-				else
-					selectedIndex = -1;
+				currentRenderer.dispatchEvent(event);
                 break;
             }
         }
     }

+    /**
+     *  @private
+     */
+    private function buttonBar_keyUpHandler(event:KeyboardEvent):void
+    {
+		var currentRenderer:ISelectableRenderer;
+		var renderer:ISelectableRenderer;
+
+		if (event.eventPhase == EventPhase.BUBBLING_PHASE)
+			return;
+
+		if (!enabled)
+			return;
+
+        switch (event.keyCode)
+        {
+            case Keyboard.SPACE:
+            {
+				currentRenderer = dataGroup.getElementAt(focusedIndex) as ISelectableRenderer;
+				if (!currentRenderer || (currentRenderer.selected && requiresSelection))
+					return;
+				currentRenderer.dispatchEvent(event);
+                break;
+            }
+        }
+	}
+
     /**
      *  @private
      */


Proposed fix for FXU-71

Proposed fix for FXU-71

git-svn-id: 9278a788294a4258aac04586390fc35fb4a5f335@10305 a9308255-753e-0410-a2e9-80b3fbc4fff6

--- FlexUnit4/src/org/flexunit/internals/runners/FlexUnit1ClassRunner.as
+++ FlexUnit4/src/org/flexunit/internals/runners/FlexUnit1ClassRunner.as
@@ -72,6 +72,12 @@
 				//in this case, we need to make a suite
 				this.test = createTestSuiteWithFilter( filterRef );
 			}
+
+			if ( klassOrTest is TestSuite ) {
+				if ( TestSuite( klassOrTest ).testArrayList.isEmpty() ) {
+					throw new InitializationError("Empty test Suite!");
+				}
+			}
 		}

 		protected function describeChild( child:* ):IDescription {
@@ -144,11 +150,7 @@

 			totalTestCount = test.countTestCases();

-			try {
-				test.runWithResult(result);
-			} catch (e:Error ) {
-				trace("error");
-			}
+			test.runWithResult(result);
 		}

 		protected function handleTestComplete( result:ChildResult ):void {


Change 20080928-bargull-HGR by bargull@dell--p4--2-53 on 2008-09-28 16:32:23
    in /home/Admin/src/svn/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: stop playback

New Features:

Bugs Fixed: LPP-7081

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

Documentation:

Release Notes:

Details:
This fix only stops looping, to stop playback in general (sound-playback!), we got three options:
- wait for swf10 (which adds Loader#unloadAndStop())
- update swf-resources to use swf9
- evaluate the AVM1Loader-classes [1], maybe it helps, maybe not
(the flash.display.AVM1Movie-class does not support any interaction with the loaded flash movie).

[1]:
http://vegas.googlecode.com/svn/AS3/trunk/src/asgard/display/AVM2Loader.as
http://code.hellokeita.in/public/trunk/as3/br/hellokeita/net/AVM1Loader.as
http://www.libspark.org/svn/as3/ForcibleLoader/src/org/libspark/utils/ForcibleLoader.as

Tests:
attached at bugreport

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

--- WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
@@ -1075,6 +1075,17 @@
       }

       public function unload() {
+        if (this.imgLoader) {
+            try {
+                // close the stream
+                this.imgLoader.close();
+            } catch (error:Error) {
+                // throws an error if stream has already finished loading
+            }
+            // unload any content, call after close()
+            // for swf10: this.imgLoader.unloadAndStop();
+            this.imgLoader.unload();
+        }
         if (this.resourceObj) this.removeChild(this.resourceObj);
         if (this.isaudio) this.unloadSound();
         // clear out cached values


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

--- frameworks/projects/framework/src/mx/styles/metadata/LeadingStyle.as
+++ frameworks/projects/framework/src/mx/styles/metadata/LeadingStyle.as
@@ -14,5 +14,10 @@
  *
  *
The default value is 2.

  *
The default value for the ComboBox control is 0.

+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="leading", type="Number", format="Length", inherit="yes")]


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package spark.accessibility
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 20149
Author:   klin@adobe.com
Date:     2011-02-04T21:39:31.000080Z

Log Message:
-----------
Add and update [Inspectable] metadata across spark components.

QE notes: No
Doc notes: No
Bugs: SDK-28942
Reviewer: Carol
Tests run: cyclone server, checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/HGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.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/SkinnableContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TileGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Button.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.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/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/VGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Image.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/Range.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.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/modules/ModuleLoader.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/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/mediaClasses/DynamicStreamingVideoItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ToggleButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableContainer.as
@@ -588,6 +588,8 @@
     //  layout
     //----------------------------------

+    [Inspectable(category="General")]
+
     /**
      *  @copy spark.components.supportClasses.GroupBase#layout
      *


Transferred from the Adobe Open Source Subversion Repository

Revision: 2657
Author:   jszeto@adobe.com
Date:     2008-07-30T01:39:46.935505Z

Log Message:
-----------
Flex SDK Bug Fix

SDK-16273 - Items added to ItemsComponent do not display

Implemented a temporary solution for tooling support. I create a temporary Group to capture the content API changes made before the actual contentGroup has been created. This needs to get reworked in a more general change to better handle dynamic usage of the content API.

Bug: SDK-16273
QA: Yes
Doc: No
Review: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/ItemsComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableContainer.as
@@ -17,6 +17,7 @@
 import flex.events.FlexEvent;
 import flex.events.ItemExistenceChangedEvent;

+import mx.collections.IList;
 import mx.core.IFactory;
 import mx.managers.IFocusManagerContainer;

@@ -79,16 +80,53 @@

 	[SkinPart]
 	public var contentGroup:Group;
-
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	// Used to hold the content until the contentGroup is created.
+	private var _placeHolderGroup:Group;
+
+	protected function get currentContentGroup():Group
+	{
+		if (!contentGroup)
+		{
+			if (!_placeHolderGroup)
+			{
+				_placeHolderGroup = new Group();
+
+				if (_content)
+					_placeHolderGroup.content = _content;
+
+				_placeHolderGroup.addEventListener(
+					ItemExistenceChangedEvent.ITEM_ADD, contentGroup_itemAddedHandler);
+				_placeHolderGroup.addEventListener(
+					ItemExistenceChangedEvent.ITEM_REMOVE, contentGroup_itemRemovedHandler);
+				_placeHolderGroup.addEventListener(
+				    FlexEvent.CONTENT_CHANGING, contentGroup_contentChangingHandler);
+				_placeHolderGroup.addEventListener(
+				    FlexEvent.CONTENT_CHANGED, contentGroup_contentChangedHandler);
+			}
+			return _placeHolderGroup;
+		}
+		else
+		{
+			return contentGroup;
+		}
+	}
+
 	//--------------------------------------------------------------------------
 	//
 	//  Properties proxied to contentHolder
 	//
 	//--------------------------------------------------------------------------
-
+
 	//----------------------------------
 	//  content
-	//----------------------------------
+	//----------------------------------

 	private var _content:*;

@@ -97,11 +135,13 @@
 	 */
 	[Bindable]
 	public function get content():*
-	{
+	{
 		if (contentGroup)
 			return contentGroup.content;
-
-		return _content;
+		else if (_placeHolderGroup)
+			return _placeHolderGroup.content;
+		else
+			return _content;
 	}

 	public function set content(value:*):void
@@ -109,10 +149,12 @@
 		if (value == _content)
 			return;

-		_content = value;
-
-		if (contentGroup)
-			contentGroup.content = _content;
+		_content = value;
+
+		if (contentGroup)
+			contentGroup.content = value;
+		else if (_placeHolderGroup)
+			_placeHolderGroup.content = value;
 	}

 	//----------------------------------
@@ -210,10 +252,7 @@
 	 */
 	public function get numItems():int
 	{
-		if (!contentGroup)
-			return 0;
-
-		return contentGroup.numItems;
+		return currentContentGroup.numItems;
 	}

 	/**
@@ -221,10 +260,7 @@
 	 */
 	public function getItemAt(index:int):*
 	{
-		if (!contentGroup)
-			return null;
-
-		return contentGroup.getItemAt(index);
+		return currentContentGroup.getItemAt(index);
 	}

 	/**
@@ -232,10 +268,7 @@
 	 */
 	public function addItem(item:*):*
 	{
-		if (!contentGroup)
-			return null;
-
-		return contentGroup.addItem(item);
+		return currentContentGroup.addItem(item);
 	}

 	/**
@@ -243,10 +276,7 @@
 	 */
 	public function addItemAt(item:*, index:int):*
 	{
-		if (!contentGroup)
-			return null;
-
-		return contentGroup.addItemAt(item, index);
+		return currentContentGroup.addItemAt(item, index);
 	}

 	/**
@@ -254,10 +284,7 @@
 	 */
 	public function removeItem(item:*):*
 	{
-		if (!contentGroup)
-			return null;
-
-		return contentGroup.removeItem(item);
+		return currentContentGroup.removeItem(item);
 	}

 	/**
@@ -265,10 +292,7 @@
 	 */
 	public function removeItemAt(index:int):*
 	{
-		if (!contentGroup)
-			return null;
-
-		return contentGroup.removeItemAt(index);
+		return currentContentGroup.removeItemAt(index);
 	}

 	/**
@@ -276,10 +300,7 @@
 	 */
 	public function getItemIndex(item:*):int
 	{
-		if (!contentGroup)
-			return -1;
-
-		return contentGroup.getItemIndex(item);
+		return currentContentGroup.getItemIndex(item);
 	}

 	/**
@@ -287,10 +308,7 @@
 	 */
 	public function setItemIndex(item:*, index:int):void
 	{
-		if (!contentGroup)
-			return;
-
-		contentGroup.setItemIndex(item, index);
+		currentContentGroup.setItemIndex(item, index);
 	}

 	/**
@@ -298,10 +316,7 @@
 	 */
 	public function swapItems(item1:*, item2:*):void
 	{
-		if (!contentGroup)
-			return;
-
-		contentGroup.swapItems(item1, item2);
+		currentContentGroup.swapItems(item1, item2);
 	}

 	/**
@@ -309,10 +324,7 @@
 	 */
 	public function swapItemsAt(index1:*, index2:*):void
 	{
-		if (!contentGroup)
-			return;
-
-		contentGroup.swapItemsAt(index1, index2);
+		currentContentGroup.swapItemsAt(index1, index2);
 	}

 	//--------------------------------------------------------------------------
@@ -331,8 +343,29 @@
 	{
 		if (instance == contentGroup)
 		{
-			if (_content != undefined)
+			if (_placeHolderGroup != null)
+			{
+				var sourceContent:Array = _placeHolderGroup.content as Array;
+
+				if (sourceContent)
+					contentGroup.content = sourceContent.slice();
+				else if (_placeHolderGroup.content is IList)
+					throw new Error("ItemsComponent can not currently handle content of type " +
+							"IList when adding children dynamically. Please discuss with Jason Szeto");
+				else
+					contentGroup.content = _placeHolderGroup.content;
+
+				// Temporary workaround because copying content from one Group to another throws RTE
+				for (var i:int = _placeHolderGroup.numItems; i > 0; i--)
+				{
+					_placeHolderGroup.removeItemAt(0);
+				}
+
+			}
+			else if (_content != undefined)
+			{
 				contentGroup.content = _content;
+			}
 			if (_layout != null)
 				contentGroup.layout = _layout;
 			if (_itemRenderer != null || _itemRendererFunction != null)
@@ -349,6 +382,20 @@
 			    FlexEvent.CONTENT_CHANGING, contentGroup_contentChangingHandler);
 			contentGroup.addEventListener(
 			    FlexEvent.CONTENT_CHANGED, contentGroup_contentChangedHandler);
+
+			if (_placeHolderGroup)
+			{
+				_placeHolderGroup.removeEventListener(
+					ItemExistenceChangedEvent.ITEM_ADD, contentGroup_itemAddedHandler);
+				_placeHolderGroup.removeEventListener(
+					ItemExistenceChangedEvent.ITEM_REMOVE, contentGroup_itemRemovedHandler);
+				_placeHolderGroup.removeEventListener(
+				    FlexEvent.CONTENT_CHANGING, contentGroup_contentChangingHandler);
+				_placeHolderGroup.removeEventListener(
+				    FlexEvent.CONTENT_CHANGED, contentGroup_contentChangedHandler);
+
+				_placeHolderGroup = null;
+			}
 		}
 	}

@@ -369,6 +416,7 @@
 			    FlexEvent.CONTENT_CHANGED, contentGroup_contentChangedHandler);
 		}
 	}
+

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 4163
Author:   gosmith@adobe.com
Date:     2008-11-21T23:05:07.953326Z

Log Message:
-----------
Coding conventions: All [SkinPart] metadata now explicitly states required="true" or required="false".

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Evtim

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/components/baseClasses/FxTrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxSpinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableContainer.as
@@ -126,7 +126,7 @@
     //
     //--------------------------------------------------------------------------

-    [SkinPart]
+    [SkinPart(required="true")]

     /**
      *  A required skin part that defines the Group where the content


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

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

 package spark.skins.mobile
 {


Transferred from the Adobe Open Source Subversion Repository

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

--- frameworks/projects/automation_spark/src/spark/automation/tabularData/SparkDataGridTabularData.as
+++ frameworks/projects/automation_spark/src/spark/automation/tabularData/SparkDataGridTabularData.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//  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: 6430
Author:   cframpto@adobe.com
Date:     2009-04-30T19:18:35.946696Z

Log Message:
-----------
Vellum build 422.

Lots of changes made to what was the InputManager and is now TextContainerManager which required code changes on our part.
Fixed - Can not tab into TextInput and start typing without a mouse click.

New issues:
- focusInHandler only active until there is a controller attached and at that point RichEditableText doesn't get them any more
- SelectionEvent.SELECTION_CHANGE does not seem to be dispatched by Vellum anymore after insertText/appendText and perhaps other operations which change the selection.  It is dispatched for setSelection().  I added some temporary code to work around this issue since several TextArea appendText/insertText tests were failing.

QE Notes: all TextArea and TextInput tests pass except Gumbo_TextArea_export_method_default which I will leave to QA to sort out
Doc Notes:
Bugs: SDK-20815
Reviewers: Gordon

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RichEditableText2.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/textLayout.swz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/RichEditableTextContainerManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/textLayout.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/textLayout.swf</path>
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/tlf.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RichEditableText.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/RichEditableTextContainerManager.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/RichEditableTextContainerManager.as
@@ -0,0 +1,206 @@
+package spark.components.supportClasses
+{
+
+import flash.display.BlendMode;
+import flash.display.Graphics;
+import flash.events.FocusEvent;
+import flash.geom.Rectangle;
+
+import flashx.textLayout.container.TextContainerManager;
+import flashx.textLayout.edit.ISelectionManager;
+import flashx.textLayout.edit.SelectionFormat;
+import flashx.textLayout.elements.IConfiguration;
+import flashx.undo.IUndoManager;
+import flashx.undo.UndoManager;
+
+import mx.core.mx_internal;
+
+import spark.components.RichEditableText;
+import spark.components.TextSelectionVisibility;
+
+/**
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+public class RichEditableTextContainerManager extends TextContainerManager
+{
+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function RichEditableTextContainerManager(
+                        container:RichEditableText, configuration:IConfiguration)
+    {
+        super(container, configuration);
+
+        textView = container;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private var hasScrollRect:Boolean = false;
+
+    /**
+     *  @private
+     */
+    private var textView:RichEditableText;
+
+    /**
+     *  @private
+     *  Used for debugging.
+     *  Set this to an RGB uint to draw an opaque background
+     *  so that you can see the bounds of the component.
+     *  If it is null, the background is black pixels at 0 alpha,
+     *  to be transparent but catch mouse events.
+     */
+    mx_internal static var backgroundColor:Object = null; // 0xDDDDDD;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override public function drawBackgroundAndSetScrollRect(
+                                    scrollX:Number, scrollY:Number):Boolean
+    {
+        var width:Number = compositionWidth;
+        var height:Number = compositionHeight;
+
+        if (isNaN(width) || isNaN(height))
+            return false;  // just measuring!
+
+        var contentBounds:Rectangle = getContentBounds();
+
+        if (scrollX == 0 &&
+            scrollY == 0 &&
+            contentBounds.width <= width &&
+            contentBounds.height <= height)
+        {
+            // skip the scrollRect
+            if (hasScrollRect)
+            {
+                container.scrollRect = null;
+                hasScrollRect = false;
+            }
+        }
+        else
+        {
+            container.scrollRect = new Rectangle(scrollX, scrollY, width, height);
+            hasScrollRect = true;
+        }
+
+        // Client must draw a background, even it if is 100% transparent.
+        var g:Graphics = container.graphics;
+        g.clear();
+        g.lineStyle();
+        var bc:Object = mx_internal::backgroundColor;
+        if (bc != null)
+            g.beginFill(uint(bc));
+        else
+            g.beginFill(0x000000, 0);
+        g.drawRect(scrollX, scrollY, width, height);
+        g.endFill();
+
+        return hasScrollRect;
+    }
+
+    /**
+     *  @private
+     */
+    override protected function getUndoManager():IUndoManager
+    {
+        if (!textView.mx_internal::undoManager)
+        {
+            textView.mx_internal::undoManager = new UndoManager();
+            textView.mx_internal::undoManager.undoAndRedoItemLimit = int.MAX_VALUE;
+        }
+
+        return textView.mx_internal::undoManager;
+    }
+
+    /**
+     *  @private
+     */
+    override protected function getFocusedSelectionFormat():SelectionFormat
+    {
+        var selectionColor:* = textView.getStyle("selectionColor");
+
+        // The insertion point is black, inverted, which makes it
+        // the inverse color of the background, for maximum readability.
+        return new SelectionFormat(
+            selectionColor, 1.0, BlendMode.NORMAL,
+            0x000000, 1.0, BlendMode.INVERT);
+    }
+
+    /**
+     *  @private
+     */
+    override protected function getUnfocusedSelectionFormat():SelectionFormat
+    {
+        var unfocusedSelectionColor:* = textView.getStyle(
+                                            "unfocusedSelectionColor");
+
+        var unfocusedAlpha:Number =
+            textView.selectionVisibility != TextSelectionVisibility.WHEN_FOCUSED ?
+            1.0 :
+            0.0;
+
+        // No insertion point when no focus.
+        return new SelectionFormat(
+            unfocusedSelectionColor, unfocusedAlpha, BlendMode.NORMAL,
+            unfocusedSelectionColor, 0.0);
+    }
+
+    /**
+     *  @private
+     */
+    override protected function getInactiveSelectionFormat():SelectionFormat
+    {
+        var inactiveSelectionColor:* = textView.getStyle(
+                                            "inactiveSelectionColor");
+
+        var inactiveAlpha:Number =
+            textView.selectionVisibility == TextSelectionVisibility.ALWAYS ?
+            1.0 :
+            0.0;
+
+        // No insertion point when not active.
+        return new SelectionFormat(
+            inactiveSelectionColor, inactiveAlpha, BlendMode.NORMAL,
+            inactiveSelectionColor, 0.0);
+    }
+
+    /**
+     *  @private
+     *  ToDo: there is currently an issue with event handlers.  As soon as
+     *  there is a controller attached all the event handling is done by the
+     *  controller and this no longer gets called.
+     */
+    override protected function focusInHandler(event:FocusEvent):void
+    {
+        textView.mx_internal::focusInHandler(event);
+
+        super.focusInHandler(event);
+    }
+
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 19973
Author:   cframpto@adobe.com
Date:     2011-01-27T14:45:03.950539Z

Log Message:
-----------
Text bugs.  Fix mustella failure from integration with TLF build 232 related to the EditManager delayedUpdates flag.  FIx RTE when setting text to null when there is a prompt.  Fix bug in getFormatOfRange if a selection was explicitly specified, rather than using the current selection.

QE notes:
Doc notes:
Bugs: SDK-29274, SDK-29257, SDK-29243
Reviewer: Alex
Tests run: cyclone
Is noteworthy for integration:

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/RichEditableTextContainerManager.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/RichEditableTextContainerManager.as
@@ -24,6 +24,7 @@

 import flashx.textLayout.container.ContainerController;
 import flashx.textLayout.container.TextContainerManager;
+import flashx.textLayout.edit.EditManager;
 import flashx.textLayout.edit.EditingMode;
 import flashx.textLayout.edit.ElementRange;
 import flashx.textLayout.edit.IEditManager;
@@ -35,6 +36,7 @@
 import flashx.textLayout.elements.IConfiguration;
 import flashx.textLayout.elements.ParagraphElement;
 import flashx.textLayout.elements.TextFlow;
+import flashx.textLayout.elements.TextRange;
 import flashx.textLayout.events.SelectionEvent;
 import flashx.textLayout.formats.Category;
 import flashx.textLayout.formats.ITextLayoutFormat;
@@ -373,10 +375,21 @@

         var operationState:SelectionState =
             new SelectionState(textFlow, anchorPosition, activePosition);
-
-        // On point selection remember pending formats for next char typed.
-        operationState.selectionManagerOperationState = true;
-
+
+        // If using the edit manager and the selection is the current selection,
+        // need to set the flag so point selection is set with pending formats for next
+        // char typed.
+        const editManager:IEditManager = textFlow.interactionManager as IEditManager;
+        if (editManager)
+        {
+            const absoluteStart:int = getAbsoluteStart(anchorPosition, activePosition);
+            const absoluteEnd:int = getAbsoluteEnd(anchorPosition, activePosition);
+
+            if (editManager.absoluteStart == absoluteStart && editManager.absoluteEnd == absoluteEnd)
+                operationState.selectionManagerOperationState = true;
+        }
+
+        // For the case when interactive editing is not allowed.
         var op:ApplyFormatOperation =
             new ApplyFormatOperation(
                 operationState, leafFormat, paragraphFormat, containerFormat);
@@ -386,7 +399,7 @@
         {
             textFlow.normalize();
             textFlow.flowComposer.updateAllControllers();
-        }
+        }

         return success;
     }
@@ -408,10 +421,13 @@

         if (textFlow.interactionManager)
         {
-            // If there is a selection manager use it so that the format
-            // will include any attributes set on a point selection but not
-            // yet applied.
-            return textFlow.interactionManager.getCommonCharacterFormat();
+            // If there is a selection manager use it so that the format,
+            // depending on the range, may include any attributes set on a point
+            // selection but not yet applied.
+            const range:TextRange =
+                new TextRange(textFlow, anchorPosition, activePosition);
+
+            return textFlow.interactionManager.getCommonCharacterFormat(range);
         }
         else
         {
@@ -528,6 +544,11 @@
         return success;
     }

+    /**
+     *  Note:  It is probably a TLF bug that, if delayedUpdates is true, we have to call
+     *  updateAllControllers before doing a format operation to guarantee the correct
+     *  results.
+     */
     mx_internal function getTextFlowWithComposer():TextFlow
     {
         var textFlow:TextFlow = getTextFlow();
@@ -535,11 +556,20 @@
         // Make sure there is a text flow with a flow composer.  There will
         // not be an interaction manager if editingMode is read-only.  If
         // there is an interaction manager flush any pending inserts into the
-        // text flow.
+        // text flow unless we are delaying updates in which case we may have to finish
+        // composition.
         if (composeState != TextContainerManager.COMPOSE_COMPOSER)
+        {
             convertToTextFlowWithComposer();
+        }
         else if (textFlow.interactionManager)
-            textFlow.interactionManager.flushPendingOperations();
+        {
+            const editManager:IEditManager = textFlow.interactionManager as IEditManager;
+            if (editManager && editManager.delayUpdates)
+                editManager.updateAllControllers();
+            else
+                textFlow.interactionManager.flushPendingOperations();
+        }

         return textFlow;
     }