Transferred from the Adobe Open Source Subversion Repository

Revision: 11087
Author:   clucier@adobe.com
Date:     2009-10-22T19:36:45.186714Z

Log Message:
-----------
BitmapImage no longer returns a copy of its private BitmapData via the source getter.  source now returns the same value that was originally set.

QE notes: None
Doc notes: None
Bugs: SDK-23347
Reviewer: Glenn
Tests run: Checkin
Is noteworthy for integration: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/BitmapImage.as

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

--- frameworks/projects/spark/src/spark/primitives/BitmapImage.as
+++ frameworks/projects/spark/src/spark/primitives/BitmapImage.as
@@ -221,6 +221,7 @@
     {
         if (value != _source)
         {
+            _source = value;
             var bitmapData:BitmapData;
             var tmpSprite:DisplayObject;

@@ -240,7 +241,6 @@
             else if (value is String)
             {
                 loadExternal(value as String);
-                _source = value;
             }

             if (value is BitmapData)
@@ -278,9 +278,7 @@
                     _scaleGridBottom = tmpSprite.scale9Grid.bottom;
                 }
             }
-
-            _source = value;
-
+
             setBitmapData(bitmapData, currentBitmapCreated);
         }
     }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 9309
Author:   jimurphy@adobe.com
Date:     2009-08-14T12:57:06.648526Z

Log Message:
-----------
Merged 3.x revisions 8758,8762-8763,8765,8844-8845,8906,8970,9030,9049,9055,9096-9097,9191,9208,9221,9228,9242,9278 -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/formatters/DateBase.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/framework/src/mx/utils/ObjectUtil.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/events/RSLEvent.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/controls/Text.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/formatters/DateFormatter.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/resources/LocaleSorter.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/xml/IXMLSchemaInstance.as</path>

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

--- frameworks/projects/framework/src/mx/formatters/DateFormatter.as
+++ frameworks/projects/framework/src/mx/formatters/DateFormatter.as
@@ -53,7 +53,7 @@
  *
  *

  *  <mx:DateFormatter
- *    formatString="Y|M|D|A|E|H|J|K|L|N|S"
+ *    formatString="Y|M|D|A|E|H|J|K|L|N|S|Q"
  *   />
  *

  *
@@ -79,7 +79,7 @@
     /**
      *  @private
      */
-    private static const VALID_PATTERN_CHARS:String = "Y,M,D,A,E,H,J,K,L,N,S";
+    private static const VALID_PATTERN_CHARS:String = "Y,M,D,A,E,H,J,K,L,N,S,Q";

     //--------------------------------------------------------------------------
     //
@@ -121,7 +121,7 @@
         var len:int = str.length;

         // Strip out the Timezone. It is not used by the DateFormatter
-        var timezoneRegEx:RegExp = /(GMT|UTC)-\d\d\d\d/ig;
+        var timezoneRegEx:RegExp = /(GMT|UTC)((\+|-)\d\d\d\d )?/ig;

         str = str.replace(timezoneRegEx, "");

@@ -477,6 +477,16 @@
      *

      *

      *

+     *      Q
+     *      Millisecond in second
+     *
+     *
Example:

+     *

+     *
QQ = 78

+     *
QQQ = 078

+     *

+     *

+     *

      *      Other text
      *      You can add other text into the pattern string to further
      *        format the string. You can use punctuation, numbers,
@@ -485,7 +495,7 @@
      *
      *
Example:

      *

-     *
EEEE, MMM. D, YYYY at L:NN A = Tuesday, Sept. 8, 2005 at 1:26 PM

+     *
EEEE, MMM. D, YYYY at L:NN:QQQ A = Tuesday, Sept. 8, 2005 at 1:26:012 PM

      *

      *

      *


Transferred from the Adobe Open Source Subversion Repository

Revision: 11027
Author:   dloverin@adobe.com
Date:     2009-10-20T15:50:09.018295Z

Log Message:
-----------
Changes to enable using multiple style managers.

Multiple style managers are not the default yet. Can be enabled by compiling with -create-style-manager.

QE notes: None.
Doc notes: None.
Bugs:
Reviewer: Alex, Paul
Tests run: checkintests, all mustella
Is noteworthy for integration: Yes.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.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/modules/compiler/src/java/flex2/compiler/css/StylesContainer.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/AbstractSyntaxTreeUtil.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/MxmlConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/InterfaceGenerator.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/dragClasses/DragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexChangeEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/halo/src/mx/skins/halo/BusyCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingExtension.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSMergedStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.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/modules/compiler/src/java/flex2/compiler/css/StyleDef.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/BusyCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/ImplementationGenerator.java</path>

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

--- frameworks/projects/framework/src/mx/managers/DragManagerImpl.as
+++ frameworks/projects/framework/src/mx/managers/DragManagerImpl.as
@@ -274,7 +274,7 @@
 			// No drag image specified, use default
 			var dragManagerStyleDeclaration:CSSStyleDeclaration =
 				StyleManager.getStyleManager(sm as IFlexModuleFactory).
-                getStyleDeclaration("mx.managers.DragManager");
+                getMergedStyleDeclaration("mx.managers.DragManager");
 			var dragImageClass:Class =
 				dragManagerStyleDeclaration.getStyle("defaultDragImageSkin");
 			dragImage = new dragImageClass();


Fix for scrub/reset cases.

Fix for scrub/reset cases.

--- HLSPlugin/src/com/kaltura/hls/m2ts/PESProcessor.as
+++ HLSPlugin/src/com/kaltura/hls/m2ts/PESProcessor.as
@@ -69,6 +69,9 @@
             streams = {};
             lastVideoNALU = null;
             transcoder.clear(clearAACConfig);
+
+            // Reset PTS/DTS reference.
+            lastPTS = lastDTS = 0;
         }

         private function parseProgramAssociationTable(bytes:ByteArray, cursor:uint):Boolean


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/framework/src/mx/binding/utils/BindingUtils.as
+++ frameworks/projects/framework/src/mx/binding/utils/BindingUtils.as
@@ -18,6 +18,11 @@
  *  The BindingUtils class defines utility methods
  *  for performing data binding from ActionScript.
  *  You can use the methods defined in this class to configure data bindings.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class BindingUtils
 {
@@ -91,6 +96,11 @@
      *
      *  @return A ChangeWatcher instance, if at least one property name has
      *  been specified to the chain argument; null otherwise.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public static function bindProperty(
                                 site:Object, prop:String,
@@ -141,6 +151,11 @@
      *
      *  @return A ChangeWatcher instance, if at least one property name
      *  has been  specified to the chain argument; null otherwise.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public static function bindSetter(setter:Function, host:Object,
                                       chain:Object,


Transferred from the Adobe Open Source Subversion Repository

Revision: 12733
Author:   smgilson@adobe.com
Date:     2009-12-09T18:19:48.608649Z

Log Message:
-----------
ASDoc l10n prep

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/treeClasses/MXTreeItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<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/spark/src/mx/controls/dataGridClasses/FTEDataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IRepeater.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/listClasses/MXItemRenderer.as</path>

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

--- frameworks/projects/framework/src/mx/core/IDeferredContentOwner.as
+++ frameworks/projects/framework/src/mx/core/IDeferredContentOwner.as
@@ -13,9 +13,11 @@
 {

 /**
- *  Sent after the content for this component has been created. With deferred
- *  instantiation, the content for a component may be created long after the
+ *  Dispatched after the content for this component has been created. With deferred
+ *  instantiation, the content for a component can be created long after the
  *  component is created.
+ *
+ *  @eventType mx.events.FlexEvent.CONTENT_CREATION_COMPLETE
  *
  *  @langversion 3.0
  *  @playerversion Flash 10


FLEX-27235 When number (rather than string) is passed to validator and decimal character was not "." incorrect error was being shown

--- frameworks/projects/framework/src/mx/validators/NumberValidator.as
+++ frameworks/projects/framework/src/mx/validators/NumberValidator.as
@@ -113,15 +113,13 @@
 		var minValue:Number = Number(validator.minValue);
 		var precision:int = int(validator.precision);
 		var thousandsSeparator:String = validator.thousandsSeparator;
-
         var input:String = String(value);
         var len:int = input.length;
-
         var isNegative:Boolean = false;
-
 		var i:int;
 		var c:String;
-
+		var isNumber:Boolean = (value is Number);
+
         // Make sure the formatting character parameters are unique,
 		// are not digits or the negative sign,
 		// and that the separators are one character.
@@ -266,35 +264,38 @@
         var end:int = decimalSeparatorIndex == -1 ?
 					  len :
 					  decimalSeparatorIndex;
-        for (i = 1; i < end; i++)
-        {
-            c = input.charAt(i);
-            if (c == thousandsSeparator)
-            {
-                if (c == thousandsSeparator)
-                {
-                    if ((end - i != 4 &&
-						 input.charAt(i + 4) != thousandsSeparator) ||
-                        DECIMAL_DIGITS.indexOf(input.charAt(i + 1)) == -1 ||
-                        DECIMAL_DIGITS.indexOf(input.charAt(i + 2)) == -1 ||
-                        DECIMAL_DIGITS.indexOf(input.charAt(i + 3)) == -1)
-                    {
-                        results.push(new ValidationResult(
-							true, baseField, "separation",
-							validator.separationError));
-						return results;
-                    }
-                }
-            }
-            else if (DECIMAL_DIGITS.indexOf(c) == -1)
-            {
-                results.push(new ValidationResult(
-					true, baseField,"invalidChar",
-					validator.invalidCharError));
-				return results;
-            }
-        }
-
+		if (!isNumber)
+		{
+	        for (i = 1; i < end; i++)
+	        {
+	            c = input.charAt(i);
+	            if (c == thousandsSeparator)
+	            {
+	                if (c == thousandsSeparator)
+	                {
+	                    if ((end - i != 4 &&
+							 input.charAt(i + 4) != thousandsSeparator) ||
+	                        DECIMAL_DIGITS.indexOf(input.charAt(i + 1)) == -1 ||
+	                        DECIMAL_DIGITS.indexOf(input.charAt(i + 2)) == -1 ||
+	                        DECIMAL_DIGITS.indexOf(input.charAt(i + 3)) == -1)
+	                    {
+	                        results.push(new ValidationResult(
+								true, baseField, "separation",
+								validator.separationError));
+							return results;
+	                    }
+	                }
+	            }
+	            else if (DECIMAL_DIGITS.indexOf(c) == -1)
+	            {
+	                results.push(new ValidationResult(
+						true, baseField,"invalidChar",
+						validator.invalidCharError));
+					return results;
+	            }
+	        }
+		}
+
         // Make sure the input is within the specified range.
         if (!isNaN(minValue) || !isNaN(maxValue))
         {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 11273
Author:   aharui@adobe.com
Date:     2009-10-29T18:57:54.403337Z

Log Message:
-----------
Initial check in of MXItemRenderer and friends

QE Notes: New Classes and Code
Doc Notes: New Classes and Code
Bugs: None
Reviewer: Ryan
API Change: yes
Is noteworthy for integration: No
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/BaseListData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListData.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/treeClasses</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/controls/dataGridClasses/DataGridListData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/TreeListData.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/tests/basicTests/halo/scripts/MXItemRendererTestScript.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/listClasses/MXItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/BasicTests-config.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/tests/basicTests/halo/views/MXItemRendererTests.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/dataGridClasses/MXDataGridItemRenderer.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/listClasses</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/treeClasses/MXTreeItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/BasicTests.mxml</path>

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

--- frameworks/projects/mx/src/mx/controls/treeClasses/TreeListData.as
+++ frameworks/projects/mx/src/mx/controls/treeClasses/TreeListData.as
@@ -79,7 +79,9 @@
 	//  depth
     //----------------------------------

-	/**
+	[Bindable("dataChange")]
+
+    /**
 	 *  The level of the item in the tree. The top level is 1.
 	 *
 	 *  @langversion 3.0
@@ -93,7 +95,9 @@
 	//  disclosureIcon
     //----------------------------------

-	/**
+	[Bindable("dataChange")]
+
+    /**
 	 *  A Class representing the disclosure icon for the item in the Tree control.
 	 *
 	 *  @langversion 3.0
@@ -107,7 +111,9 @@
 	//  hasChildren
     //----------------------------------

-	/**
+	[Bindable("dataChange")]
+
+    /**
 	 *  Contains true if the node has children.
 	 *
 	 *  @langversion 3.0
@@ -121,7 +127,9 @@
 	//  icon
     //----------------------------------

-	/**
+	[Bindable("dataChange")]
+
+    /**
 	 *  A Class representing the icon for the item in the Tree control.
 	 *
 	 *  @langversion 3.0
@@ -135,7 +143,9 @@
 	//  indent
     //----------------------------------

-	/**
+	[Bindable("dataChange")]
+
+    /**
 	 *  The default indentation for this row of the Tree control.
 	 *
 	 *  @langversion 3.0
@@ -149,7 +159,9 @@
 	//  node
     //----------------------------------

-	/**
+	[Bindable("dataChange")]
+
+    /**
 	 *  The data for this item in the Tree control.
 	 *
 	 *  @langversion 3.0
@@ -163,7 +175,9 @@
 	//  open
     //----------------------------------

-	/**
+	[Bindable("dataChange")]
+
+    /**
 	 *  Contains true if the node is open.
 	 *
 	 *  @langversion 3.0


Transferred from the Adobe Open Source Subversion Repository

Revision: 3021
Author:   gosmith@adobe.com
Date:     2008-08-28T01:56:25.254704Z

Log Message:
-----------
Integrated TCAL SWCs from Build 159 to get scrolling improvements.

Reviewer: Glenn
Bugs: -
QA: No
Doc: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/text_importExport.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/text_model.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/text_edit.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/events/TextOperationEvent.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -29,21 +29,16 @@
 import mx.core.UIComponent;

 import text.container.IContainerController;
-import text.edit.ContainerStyleChangeOperation;
 import text.edit.EditManager;
-import text.edit.FlowOperation;
 import text.edit.ISelectionManager;
-import text.edit.OperationEvent;
-import text.edit.ParagraphStyleChangeOperation;
-import text.edit.SelectionChangedEvent;
 import text.edit.SelectionState;
-import text.edit.SplitParOperation;
-import text.edit.StyleChangeOperation;
 import text.elements.FlowElement;
 import text.elements.ParagraphElement;
 import text.elements.SpanElement;
 import text.elements.TextFlow;
 import text.events.ComposeDoneEvent;
+import text.events.OperationEvent;
+import text.events.SelectionChangeEvent;
 import text.formats.BlockProgression;
 import text.formats.CharacterFormat;
 import text.formats.ContainerFormat;
@@ -58,14 +53,19 @@
 import text.formats.VerticalAlign;
 import text.formats.WhitespaceCollapse;
 import text.importExport.TextFilter;
+import text.operations.ApplyCharacterFormatOperation;
+import text.operations.ApplyContainerFormatOperation;
+import text.operations.ApplyParagraphFormatOperation;
+import text.operations.FlowOperation;
+import text.operations.SplitParagraphOperation;

 //--------------------------------------
 //  Events
 //--------------------------------------

 /**
- *  Dispached after the selectionAnchorIndex and/or
- *  selectionActiveIndex properties have changed.
+ *  Dispached after the selectionAnchorPosition and/or
+ *  selectionActivePosition properties have changed.
  *  due to a user interaction.
  */
 [Event(name="selectionChange", type="flash.events.Event")]
@@ -166,7 +166,7 @@
     /**
      *  @private
      */
-    private var _blockProgression:String = BlockProgression.TOP_TO_BOTTOM;
+    private var _blockProgression:String = BlockProgression.TB;

     /**
      *  Documentation is not currently available.
@@ -234,7 +234,7 @@
     /**
      *  @private
      */
-    private var _direction:String = Direction.LEFT_TO_RIGHT;
+    private var _direction:String = Direction.LTR;

     /**
      *  Documentation is not currently available.
@@ -1273,85 +1273,85 @@
     }

     //----------------------------------
-    //  selectionActiveIndex
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    private var _selectionActiveIndex:int = -1;
-
-    /**
-     *  @private
-     */
-    private var selectionActiveIndexChanged:Boolean = false;
-
-    /**
-     *  The active index of the selection.
+    //  selectionActivePosition
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _selectionActivePosition:int = -1;
+
+    /**
+     *  @private
+     */
+    private var selectionActivePositionChanged:Boolean = false;
+
+    /**
+     *  The active position of the selection.
      *  The "active" point is the end of the selection
      *  which is changed when the selection is extended.
-     *  The active index may be either the start
+     *  The active position may be either the start
      *  or the end of the selection.
      *
      *  @default -1
      */
-    public function get selectionActiveIndex():int
-    {
-        return _selectionActiveIndex;
-    }
-
-    /**
-     *  @private
-     */
-    public function set selectionActiveIndex(value:int):void
-    {
-        if (value == _selectionActiveIndex)
-            return;
-
-        _selectionActiveIndex = value;
-        selectionActiveIndexChanged = true;
-
-        invalidateProperties();
-    }
-
-    //----------------------------------
-    //  selectionAnchorIndex
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    private var _selectionAnchorIndex:int = -1;
-
-    /**
-     *  @private
-     */
-    private var selectionAnchorIndexChanged:Boolean = false;
-
-    /**
-     *  The anchor index of the selection.
+    public function get selectionActivePosition():int
+    {
+        return _selectionActivePosition;
+    }
+
+    /**
+     *  @private
+     */
+    public function set selectionActivePosition(value:int):void
+    {
+        if (value == _selectionActivePosition)
+            return;
+
+        _selectionActivePosition = value;
+        selectionActivePositionChanged = true;
+
+        invalidateProperties();
+    }
+
+    //----------------------------------
+    //  selectionAnchorPosition
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    private var _selectionAnchorPosition:int = -1;
+
+    /**
+     *  @private
+     */
+    private var selectionAnchorPositionChanged:Boolean = false;
+
+    /**
+     *  The anchor position of the selection.
      *  The "anchor" point is the stable end of the selection
      *  when the selection is extended.
-     *  The anchor index may be either the start
+     *  The anchor position may be either the start
      *  or the end of the selection.
      *
      *  @default -1
      */
-    public function get selectionAnchorIndex():int
-    {
-        return _selectionAnchorIndex;
-    }
-
-    /**
-     *  @private
-     */
-    public function set selectionAnchorIndex(value:int):void
-    {
-        if (value == _selectionAnchorIndex)
-            return;
-
-        _selectionAnchorIndex = value;
-        selectionAnchorIndexChanged = true;
+    public function get selectionAnchorPosition():int
+    {
+        return _selectionAnchorPosition;
+    }
+
+    /**
+     *  @private
+     */
+    public function set selectionAnchorPosition(value:int):void
+    {
+        if (value == _selectionAnchorPosition)
+            return;
+
+        _selectionAnchorPosition = value;
+        selectionAnchorPositionChanged = true;

         invalidateProperties();
     }
@@ -1524,7 +1524,7 @@
             textFlow.container = this;

             // Give it an EditManager to make it editable.
-            textFlow.selectionManager = new TextViewEditManager();
+            textFlow.interactionManager = new TextViewEditManager();

             // Listen to events from the TextFlow and its EditManager.
             addListeners(textFlow);
@@ -1535,13 +1535,13 @@
         }

         // Apply the specified selection indices to the TextFlow.
-        if (selectionAnchorIndexChanged || selectionActiveIndexChanged)
+        if (selectionAnchorPositionChanged || selectionActivePositionChanged)
         {
-            textFlow.selectionManager.setActiveSelection(
-                _selectionAnchorIndex, _selectionActiveIndex);
+            textFlow.interactionManager.setActiveSelection(
+                _selectionAnchorPosition, _selectionActivePosition);

-            selectionAnchorIndexChanged = false;
-            selectionActiveIndexChanged = false;
+            selectionAnchorPositionChanged = false;
+            selectionActivePositionChanged = false;
         }

         if (horizontalScrollPositionChanged)
@@ -1784,25 +1784,24 @@
         textFlow.addEventListener(ComposeDoneEvent.COMPOSE_DONE,
                                   textFlow_composeDoneHandler);

-        textFlow.selectionManager.addEventListener(
-            SelectionChangedEvent.SELECTION_CHANGED,
+        textFlow.interactionManager.addEventListener(
+            SelectionChangeEvent.SELECTION_CHANGED,
             editManager_selectionChangeHandler);

-        textFlow.selectionManager.addEventListener(
+        textFlow.interactionManager.addEventListener(
             OperationEvent.OPERATION_BEGIN, editManager_operationBeginHandler);

-        textFlow.selectionManager.addEventListener(
+        textFlow.interactionManager.addEventListener(
             OperationEvent.OPERATION_END, editManager_operationEndHandler);
     }

     /**
      *  Sets the selection range.
      */
-    public function setSelection(anchorIndex:int = 0,
-                                 activeIndex:int = int.MAX_VALUE):void
-    {
-        textFlow.selectionManager.setActiveSelection(anchorIndex, activeIndex,
-                                                     true);
+    public function setSelection(anchorPosition:int = 0,
+                                 activePosition:int = int.MAX_VALUE):void
+    {
+        textFlow.interactionManager.setActiveSelection(anchorPosition, activePosition);
     }

     /**
@@ -1813,7 +1812,7 @@
      */
     public function insertText(text:String):void
     {
-        EditManager(textFlow.selectionManager).insertText(text);
+        EditManager(textFlow.interactionManager).insertText(text);
     }

     /**
@@ -1825,8 +1824,8 @@
      */
     public function appendText(text:String):void
     {
-        textFlow.selectionManager.setActiveSelection(int.MAX_VALUE, int.MAX_VALUE);
-        EditManager(textFlow.selectionManager).insertText(text);
+        textFlow.interactionManager.setActiveSelection(int.MAX_VALUE, int.MAX_VALUE);
+        EditManager(textFlow.interactionManager).insertText(text);
     }

     /**
@@ -1857,7 +1856,7 @@
      */
     public function getAttributes(names:Array = null):Object
     {
-        var selectionManager:ISelectionManager = textFlow.selectionManager;
+        var selectionManager:ISelectionManager = textFlow.interactionManager;

         var p:String;
         var kind:String;
@@ -1970,24 +1969,24 @@
         }

         var editManager:TextViewEditManager =
-            TextViewEditManager(textFlow.selectionManager);
+            TextViewEditManager(textFlow.interactionManager);

         if (containerFormat)
         {
-            editManager.execute(new ContainerStyleChangeOperation(
-                editManager, containerFormat));
+            editManager.execute(new ApplyContainerFormatOperation(
+                editManager.selectionState, containerFormat));
         }

         if (paragraphFormat)
         {
-            editManager.execute(new ParagraphStyleChangeOperation(
-                editManager, paragraphFormat));
+            editManager.execute(new ApplyParagraphFormatOperation(
+                editManager.selectionState, paragraphFormat));
         }

         if (characterFormat)
         {
-            editManager.execute(new StyleChangeOperation(
-                editManager, characterFormat));
+            editManager.execute(new ApplyCharacterFormatOperation(
+                editManager.selectionState, characterFormat));
         }
     }

@@ -2021,10 +2020,10 @@
      *  @private
      *  Called when the EditManager dispatches a 'selectionChange' event.
      */
-    private function editManager_selectionChangeHandler(event:SelectionChangedEvent):void
-    {
-        _selectionAnchorIndex = textFlow.selectionManager.selectionAnchorIndex; // event.target isn't useful
-        _selectionActiveIndex = textFlow.selectionManager.selectionActiveIndex;
+    private function editManager_selectionChangeHandler(event:SelectionChangeEvent):void
+    {
+        _selectionAnchorPosition = textFlow.interactionManager.anchorPosition; // event.target isn't useful
+        _selectionActivePosition = textFlow.interactionManager.activePosition;

         dispatchEvent(new Event("selectionChange"));
     }
@@ -2044,7 +2043,7 @@
         // If the user presses the Enter key in a single-line TextView,
         // we cancel the paragraph-splitting operation and instead
         // simply dispatch an 'enter' event.
-        if (op is SplitParOperation && !multiline)
+        if (op is SplitParagraphOperation && !multiline)
         {
             event.preventDefault();
             dispatchEvent(new Event("enter"));
@@ -2099,7 +2098,7 @@
 ////////////////////////////////////////////////////////////////////////////////

 import text.edit.EditManager;
-import text.edit.FlowOperation;
+import text.operations.FlowOperation;

 class TextViewEditManager extends EditManager
 {
@@ -2110,6 +2109,6 @@

     public function execute(flowOperation:FlowOperation):void
     {
-        doop(flowOperation);
+        doOperation(flowOperation);
     }
 }


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

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

 package spark.automation.delegates.components.supportClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 9210
Author:   cframpto@adobe.com
Date:     2009-08-10T21:36:40.073628Z

Log Message:
-----------
Rev 9202 again but configuration initialized with default configuration.

QE notes: from Gordon: We've had so much trouble with the Enter key that I think we need some (or more?) Mustella tests for it, including testing it after toggling the multiline property, and testing it with both 'text', 'content', and 'textFlow'.
Doc notes:
Bugs: SDK-22527
Reviewer: Gordon
Tests run: checkintests, NumericStepper, TextInput and TextArea
Is noteworthy for integration: no

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

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -252,8 +252,14 @@
         if (classInitialized)
             return;

+        staticConfiguration =
+            Configuration(TextContainerManager.defaultConfiguration).clone();
+        staticConfiguration.manageEnterKey = false; // default is true
+        staticConfiguration.manageTabKey = false;   // default is false
+
         staticPlainTextImporter =
-            TextConverter.getImporter(TextConverter.PLAIN_TEXT_FORMAT);
+            TextConverter.getImporter(TextConverter.PLAIN_TEXT_FORMAT,
+            staticConfiguration);

         // Throw import errors rather than return a null textFlow.
         // Alternatively, the error strings are in the Vector, importer.errors.
@@ -278,7 +284,16 @@
      *  @private
      */
     private static var classInitialized:Boolean = false;
-
+
+    /**
+     *  @private
+     *  Create a single Configuration used by all Text instances.
+     *  It tells the TextContainerManager that we don't want it
+     *  to handle the ENTER key, because we need the ENTER key to behave
+     *  differently based on the 'multiline' property.
+     */
+    private static var staticConfiguration:Configuration;
+
     /**
      *  @private
      *  This TLF object is used to import a 'text' String
@@ -1667,35 +1682,17 @@
         // We are about to set focus on this component.  If it is due to
         // a programmatic focus change we have to programatically do what the
         // mouseOverHandler and the mouseDownHandler do so that the user can
-        // type in this component without using the mouse first.
-        //
-        //   1) TCM addActivationEventListeners() called so that event handlers
-        //      are in place to catch the upcoming FocusEvent.FOCUS_IN which
-        //      will cause our focusInHandler to be called.
-        //   2) Make sure there is a textFlow with an interactionManager
-        //      in place so that selection/editing can occur.  Our focusIn
-        //      handler does this indirectly for the editable case since
-        //      to set a selection, there must be a textFlow in this state.
-        //
-        // We can't call addActivationEventListeners() directly but it is
-        // called by TCM.setTextFlow() which is called by the textFlow getter.
-        // The textFlow getter also makes sure there is an interactionManager
-        // in place.
-        //
-        // Alternatively, we could call convertToTextFlowWithComposer() if it
-        // was made accessible.  This eliminates the need for
-        // addActivationEventListeners(), since the text flow with a composer
-        // is put in place immediately.
-
-        if (editingMode != EditingMode.READ_ONLY)
-        {
-            if (_textContainerManager.handlersState ==
-                TextContainerManager.HANDLERS_NOTADDED ||
-                _textContainerManager.composeState !=
-                TextContainerManager.COMPOSE_COMPOSER)
-            {
-                textFlow;
-            }
+        // type in this component without using the mouse first.  Ideally
+        // we would call convertToTextFlowWithComposer() to put a textFlow
+        // with a composer in place but it is not accessible.  The workaround
+        // is to call scrollToRange which makes sure the textFlow is in place
+        // and then returns immediately from scrollToRange since the scroll
+        // positions are not valid.
+        if (editingMode != EditingMode.READ_ONLY &&
+            _textContainerManager.composeState !=
+            TextContainerManager.COMPOSE_COMPOSER)
+        {
+            _textContainerManager.scrollToRange(-1, -1);
         }

         super.setFocus();
@@ -2355,9 +2352,7 @@
      */
     mx_internal function createTextContainerManager():TextContainerManager
     {
-        // Use the default configuration.
-        // TODO:(cframpto) should set enableEnterKey = false
-        return new RichEditableTextContainerManager(this, null);
+        return new RichEditableTextContainerManager(this, staticConfiguration);
     }

     /**
@@ -2467,9 +2462,9 @@
      *  @private
      *  Should only be used by API calls.
      */
-    private function releaseEditManager():void
-    {
-        EditManager(textFlow.interactionManager).endCompositeOperation();
+    private function releaseEditManager(editManager:IEditManager):void
+    {
+        editManager.endCompositeOperation();

         _textContainerManager.endInteraction();

@@ -3088,7 +3083,7 @@
             characterFormat, paragraphFormat, containerFormat, selectionState);

         // All done with the edit manager.
-        releaseEditManager();
+        releaseEditManager(editManager);
     }

     /**
@@ -3124,7 +3119,7 @@
         dispatchChangeAndChangingEvents = true;

         // All done with edit manager.
-        releaseEditManager();
+        releaseEditManager(editManager);

         dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
     }
@@ -3327,13 +3322,26 @@
             return;

         if (event.keyCode == Keyboard.ENTER)
-        {
-            // Do not let TLF handle the ENTER key if only one line.
-            if (!multiline)
+        {
+            // We always handle the 'enter' key since we would have to recreate
+            // the container manager to change the configuration if multiline
+            // changes.
+            if (multiline)
             {
-                event.preventDefault();
+                var editManager:IEditManager =
+                    EditManager(_textContainerManager.beginInteraction());
+
+                if (editManager.hasSelection())
+                    editManager.splitParagraph();
+
+                _textContainerManager.endInteraction();
+            }
+            else
+            {
                 dispatchEvent(new FlexEvent(FlexEvent.ENTER));
             }
+
+            event.preventDefault();
          }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 9557
Author:   gosmith@adobe.com
Date:     2009-08-24T23:11:57.086909Z

Log Message:
-----------
Edited ASDoc for Spark text classes in response to Carol's review.

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

Modified Paths:
--------------
<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/projects/spark/src/spark/primitives/SimpleText.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -203,12 +203,12 @@
  *  RichEditableText is a low-level UIComponent for displaying,
  *  scrolling, selecting, and editing richly-formatted text.
  *
- *
The rich text can clickable hyperlinks and inline graphics
+ *
The rich text can contain clickable hyperlinks and inline graphics
  *  that are either embedded or loaded from URLs.

  *
- *
It does not have scrollbars, but it implements the IViewport
- *  interface for programmatic scrolling so that it can be controlled
- *  by a Scroller, which does provide scrollbars.
+ *
RichEditableText does not have scrollbars, but it implements
+ *  the IViewport interface for programmatic scrolling so that it
+ *  can be controlled by a Scroller, which does provide scrollbars.
  *  It also supports vertical scrolling with the mouse wheel.

  *
  *
It does not include any user interface for changing
@@ -229,9 +229,24 @@
  *  which in turn builds on the new Flash Text Engine (FTE)
  *  in Flash Player 10.
  *  In combination, these layers provide text editing with
- *  high-quality international typography and layout.
- *  It is comparable to the UITextField class
- *  used in MX components.

+ *  high-quality international typography and layout.

+ *
+ *
The Spark architecture provides three text "primitives" --
+ *  SimpleText, RichText, and RichEditableText --
+ *  as part of its pay-only-for-what-you-need philosophy.
+ *  SimpleText is the fastest and most lightweight
+ *  because it uses only FTE, not TLF,
+ *  but it is limited in its capabilities: no rich text,
+ *  no scrolling, no selection, and no editing.
+ *  RichText adds the ability to display rich text
+ *  with complex layout, but is still completely non-interactive.
+ *  RichEditableText is the slowest and heaviest,
+ *  but offers most of what TLF can do.
+ *  You should use the fastest text primitive that meets your needs.

+ *
+ *
RichEditableText is similar to the UITextField class
+ *  used in MX components. This class did not use FTE or TLF
+ *  but rather extended the older TextField class in the Player.

  *
  *
The most important differences to understand are:
  *

@@ -288,7 +303,8 @@
  *  paddingRight, and paddingBottom styles.

  *
  *
By default, a RichEditableText "autosizes": it starts out very
- *  small if it has no text, grows in width as you type,
+ *  small if it has no text, grows in width up to
+ *  maxWidth as you type,
  *  and grows in height when you press Enter to start a new line.

  *
  *
The widthInChars and heightInChars
@@ -299,7 +315,9 @@
  *  left and right
  *  or top and bottom.

  *
- *
When you specify some kind of width, the text wraps at the right
+ *
When you specify some kind of width -- whether an explicit or
+ *  percent width, a maxWidth or left
+ *  and right constraints -- the text wraps at the right
  *  edge of the component and the text becomes vertically scrollable
  *  when there is more text than fits.
  *  If you set the lineBreak style to "explicit",
@@ -1546,8 +1564,8 @@

     /**
      *  A character position, relative to the beginning of the
-	 *  text String, specifying the end of the selection.
-     *  that moves when the selection is extended.
+	 *  text String, specifying the end of the selection
+     *  that moves when the selection is extended with the arrow keys.
      *
      *
The active position may be either the start
      *  or the end of the selection.

@@ -1587,8 +1605,8 @@

     /**
      *  A character position, relative to the beginning of the
-	 *  text String, specifying the end of the selection.
-     *  that stays fixed when the selection is extended.
+	 *  text String, specifying the end of the selection
+     *  that stays fixed when the selection is extended with the arrow keys.
 	 *
      *
The anchor position may be either the start
      *  or the end of the selection.

@@ -1723,7 +1741,7 @@
 	 *  and verticalScrollPosition to 0,
      *  and it sets the selectionAnchorPosition
 	 *  and selectionActivePosition
-     *  to the end of the new text.

+     *  to -1 to clear the selection.

      *
      *  @default ""
      *
@@ -1877,7 +1895,7 @@
 	 *  and verticalScrollPosition to 0,
      *  and it sets the selectionAnchorPosition
 	 *  and selectionActivePosition
-     *  to the end of the new text.

+     *  to -1 to clear the selection.

 	 *
 	 *
To turn a TextFlow object into TLF markup,
 	 *  use the TextFlowUtil.export() markup.


fixed bug handling overrideBinNames

fixed bug handling overrideBinNames

--- WeaveData/src/weave/data/BinningDefinitions/AbstractBinningDefinition.as
+++ WeaveData/src/weave/data/BinningDefinitions/AbstractBinningDefinition.as
@@ -102,6 +102,7 @@
 		private var _overrideBinNames:LinkableString;
 		private var _overrideInputMin:LinkableNumber;
 		private var _overrideInputMax:LinkableNumber;
+		private var _overrideBinNamesArray:Array = [];

 		public function get overrideBinNames():LinkableString { return _overrideBinNames; }
 		public function get overrideInputMin():LinkableNumber { return _overrideInputMin; }
@@ -109,10 +110,9 @@

 		protected function getOverrideNames():Array
 		{
-			var names:Array = [];
 			if (overrideBinNames && detectLinkableObjectChange(getOverrideNames, overrideBinNames))
-				names = WeaveAPI.CSVParser.parseCSVRow(overrideBinNames.value) || [];
-			return names;
+				_overrideBinNamesArray = WeaveAPI.CSVParser.parseCSVRow(overrideBinNames.value) || [];
+			return _overrideBinNamesArray;
 		}
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 8102
Author:   cframpto@adobe.com
Date:     2009-06-23T18:26:07.711484Z

Log Message:
-----------
A couple of text changes to sync with TLF Build 458 that I just submitted.

QA Notes:
Doc Notes:
Reviewers: will be Gordon

Modified Paths:
--------------
<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/projects/spark/src/spark/primitives/RichText.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -966,10 +966,6 @@
     	if (debug)
      		trace("editingMode = ", value);

-        // FIXME (cframpto): TextContainerManager should do this check.
-        if (_textContainerManager.editingMode == value)
-            return;
-
      	_textContainerManager.editingMode = value;
     }

@@ -1384,8 +1380,6 @@
             // Once we have a TextFlow, we can export its plain text.
             _text = staticPlainTextExporter.export(
                 _textFlow, ConversionType.STRING_TYPE) as String;
-            // Remove the trailing paragraph terminator.
-            _text = _text.substring(0, _text.length - 1);
         }

         return _text;
@@ -1687,8 +1681,8 @@
                 // change the displayed text.
                 _text = text;

-                // FIXME (cframpto): if content, should the paragraph terminators be
-                // left in the string so the displayAsPassword string has the
+                // FIXME (cframpto): if content, should the paragraph terminators
+                // be left in the string so the displayAsPassword string has the
                 // same form as the original string?  This is only an issue
                 // for TextArea.
                 var textToDisplay:String = StringUtil.repeat(
@@ -3101,9 +3095,6 @@
         // In this case we always maintain _text with the underlying text and
         // display the appropriate number of passwordChars.  If there are any
         // interactive editing operations _text is updated during the operation.
-        // FIXME (cframpto): what about the case where the textContainerManager textFlow
-        // is modified programatically and the text is different?  This could
-        // only be done with an mx_internal interface.
         if (displayAsPassword)
             return;


Transferred from the Adobe Open Source Subversion Repository

Revision: 3553
Author:   chaase@adobe.com
Date:     2008-10-09T23:14:18.257660Z

Log Message:
-----------
Fixed sdk-17113, sdk-17139, sdk-16526, sdk-16884, sdk-17154, sdk-16999, sdk-16631, sdk-17214. Most of these fixes are related to making effects work when contraints are enabled on the target. For that, two new attributes were added to FxAnimate: disableLayout (default false) and adjustConstraints (default false). Fixes were also made for various other effects issues, such as running all animations and startDelays off of the same global timer.
The change also includes renames of some effects classes and the easing API (now in mx.effects.interpolation).

Reviewed by: Jason (effects code) and Hans (renames)
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxResizeInstance.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/IEaser.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/IEaser.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/Linear.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="dir" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/Animate3DInstance.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimate3DInstance.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animate3D.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxMoveInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/Animate3DInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Timeline.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animation.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/Constant.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/Constant.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/Rotate3DInstance.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimateFilter.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Rotate3D.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxRotate3D.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/EaseInOut.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/EaseInOut.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/Power.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/Power.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/Rotate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/fxEasing/Sine.as" copyfrom-rev="3548" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/interpolation/Sine.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Rotate3D.as</path>

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

--- frameworks/projects/spark/src/spark/effects/animation/Animation.as
+++ frameworks/projects/spark/src/spark/effects/animation/Animation.as
@@ -10,14 +10,17 @@
 ////////////////////////////////////////////////////////////////////////////////
 package mx.effects
 {
+import __AS3__.vec.Vector;
+
 import flash.events.EventDispatcher;
 import flash.events.TimerEvent;
+import flash.utils.Dictionary;
 import flash.utils.Timer;
 import flash.utils.getTimer;

-import mx.effects.fxEasing.IEaser;
-import mx.effects.fxEasing.Linear;
-import mx.effects.fxEasing.Sine;
+import mx.effects.interpolation.IEaser;
+import mx.effects.interpolation.Linear;
+import mx.effects.interpolation.Sine;
 import mx.effects.interpolation.ArrayInterpolator;
 import mx.effects.interpolation.IInterpolator;
 import mx.effects.interpolation.NumberArrayInterpolator;
@@ -156,6 +159,9 @@

     private var easingFunction:Function;
     private static var defaultEaser:IEaser = new Sine(.5);
+    private static var delayedStartAnims:Vector.<Animation> =
+        new Vector.<Animation>();
+    private static var delayedStartTimes:Dictionary = new Dictionary();

     //--------------------------------------------------------------------------
     //
@@ -490,39 +496,36 @@

         if (!timer)
         {
+            Timeline.pulse();
             timer = new Timer(_resolution);
             timer.addEventListener(TimerEvent.TIMER, timerHandler);
             timer.start();
         }
-        else
-        {
-            timer.start();
-        }
-
-        if (isNaN(intervalTime))
-            _intervalTime = getTimer();
+
+        _intervalTime = Timeline.currentTime;

         animation.startTime = _intervalTime;
     }

     private static function removeAnimationAt(index:int):void
     {
-        if (index >= activeAnimations.length || index < 0)
-            return;
-
-        activeAnimations.splice(index, 1);
-
-        var n:int = activeAnimations.length;
-        for (var i:int = index; i < n; i++)
-        {
-            var curAnimation:Animation = Animation(activeAnimations[i]);
-            curAnimation.id--;
-        }
-
-        if (n == 0)
+        if (index >= 0 && index < activeAnimations.length)
+        {
+            activeAnimations.splice(index, 1);
+
+            var n:int = activeAnimations.length;
+            for (var i:int = index; i < n; i++)
+            {
+                var curAnimation:Animation = Animation(activeAnimations[i]);
+                curAnimation.id--;
+            }
+        }
+        // If no more animations running or pending, stop the timer
+        if (activeAnimations.length == 0 && delayedStartAnims.length == 0)
         {
             _intervalTime = NaN;
             timer.reset();
+            timer = null;
         }
     }

@@ -537,17 +540,29 @@
     private static function timerHandler(event:TimerEvent):void
     {
         var oldTime:Number = intervalTime;
-        _intervalTime = getTimer();
+        _intervalTime = Timeline.pulse();

         var n:int = activeAnimations.length;

-        for (var i:int = n; i >= 0; i--)
+        for (var i:int = 0; i < n; ++i)
         {
             var animation:Animation = Animation(activeAnimations[i]);
             if (animation)
                 animation.doInterval();
         }

+        // Check to see whether it's time to start any delayed animations
+        for (i = 0; i < delayedStartAnims.length; ++i)
+        {
+            var anim:Animation = Animation(delayedStartAnims[i]);
+            var animStartTime:Number = delayedStartTimes[anim];
+            // Keep starting animations unless our sorted lists return
+            // animations that start past the current time
+            if (animStartTime < Timeline.currentTime)
+                anim.start();
+            else
+                break;
+        }
         event.updateAfterEvent();
     }

@@ -652,30 +667,52 @@
     }

     /**
+     * Remove this animation from the list of pending animations,
+     * as appropriate
+     */
+    private function removeFromDelayedAnimations():void
+    {
+        if (delayedStartTimes[this])
+        {
+            var animPendingTime:int = delayedStartTimes[this];
+            for (var i:int = 0; i < delayedStartAnims.length; ++i)
+            {
+                if (delayedStartAnims[i] == this)
+                {
+                    delayedStartAnims.splice(i, 1);
+                    break;
+                }
+            }
+            delete delayedStartTimes[this];
+        }
+    }
+
+    /**
      *  Interrupt the animation, jump immediately to the end of the animation,
      *  and send out ending notifications
      */
     public function end():void
     {
-        if (_isPlaying || duration == 0)
-        {
-            // TODO (chaase): Check whether we already send out a final
-            // UPDATE event with the end value; if so, this dup should be
-            // removed
-            var value:Object = getCurrentValue(duration);
-
-            sendAnimationEvent(AnimationEvent.ANIMATION_UPDATE, value);
-            sendAnimationEvent(AnimationEvent.ANIMATION_END, value);
-
-            // If animation has been added, id >= 0
-            // but if duration = 0, this might not be the case.
-            if (id >= 0)
-                Animation.removeAnimationAt(id);
-
-            _invertValues = false;
-            _doReverse = false;
-            _isPlaying = false;
-        }
+        removeFromDelayedAnimations();
+
+        // TODO (chaase): Check whether we already send out a final
+        // UPDATE event with the end value; if so, this dup should be
+        // removed
+        // TODO (chaase): this will snap paused and startDelayed animations
+        // to their end values. Seems correct, but should check this.
+        var value:Object = getCurrentValue(duration);
+
+        sendAnimationEvent(AnimationEvent.ANIMATION_UPDATE, value);
+        sendAnimationEvent(AnimationEvent.ANIMATION_END, value);
+
+        // If animation has been added, id >= 0
+        // but if duration = 0, this might not be the case.
+        if (id >= 0)
+            Animation.removeAnimationAt(id);
+
+        _invertValues = false;
+        _doReverse = false;
+        _isPlaying = false;
     }

     /**
@@ -683,11 +720,34 @@
      */
     public function play():void
     {
+        setupInterpolation();
         if (startDelay > 0)
         {
-            var delayTimer:Timer = new Timer(startDelay, 1);
-            delayTimer.addEventListener(TimerEvent.TIMER, start);
-            delayTimer.start();
+            // Run timer if it's not currently running
+            if (!timer)
+            {
+                Timeline.pulse();
+                timer = new Timer(_resolution);
+                timer.addEventListener(TimerEvent.TIMER, timerHandler);
+                timer.start();
+            }
+            var animStartTime:int = Timeline.currentTime + startDelay;
+            var insertIndex:int = -1;
+            for (var i:int = 0; i < delayedStartAnims.length; ++i)
+            {
+                var timeAtIndex:int =
+                    delayedStartTimes[delayedStartAnims[i]];
+                if (animStartTime < timeAtIndex)
+                {
+                    insertIndex = i;
+                    break;
+                }
+            }
+            if (insertIndex >= 0)
+                delayedStartAnims.splice(insertIndex, 0, this);
+            else
+                delayedStartAnims.push(this);
+            delayedStartTimes[this] = animStartTime;
         }
         else
         {
@@ -716,7 +776,7 @@
         if (!_isPlaying)
         {
             setupInterpolation();
-            _intervalTime = getTimer();
+            _intervalTime = Timeline.currentTime;
             startTime = _intervalTime - playheadTime;
             doInterval();
         }
@@ -811,6 +871,8 @@
      */
     public function stop():void
     {
+        removeFromDelayedAnimations();
+
         if (id >= 0)
             Animation.removeAnimationAt(id);

@@ -869,8 +931,18 @@
      */
     private function start(event:TimerEvent = null):void
     {
+        // TODO (chaase): call removal utility instead of this code
+        // Make sure to remove any references on the delayed lists
+        for (var i:int = 0; i < delayedStartAnims.length; ++i)
+        {
+            if (this == delayedStartAnims[i])
+            {
+                delete delayedStartTimes[this];
+                delayedStartAnims.splice(i, 1);
+                break;
+            }
+        }
         numRepeats = 1;
-        setupInterpolation();
         var value:Object = getCurrentValue(0);
         sendAnimationEvent(AnimationEvent.ANIMATION_START, value);


Transferred from the Adobe Open Source Subversion Repository

Revision: 3972
Author:   smgilson@adobe.com
Date:     2008-10-30T20:17:56.264984Z

Log Message:
-----------
Add more @privates to match up with [ExcludeClass]

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponentGlobals.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ContainerGlobals.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/messaging/config/LoaderConfig.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponentGlobals.as
+++ frameworks/projects/framework/src/mx/core/UIComponentGlobals.as
@@ -18,24 +18,27 @@

 use namespace mx_internal;

+/**
+*  @private
+*/
 public class UIComponentGlobals
 {
     /**
      *  @private
-	 *  A reference to the sole instance of the LayoutManager
-	 *  used by all components.
-	 *
-	 *
This property is set in the constructor of the Application class.
-	 *  If you need to override or replace LayoutManager,
-	 *  set UIComponent.layoutManager in your application's constructor
-	 *  after calling super().

+     *  A reference to the sole instance of the LayoutManager
+     *  used by all components.
+     *
+     *
This property is set in the constructor of the Application class.
+     *  If you need to override or replace LayoutManager,
+     *  set UIComponent.layoutManager in your application's constructor
+     *  after calling super().

      */
     mx_internal static var layoutManager:ILayoutManager;

     /**
      *  @private
      *  When this variable is non-zero, no methods queued
-	 *  by the callLater() method get invoked.
+     *  by the callLater() method get invoked.
      *  This is used to allow short effects to play without interruption.
      *  This counter is incremented by suspendBackgroundProcessing(),
      *  decremented by resumeBackgroundProcessing(), and checked by
@@ -45,84 +48,84 @@

     /**
      *  @private
-	 *  There is a bug (139390) where setting focus from within callLaterDispatcher
-	 *  screws up the ActiveX player.  We defer focus until enterframe.
+     *  There is a bug (139390) where setting focus from within callLaterDispatcher
+     *  screws up the ActiveX player.  We defer focus until enterframe.
      */
     mx_internal static var callLaterDispatcherCount:int = 0;

     /**
      *  @private
-	 *  There is a bug (139390) where setting focus from within callLaterDispatcher
-	 *  screws up the ActiveX player.  We defer focus until enterframe.
+     *  There is a bug (139390) where setting focus from within callLaterDispatcher
+     *  screws up the ActiveX player.  We defer focus until enterframe.
      */
     mx_internal static var nextFocusObject:InteractiveObject;

-	/**
-	 *  @private
-	 *  This single Matrix is used to pass information from the
-	 *  horizontalGradientMatrix() or verticalGradientMatrix()
-	 *  utility methods to the drawRoundRect() method.
-	 *  Each call to horizontalGradientMatrix() or verticalGradientMatrix()
-	 *  simply calls createGradientBox() to stuff this Matrix with new values.
-	 *  We can keep restuffing the same Matrix object because these utility
-	 *  methods are only used inside a call to drawRoundRect()
-	 *  and the Matrix isn't needed after drawRoundRect() returns.
-	 */
-	mx_internal static var tempMatrix:Matrix = new Matrix();
+    /**
+     *  @private
+     *  This single Matrix is used to pass information from the
+     *  horizontalGradientMatrix() or verticalGradientMatrix()
+     *  utility methods to the drawRoundRect() method.
+     *  Each call to horizontalGradientMatrix() or verticalGradientMatrix()
+     *  simply calls createGradientBox() to stuff this Matrix with new values.
+     *  We can keep restuffing the same Matrix object because these utility
+     *  methods are only used inside a call to drawRoundRect()
+     *  and the Matrix isn't needed after drawRoundRect() returns.
+     */
+    mx_internal static var tempMatrix:Matrix = new Matrix();

     /**
-	 *  @private
-	 *  A global flag that can be read by any component to determine
-	 *  whether it is currently executing in the context of a design
-	 *  tool such as Flex Builder's design view.  Most components will
-	 *  never need to check this flag, but if a component needs to
-	 *  have different behavior at design time than at runtime, then it
-	 *  can check this flag.
+     *  @private
+     *  A global flag that can be read by any component to determine
+     *  whether it is currently executing in the context of a design
+     *  tool such as Flex Builder's design view.  Most components will
+     *  never need to check this flag, but if a component needs to
+     *  have different behavior at design time than at runtime, then it
+     *  can check this flag.
      */
-	mx_internal static var designTime:Boolean = false;
+    mx_internal static var designTime:Boolean = false;

     /**
-	 *  A global flag that can be read by any component to determine
-	 *  whether it is currently executing in the context of a design
-	 *  tool such as Flex Builder's design view.  Most components will
-	 *  never need to check this flag, but if a component needs to
-	 *  have different behavior at design time than at runtime, then it
-	 *  can check this flag.
+     *  A global flag that can be read by any component to determine
+     *  whether it is currently executing in the context of a design
+     *  tool such as Flex Builder's design view.  Most components will
+     *  never need to check this flag, but if a component needs to
+     *  have different behavior at design time than at runtime, then it
+     *  can check this flag.
      */
-	public static function get designMode():Boolean
-	{
-		return mx_internal::designTime;
-	}
+    public static function get designMode():Boolean
+    {
+        return mx_internal::designTime;
+    }

     /**
-	 *  @private
-	 */
-	public static function set designMode(value:Boolean):void
-	{
-		mx_internal::designTime = value;
-	}
+     *  @private
+     */
+    public static function set designMode(value:Boolean):void
+    {
+        mx_internal::designTime = value;
+    }

     /**
-	 *  @private
-	 */
-	private static var _catchCallLaterExceptions:Boolean = false;
+     *  @private
+     */
+    private static var _catchCallLaterExceptions:Boolean = false;

     /**
-	 *  A global flag that can is used to catch unhandled exceptions
-	 *  during execution of methods executed via callLater
+     *  A global flag that can is used to catch unhandled exceptions
+     *  during execution of methods executed via callLater
      */
-	public static function get catchCallLaterExceptions():Boolean
-	{
-		return _catchCallLaterExceptions;
-	}
+    public static function get catchCallLaterExceptions():Boolean
+    {
+        return _catchCallLaterExceptions;
+    }

     /**
-	 *  @private
-	 */
-	public static function set catchCallLaterExceptions(value:Boolean):void
-	{
-		_catchCallLaterExceptions = value;
-	}
+     *  @private
+     */
+    public static function set catchCallLaterExceptions(value:Boolean):void
+    {
+        _catchCallLaterExceptions = value;
+    }
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 7274
Author:   chaase@adobe.com
Date:     2009-05-26T17:35:32.210331Z

Log Message:
-----------
Fixed several feature-complete effects bugs, plus one ScrollBar bug.

QE Notes: None
Doc Notes: None
Bugs: sdk-21093, sdk-21130, sdk-21243, sdk-21128, sdk-20698, sdk-20125, sdk-21138
Reviewer: Jason
tests: checkintests mustella effects cyclone

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/FadeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Fade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/AnimationTarget.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/flex4/src/spark/effects/AnimateTransform.as</path>

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

--- frameworks/projects/framework/src/mx/effects/CompositeEffect.as
+++ frameworks/projects/framework/src/mx/effects/CompositeEffect.as
@@ -366,7 +366,8 @@
      *  @private
      */
     override mx_internal function captureValues(propChanges:Array,
-                                           setStartValues:Boolean):Array
+                                           setStartValues:Boolean,
+                                           targetsToCapture:Array = null):Array
     {
         // Iterate through the list of children
         // and run captureValues() on each of them.
@@ -374,7 +375,8 @@
         for (var i:int = 0; i < n; i++)
         {
             var child:Effect = children[i];
-            propChanges = child.captureValues(propChanges, setStartValues);
+            propChanges = child.captureValues(propChanges, setStartValues,
+                child.targets);
         }

         return propChanges;


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

--- frameworks/projects/mx/src/mx/containers/Box.as
+++ frameworks/projects/mx/src/mx/containers/Box.as
@@ -0,0 +1,452 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.containers
+{
+
+import flash.events.Event;
+import mx.containers.utilityClasses.BoxLayout;
+import mx.core.Container;
+import mx.core.IUIComponent;
+import mx.core.mx_internal;
+
+use namespace mx_internal;
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+include "../styles/metadata/AlignStyles.as";
+include "../styles/metadata/GapStyles.as";
+
+/**
+ *  Number of pixels between the container's bottom border
+ *  and the bottom of its content area.
+ *  The default value is 0.
+ */
+[Style(name="paddingBottom", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Number of pixels between the container's top border
+ *  and the top of its content area.
+ *  The default value is 0.
+ */
+[Style(name="paddingTop", type="Number", format="Length", inherit="no")]
+
+//--------------------------------------
+//  Excluded APIs
+//--------------------------------------
+
+[Exclude(name="focusIn", kind="event")]
+[Exclude(name="focusOut", kind="event")]
+
+[Exclude(name="focusBlendMode", kind="style")]
+[Exclude(name="focusSkin", kind="style")]
+[Exclude(name="focusThickness", kind="style")]
+
+[Exclude(name="focusInEffect", kind="effect")]
+[Exclude(name="focusOutEffect", kind="effect")]
+
+//--------------------------------------
+//  Other metadata
+//--------------------------------------
+
+[IconFile("Box.png")]
+
+/**
+ *  A Box container lays out its children in a single vertical column
+ *  or a single horizontal row.
+ *  The direction property determines whether to use
+ *  vertical (default) or horizontal layout.
+ *
+ *
The Box class is the base class for the VBox and HBox classes.
+ *  You use the <mx:Box>, <mx:VBox>,
+ *  and <mx:HBox> tags to define Box containers.

+ *
+ *
A Box container has the following default sizing characteristics:

+ *

+ *

+ *           Characteristic
+ *           Description
+ *

+ *

+ *           Default size
+ *           Vertical Box The height is large enough to hold all its children at the default
+ *               or explicit height of the children, plus any vertical gap between the children, plus the top and
+ *               bottom padding of the container. The width is the default or explicit width of the widest child,
+ *               plus the left and right padding of the container.
+ *
Horizontal Box The width is large enough to hold all of its children at the
+ *               default width of the children, plus any horizontal gap between the children, plus the left and
+ *               right padding of the container. The height is the default or explicit height of the tallest child,
+ *               plus the top and bottom padding for the container.

+ *
+ *

+ *

+ *           Default padding
+ *           0 pixels for the top, bottom, left, and right values.
+ *

+ *

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

+ *
+ *

+ *

+ *  <mx:Box
+ *    Properties
+ *    direction="vertical|horizontal"
+ *    Styles
+ *    horizontalAlign="left|center|right"
+ *    horizontalGap="8"
+ *    paddingBottom="0"
+ *    paddingTop="0"
+ *    verticalAlign="top|middle|bottom"
+ *    verticalGap="6"
+ *    >
+ *    ...
+ *      child tags
+ *    ...
+ *  </mx:Box>
+ *

+ *

+ *
+ *  @includeExample examples/SimpleBoxExample.mxml
+ *
+ *  @see mx.containers.HBox
+ *  @see mx.containers.VBox
+ */
+public class Box extends Container
+{
+    include "../core/Version.as"
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     */
+    public function Box()
+    {
+        super();
+
+        layoutObject.target = this;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    mx_internal var layoutObject:BoxLayout = new BoxLayout();
+
+    //--------------------------------------------------------------------------
+    //
+    //  Public properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  direction
+    //----------------------------------
+
+    [Bindable("directionChanged")]
+    [Inspectable(category="General", enumeration="vertical,horizontal", defaultValue="vertical")]
+
+    /**
+     *  The direction in which this Box container lays out its children.
+     *  Possible MXML values are
+     *  "horizontal" and "vertical".
+     *  Possible values in ActionScript are BoxDirection.HORIZONTAL
+     *  and BoxDirection.VERTICAL.
+     *
+     *  @default BoxDirection.VERTICAL
+     */
+    public function get direction():String
+    {
+        return layoutObject.direction;
+    }
+
+    /**
+     *  @private
+     */
+    public function set direction(value:String):void
+    {
+        layoutObject.direction = value;
+
+        invalidateSize();
+        invalidateDisplayList();
+
+        dispatchEvent(new Event("directionChanged"));
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Calculates the default sizes and minimum and maximum values of the Box
+     *  container.
+     *
+     *
If the Box container's direction property is set to
+     *  BoxDirection.HORIZONTAL, its measuredWidth
+     *  property is equal to the sum of default widths of all of its children,
+     *  plus the thickness of the borders, plus the left and right padding,
+     *  plus the horizontal gap between each child.
+     *  The value of the measuredHeight property is the maximum of
+     *  all the children's default heights, plus room for the borders and
+     *  padding.
+     *  If the Box container's direction property is set to
+     *  BoxDirection.VERTICAL, these two values are reversed.

+     *
+     *
The Box container's minWidth and minHeight
+     *  properties are calculated similarly, by combining the minimum widths
+     *  and minimum heights of the children.
+     *  If the child's width property is a percentage value,  the
+     *  Box container's minimum width is equal to the value of the child's
+     *  minWidth property.
+     *  If the child's width is unset or  set to a fixed value,
+     *  the child refuses to grow or shrink, so the Box container's minimum
+     *  width is equal to the value of the child's explicitWidth
+     *  property.
+     *  The child's minimum height is calculated similarly.

+     *
+     *
The Box container's maxWidth and
+     *  maxHeight properties are not calculated.
+     *  The Box container is assumed to have an infinite maximum width and
+     *  height.

+     *
+     *
All of the values described previously are the measured
+     *  widths and heights of the Box container.
+     *  The user can override the measured values by explicitly supplying
+     *  a value for the following properties:

+     *
+     *

+     *
width

+     *
height

+     *
minWidth

+     *
minHeight

+     *
maxWidth

+     *
maxHeight

+     *

+     *
+     *
You should not call the measure() method directly.
+     *  The Flex LayoutManager calls it at the appropriate time.
+     *  At application startup, the Flex LayoutManager attempts to measure
+     *  all components from the children to the parents before setting them
+     *  to their final sizes.

+     *
+     *
This is an advanced method for use in subclassing.
+     *  If you override this method, your implementation must call
+     *  the super.measure() method, or set the
+     *  measuredHeight and
+     *  measuredWidth properties.
+     *  You may also optionally set the following properties:

+     *
+     *

+     *
measuredMinWidth

+     *
measuredMinHeight

+     *

+     *
+     *
These properties correspond to the layout properties listed
+     *  previously and, therefore, are not separately documented.

+     */
+    override protected function measure():void
+    {
+        super.measure();
+
+        layoutObject.measure();
+    }
+
+    /**
+     *  Sets the size and position of each child of the Box container.
+     *
+     *
To understand the layout algorithm for the Box container, assume
+     *  that the Box container's direction is horizontal.

+     *
+     *
All of the Box container's children are positioned side-by-side in a
+     *  single horizontal row, with horizontalGap pixels between
+     *  each pair of adjacent children.
+     *  Initially, the widths of children without an explicit
+     *  width value are set equal to the values of their
+     *  measuredWidth properties.

+     *
+     *
If the sum of the values of the measuredWidth
+     *  properties of the children is greater than or less than the width of
+     *  the Box container, and if some of the children have a percentage value
+     *  for the width property, the sizes of those children are
+     *  grown or shrunk until all children exactly fit in the Box.
+     *  However, no child is shrunk to less than the value of its
+     *  minWidth property or increased greater than the value of
+     *  its maxWidth property.
+     *  Among the growing (or shrinking) children, extra space is added
+     *  (or removed) in proportion to the child's percentWidth.
+     *  For example, a child with a percentWidth of 40 percent
+     *  will grow twice as much as a child with a percentWidth of
+     *  20 percent until all of the available space is filled or the prescribed
+     *  sizes are reached.

+     *
+     *
After all flexible children have grown or shrunk, Flex checks to see
+     *  if the sum of the children's widths match the width of the Box
+     *  container.
+     *  If not, the group of children are all shifted according to the value
+     *  of the Box container's horizontalAlign property, so the
+     *  children are aligned with the left edge of the Box, aligned with the
+     *  right edge of the Box, or centered in the middle of the Box.

+     *
+     *
To determine the height of each child, Flex examines the value
+     *  of the child's height property.
+     *  If the height is unset, the child's height
+     *  is set to its measuredHeight.
+     *  If the height is set to a pixel value, that value is used.
+     *  If the height is set to a percentage value,
+     *  the child's height is grown or shrunk to match the specified
+     *  percentage of the height of the Box, as long as the child's height
+     *  is not shrunk to less than the value of its minHeight
+     *  property or grown to be larger than the value of its
+     *  maxHeight property.

+     *
+     *
The vertical position of each child is determined by
+     *  the Box container's verticalAlign property.
+     *  Each child is shifted so that it is aligned with the top edge
+     *  of the box, aligned with the bottom edge of the box,
+     *  or centered in the Box.

+     *
+     *
If the Box container's direction is
+     *  vertical, the same rules apply, except that the widths and
+     *  heights are swapped.
+     *  The children are arranged in a single vertical column.

+     *
+     *
You should not call this method directly.
+     *  The Flex LayoutManager calls it at the appropriate time.
+     *  At application startup, the Flex LayoutManager calls the
+     *  updateDisplayList() method on every component,
+     *  starting with the Application object and working downward.

+     *
+     *
This is an advanced method for use in subclassing.
+     *  If you override this method, your implementation should call the
+     *  super.updateDisplayList() method and call the
+     *  move() and setActualSize() methods
+     *  on each of the children.
+     *  For the purposes of performing layout, you should get the size
+     *  of this container from the unscaledWidth and
+     *  unscaledHeight properties, not the width
+     *  and height properties.
+     *  The width and height properties
+     *  do not take into account the values of the scaleX
+     *  and scaleY properties for this container.

+     *
+     *  @param unscaledWidth Specifies the width of the component, in pixels,
+     *  in the component's coordinates, regardless of the value of the
+     *  scaleX property of the component.
+     *
+     *  @param unscaledHeight Specifies the height of the component, in pixels,
+     *  in the component's coordinates, regardless of the value of the
+     *  scaleY property of the component.
+     */
+    override protected function updateDisplayList(unscaledWidth:Number,
+                                                  unscaledHeight:Number):void
+    {
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+        layoutObject.updateDisplayList(unscaledWidth, unscaledHeight);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Method used to convert number of pixels to a
+     *  percentage relative to the contents of this container.
+     *
+     *
The percentage value is relevant only while the
+     *  container does not change size or layout.
+     *  After a resize and/or new layout has occurred,
+     *  the value returned from this method may be stale.

+     *
+     *
An example of how this method could be used would
+     *  be to restore a component's size to a specific number
+     *  of pixels after hiding it.

+     *
+     *  @param pxl The number of pixels for which a percentage
+     *  value is desired.
+     *
+     *  @return The percentage value that would be equivalent
+     *  to pxl under the current layout conditions
+     *  of this container.
+     *  A negative value indicates that the container must grow
+     *  in order to accommodate the requested size.
+     */
+    public function pixelsToPercent(pxl:Number):Number
+    {
+        var vertical:Boolean = isVertical();
+
+        // Compute our total percent and total # pixels for that percent.
+        var totalPerc:Number = 0;
+        var totalSize:Number = 0;
+
+        var n:int = numChildren;
+        for (var i:int = 0; i < n; i++)
+        {
+            var child:IUIComponent = IUIComponent(getChildAt(i));
+
+            var size:Number = vertical ? child.height : child.width;
+            var perc:Number = vertical ? child.percentHeight : child.percentWidth;
+
+            if (!isNaN(perc))
+            {
+                totalPerc += perc;
+                totalSize += size;
+            }
+        }
+
+        // Now if we found one let's compute the percent amount
+        // that we'd require for a given number of pixels.
+        var p:Number = 100;
+        if (totalSize != pxl)
+        {
+            // Now we want the ratio of pixels per percent to
+            // remain constant as we assume the a component
+            // will consume them. So,
+            //
+            //  (totalSize - pxl) / totalPerc = totalSize / (totalPerc + p)
+            //
+            // where we solve for p.
+
+            p = ((totalSize * totalPerc) / (totalSize - pxl)) - totalPerc;
+        }
+
+        return p;
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function isVertical():Boolean
+    {
+        return direction != BoxDirection.HORIZONTAL;
+    }
+}
+
+}


Namespace all movie names and keyframe refs.

--- exporter/src/main/as/flump/export/PublishFormat.as
+++ exporter/src/main/as/flump/export/PublishFormat.as
@@ -9,6 +9,8 @@

 import flash.filesystem.File;

+import flump.mold.KeyframeMold;
+import flump.mold.LayerMold;
 import flump.mold.LibraryMold;
 import flump.mold.MovieMold;
 import flump.mold.TextureGroupMold;
@@ -73,9 +75,24 @@
         mold.md5 = md5;
         mold.textureGroups = createTextureGroupMolds(atlases);
         mold.movies = new <MovieMold>[];
+        var useNamespaces :Boolean = _libs.length > 1;
         for each (var lib :XflLibrary in _libs) {
             for each (var movie :MovieMold in lib.publishedMovies) {
-                mold.movies[mold.movies.length] = movie.scale(_conf.scale);
+                // movie.scale() returns a scaled clone
+                movie = movie.scale(_conf.scale);
+                mold.movies[mold.movies.length] = movie;
+
+                if (useNamespaces) {
+                    // if we're creating a combined library mold, namespace all movie names and
+                    // refs on movie layer keyframes. Texture names have already been namespaced
+                    // in the texture packer.
+                    movie.id = lib.location + "/" + movie.id;
+                    for each (var layer :LayerMold in movie.layers) {
+                        for each (var kf :KeyframeMold in layer.keyframes) {
+                            if (kf.ref != null) kf.ref = lib.location + "/" + kf.ref;
+                        }
+                    }
+                }
             }
         }
         return mold;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/mx/src/mx/effects/WipeRight.as
+++ frameworks/projects/mx/src/mx/effects/WipeRight.as
@@ -51,6 +51,11 @@
  *  @see mx.effects.effectClasses.WipeRightInstance
  *
  *  @includeExample examples/WipeRightExample.mxml
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class WipeRight extends MaskEffect
 {
@@ -66,6 +71,11 @@
 	 *  Constructor.
 	 *
 	 *  @param target The Object to animate with this effect.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function WipeRight(target:Object = null)
 	{