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

--- frameworks/projects/mx/src/mx/controls/listClasses/ListRowInfo.as
+++ frameworks/projects/mx/src/mx/controls/listClasses/ListRowInfo.as
@@ -0,0 +1,115 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.controls.listClasses
+{
+
+/**
+ *  Used by the list-based classes to store information about their IListItemRenderers.
+ *
+ *  @see mx.controls.listClasses.ListBase#rowInfo
+ */
+public class ListRowInfo
+{
+	include "../../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @param y The y-position value for the row.
+	 *
+	 *  @param height The height of the row including margins.
+	 *
+	 *  @param uid The unique identifier of the item in the dataProvider
+	 *
+	 *  @param data The item in the dataprovider.
+	 */
+	public function ListRowInfo(y:Number, height:Number,
+								uid:String, data:Object = null)
+	{
+		super();
+
+		this.y = y;
+		this.height = height;
+		this.uid = uid;
+		this.data = data;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  data
+	//----------------------------------
+
+	/**
+	 *  The item in the dataprovider.
+	 */
+	public var data:Object;
+
+	//----------------------------------
+	//  height
+	//----------------------------------
+
+	/**
+	 *  The height of the row including margins.
+	 */
+	public var height:Number;
+
+	//----------------------------------
+	//  itemOldY
+	//----------------------------------
+
+	/**
+	 *  The last Y value for the renderer.
+	 *  Used in Tree's open/close effects.
+	 */
+	public var itemOldY:Number;
+
+	//----------------------------------
+	//  oldY
+	//----------------------------------
+
+	/**
+	 *  The last Y value for the row.
+	 *  Used in Tree's open/close effects.
+	 */
+	public var oldY:Number;
+
+	//----------------------------------
+	//  uid
+	//----------------------------------
+
+	/**
+	 *  The unique identifier of the item in the dataProvider
+	 */
+	public var uid:String;
+
+	//----------------------------------
+	//  y
+	//----------------------------------
+
+	/**
+	 *  The y-position value for the row.
+	 */
+	public var y:Number;
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 17308
Author:   dthakkar@adobe.com
Date:     2010-08-12T23:22:20.533632Z

Log Message:
-----------
Flex integration feature (includes spark formatters and related checkintests.)
UIComponent.as - Added API's to support non visual style client
IAdvancedStyleClient.as - Added setter for StyleParent method
StyleProtoChain.as - Added else loop to verify if the component is IAdvancedStyleClient
StyleProxy.as - added setter for styleParent method (this class inherits IAdvancedStyleClient interface)

QE notes: No
Doc notes: No
Bugs: No
Reviewer: Gordon , Darrell
Tests run: CheckinTests, Mustella
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/AdvancedStyleClient.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/styleTest</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/IAdvancedStyleClient.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/NumberFormatter.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/CollatorBase.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/supportClasses/NumberBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/BasicTests.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/CurrencyFormatter.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/DateTimeFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/supportClasses</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/CollatorTests.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/SortingCollator.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/StringToolsTestScript.mxml</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/AdvancedStyleClientTests.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/StringTools.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/BasicTests-config.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/styleTest/ADVStyleTestEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleProxy.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/NumberFormatterTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/CurrencyFormatterTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/CollatorTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/NumberFormatterTests.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/DateTimeFormatterTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/CurrencyFormatterTests.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/DateTimeFormatterTests.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/AdvancedStyleClientTestScript.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/GlobalizationBase.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/formatters/IFormatter.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/styleTest/ADVStyleTestClass.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/LastOperationStatus.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/StringToolsTests.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/MatchingCollator.as</path>

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

--- frameworks/projects/spark/src/spark/formatters/NumberFormatter.as
+++ frameworks/projects/spark/src/spark/formatters/NumberFormatter.as
@@ -0,0 +1,597 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.formatters
+{
+
+import flash.globalization.NationalDigitsType;
+import flash.globalization.NumberFormatter;
+import flash.globalization.NumberParseResult;
+
+import mx.core.mx_internal;
+import mx.formatters.IFormatter;
+
+import spark.formatters.supportClasses.NumberBase;
+import spark.globalization.LastOperationStatus;
+
+use namespace mx_internal;
+
+/**
+ *  The NumberFormatter class provides locale-sensitive formatting and
+ *  parsing of numeric values. It can format int,
+ *  uint, and Number objects.
+ *
+ *
This class is a wrapper class around the flash.globalization.
+ *  NumberFormatter. Therefore the locale-specific formatting
+ *  is provided by the flash.globalization.NumberFormatter.
+ *  However this NumberFormatter class can be used in MXML declartions,
+ *  uses the locale style for the requested Locale ID name, and has
+ *  methods and properties that are bindable.  Additionally events are
+ *  generated if there is an error or warning generated by the
+ *  flash.globalization class.
+ *

+ *  The flash.globalization.NumberFormatter class use the underlying
+ *  operating system for the formatting functionality and
+ *  to supply the locale-specific data. On some operating systems, the
+ *  flash.globalization classes are unsupported, this wrapper
+ *  class provides a fallback functionality in this case.
+ *

+ *
+ *  @see flash.globalization.NumberFormatter
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4.5
+ */
+public class NumberFormatter extends NumberBase implements IFormatter
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class Constants
+    //
+    //--------------------------------------------------------------------------
+
+    private static const NEGATIVE_NUMBER_FORMAT:String = "negativeNumberFormat";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructs a new NumberFormatter object to format numbers according
+     *  to the conventions of a given locale.
+     *

+     *  The locale for this class is supplied by the locale style.
+     *  The locale style can be set in several ways:
+     *

+     *

+     *
         *
+     *  Inheriting the style from a UIComponent by calling the UIComponent's
+     *  addStyleClient method.
+     *

+     *

+     *  By using the class in an MXML declaration and inheriting the
+     *  locale from the document that contains the declaration.
+     *  <listing version="3.0" >
+     *  <fx:Declarations>
+     *         <s:NumberFormatter id="nf" />
+     *  </fx:Declarations>
+     *  </listing>
+     *

+     *

+     *  By using an MXML declaration and specifying the locale value in
+     *  the list of assignments.
+     *  <listing version="3.0" >
+     *  <fx:Declarations>
+     *      <s:NumberFormatter id="nf_French_France" locale="fr_FR" />
+     *  </fx:Declarations>
+     *  </listing>
+     *

+     *

+     *  Calling the setStyle method, e.g.
+     *  nf.setStyle("locale", "fr-FR")
+     *

+     *

+     *

+     *  If the locale style is not set by one of the above techniques,
+     *  the methods of this class that depend on the locale
+     *  will throw an error.
+     *
         *
+     *
+     *  @playerversion Flash 10.1
+     *  @langversion 3.0
+     *  @productversion Flex 4.5
+     *  @productversion Flash CS5
+     */
+    public function NumberFormatter()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  actualLocaleIDName
+    //----------------------------------
+
+    [Bindable("change")]
+
+    /**
+     *  @inheritDoc
+     *
+     *  @see flash.globalization.NumberFormatter.actualLocaleIDName
+     *  @see #NumberFormatter()
+     *
+     *  @playerversion Flash 10.1
+     *  @langversion 3.0
+     *  @productversion Flash CS5
+     *  @productversion Flex 4.5
+     */
+    override public function get actualLocaleIDName():String
+    {
+        if (g11nWorkingInstance)
+        {
+            return (g11nWorkingInstance
+                as flash.globalization.NumberFormatter).actualLocaleIDName;
+        }
+
+        if (!localeStyle)
+        {
+            fallbackLastOperationStatus
+                                = LastOperationStatus.LOCALE_UNDEFINED_ERROR;
+            return undefined;
+        }
+
+        fallbackLastOperationStatus = LastOperationStatus.NO_ERROR;
+
+        return "en-US";
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  negativeNumberFormat
+    //----------------------------------
+
+    [Bindable("change")]
+    [Inspectable(category="General", enumeration="0,1,2,3,4")]
+
+    /**
+     *  A numeric value that indicates a formatting pattern for negative
+     *  numbers.
+     *  This pattern defines the location of the negative symbol
+     *  or parentheses in relation to the numeric portion of the
+     *  formatted number.
+     *
+     *
The following table summarizes the possible formats for
+     *  negative numbers. When a negative number is formatted,
+     *  the minus sign in the format is replaced with the value of
+     *  the negativeSymbol property and the 'n' character is
+     *  replaced with the formatted numeric value.

+     *
+     *

+     *

+     *            Negative number format type
+     *            Format
+     *

+     *

+     *            0
+     *            (n)
+     *

+     *

+     *            1
+     *            -n
+     *

+     *

+     *            2
+     *            - n
+     *

+     *

+     *            3
+     *            n-
+     *

+     *

+     *            4
+     *            n -
+     *

+     *

+     *
+     *
+     *  @default dependent on the locale and operating system.
+     *
+     *  @throws ArgumentError if the assigned value is not a number
+     *  between 0 and 4.
+     *
+     *  @see #negativeSymbol
+     *  @see #format()
+     *
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2
+     *  @langversion 3.0
+     *  @productversion Flex 4.5
+     */
+    public function get negativeNumberFormat():uint
+    {
+        return getBasicProperty(properties, NEGATIVE_NUMBER_FORMAT);
+    }
+
+    public function set negativeNumberFormat(value:uint):void
+    {
+        if (!g11nWorkingInstance)
+        {
+            if (4 < value)
+                throw new TypeError();
+        }
+
+        setBasicProperty(properties, NEGATIVE_NUMBER_FORMAT, value);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override mx_internal function createWorkingInstance():void
+    {
+        if (!localeStyle)
+        {
+            fallbackLastOperationStatus
+                                = LastOperationStatus.LOCALE_UNDEFINED_ERROR;
+            g11nWorkingInstance = null;
+            properties = null;
+            return;
+        }
+
+        if (enforceFallback)
+        {
+            fallbackInstantiate();
+            g11nWorkingInstance = null;
+            return;
+        }
+
+        g11nWorkingInstance
+                    = new flash.globalization.NumberFormatter(localeStyle);
+        if (g11nWorkingInstance &&
+            (g11nWorkingInstance.lastOperationStatus
+                                    != LastOperationStatus.UNSUPPORTED_ERROR))
+        {
+            properties = g11nWorkingInstance
+            propagateBasicProperties(g11nWorkingInstance);
+            return;
+        }
+
+        fallbackInstantiate();
+        g11nWorkingInstance = null;
+
+        if (fallbackLastOperationStatus == LastOperationStatus.NO_ERROR)
+        {
+            fallbackLastOperationStatus
+                                = LastOperationStatus.USING_FALLBACK_WARNING;
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    [Bindable("change")]
+
+    /**
+     *  Formats a number.
+     *
+     *
This function formats the number based on the property values
+     *  of the formatter.
+     *  If the properties are not modified after the locale style is set, the
+     *  numbers are formatted according to the locale-specific conventions
+     *  provided by the operating system for the locale identified
+     *  by actualLocaleIDName.
+     *  To customize the format, the properties
+     *  can be altered to control specific aspects of formatting a number.

+     *
+     *
Very large numbers and very small magnitude numbers can be
+     *  formatted with this function. However, the
+     *  number of significant digits is limited to the precision provided
+     *  by the Number object. Scientific notation is not supported.

+     *
+     *    @param    value    A Number value to format.
+     *    @return            A formatted number string.
+     *
+     *  @see NumberFormatter
+     *
+     *  @playerversion Flash 10.1
+     *  @langversion 3.0
+     *  @productversion Flex 4.5
+     *  @productversion Flash CS5
+     */
+    public function format(value:Object):String
+    {
+        if (value == null)
+            return null;
+
+        const number:Number = Number(value);
+
+        if (g11nWorkingInstance)
+        {
+            return (g11nWorkingInstance
+                as flash.globalization.NumberFormatter).formatNumber(number);
+        }
+
+        if (!localeStyle)
+        {
+            fallbackLastOperationStatus
+                                = LastOperationStatus.LOCALE_UNDEFINED_ERROR;
+            return undefined;
+        }
+
+        fallbackLastOperationStatus = LastOperationStatus.NO_ERROR;
+
+        return fallbackFormat(number);
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Parses a string and returns a NumberParseResult object containing
+     *  the parsed elements.
+     *
+     *
The NumberParseResult object contains
+     *  the value of the first number found in the input string, the
+     *  starting index for the number within the string, and the index
+     *  of the first character after the number in the string.

+     *
+     *
 If the string does not contain a number, the value property of
+     *  the NumberParseResult is set to NaN and the
+     *  startIndex and endIndex properties are
+     *  set to the hexadecimal value 0x7fffffff.
+     *

+     *
+     *
This function uses the value of the decimalSeparator
+     *  property to determine the portion of the number
+     *  that contains fractional
+     *  digits, and the groupingSeparator property to determine
+     *  which characters are allowed within the digits of a number,
+     *  and the negativeNumberFormat property to control
+     *  how negative values are represented.

+     *
+     *
The following table identifies the result of strings parsed
+     *  for the various NegativeNumberFormat values:

+     *

+     *

+     *            NegativeNumberFormat
+     *            Input String
+     *            Result
+     *

+     *

+     *            (n)
+     *            "(123)" or "( 123 )"
+     *            "-123"
+     *

+     *

+     *            -n
+     *            "-123" or "- 123"
+     *            "-123"
+     *

+     *

+     *            - n
+     *            "-123" or "- 123"
+     *            "-123"
+     *

+     *

+     *            n-
+     *            "123-" or "123 -"
+     *            "-123"
+     *

+     *

+     *            n -
+     *            "123-" or "123 -"
+     *            "-123"
+     *

+     *

+     *
+     *
A single white space is allowed between the number and the
+     *  minus sign or parenthesis.

+     *
+     *
Other properties are ignored when determining a valid number.
+     *  Specifically the value of the
+     *  digitsType property is ignored and the digits can be
+     *  from any of
+     *  the digit sets that are enumerated in the NationalDigitsType class.
+     *  The values of the groupingPattern
+     *  and useGrouping properties do not influence the
+     *  parsing of the number.
+     *

+     *
+     *
 If numbers are preceded or followed in the string by a
+     *  plus sign '+', the plus sign is treated as
+     *  a character that is not part of the number.
+     *

+     *
+     *
 This function does not parse strings containing numbers
+     *  in scientific notation (e.g. 1.23e40).

+     *
+     *
+     *  @example The following code parses a number from a string and
+     *  retrieves the prefix and suffix:
+     *  <listing version="3.0" >
+     *  var nf:NumberFormatter = new NumberFormatter("fr-FR");
+     *  var str:String = "1,56 mètre"
+     *  var result:NumberParseResult = nf.parse(str);
+     *  trace(result.value) // 1.56
+     *  trace(str.substr(0,result.startIndex));                // ""
+     *  trace(str.substr(result.startIndex, result.endIndex)); // "1,56"
+     *  trace(str.substr(result.endIndex));                 // " mètre"
+     *  </listing>
+     *
+     *  @param inputString The input string to parse.
+     *
+     *  @return A NumberParseResult object containing the numeric value
+     *  and the indices for the start and end of the portion of the string
+     *  that contains the number.
+     *
+     *  @throws TypeError if the inputString parameter is null.
+     *
+     *  @see flash.globalization.NumberParseResult
+     *  @see #parseNumber()
+     *  @see flash.globalization.NationalDigitsType
+     *
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2
+     *  @langversion 3.0
+     *  @productversion Flex 4.5
+     */
+    public function parse(inputString:String):NumberParseResult
+    {
+        if (g11nWorkingInstance)
+        {
+            return (g11nWorkingInstance
+                as flash.globalization.NumberFormatter).parse(inputString);
+        }
+
+        if (!localeStyle)
+        {
+            fallbackLastOperationStatus
+                                = LastOperationStatus.LOCALE_UNDEFINED_ERROR;
+            return undefined;
+        }
+
+        fallbackLastOperationStatus = LastOperationStatus.NO_ERROR;
+
+        return fallbackParse(inputString);
+    }
+
+    [Bindable("change")]
+
+    /**
+     *  Parses a string that contains only digits and optional whitespace
+     *  characters and returns a Number. If the string does not begin
+     *  with a number or contains characters other than whitespace that
+     *  are not part of the number, then this method returns
+     *  NaN. White space before or after
+     *  the numeric digits is ignored. A white space
+     *  character is a character that has a Space Separator (Zs) property
+     *  in the Unicode Character Database (see http://www.unicode.org/ucd/).
+     *
+     *
 If the numeric digit is preceded or followed by a
+     *  plus sign '+' it is treated as a non-whitespace character.
+     *  The return value is NaN.
+     *

+     *
+     *
 See the description of the parse function for more information
+     *  about number parsing and what constitutes a valid number.
+     *

+     *
+     *  @throws TypeError if the parseString is null
+     *
+     *  @see #parse()
+     *  @see flash.globalization.NationalDigitsType
+     *
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2
+     *  @langversion 3.0
+     *  @productversion Flex 4.5
+     */
+    public function parseNumber(parseString:String):Number
+    {
+        if (g11nWorkingInstance)
+        {
+            return (g11nWorkingInstance
+                as flash.globalization.NumberFormatter).parseNumber(parseString);
+        }
+
+        if (!localeStyle)
+        {
+            fallbackLastOperationStatus
+                                = LastOperationStatus.LOCALE_UNDEFINED_ERROR;
+            return undefined;
+        }
+
+        fallbackLastOperationStatus = LastOperationStatus.NO_ERROR;
+
+        return fallbackParseNumber(parseString);
+    }
+
+    /**
+     *  @copy spark.utils.Collator#getAvailableLocaleIDNames
+     *
+     *  @playerversion Flash 10.1
+     *  @langversion 3.0
+     *  @productversion Flash CS5
+     *  @productversion Flex 4.5
+     */
+    static public function getAvailableLocaleIDNames():Vector.<String>
+    {
+        const locales:Vector.<String>
+            = flash.globalization.NumberFormatter.getAvailableLocaleIDNames();
+
+        return locales ? locales : new Vector.<String>["en-US"];
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Private Methods
+    //
+    //--------------------------------------------------------------------------
+
+    private function fallbackFormat(value:Number): String
+    {
+        return value.toString();
+    }
+
+    private function fallbackParse(parseString:String):NumberParseResult
+    {
+        return new NumberParseResult();
+    }
+
+    private function fallbackParseNumber(value:String):Number
+    {
+        return Number(value);
+    }
+
+    private function fallbackInstantiate():void
+    {
+        properties =
+            {
+                fractionalDigits: 0,
+                useGrouping: false,
+                groupingPattern: "3",
+                digitsType: NationalDigitsType.EUROPEAN,
+                decimalSeparator: ".",
+                groupingSeparator: ",",
+                negativeSymbol: "-",
+                negativeNumberFormat: 0,
+                leadingZero: true,
+                trailingZeros: false
+            };
+
+        propagateBasicProperties(properties);
+
+        fallbackLastOperationStatus = LastOperationStatus.NO_ERROR;
+    }
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 972
Author:   mhorn@adobe.com
Date:     2008-03-27T20:24:16.905716Z

Log Message:
-----------
Minor ASDoc fixes.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractInvoker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractOperation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/AbstractWebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/logging/AbstractTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridBase.as</path>

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

--- frameworks/projects/mx/src/mx/controls/ComboBase.as
+++ frameworks/projects/mx/src/mx/controls/ComboBase.as
@@ -862,7 +862,7 @@
      *
      *
Note: Using the selectedItem property
      *  is often preferable to using this property. The value
-     *  property exists for backward compatibility with older applications
.
+     *  property exists for backward compatibility with older applications.

      *
      */
     public function get value():Object


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

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

 package mx.rpc
 {


fix RenderingController.effectPassesChangedHandler() and RenderingController.updateDrawCalls() to use Mesh.computedVisibility

--- src/aerys/minko/scene/controller/scene/RenderingController.as
+++ src/aerys/minko/scene/controller/scene/RenderingController.as
@@ -470,7 +470,7 @@
 					// create drawcall
 					var newDrawCall		: DrawCall			= new DrawCall();

-					newDrawCall.enabled = mesh.visible;
+					newDrawCall.enabled = mesh.visible && mesh.computedVisibility;

 					if (passInstance.program != null)
 					{
@@ -567,7 +567,7 @@
 				var passInstance	: ShaderInstance	= passTemplate.fork(meshBindings, sceneBindings);
 				var drawCall		: DrawCall			= new DrawCall();

-				drawCall.enabled = mesh.visible;
+				drawCall.enabled = mesh.visible && mesh.computedVisibility;
 				if (passInstance.program != null)
 				{
 					drawCall.configure(


Load modules from SWF bytes.

Load modules from SWF bytes.

--- src/com/esri/builder/controllers/supportClasses/WidgetTypeLoader.as
+++ src/com/esri/builder/controllers/supportClasses/WidgetTypeLoader.as
@@ -28,6 +28,7 @@
 import flash.filesystem.FileMode;
 import flash.filesystem.FileStream;
 import flash.system.ApplicationDomain;
+import flash.utils.ByteArray;

 import modules.IBuilderModule;
 import modules.supportClasses.CustomXMLModule;
@@ -70,11 +71,18 @@
             {
                 LOG.debug('loading module {0}', file.url);
             }
+
+            var fileBytes:ByteArray = new ByteArray();
+            var fileStream:FileStream = new FileStream();
+            fileStream.open(file, FileMode.READ);
+            fileStream.readBytes(fileBytes);
+            fileStream.close();
+
             const moduleInfo:IModuleInfo = ModuleManager.getModule(file.url);
             _moduleInfoArr.push(moduleInfo);
             moduleInfo.addEventListener(ModuleEvent.READY, moduleInfo_readyHandler);
             moduleInfo.addEventListener(ModuleEvent.ERROR, moduleInfo_errorHandler);
-            moduleInfo.load(ApplicationDomain.currentDomain, null, null, FlexGlobals.topLevelApplication.moduleFactory);
+            moduleInfo.load(ApplicationDomain.currentDomain, null, fileBytes, FlexGlobals.topLevelApplication.moduleFactory);
         });

         checkIfNoMoreModuleInfosLeft();


minor coding style fixes

minor coding style fixes

--- src/aerys/minko/type/math/Vector4.as
+++ src/aerys/minko/type/math/Vector4.as
@@ -26,10 +26,10 @@
 		private static const UPDATE_ALL			: uint		= UPDATE_LENGTH | UPDATE_LENGTH_SQ;

 		private static const DATA_DESCRIPTOR	: Object	= {
-			"x"	: "x",
-			"y"	: "y",
-			"z"	: "z",
-			"w"	: "w"
+			'x'	: 'x',
+			'y'	: 'y',
+			'z'	: 'z',
+			'w'	: 'w'
 		}

 		minko_math var _vector	: Vector3D	= new Vector3D();


Adding test TODO.

Adding test TODO.

--- test/src/org/postgresql/pegasus/functional/SimpleQueryTest.as
+++ test/src/org/postgresql/pegasus/functional/SimpleQueryTest.as
@@ -54,6 +54,7 @@

         [Test(async,timeout=1000)]
         public function testSelectInt():void {
+            // TODO: this should handle smallint as well
             var verifyFn:Function = function(e:QueryResultEvent) : void {
                 assertEquals(5, e.columns.length);
                 assertEquals('neg_one', IColumn(e.columns[0]).name);


added function for setting breakpoint

added function for setting breakpoint

--- WeaveJS/src/weavejs/data/key/QKeyGetter.as
+++ WeaveJS/src/weavejs/data/key/QKeyGetter.as
@@ -65,6 +65,11 @@
 			return 1;
 		}

+		override public function setResult(result:Object):void
+		{
+			super.setResult(result);
+		}
+
 		private function asyncComplete():void
 		{
 			setResult(this.outputKeys);


Rename delay to delayed

Rename delay to delayed

--- krew-framework/krewfw/core/KrewScene.as
+++ krew-framework/krewfw/core/KrewScene.as
@@ -354,7 +354,7 @@
             _servantActor.addScheduledTask(timeout, task);
         }

-        public function delay(timeout:Number, task:Function):void {
+        public function delayed(timeout:Number, task:Function):void {
             _servantActor.addScheduledTask(timeout, task);
         }


entries

entries

--- src/com/kemsky/impl/Stream.as
+++ src/com/kemsky/impl/Stream.as
@@ -30,6 +30,9 @@
          * -------------------------------------------
          */

+        //todo add iterators for index, value and zipped
+
+        //todo zip
         public function get entries():Stream
         {
             var result:Array = [];


removed LoaderGroup.loadAsset and LoaderGroup.loadBytes static methods because they where pointless shortcuts, use new LoaderGroup().loadAsset() or new LoaderGroup().loadBytes() instead

--- src/aerys/minko/scene/node/group/LoaderGroup.as
+++ src/aerys/minko/scene/node/group/LoaderGroup.as
@@ -179,16 +179,6 @@
 			return this;
 		}

-		public static function loadBytes(bytes : ByteArray) : LoaderGroup
-		{
-			return new LoaderGroup().loadBytes(bytes);
-		}
-
-		public static function loadAsset(asset : Class) : LoaderGroup
-		{
-			return new LoaderGroup().loadAsset(asset);
-		}
-
 		private function urlLoaderCompleteHandler(event : Event) : void
 		{
 			var loader 		: URLLoader			= event.target as URLLoader;


Transferred from the Adobe Open Source Subversion Repository

Revision: 11088
Author:   hhillen@paciellogroup.com
Date:     2009-10-22T20:14:16.491190Z

Log Message:
-----------
Spark AccImpl Classes

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextAreaAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SpinnerAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/PanelAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonBarAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SliderAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextInputAccImpl.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SkinnableTextBaseAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/DropDownListAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonAccImpl.as</path>

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

--- frameworks/projects/spark/src/spark/accessibility/CheckBoxAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/CheckBoxAccImpl.as
@@ -0,0 +1,153 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+
+import spark.components.CheckBox;
+import spark.components.supportClasses.ToggleButtonBase;
+
+use namespace mx_internal;
+
+/**
+ *  CheckBoxAccImpl is a subclass of AccessibilityImplementation
+ *  which implements accessibility for the CheckBox class.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+public class CheckBoxAccImpl extends ButtonAccImpl
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private static const STATE_SYSTEM_CHECKED:uint = 0x00000010;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Enables accessibility in the CheckBox class.
+     *
+     *
This method is called by application startup code
+     *  that is autogenerated by the MXML compiler.
+     *  Afterwards, when instances of CheckBox are initialized,
+     *  their accessibilityImplementation property
+     *  will be set to an instance of this class.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public static function enableAccessibility():void
+    {
+        CheckBox.createAccessibilityImplementation =
+            createAccessibilityImplementation;
+    }
+
+    /**
+     *  @private
+     *  Creates a CheckBox's AccessibilityImplementation object.
+     *  This method is called from UIComponent's
+     *  initializeAccessibility() method.
+     */
+    mx_internal static function createAccessibilityImplementation(
+                                component:UIComponent):void
+    {
+        component.accessibilityImplementation =
+            new CheckBoxAccImpl(component);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @param master The UIComponent instance that this AccImpl instance
+     *  is making accessible.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function CheckBoxAccImpl(master:UIComponent)
+    {
+        super(master);
+
+        role = 0x2C; // ROLE_SYSTEM_CHECKBUTTON
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: AccessibilityImplementation
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  IAccessible method for returning the state of the CheckBox.
+     *  States are predefined for all the components in MSAA.
+     *  Values are assigned to each state.
+     *  Depending upon whether the CheckBox is checked or unchecked,
+     *  a value is returned.
+     *
+     *  @param childID uint
+     *
+     *  @return State Whether the CheckBox is checked or unchecked.
+     */
+    override public function get_accState(childID:uint):uint
+    {
+        var accState:uint = getState(childID);
+
+        if (ToggleButtonBase(master).selected)
+            accState |= STATE_SYSTEM_CHECKED;
+
+        return accState;
+    }
+
+    /**
+     *  @private
+     *  IAccessible method for returning the default action of
+     *  the CheckBox, which is Check or UnCheck depending on the state.
+     *
+     *  @param childID uint
+     *
+     *  @return DefaultAction Check or UnCheck.
+     */
+    override public function get_accDefaultAction(childID:uint):String
+    {
+        return ToggleButtonBase(master).selected ? "UnCheck" : "Check";
+    }
+}
+
+}


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

--- frameworks/projects/spark/src/spark/globalization/SortingCollator.as
+++ frameworks/projects/spark/src/spark/globalization/SortingCollator.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.globalization
 {


Level : replace getSeqNumFromProgramDate by getSeqNumNearestProgramDate

To ensure that we end up on the right/nearest fragment if there is just a small drift between playlists
related to https://github.com/mangui/flashls/issues/436

--- src/com/pivotshare/hls/loader/FragmentLoader.as
+++ src/com/pivotshare/hls/loader/FragmentLoader.as
@@ -703,7 +703,7 @@
                 if (frag_previous.program_date) {
                     last_seqnum = _levels[level].getSeqNumNearestProgramDate(frag_previous.program_date);
                     CONFIG::LOGGING {
-                        Log.debug("FragmentLoader#_loadnextfragment: getSeqNumFromProgramDate(level,date,cc:" + level + "," + frag_previous.program_date + ")=" + last_seqnum);
+                        Log.debug("FragmentLoader#_loadnextfragment: getSeqNumNearestProgramDate(level,date,cc:" + level + "," + frag_previous.program_date + ")=" + last_seqnum);
                     }
                 }
                 if (last_seqnum == -1) {


Transferred from the Adobe Open Source Subversion Repository

Revision: 13001
Author:   mhorn@adobe.com
Date:     2009-12-16T19:06:34.929096Z

Log Message:
-----------
asdoc updates to creationPolicy property

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

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

--- frameworks/projects/framework/src/mx/core/IDeferredContentOwner.as
+++ frameworks/projects/framework/src/mx/core/IDeferredContentOwner.as
@@ -48,13 +48,16 @@
      *
      *
Possible values are:
      *

-     *
auto - automatically create the content immediately before it is needed.

-     *
all - create the content as soon as the parent component is created. This
-     *          option should only be used as a last resort since it increases startup time.

-     *
none - content must be created manually by calling
+     *
auto - Automatically create the content immediately before it is needed.

+     *
all - Create the content as soon as the parent component is created. This
+     *          option should only be used as a last resort because it increases startup time and memory usage.

+     *
none - Content must be created manually by calling
      *          the createDeferredContent() method.

      *

      *

+     *
+     *
If no creationPolicy is specified for a container, that container inherits the value of
+     *  its parent's creationPolicy property.

      *
      *  @default "auto"
      *
@@ -67,9 +70,10 @@
     function set creationPolicy(value:String):void;

     /**
-     *  Create the content for this component. If creationPolicy is "auto" or "all", this
-     *  function will be called by the flex framework. If creationPolicy is "none", this
-     *  function must be called to create the content for the component.
+     *  Create the content for this component. If the value of the creationPolicy property
+     *  is auto or all, this the Flex framework calls this method. If the value of the
+     *  creationPolicy property is none, you must explicitly call this method
+     *  to create the content for the component.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/framework/src/mx/effects/EffectTargetFilter.as
+++ frameworks/projects/framework/src/mx/effects/EffectTargetFilter.as
@@ -193,7 +193,7 @@
      *  @param target The target of the EffectInstance that calls this function. If an
      *  effect has multiple targets, this function is called once per target.
      *
-     *  @return true, if the target should be included in the effect;
+     *  @return Returna true, if the target should be included in the effect;
      *  otherwise returns false.
      */
     public function filterInstance(propChanges:Array, semanticsProvider:IEffectTargetHost,


Transferred from the Adobe Open Source Subversion Repository

Revision: 11943
Author:   cframpto@adobe.com
Date:     2009-11-18T17:39:35.268598Z

Log Message:
-----------
When remeasuring text for auto-size, set the compositionHeight correctly in the case were the height is constrained but the width is not.

Due to TLF bug, an image embedded in a compiled text flow does not finish loading until InlineGraphicElement.mustUseComposer() is called.  In our textContainerManager_inlineGraphicStatusChangeHandler, when we get the SIZE_PENDING event force the state transition.  Watson bug #2486102 logged against Vellum V2.

Change validateNow() in api calls to validateProperties() because that is really all we need and it reduces the risk of an infinite loop regarding measure/damage/measure/damage/etc.

QE notes:
Doc notes:
Bugs: SDK23973, SDK-24288, SDK-23638
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: no

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

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -45,6 +45,7 @@
 import flashx.textLayout.edit.SelectionState;
 import flashx.textLayout.elements.Configuration;
 import flashx.textLayout.elements.GlobalSettings;
+import flashx.textLayout.elements.InlineGraphicElement;
 import flashx.textLayout.elements.InlineGraphicElementStatus;
 import flashx.textLayout.elements.TextFlow;
 import flashx.textLayout.events.CompositionCompleteEvent;
@@ -2492,7 +2493,7 @@
                     composeHeight = calculateHeightInLines();

                 // The composeWidth may be adjusted for minWidth/maxWidth.
-                bounds = measureTextSize(NaN);
+                bounds = measureTextSize(NaN, composeHeight);

                 // Have we already hit the limit with the existing text?  If we
                 // are beyond the composeHeight we can assume we've maxed out on
@@ -2862,8 +2863,8 @@
      */
     public function scrollToRange(anchorPosition:int, activePosition:int):void
     {
-        // Make sure the properties are commited and the text is composed.
-        validateNow();
+        // Make sure the properties are commited since the text could change.
+        validateProperties();

         // Scrolls so that the text position is visible in the container.
         textContainerManager.scrollToRange(anchorPosition, activePosition);
@@ -2888,8 +2889,8 @@
     public function selectRange(anchorPosition:int,
                                 activePosition:int):void
     {
-        // Make sure all properties are committed before doing the operation.
-        validateNow();
+        // Make sure the properties are commited since the text could change.
+        validateProperties();

         if (editingMode == EditingMode.READ_ONLY)
         {
@@ -2965,8 +2966,8 @@
     {
         var format:TextLayoutFormat = new TextLayoutFormat();

-         // Make sure all properties are committed before doing the operation.
-        validateNow();
+        // Make sure all properties are committed.
+        validateProperties();

         // This internal TLF object maps the names of format properties
         // to Property instances.
@@ -3088,8 +3089,9 @@
                                      anchorPosition:int=-1,
                                      activePosition:int=-1):void
     {
-         // Make sure all properties are committed before doing the operation.
-        validateNow();
+        // Make sure all properties are committed.  The damage handler for the
+        // applyTextFormat op will cause the remeasure and display update.
+        validateProperties();

         // Assign each specified attribute to one of three format objects,
         // depending on whether it is container-, paragraph-,
@@ -3273,7 +3275,8 @@
      *  be adjusted for minWidth or maxWidth.  The value used for the compose
      *  is in _textContainerManager.compositionWidth.
      */
-    private function measureTextSize(composeWidth:Number):Rectangle
+    private function measureTextSize(composeWidth:Number,
+                                     composeHeight:Number=NaN):Rectangle
     {
         // Adjust for explicit min/maxWidth so the measurement is accurate.
         if (isNaN(explicitWidth))
@@ -3290,9 +3293,10 @@
             }
         }

-        // The bottom border can grow to allow all the text to fit.
+        // If the width is NaN it can grow up to TextLine.MAX_LINE_WIDTH wide.
+        // If the height is NaN it can grow to allow all the text to fit.
         _textContainerManager.compositionWidth = composeWidth;
-        _textContainerManager.compositionHeight = NaN;
+        _textContainerManager.compositionHeight = composeHeight;

         // Compose only.  The display should not be updated.
         _textContainerManager.compose();
@@ -3311,7 +3315,7 @@
             bounds.width = bounds.width + getStyle("fontSize");
        }

-       //trace("measureTextSize", composeWidth, "->", bounds.width, bounds.height);
+       //trace("measureTextSize", composeWidth, "->", bounds.width, composeHeight, "->", bounds.height);

        return bounds;
     }
@@ -3566,9 +3570,9 @@
      */
     private function handleInsertText(newText:String, isAppend:Boolean=false):void
     {
-        // Make sure all properties are committed and events dispatched
-        // before doing the append.
-        validateNow();
+        // Make sure all properties are committed.  The damage handler for the
+        // insert will cause the remeasure and display update.
+        validateProperties();

         if (isAppend)
         {
@@ -4198,17 +4202,24 @@
     private function textContainerManager_inlineGraphicStatusChangeHandler (
                         event:StatusChangeEvent):void
     {
-        //trace("inlineGraphicStatusChangedHandler", event.status);
-
-        // Now that the actual size of the graphic is available need to
-        // optionally remeasure and updateContainer.
-        if (event.status == InlineGraphicElementStatus.READY)
-        {
+        if (event.status == InlineGraphicElementStatus.SIZE_PENDING &&
+            event.element is InlineGraphicElement)
+        {
+            // Force InlineGraphicElement.applyDelayedElementUpdate to
+            // execute and finish loading the graphic.  This is a workaround
+            // for the case when the image is in a compiled text flow.
+            InlineGraphicElement(event.element).updateForMustUseComposer(
+                                        _textContainerManager.getTextFlow());
+        }
+        else if (event.status == InlineGraphicElementStatus.READY)
+        {
+            // Now that the actual size of the graphic is available need to
+            // optionally remeasure and updateContainer.
             if (autoSize)
                 invalidateSize();

             invalidateDisplayList();
-        }
+        }
     }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 8436
Author:   gosmith@adobe.com
Date:     2009-07-07T22:42:39.058014Z

Log Message:
-----------
Integrated TLF build 463.

This integration required trivial framework changes due to one renamed API (TextFilter -> TextConverter) that was missed in the earlier implementation of the PARB changes.

Note: Build 461, which was integrated yesterday, had the Marshall Plan changes for TLF.

Build 463
---------

* Fix 2361762 SelectionManager and EditManager keyDownHandlers should check if isDefaultPrevented and if yes, do nothing

* Fix 2365787 Selecting text with shift-down breaks on last line when its an empty paragraph

Build 462
---------

* Fix 2366203 HTML import/export uses <image> tag instead of <img> (inconsistent with TextField)

* Fix 2363394 [SDK-21904] Spark TextArea exports different TextFlow depending on whether it received focus or not.

* Fix 2342917 [SDK-21362] Erratic scrollbar sizing in TextFlow when using uneven lines and dragging the scroll thumb

* PARB - Renamed TextFilter to TextConverter

* PARB - IEditManager.as/EditManager.as - replaced float:String parameter with option:Object.  Updated comments.

* Fix 2366728 EditManager.applyFormatToElement ignores targetElement and always applies changes to the TextFlow

Build 461
---------

* Marshall plan and security sandbox bug fixes were added in Build 461 - TLF now works in a security sandbox and can support flex's marshall plan

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/textLayout.swz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/textLayout.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RichText.as</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/spark/src/spark/utils/TextFlowUtil.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -33,7 +33,7 @@
 import flashx.textLayout.conversion.ConversionType;
 import flashx.textLayout.conversion.ITextExporter;
 import flashx.textLayout.conversion.ITextImporter;
-import flashx.textLayout.conversion.TextFilter;
+import flashx.textLayout.conversion.TextConverter;
 import flashx.textLayout.edit.EditManager;
 import flashx.textLayout.edit.EditingMode;
 import flashx.textLayout.edit.IEditManager;
@@ -261,14 +261,14 @@
     	staticTextContainerManagerConfiguration.manageEnterKey = false;

         staticPlainTextImporter =
-            TextFilter.getImporter(TextFilter.PLAIN_TEXT_FORMAT);
+            TextConverter.getImporter(TextConverter.PLAIN_TEXT_FORMAT);

         // Throw import errors rather than return a null textFlow.
         // Alternatively, the error strings are in the Vector, importer.errors.
         staticPlainTextImporter.throwOnError = true;

         staticPlainTextExporter =
-            TextFilter.getExporter(TextFilter.PLAIN_TEXT_FORMAT);
+            TextConverter.getExporter(TextConverter.PLAIN_TEXT_FORMAT);

         // Used for embedded fonts.
     	staticTextFormat = new TextFormat();


Transferred from the Adobe Open Source Subversion Repository

Revision: 20147
Author:   aharui@adobe.com
Date:     2011-02-04T21:22:33.147431Z

Log Message:
-----------
Fix RTE in linkbar.  It can get a -1 now that we've changed some timing and events in ViewStack

QE notes: none
Doc notes:  none
Bugs: SDK-29374
Reviewer: Corey
Tests run: checkintests mustella cyclone
Is noteworthy for integration: no

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/LinkBar.as

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

--- frameworks/projects/mx/src/mx/controls/LinkBar.as
+++ frameworks/projects/mx/src/mx/controls/LinkBar.as
@@ -596,9 +596,12 @@
         // Set new index.
         super.selectedIndex = index;

-        // Hilite the new selection.
-        child = Button(getChildAt(selectedIndex));
-        child.enabled = false;
+        if (index != -1)
+        {
+            // Hilite the new selection.
+            child = Button(getChildAt(selectedIndex));
+            child.enabled = false;
+        }
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 9715
Author:   aharui@adobe.com
Date:     2009-08-27T21:20:28.280781Z

Log Message:
-----------
Introduce tabFocusEnabled to IFocusManagerComponent.  This replaces tabEnabled as the way to remove a component from the tabbing loop.  tabEnabled should be set to true for any component that can receive focus, and tabFocusEnabled determines whether the FocusManager will actually give it focus.  If tabEnabled=false on a non-TextField, the player will sometimes momentarily remove focus and dispatch a focusOut when the component has focus and is later clicked on.  This is now quite common with TLF-based text components so we are forced to make this change.

QE Notes: tests using tabEnabled must now use tabFocusEnabled
Doc Notes: needs documentation
Bugs: SDK-22731
Reviewer: Gordon
API Change: Yes
Is noteworthy for integration: Yes
tests: checkintests cyclone

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/accordionClasses/AccordionHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManagerComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Image.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>

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

--- frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as
+++ frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as
@@ -107,7 +107,7 @@
      *  on the child component.

      *
      *
This will cause the FocusManager to ignore this component
-     *  and not monitor it for changes to the tabEnabled,
+     *  and not monitor it for changes to the tabFocusEnabled,
      *  tabChildren, and mouseFocusEnabled properties.
      *  This also means you cannot change this value after
      *  addChild() and expect the FocusManager to notice.

@@ -231,6 +231,55 @@
     }

+    //----------------------------------
+    //  tabFocusEnabled
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the tabFocusEnabled property.
+     */
+    private var _tabFocusEnabled:Boolean = true;
+
+    [Bindable("tabFocusEnabledChange")]
+    [Inspectable(defaultValue="true")]
+
+    /**
+     *  A flag that indicates whether child objects can receive focus
+     *
+     *
This is similar to the tabEnabled property
+     *  used by the Flash Player.

+     *
+     *
This is usually true for components that
+     *  handle keyboard input, but some components in controlbars
+     *  have them set to false because they should not steal
+     *  focus from another component like an editor.
+     *

+     *
+     *  @default true
+     *
+     *  @langversion 4.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get tabFocusEnabled():Boolean
+    {
+        return _tabFocusEnabled;
+    }
+
+    /**
+     *  @private
+     */
+    public function set tabFocusEnabled(value:Boolean):void
+    {
+        if (value != _tabFocusEnabled)
+        {
+            _tabFocusEnabled = value;
+            dispatchEvent(new Event("tabFocusEnabledChange"));
+        }
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Methods


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

--- frameworks/projects/framework/src/mx/binding/BindingManager.as
+++ frameworks/projects/framework/src/mx/binding/BindingManager.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-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.binding
 {


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

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

 package mx.events
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 11795
Author:   dloverin@adobe.com
Date:     2009-11-13T21:52:56.367021Z

Log Message:
-----------
Reduce size of hello world spark application.

Removed Module from StyleProtoChain to save 22k in a spark “hello world” application. Module also dragged in LayoutContainer, Container, and other mx classes that would not normally be in a spark application. Replaced Module with a new interface, IModule.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/Module.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/IModule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>

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

--- frameworks/projects/framework/src/mx/styles/StyleProtoChain.as
+++ frameworks/projects/framework/src/mx/styles/StyleProtoChain.as
@@ -30,7 +30,7 @@
 import mx.core.mx_internal;
 import mx.effects.EffectManager;
 import mx.managers.SystemManager;
-import mx.modules.Module;
+import mx.modules.IModule;
 import mx.modules.ModuleManager;
 import mx.utils.NameUtil;
 import mx.utils.OrderedObject;
@@ -203,7 +203,7 @@
             // compiler didn't add a duplicate default style. In that case don't
             // add global styles to the chain because the parent style manager's
             // global styles are already on the chain.
-            if (object is Module)
+            if (object is IModule)
             {
                 styleDeclaration = styleManager.getStyleDeclaration("global");
                 if (styleDeclaration)


Transferred from the Adobe Open Source Subversion Repository

Revision: 4293
Author:   shodgson@adobe.com
Date:     2008-12-12T05:18:10.145693Z

Log Message:
-----------
Timer usage cleanup to ensure all listeners are fully removed once we're done with the underlying Timer.

QA: No
Doc: No
Checkintests Pass: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/Channel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MultiTopicConsumer.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/MultiTopicConsumer.as
+++ frameworks/projects/rpc/src/mx/messaging/MultiTopicConsumer.as
@@ -390,13 +390,14 @@
         if ((_shouldBeSubscribed || subscribed) && _subchangeTimer == null)
         {
             _subchangeTimer = new Timer(0, 1);
-            _subchangeTimer.addEventListener("timer", doResubscribe);
+            _subchangeTimer.addEventListener(TimerEvent.TIMER, doResubscribe);
             _subchangeTimer.start();
         }
     }

     private function doResubscribe(event:TimerEvent):void
     {
+        _subchangeTimer.removeEventListener(TimerEvent.TIMER, doResubscribe);
         _subchangeTimer = null;

         if (subscribed)


Transferred from the Adobe Open Source Subversion Repository

Revision: 7567
Author:   rfrishbe@adobe.com
Date:     2009-06-05T04:01:13.375876Z

Log Message:
-----------
VideoPlayer fixes:

We now throw away the underlying FLVPlayback object when changing the source to reset...otherwise the same video object doens't seem to want to reset or let us call play() or play2() with different sources on it.

QE Notes: -
Doc Notes: -
Bugs: SDK-21303, SDK-21530, SDK-21532
Reviewer: Glenn
tests: checkintests, mustella vieoelement and videoplayer, though some were failing

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/VideoElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/PopUpAnchor.as</path>

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

--- frameworks/projects/spark/src/spark/components/VideoDisplay.as
+++ frameworks/projects/spark/src/spark/components/VideoDisplay.as
@@ -177,24 +177,13 @@
         super();
         VideoPlayer.iNCManagerClass = fl.video.NCManagerDynamicStream;

-        var flvPlayer:VideoPlayer = new VideoPlayer();
-        videoPlayer = flvPlayer;
-
         // we wrap the VideoPlayer inside of another container because
         // the video player doesn't handle setting x/y correctly. we could allocate
         // layout features and subclass it so that layoutX always sets registrationX on the
         // videoPlayer, but this seemed more straight forward
         videoPlayerContainer = new Sprite();
-        videoPlayerContainer.addChild(flvPlayer);
-
-        flvPlayer.addEventListener(fl.video.VideoEvent.AUTO_REWOUND, videoPlayer_autoRewoundHandler);
-        flvPlayer.addEventListener(fl.video.VideoEvent.CLOSE, videoPlayer_closeHandler);
-        flvPlayer.addEventListener(fl.video.VideoEvent.COMPLETE, videoPlayer_completeHandler);
-        flvPlayer.addEventListener(fl.video.MetadataEvent.METADATA_RECEIVED, videoPlayer_metaDataReceivedHandler);
-        flvPlayer.addEventListener(fl.video.VideoEvent.PLAYHEAD_UPDATE, videoPlayer_playHeadUpdateHandler);
-        flvPlayer.addEventListener(ProgressEvent.PROGRESS, dispatchEvent);
-        flvPlayer.addEventListener(fl.video.VideoEvent.READY, videoPlayer_readyHandler);
-        flvPlayer.addEventListener(fl.video.VideoEvent.STATE_CHANGE, videoPlayer_stateChangeHandler);
+
+        createUnderlyingVideoPlayer();
     }

     //--------------------------------------------------------------------------
@@ -642,9 +631,48 @@
             return;

         _source = value;
-        sourceChanged = true;
+
+        // if we haven't initialized, let's wait to set up the
+        // source in commitProperties() as it is dependent on other
+        // properties, like autoPlay and enabled, and those may not
+        // be set yet, especially if they are set via MXML.
+        // Otherwise, if we have initialized, let's just set up the
+        // source immediately.  This way people can change the source
+        // and immediately call methods like seek().
+        if (!initialized)
+        {
+            sourceChanged = true;
+            invalidateProperties();
+        }
+        else
+        {
+            setUpSource();
+        }
+
         dispatchEvent(new Event("sourceChanged"));
-        invalidateProperties();
+    }
+
+    /**
+     *  @private
+     *  Sets up the source for use.  Also throws away the underlying video player object
+     *  if needed.
+     */
+    private function setUpSource():void
+    {
+        // Reset the video component under certain conditions:
+        // Only keep the video player if the last item played was a
+        // String and the current item being played is a String
+        // or if the last item was null or an empty string
+        if ( !((sourceLastPlayed is String && source is String) ||
+             (sourceLastPlayed == null || (sourceLastPlayed is String && String(sourceLastPlayed).length == 0))))
+        {
+            createUnderlyingVideoPlayer();
+        }
+
+        if (autoPlay && enabled)
+            play();
+        else
+            load();
     }

     //----------------------------------
@@ -732,23 +760,84 @@

     /**
      *  @private
+     *  Since this is a GraphicElement, there's no "initialized" flag.
+     *  We do different things in the source setter based on if we
+     *  are initialized or not.
+     */
+    private var initialized:Boolean = false;
+
+    /**
+     *  @private
      */
     override protected function commitProperties():void
     {
         super.commitProperties();

+        initialized = true;
+
         if (sourceChanged)
         {
             sourceChanged = false;
-            if (autoPlay && enabled)
-            {
-                play();
-            }
-            else
-            {
-                load();
-            }
-        }
+
+            setUpSource();
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private var videoPlayerProperties:Object;
+
+    /**
+     *  @private
+     */
+    private function createUnderlyingVideoPlayer():void
+    {
+        // if old one, destroy it
+        if (videoPlayer)
+        {
+            videoPlayerProperties = {autoRewind: videoPlayer.autoRewind,
+                                     scaleMode: videoPlayer.scaleMode};
+
+            videoPlayer.close();
+            videoPlayer.clear();
+
+            videoPlayer.removeEventListener(fl.video.VideoEvent.AUTO_REWOUND, videoPlayer_autoRewoundHandler);
+            videoPlayer.removeEventListener(fl.video.VideoEvent.CLOSE, videoPlayer_closeHandler);
+            videoPlayer.removeEventListener(fl.video.VideoEvent.COMPLETE, videoPlayer_completeHandler);
+            videoPlayer.removeEventListener(fl.video.MetadataEvent.METADATA_RECEIVED, videoPlayer_metaDataReceivedHandler);
+            videoPlayer.removeEventListener(fl.video.VideoEvent.PLAYHEAD_UPDATE, videoPlayer_playHeadUpdateHandler);
+            videoPlayer.removeEventListener(ProgressEvent.PROGRESS, dispatchEvent);
+            videoPlayer.removeEventListener(fl.video.VideoEvent.READY, videoPlayer_readyHandler);
+            videoPlayer.removeEventListener(fl.video.VideoEvent.STATE_CHANGE, videoPlayer_stateChangeHandler);
+
+            videoPlayerContainer.removeChild(videoPlayer);
+        }
+
+        // create new video player
+        videoPlayer = new VideoPlayer();
+
+        if (videoPlayerProperties)
+        {
+            videoPlayer.autoRewind = videoPlayerProperties.autoRewind;
+            videoPlayer.scaleMode = videoPlayerProperties.scaleMode;
+
+            videoPlayerProperties = null;
+        }
+
+        videoPlayer.addEventListener(fl.video.VideoEvent.AUTO_REWOUND, videoPlayer_autoRewoundHandler);
+        videoPlayer.addEventListener(fl.video.VideoEvent.CLOSE, videoPlayer_closeHandler);
+        videoPlayer.addEventListener(fl.video.VideoEvent.COMPLETE, videoPlayer_completeHandler);
+        videoPlayer.addEventListener(fl.video.MetadataEvent.METADATA_RECEIVED, videoPlayer_metaDataReceivedHandler);
+        videoPlayer.addEventListener(fl.video.VideoEvent.PLAYHEAD_UPDATE, videoPlayer_playHeadUpdateHandler);
+        videoPlayer.addEventListener(ProgressEvent.PROGRESS, dispatchEvent);
+        videoPlayer.addEventListener(fl.video.VideoEvent.READY, videoPlayer_readyHandler);
+        videoPlayer.addEventListener(fl.video.VideoEvent.STATE_CHANGE, videoPlayer_stateChangeHandler);
+
+        videoPlayerContainer.addChild(videoPlayer);
+
+        dispatchEvent(new Event("playheadTimeChanged"));
+        dispatchEvent(new Event("totalTimeChanged"));
     }

     /**
@@ -811,6 +900,10 @@
      */
     public function pause():void
     {
+        // can't call any methods before we've initialized
+        if (!initialized)
+            return;
+
         if (source == null || videoPlayer.state == VideoState.CONNECTION_ERROR)
             return;

@@ -829,12 +922,9 @@
      */
     public function play():void
     {
-        // close old video if it was open
-        if (sourceLastPlayed != null && sourceLastPlayed != this.source)
-        {
-            videoPlayer.close();
-            videoPlayer.clear();
-        }
+        // can't call any methods before we've initialized
+        if (!initialized)
+            return;

         // check for 2 cases: streaming video or progressive download
         if (source is StreamingVideoSource)
@@ -919,14 +1009,6 @@
         }
         else
         {
-            // huge hack to reset the video state
-            // otherwise there's no way to reset the
-            // playheadTime and totalTime.
-            // In the future, this hopefully will be easier and the
-            // video player might also have the concept of a bad URL or a
-            // source=null.
-            videoPlayer.load("QYQYQYQYQYQ");
-
             setPlaying(false);
         }
     }
@@ -937,14 +1019,7 @@
      *  be performed before the video's started to play.
      */
     private function load():void
-    {
-        // load is only called when source is changed.  We should clear out the source and close the connection
-        if (sourceLastPlayed != null)
-        {
-            videoPlayer.close();
-            videoPlayer.clear();
-        }
-
+    {
         // check for 2 cases: streaming video or progressive download
         if (source is StreamingVideoSource)
         {
@@ -961,16 +1036,6 @@

             // load the video up
             videoPlayer.load(sourceString);
-        }
-        else
-        {
-            // huge hack to reset the video state
-            // otherwise there's no way to reset the
-            // playheadTime and totalTime.
-            // In the future, this hopefully will be easier and the
-            // video player might also have the concept of a bad URL or a
-            // source=null.
-            videoPlayer.load("QYQYQYQYQYQ");
         }

         setPlaying(false);
@@ -1011,6 +1076,10 @@
      */
     public function seek(time:Number):void
     {
+        // can't call any methods before we've initialized
+        if (!initialized)
+            return;
+
         if (source == null || videoPlayer.state == VideoState.CONNECTION_ERROR)
             return;

@@ -1036,6 +1105,10 @@
      */
     public function stop():void
     {
+        // can't call any methods before we've initialized
+        if (!initialized)
+            return;
+
         if (source == null || videoPlayer.state == VideoState.CONNECTION_ERROR)
             return;


Transferred from the Adobe Open Source Subversion Repository

Revision: 4005
Author:   rfrishbe@adobe.com
Date:     2008-11-04T01:07:38.597640Z

Log Message:
-----------
Change in the way item renderers lay them selves out.  Before we were using 100% width and 100% height.  Now, we're using horizontalAlign and verticalAlign to accomplish this, which are properties added to VerticalLayout and HorizontalLayout, respectively.  horizontalAlign takes values "left", "center", "right", "justify", and "contentJustify".  "justify" sizes all elements to the width of the component.  "contentJustify" sizes all elements to the size of the largest child (with a minimum of the width of the parent component).  Similar, verticalAlign takes "top", "middle", "bottom", "justify", and "contentJustify".

The default List skin sets the VerticalLayout's horizontalAlign to "contentJustify."  Most lists should use "contentJustify" or "justify" if you don't want scrollbars.  If you want to change your list to a horizontal list, you change the layout to a horizontal layout.  However, you must set the verticalAlign property on the horizontal layout correctly--otherwise it'll default to "top" and probably won't do what you want.

Ran checkintests and the following mustella tests: layout, list, Group, DataGroup, FxDataContainer, and FxContainer.  Some DataGroup tests were failing but should be because of an unrelated, local change.  All other tests are passing.

QE Notes: Failing tests are excluded.  Please update them (I think all just need to add verticalAlign="contentJustify" in the horizontal layout case) and re-include them.  Also, please write tests for this new functionality.
Doc Notes: None
Bugs: SDK-17198
Reviewer: Evtim

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxDataContainerSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalAlign.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalAlign.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/flex4test.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/HorizontalAlign.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalAlign.as
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2008 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.layout
+{
+
+/**
+ *  Enumerated type for the VerticalLayout's horizontalAlign
+ *  property.
+ *
+ * @see VerticalLayout#horizontalAlign
+ */
+public final class HorizontalAlign
+{
+    /**
+     *  Align children to the left of the container.
+     */
+    public static const LEFT:String = "left";
+
+    /**
+     *  Align children in the center of the container.
+     */
+    public static const CENTER:String = "center";
+
+    /**
+     *  Align children to the right of the container.
+     */
+    public static const RIGHT:String = "right";
+
+    /**
+     *  Justify the children with respect to the container.  This
+     *  uniformly sizes all children to be the same width as the
+     *  container.
+     */
+    public static const JUSTIFY:String = "justify";
+
+    /**
+     *  Content justify the children with respect to the container.  This
+     *  uniformly sizes all children to be the content width of the container.
+     *  The content width of the container is the size of the largest child.
+     *  If all children are smaller than the width of the container, then
+     *  all the children will be sized to the width of the container.
+     */
+    public static const CONTENT_JUSTIFY:String = "contentJustify";
+
+}
+
+}


- bugfix: changed Delegate to extend AbstractCommand instead of only implementing ICommand. This also fixes a bug that caused Delegates to always be executed first.

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

--- src/reprise/utils/Delegate.as
+++ src/reprise/utils/Delegate.as
@@ -10,12 +10,10 @@
 ////////////////////////////////////////////////////////////////////////////////

 package reprise.utils
-{
-	import reprise.commands.ICommand;
-
-	import flash.events.EventDispatcher;
-
-	public class Delegate extends EventDispatcher implements ICommand
+{
+	import reprise.commands.AbstractCommand;
+
+	public class Delegate extends AbstractCommand
 	{
 		/***************************************************************************
 		*							protected properties							   *
@@ -23,8 +21,6 @@
 		protected var m_scope : Object;
 		protected var m_method : Function;
 		protected var m_args : Array;
-		protected var m_priority : Number;
-		protected var m_id : Number;

 		/***************************************************************************
@@ -45,12 +41,13 @@
 		/**
 		 * executes the delegate
 		 */
-		public function execute(...rest) : void
+		public override function execute(...rest) : void
 		{
 			var args:Array = rest.concat(m_args).concat(this);
 			m_method.apply(m_scope, args);
+			m_didSucceed = true;
 		}
-
+
 		public function scope() : Object
 		{
 			return m_scope;
@@ -59,30 +56,5 @@
 		{
 			m_scope = scope;
 		}
-
-		public function get priority():Number
-		{
-			return m_priority;
-		}
-
-		public function set priority(value:Number):void
-		{
-			m_priority = value;
-		}
-
-		public function get id():Number
-		{
-			return m_id;
-		}
-
-		public function set id(value:Number):void
-		{
-			m_id = value;
-		}
-
-		public function didSucceed():Boolean
-		{
-			return true;
-		}
 	}
 }


fix ViewCloser camera placement

fix ViewCloser camera placement

--- bin/Data/Scripts/Editor/EditorView.as
+++ bin/Data/Scripts/Editor/EditorView.as
@@ -1402,17 +1402,14 @@

         if ( selectedNodes.length <= 1 )
         {
+            bb = lastSelectedDrawable.boundingBox;
             centerPoint = lastSelectedDrawable.node.worldPosition;
-            bb = lastSelectedDrawable.boundingBox;
-            bb.Merge(lastSelectedDrawable.node.worldPosition);
         }
         else
         {
-            bb.Merge(lastSelectedDrawable.node.worldPosition);
-
             for (int i = 0; i < selectedNodes.length; i++)
             {
-                    bb.Merge(selectedNodes[i].worldPosition);
+                    bb.Merge(selectedNodes[i].position);
             }

             centerPoint = SelectedNodesCenterPoint();
@@ -1421,7 +1418,7 @@
         float maxSide = bb.size.length;
         Quaternion q = Quaternion(activeViewport.cameraPitch, activeViewport.cameraYaw, 0);
         cameraNode.rotation = q;
-        cameraNode.worldPosition = centerPoint - q * Vector3(0.0, 0.0, maxSide);
+        cameraNode.worldPosition = centerPoint -  cameraNode.worldDirection * maxSide;

         viewCloser =  false;
     }


More descriptive button labels

More descriptive button labels

--- test/src/FRESteamWorksTest.as
+++ test/src/FRESteamWorksTest.as
@@ -66,10 +66,10 @@
 			addButton("Show overlay", null, _buttonContainer, _overlayContainer);

 			addButton("Back", null, _enumerateContainer);
-			addButton("User subscribed files", enumerateSubscribedFiles, _enumerateContainer);
+			addButton("Subscribed files (+unsub/dl)", enumerateSubscribedFiles, _enumerateContainer);
 			addButton("User published files", enumerateUserPublishedFiles, _enumerateContainer);
 			addButton("User shared files", enumerateSharedFiles, _enumerateContainer);
-			addButton("All published files", enumerateWorkshopFiles, _enumerateContainer);
+			addButton("All published files (+vote)", enumerateWorkshopFiles, _enumerateContainer);

 			addButton("Back", null, _overlayContainer);
 			addButton("Show friends overlay", activateOverlay, _overlayContainer);