Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

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

--- frameworks/projects/advancedgrids/src/mx/olap/IOLAPAxisPosition.as
+++ frameworks/projects/advancedgrids/src/mx/olap/IOLAPAxisPosition.as
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.olap
+{
+import mx.collections.IList;
+
+/**
+ *  The IOLAPAxisPosition interface represents a position on an OLAP axis.
+ *.
+ *  @see mx.olap.OLAPQueryAxis
+ *  @see mx.olap.OLAPResultAxis
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public interface IOLAPAxisPosition
+{
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  members
+	//----------------------------------
+
+    /**
+     * The members for this position, as a list of IOLAPMember instances.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    function get members():IList; //(of IOLAPMemeber)
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 16822
Author:   deeptika@adobe.com
Date:     2010-07-07T06:16:32.586582Z

Log Message:
-----------
Removing deprecated API and their usage.

QE notes:
Doc notes:
Bugs: FLEXDMV-2463 (LineaSeries legendData marker are not working if the series has lineStroke to a SolidColorStroke)
FLEXDMV-2470 (Remove deprecation or Remove deprecated properties in charting)
Reviewer:
Tests run:
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/BarChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/CartesianChartAutomationImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/renderers/AreaRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/AreaChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/series/HLOCSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/series/LineSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/PlotChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/series/BubbleSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/series/ColumnSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/automation/src/mx/automation/tabularData/CartesianChartTabularData.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/CandlestickChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/HLOCChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/chartClasses/StackedSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/series/BarSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/LineChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/chartClasses/HLOCSeriesBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/chartClasses/CartesianChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/chartClasses/ChartBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/BubbleChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/series/AreaSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/chartClasses/PolarChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/ColumnChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/series/PlotSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/charts/renderers/HLOCItemRenderer.as</path>

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

--- frameworks/projects/charts/src/mx/charts/renderers/AreaRenderer.as
+++ frameworks/projects/charts/src/mx/charts/renderers/AreaRenderer.as
@@ -14,11 +14,12 @@

 import flash.display.Graphics;
 import flash.geom.Rectangle;
+
 import mx.charts.chartClasses.GraphicsUtilities;
 import mx.core.IDataRenderer;
 import mx.graphics.IFill;
 import mx.graphics.IStroke;
-import mx.graphics.Stroke;
+import mx.graphics.SolidColorStroke;
 import mx.skins.ProgrammaticSkin;

 /**
@@ -46,7 +47,7 @@
 	/**
 	 *  @private
 	 */
-	private static var noStroke:Stroke = new Stroke(0, 0, 0);
+	private static var noStroke:SolidColorStroke = new SolidColorStroke(0, 0, 0);

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 4946
Author:   gosmith@adobe.com
Date:     2009-02-13T02:54:47.865236Z

Log Message:
-----------
Integrated TLF Build 370.

The biggest change in the TLF APIs is that the ContainerFormat, ParagraphFormat, and CharacterFormat classes have been combined into a single TextLayoutFormat class.

The next biggest change is that some formats no longer inherit within a TextFlow, or from a host format to its TextFlow, unless you set their value to "inherit".

Also, the leadingBasis and leadingDirection formats have been combined into a single leadingModel format.

A cyclone build passes enough tests that QE has given the go-ahead to check in. The marginXXX formats are broken, but this seems to be a TLF problem and we'll work with the TLF team to get them fixed ASAP.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: TBD tomorrow

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/textLayout_core.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/textLayout_textField.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/styles/metadata/AdvancedParagraphFormatTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/utils/TextUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/textLayout_conversion.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/textLayout_edit.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -46,12 +46,10 @@
 import flashx.textLayout.events.DamageEvent;
 import flashx.textLayout.events.FlowOperationEvent;
 import flashx.textLayout.events.SelectionEvent;
-import flashx.textLayout.formats.CharacterFormat;
-import flashx.textLayout.formats.ContainerFormat;
-import flashx.textLayout.formats.ICharacterFormat;
-import flashx.textLayout.formats.IContainerFormat;
-import flashx.textLayout.formats.IParagraphFormat;
-import flashx.textLayout.formats.ParagraphFormat;
+import flashx.textLayout.formats.Category;
+import flashx.textLayout.formats.FormatValue;
+import flashx.textLayout.formats.ITextLayoutFormat;
+import flashx.textLayout.formats.TextLayoutFormat;
 import flashx.textLayout.operations.CutOperation;
 import flashx.textLayout.operations.DeleteTextOperation;
 import flashx.textLayout.operations.FlowOperation;
@@ -59,6 +57,7 @@
 import flashx.textLayout.operations.InsertTextOperation;
 import flashx.textLayout.operations.PasteOperation;
 import flashx.textLayout.operations.SplitParagraphOperation;
+import flashx.textLayout.tlf_internal;

 import mx.core.IViewport;
 import mx.core.ScrollUnit;
@@ -175,8 +174,8 @@
      *  @private
      *  Used for determining whitespace processing during import.
      */
-    private static var staticCharacterFormat:CharacterFormat =
-        new CharacterFormat();
+    private static var staticTextLayoutFormat:TextLayoutFormat =
+        new TextLayoutFormat();

     /**
      *  @private
@@ -227,23 +226,7 @@
      *  and is updated by createTextFlow() when the hostFormatsInvalid flag
      *  is true.
      */
-    private var hostCharacterFormat:CharacterFormat = new CharacterFormat();
-
-    /**
-     *  @private
-     *  This object is determined by the CSS styles of the TextView
-     *  and is updated by createTextFlow() when the hostFormatsInvalid flag
-     *  is true.
-     */
-    private var hostParagraphFormat:ParagraphFormat = new ParagraphFormat();
-
-    /**
-     *  @private
-     *  This object is determined by the CSS styles of the TextView
-     *  and is updated by createTextFlow() when the hostFormatsInvalid flag
-     *  is true.
-     */
-    private var hostContainerFormat:ContainerFormat = new ContainerFormat();
+    private var hostTextLayoutFormat:TextLayoutFormat = new TextLayoutFormat();

     /**
      *  @private
@@ -253,7 +236,7 @@
      *  when styleChanged() is called with a null argument, indicating that
      *  multiple styles have changed.
      */
-    private var hostFormatsInvalid:Boolean = false;
+    private var hostTextLayoutFormatInvalid:Boolean = false;

     /**
      *  @private
@@ -1191,8 +1174,8 @@
         measuredWidth = Math.round(getStyle("paddingLeft") +
                         widthInChars * charWidth +
                         getStyle("paddingRight"));
-
-        measuredHeight = Math.round(getStyle("paddingTop") +
+
+		measuredHeight = Math.round(getStyle("paddingTop") +
                          heightInLines * (ascent + descent) +
                          getStyle("paddingBottom"));

@@ -1232,7 +1215,7 @@
         if (textChanged || contentChanged ||
             stylesChanged || displayAsPasswordChanged)
         {
-            if (textChanged || contentChanged)
+			if (textChanged || contentChanged)
             {
                 // Eliminate detritus from the previous TextFlow only if
                 // the text/content has changed. Want to preserve scrolling
@@ -1289,7 +1272,7 @@
         {
             var containerController:IContainerController =
                 flowComposer.getControllerAt(0);
-            containerController.setCompositionSize(unscaledWidth, unscaledHeight);
+			containerController.setCompositionSize(unscaledWidth, unscaledHeight);
             flowComposer.updateAllContainers();
         }
     }
@@ -1302,7 +1285,7 @@
         super.stylesInitialized();

         fontMetricsInvalid = true;
-        hostFormatsInvalid = true;
+        hostTextLayoutFormatInvalid = true;
         stylesChanged = true;
     }

@@ -1327,11 +1310,11 @@
         // property in either hostContainerFormat, hostParagraphFormat,
         // or hostCharacterFormat immediately.
         if (styleProp == null || styleProp == "styleName")
-            hostFormatsInvalid = true;
+            hostTextLayoutFormatInvalid = true;
         else if (isSelectionFormat(styleProp))
             selectionFormatsChanged = true;
         else
-            setHostFormat(styleProp);
+            setHostTextLayoutFormat(styleProp);

         stylesChanged = true;
     }
@@ -1388,25 +1371,17 @@
     /**
      *  @private
      */
-    private function setHostFormat(styleProp:String):void
-    {
-        var value:* = getStyle(styleProp);
-        if (styleProp == "tabStops" && value === undefined)
-            value = [];
-
-        var kind:String = TextUtil.FORMAT_MAP[styleProp];
-
-        if (kind == TextUtil.CONTAINER)
-            hostContainerFormat[styleProp] = value;
-
-        else if (kind == TextUtil.PARAGRAPH)
-            hostParagraphFormat[styleProp] = value;
-
-        else if (kind == TextUtil.CHARACTER)
-            hostCharacterFormat[styleProp] = value;
-
-        else
-            trace("TextView.setFormat: unrecognized style", styleProp);
+    private function setHostTextLayoutFormat(styleProp:String):void
+    {
+        if (styleProp in hostTextLayoutFormat)
+		{
+			var value:* = getStyle(styleProp);
+
+			if (styleProp == "tabStops" && value === undefined)
+				value = [];
+
+			hostTextLayoutFormat[styleProp] = value;
+		}
     }

     /**
@@ -1416,10 +1391,16 @@
     {
         // The whiteSpaceCollapse format determines how whitespace
         // is processed when markup is imported.
-        staticCharacterFormat.whiteSpaceCollapse =
+		staticTextLayoutFormat.lineBreak = FormatValue.INHERIT;
+        staticTextLayoutFormat.paddingLeft = FormatValue.INHERIT;
+        staticTextLayoutFormat.paddingRight = FormatValue.INHERIT;
+        staticTextLayoutFormat.paddingTop = FormatValue.INHERIT;
+        staticTextLayoutFormat.paddingBottom = FormatValue.INHERIT;
+        staticTextLayoutFormat.verticalAlign = FormatValue.INHERIT;
+        staticTextLayoutFormat.whiteSpaceCollapse =
             getStyle("whiteSpaceCollapse");
-        staticConfiguration.textFlowInitialCharacterFormat =
-            staticCharacterFormat;
+        staticConfiguration.textFlowInitialFormat =
+            staticTextLayoutFormat;

         if (markup is String)
         {
@@ -1469,9 +1450,15 @@

         // The whiteSpaceCollapse format determines how whitespace
         // is processed when the children are set.
-        staticCharacterFormat.whiteSpaceCollapse =
+		staticTextLayoutFormat.lineBreak = FormatValue.INHERIT;
+        staticTextLayoutFormat.paddingLeft = FormatValue.INHERIT;
+        staticTextLayoutFormat.paddingRight = FormatValue.INHERIT;
+        staticTextLayoutFormat.paddingTop = FormatValue.INHERIT;
+        staticTextLayoutFormat.paddingBottom = FormatValue.INHERIT;
+        staticTextLayoutFormat.verticalAlign = FormatValue.INHERIT;
+        staticTextLayoutFormat.whiteSpaceCollapse =
             getStyle("whiteSpaceCollapse");
-        textFlow.hostCharacterFormat = staticCharacterFormat;
+        textFlow.hostTextLayoutFormat = staticTextLayoutFormat;

         textFlow.mxmlChildren = children;

@@ -1534,18 +1521,16 @@
                 TextUtil.unobscureTextFlow(textFlow, _text);
         }

-        if (hostFormatsInvalid)
-        {
-            for each (var p:String in TextUtil.ALL_FORMAT_NAMES)
-            {
-                setHostFormat(p);
-            }
-            hostFormatsInvalid = false;
-        }
-
-        textFlow.hostCharacterFormat = hostCharacterFormat;
-        textFlow.hostParagraphFormat = hostParagraphFormat;
-        textFlow.hostContainerFormat = hostContainerFormat;
+        if (hostTextLayoutFormatInvalid)
+        {
+			for (var p:String in TextLayoutFormat.tlf_internal::description)
+            {
+                setHostTextLayoutFormat(p);
+            }
+            hostTextLayoutFormatInvalid = false;
+        }
+
+		textFlow.hostTextLayoutFormat = new TextLayoutFormat(hostTextLayoutFormat);

         return textFlow;
     }
@@ -1573,23 +1558,22 @@
             return;

         var selectionColor:* = getStyle("selectionColor");
-
         var unfocusedSelectionColor:* = getStyle("unfocusedSelectionColor");
+
         var unfocusedAlpha:Number =
             selectionVisibility != TextSelectionVisibility.WHEN_FOCUSED ?
             1.0 : 0.0;
-
         var inactiveSelectionColor:* = getStyle("inactiveSelectionColor");
+
         var inactiveAlpha:Number =
             selectionVisibility == TextSelectionVisibility.ALWAYS ?
             1.0 : 0.0;
-
         // The cursor is black, inverted, which makes it the inverse color
         // of the background, for maximum readability.
         interactionManager.focusSelectionFormat = new SelectionFormat(
             selectionColor, 1.0, BlendMode.NORMAL,
             0x000000, 1.0, BlendMode.INVERT);
-
+
         interactionManager.noFocusSelectionFormat = new SelectionFormat(
             unfocusedSelectionColor, unfocusedAlpha, BlendMode.NORMAL,
             unfocusedSelectionColor, unfocusedAlpha, BlendMode.NORMAL);
@@ -1603,7 +1587,7 @@
      *  @private
      *  Persist the edit manager so selection formatting can be maintained.
      */
-    private var _editManager:TextViewEditManager = null;
+    private var _editManager:EditManager = null;

     /**
      *  @private
@@ -1611,11 +1595,11 @@
      *  be maintained if/when the interaction manager is swapped out and
      *  back in again.
      */
-    private function get editManager():TextViewEditManager
+    private function get editManager():EditManager
     {
         if (_editManager == null)
         {
-            _editManager = new TextViewEditManager(mx_internal::undoManager);
+            _editManager = new EditManager(mx_internal::undoManager);
             setSelectionFormats(_editManager);
         }

@@ -1857,21 +1841,36 @@
      */
     public function getSelectionFormat(names:Array = null):Object
     {
+        var format:Object = {};
+
         // Switch to the EditManager.
         var priorEditingMode:String = getEditingMode(textFlow.interactionManager);
         switchToEditingMode(textFlow, EditingMode.READ_WRITE);
         var selectionManager:ISelectionManager = textFlow.interactionManager;

+		// This internal TLF object maps the names of format properties
+		// to Property instances.
+		// Each Property instance has a category property which tells
+		// whether it is container-, paragraph-, or character-level.
+        var description:Object = TextLayoutFormat.tlf_internal::description;
+
         var p:String;
-        var kind:String;
-
-        var needContainerFormat:Boolean = false;
+        var category:String;
+
+        // Based on which formats have been requested, determine which
+		// of the getCommonXXXFormat() methods we need to call.
+
+		var needContainerFormat:Boolean = false;
         var needParagraphFormat:Boolean = false;
         var needCharacterFormat:Boolean = false;

         if (!names)
         {
-            names = TextUtil.ALL_FORMAT_NAMES;
+            names = [];
+			for (p in description)
+			{
+				names.push(p);
+			};

             needContainerFormat = true;
             needParagraphFormat = true;
@@ -1879,52 +1878,44 @@
         }
         else
         {
-            for each (p in names)
-            {
-                kind = TextUtil.FORMAT_MAP[p];
-
-                if (kind == TextUtil.CONTAINER)
+			for each (p in names)
+            {
+                category = description[p].category;
+
+                if (category == Category.CONTAINER)
                     needContainerFormat = true;
-                else if (kind == TextUtil.PARAGRAPH)
+                else if (category == Category.PARAGRAPH)
                     needParagraphFormat = true;
-                else if (kind == TextUtil.CHARACTER)
+                else if (category == Category.CHARACTER)
                     needCharacterFormat = true;
             }
         }
-
-        var containerFormat:IContainerFormat;
-        var paragraphFormat:IParagraphFormat;
-        var characterFormat:ICharacterFormat;
+
+		// Get the common formats.
+
+        var containerFormat:ITextLayoutFormat;
+        var paragraphFormat:ITextLayoutFormat;
+        var characterFormat:ITextLayoutFormat;

         if (needContainerFormat)
-        {
-            containerFormat =
-                selectionManager.getCommonContainerFormat();
-        }
+            containerFormat = selectionManager.getCommonContainerFormat();

         if (needParagraphFormat)
-        {
-            paragraphFormat =
-                selectionManager.getCommonParagraphFormat();
-        }
+            paragraphFormat = selectionManager.getCommonParagraphFormat();

         if (needCharacterFormat)
-        {
-            characterFormat =
-                selectionManager.getCommonCharacterFormat();
-        }
-
-        var format:Object = {};
-
-        for each (p in names)
-        {
-            kind = TextUtil.FORMAT_MAP[p];
-
-            if (kind == TextUtil.CONTAINER && containerFormat)
+            characterFormat = selectionManager.getCommonCharacterFormat();
+
+        // Extract the requested formats to return.
+		for each (p in names)
+        {
+            category = description[p].category;
+
+            if (category == Category.CONTAINER && containerFormat)
                 format[p] = containerFormat[p];
-            else if (kind == TextUtil.PARAGRAPH && paragraphFormat)
+            else if (category == Category.PARAGRAPH && paragraphFormat)
                 format[p] = paragraphFormat[p];
-            else if (kind == TextUtil.CHARACTER && characterFormat)
+            else if (category == Category.CHARACTER && characterFormat)
                 format[p] = characterFormat[p];
         }

@@ -1947,40 +1938,51 @@
      */
     public function setSelectionFormat(attributes:Object):void
     {
-        var containerFormat:ContainerFormat;
-        var paragraphFormat:ParagraphFormat;
-        var characterFormat:CharacterFormat;
-
-        for (var p:String in attributes)
-        {
-            var kind:String = TextUtil.FORMAT_MAP[p];
-
-            if (kind == TextUtil.CONTAINER)
+        // Switch to the EditManager.
+        var priorEditingMode:String =
+			getEditingMode(textFlow.interactionManager);
+        switchToEditingMode(textFlow, EditingMode.READ_WRITE);
+
+        // Assign each specified attribute to one of three format objects,
+		// depending on whether it is container-, paragraph-,
+		// or character-level. Note that these can remain null.
+		var containerFormat:TextLayoutFormat;
+        var paragraphFormat:TextLayoutFormat;
+        var characterFormat:TextLayoutFormat;
+
+		// This internal TLF object maps the names of format properties
+		// to Property instances.
+		// Each Property instance has a category property which tells
+		// whether it is container-, paragraph-, or character-level.
+		var description:Object = TextLayoutFormat.tlf_internal::description;
+
+		for (var p:String in attributes)
+        {
+            var category:String = description[p].category;
+
+            if (category == Category.CONTAINER)
             {
                 if (!containerFormat)
-                   containerFormat =  new ContainerFormat();
+                   containerFormat =  new TextLayoutFormat();
                 containerFormat[p] = attributes[p];
             }
-            else if (kind == TextUtil.PARAGRAPH)
+            else if (category == Category.PARAGRAPH)
             {
                 if (!paragraphFormat)
-                   paragraphFormat =  new ParagraphFormat();
+                   paragraphFormat =  new TextLayoutFormat();
                 paragraphFormat[p] = attributes[p];
             }
-            else if (kind == TextUtil.CHARACTER)
+            else if (category == Category.CHARACTER)
             {
                 if (!characterFormat)
-                   characterFormat =  new CharacterFormat();
+                   characterFormat =  new TextLayoutFormat();
                 characterFormat[p] = attributes[p];
             }
         }

-        var priorEditingMode:String = getEditingMode(textFlow.interactionManager);
-        switchToEditingMode(textFlow, EditingMode.READ_WRITE);
-
-        // Apply the format to the current selection.
+        // Apply the three format objects to the current selection.
         EditManager(textFlow.interactionManager).applyFormat(
-                        characterFormat, paragraphFormat, containerFormat);
+			characterFormat, paragraphFormat, containerFormat);

         // Restore the prior editing mode.
         switchToEditingMode(textFlow, priorEditingMode);
@@ -2318,26 +2320,3 @@
 }

 }
-
-////////////////////////////////////////////////////////////////////////////////
-//
-//  Helper class: TextViewEditManager
-//
-////////////////////////////////////////////////////////////////////////////////
-
-import flashx.textLayout.edit.EditManager;
-import flashx.textLayout.edit.IUndoManager;
-import flashx.textLayout.operations.FlowOperation;
-
-class TextViewEditManager extends EditManager
-{
-    public function TextViewEditManager(undoManager:IUndoManager = null)
-    {
-        super(undoManager);
-    }
-
-    public function execute(flowOperation:FlowOperation):void
-    {
-        doOperation(flowOperation);
-    }
-}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5269
Author:   egeorgie@adobe.com
Date:     2009-03-12T18:35:42.425116Z

Log Message:
-----------
Remove style metadata for the non-inheriting verticalAlign, paddingLeft, paddingTop, paddingRight, paddingBottom styles.

QE Notes: None
Doc Notes:
Bugs: None
Reviewer: None
tests: checkintests, mustella

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextBox.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/styles/metadata/NonInheritingTextLayoutFormatStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/styles/metadata/BasicTextLayoutFormatStyles.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -133,6 +133,7 @@

 include "../styles/metadata/AdvancedTextLayoutFormatStyles.as"
 include "../styles/metadata/BasicTextLayoutFormatStyles.as"
+include "../styles/metadata/NonInheritingTextLayoutFormatStyles.as"
 include "../styles/metadata/SelectionFormatTextStyles.as"

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 15368
Author:   smgilson@adobe.com
Date:     2010-04-13T12:31:21.786591Z

Log Message:
-----------
integrate 15352: Update ASDoc version tags

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkCheckBoxAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSliderBaseAutomationImpl.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTextAreaAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkButtonBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkListBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSkinnableTextBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TitleWindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as</path>

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

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSkinnableTextBaseAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSkinnableTextBaseAutomationImpl.as
@@ -11,342 +11,342 @@

 package spark.automation.delegates.components.supportClasses
 {
-	import flash.display.DisplayObject;
-	import flash.events.Event;
-	import flash.events.KeyboardEvent;
-	import flash.events.MouseEvent;
-
-	import mx.automation.Automation;
-	import mx.automation.IAutomationObject;
-	import mx.automation.IAutomationObjectHelper;
-	import mx.automation.events.AutomationDragEvent;
-	import mx.automation.events.AutomationRecordEvent;
-	import mx.core.EventPriority;
-	import mx.core.UIComponent;
-	import mx.core.mx_internal;
-
-	import spark.automation.delegates.SparkRichEditableTextAutomationHelper;
-	import spark.automation.tabularData.RichEditableTextTabularData;
-	import spark.components.Scroller;
-	import spark.components.supportClasses.SkinnableTextBase;
-
-	use namespace mx_internal;
-
-	[Mixin]
-	/**
-	 *
-	 *  Defines methods and properties required to perform instrumentation for the
-	 *  SkinnableTextBase control.
-	 *
-	 *  @see spark.components.supportClasses.SkinnableTextBase
-	 *
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 9
-	 *  @playerversion AIR 1.1
-	 *  @productversion Flex 3
-	 */
-	public class SparkSkinnableTextBaseAutomationImpl extends SparkSkinnableComponentAutomationImpl
-	{
-		include "../../../../core/Version.as";
-
-
-		//--------------------------------------------------------------------------
-		//
-		//  Class methods
-		//
-		//--------------------------------------------------------------------------
-
-		/**
-		 *  Registers the delegate class for a component class with automation manager.
-		 *
-		 *  @param root The SystemManger of the application.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 9
-		 *  @playerversion AIR 1.1
-		 *  @productversion Flex 3
-		 */
-		public static function init(root:DisplayObject):void
-		{
-			Automation.registerDelegateClass(spark.components.supportClasses.SkinnableTextBase, SparkSkinnableTextBaseAutomationImpl);
-		}
-
-		//--------------------------------------------------------------------------
-		//
-		//  Constructor
-		//
-		//--------------------------------------------------------------------------
-
-		/**
-		 *  Constructor.
-		 * @param obj SkinnableTextBase object to be automated.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 9
-		 *  @playerversion AIR 1.1
-		 *  @productversion Flex 3
-		 */
-		public function SparkSkinnableTextBaseAutomationImpl(obj:spark.components.supportClasses.SkinnableTextBase)
-		{
-			super(obj);
-			obj.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler,
-				false, EventPriority.DEFAULT+1, true );
-		}
-
-		//--------------------------------------------------------------------------
-		//
-		//  Variables
-		//
-		//--------------------------------------------------------------------------
-
-		/**
-		 *  @private
-		 *  storage for the owner component
-		 */
-		protected function get  skinnableTextBase():spark.components.supportClasses.SkinnableTextBase
-		{
-			return uiComponent as spark.components.supportClasses.SkinnableTextBase;
-		}
-
-		/**
-		 *  @private
-		 *  Generic record/replay logic for textfields.
-		 */
-		private var automationHelper:SparkRichEditableTextAutomationHelper;
-
-		//--------------------------------------------------------------------------
-		//
-		//  Overridden properties
-		//
-		//--------------------------------------------------------------------------
-
-		//----------------------------------
-		//  automationValue
-		//----------------------------------
-
-		/**
-		 *  @private
-		 */
-		override public function get automationValue():Array
-		{
-			return [ skinnableTextBase.text ];
-		}
-
-
-		//--------------------------------------------------------------------------
-		//
-		//  Overridden methods
-		//
-		//--------------------------------------------------------------------------
-
-		/**
-		 *  @private
-		 */
-		override public function replayAutomatableEvent(interaction:Event):Boolean
-		{
-			// For drag events, this needs to be handled by this object itself
-			// instead of delegating it to its textDisplay
-			// This is needed for AIR as we need to dispatch native drag events on
-			// current object to handle drag drop events in AIR
-			// This is working in Flex even without this special handling because
-			// drag events are automatically triggered by mouse events in Flex.
-			// But this is not the case in AIR. Mouse events do not trigger those
-			// native drag events and so we need to construct those events manually
-			// and dispatch them on the corresponding objects to replay them.
-			if(interaction is AutomationDragEvent)
-				return super.replayAutomatableEvent(interaction);
-
-			// we have delegated the replay to the underlying the richEditabale Text.
-			if(skinnableTextBase.textDisplay)
-				return skinnableTextBase.textDisplay.replayAutomatableEvent(interaction);
-			else
-				return super.replayAutomatableEvent(interaction);
-		}
-
-		//--------------------------------------------------------------------------
-		//
-		//  Event handlers
-		//
-		//--------------------------------------------------------------------------
-
-		/**
-		 *  Method which gets called after the component has been initialized.
-		 *  This can be used to access any sub-components and act on the component.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 9
-		 *  @playerversion AIR 1.1
-		 *  @productversion Flex 3
-		 */
-		override protected function componentInitialized():void
-		{
-			super.componentInitialized();
-			skinnableTextBase.addEventListener(AutomationRecordEvent.RECORD,
-				inputField_recordHandler1, false, 0, true);
-		}
-
-
-		private function inputField_recordHandler1(event1:AutomationRecordEvent):void
-		{
-			if(event1.automationObject == skinnableTextBase.textDisplay)
-			{
-				// let us record the evnet from the richEditableText as our event
-				recordAutomatableEvent(event1.replayableEvent);
-			}
-		}
-
-		/**
-		 *  @private
-		 *  Prevent duplicate ENTER key recordings.
-		 */
-		override protected function keyDownHandler(event:KeyboardEvent):void
-		{
-			;
-		}
-
-		/**
-		 *  @private
-		 */
-
-		override public function get automationTabularData():Object
-		{
-			return new RichEditableTextTabularData(skinnableTextBase.textDisplay);
-		}
-
-
-		/**
-		 *  @private
-		 */
-
-		override public function get numAutomationChildren():int
-		{
-			var scrollBars:Array = getScrollBars(skinnableTextBase,skinnableTextBase.skin);
-			return scrollBars?scrollBars.length:0;
-		}
-
-		override public function getAutomationChildAt(index:int):IAutomationObject
-		{
-			var scrollBars:Array = getScrollBars(skinnableTextBase,skinnableTextBase.skin);
-			if(scrollBars && index < scrollBars.length)
-				return scrollBars[index];
-			return null;
-		}
-
-		/**
-		 *  @private
-		 */
-		override public function getAutomationChildren():Array
-		{
-			return getScrollBars(skinnableTextBase,skinnableTextBase.skin);
-		}
-
-		protected function getScrollBars(passedObj:Object, stopWithSkin:UIComponent):Array
-		{
-			var scroller:spark.components.Scroller = null;
-			if(passedObj)
-				scroller = getScroller(passedObj,null);
-			else
-				scroller = getScroller(skinnableTextBase,stopWithSkin);
-
-			if(scroller)
-			{
-				var tempArray:Array = new Array();
-				if(scroller.horizontalScrollBar)
-					tempArray.push(scroller.horizontalScrollBar);
-				if(scroller.verticalScrollBar)
-					tempArray.push(scroller.verticalScrollBar);
-
-			}
-			return tempArray;
-
-		}
-		protected function getScroller(passedObj:Object, stopWithSkin:UIComponent):spark.components.Scroller
-		{
-			if(passedObj)
-			{
-				if( !(passedObj.hasOwnProperty("numChildren") &&
-					passedObj.hasOwnProperty("getChildAt")))
-					return null;
-			}
-
-			var requiredObject:Object = null;
-			if(passedObj)
-				requiredObject = passedObj;
-			else
-				// just to ensure that if no object is passed, we will consider it on the
-				// current object.
-				requiredObject = skinnableTextBase;
-
-			var n:int = requiredObject.numChildren;
-
-			var obj:Object;
-			for (var i:int = 0; i<n ; i++)
-			{
-				obj  =  requiredObject.getChildAt(i);
-
-				if(obj is spark.components.Scroller)
-					return obj as spark.components.Scroller;
-
-				// check whether we need to proceed with the element to dig further
-				// if it is a skin we need to proceed.
-				// if the object corresponds to our contentGroup, we need not proceed further
-				if(obj == stopWithSkin)
-					continue;
-				do
-				{
-					obj = getScroller(obj,stopWithSkin);
-				}while(obj && !(obj is spark.components.Scroller))
-
-				if(obj is spark.components.Scroller)
-					return obj as spark.components.Scroller;
-			}
-			return null;
-		}
-
-
-		/**
-		 *  @private
-		 */
-
-		private function mouseWheelHandler(event:MouseEvent):void
-		{
-			if( isEventTargetApplicabale(event)  )
-				recordAutomatableEvent(event, true);
-		}
-
-		private function isEventTargetApplicabale(event:Event):Boolean
-		{
-			return (event.target == skinnableTextBase.textDisplay);
-		}
-
-		/**
-		 *  @private
-		 */
-		override public function createAutomationIDPart(child:IAutomationObject):Object
-		{
-			var help:IAutomationObjectHelper = Automation.automationObjectHelper;
-			return help.helpCreateIDPart(uiAutomationObject, child);
-		}
-
-		/**
-		 *  @private
-		 */
-		override public function resolveAutomationIDPart(part:Object):Array
-		{
-			var help:IAutomationObjectHelper = Automation.automationObjectHelper;
-			return help.helpResolveIDPart(uiAutomationObject, part);
-		}
-
-		/**
-		 *  @private
-		 */
-		override public function createAutomationIDPartWithRequiredProperties(child:IAutomationObject, properties:Array):Object
-		{
-			var help:IAutomationObjectHelper = Automation.automationObjectHelper;
-			return help.helpCreateIDPartWithRequiredProperties(uiAutomationObject, child,properties);
-
-		}
-
-	}
+    import flash.display.DisplayObject;
+    import flash.events.Event;
+    import flash.events.KeyboardEvent;
+    import flash.events.MouseEvent;
+
+    import mx.automation.Automation;
+    import mx.automation.IAutomationObject;
+    import mx.automation.IAutomationObjectHelper;
+    import mx.automation.events.AutomationDragEvent;
+    import mx.automation.events.AutomationRecordEvent;
+    import mx.core.EventPriority;
+    import mx.core.UIComponent;
+    import mx.core.mx_internal;
+
+    import spark.automation.delegates.SparkRichEditableTextAutomationHelper;
+    import spark.automation.tabularData.RichEditableTextTabularData;
+    import spark.components.Scroller;
+    import spark.components.supportClasses.SkinnableTextBase;
+
+    use namespace mx_internal;
+
+    [Mixin]
+    /**
+     *
+     *  Defines methods and properties required to perform instrumentation for the
+     *  SkinnableTextBase control.
+     *
+     *  @see spark.components.supportClasses.SkinnableTextBase
+     *
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public class SparkSkinnableTextBaseAutomationImpl extends SparkSkinnableComponentAutomationImpl
+    {
+        include "../../../../core/Version.as";
+
+
+        //--------------------------------------------------------------------------
+        //
+        //  Class methods
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  Registers the delegate class for a component class with automation manager.
+         *
+         *  @param root The SystemManger of the application.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 4
+         */
+        public static function init(root:DisplayObject):void
+        {
+            Automation.registerDelegateClass(spark.components.supportClasses.SkinnableTextBase, SparkSkinnableTextBaseAutomationImpl);
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Constructor
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  Constructor.
+         * @param obj SkinnableTextBase object to be automated.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 4
+         */
+        public function SparkSkinnableTextBaseAutomationImpl(obj:spark.components.supportClasses.SkinnableTextBase)
+        {
+            super(obj);
+            obj.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler,
+                false, EventPriority.DEFAULT+1, true );
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Variables
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  @private
+         *  storage for the owner component
+         */
+        protected function get  skinnableTextBase():spark.components.supportClasses.SkinnableTextBase
+        {
+            return uiComponent as spark.components.supportClasses.SkinnableTextBase;
+        }
+
+        /**
+         *  @private
+         *  Generic record/replay logic for textfields.
+         */
+        private var automationHelper:SparkRichEditableTextAutomationHelper;
+
+        //--------------------------------------------------------------------------
+        //
+        //  Overridden properties
+        //
+        //--------------------------------------------------------------------------
+
+        //----------------------------------
+        //  automationValue
+        //----------------------------------
+
+        /**
+         *  @private
+         */
+        override public function get automationValue():Array
+        {
+            return [ skinnableTextBase.text ];
+        }
+
+
+        //--------------------------------------------------------------------------
+        //
+        //  Overridden methods
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  @private
+         */
+        override public function replayAutomatableEvent(interaction:Event):Boolean
+        {
+            // For drag events, this needs to be handled by this object itself
+            // instead of delegating it to its textDisplay
+            // This is needed for AIR as we need to dispatch native drag events on
+            // current object to handle drag drop events in AIR
+            // This is working in Flex even without this special handling because
+            // drag events are automatically triggered by mouse events in Flex.
+            // But this is not the case in AIR. Mouse events do not trigger those
+            // native drag events and so we need to construct those events manually
+            // and dispatch them on the corresponding objects to replay them.
+            if(interaction is AutomationDragEvent)
+                return super.replayAutomatableEvent(interaction);
+
+            // we have delegated the replay to the underlying the richEditabale Text.
+            if(skinnableTextBase.textDisplay)
+                return skinnableTextBase.textDisplay.replayAutomatableEvent(interaction);
+            else
+                return super.replayAutomatableEvent(interaction);
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Event handlers
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  Method which gets called after the component has been initialized.
+         *  This can be used to access any sub-components and act on the component.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 4
+         */
+        override protected function componentInitialized():void
+        {
+            super.componentInitialized();
+            skinnableTextBase.addEventListener(AutomationRecordEvent.RECORD,
+                inputField_recordHandler1, false, 0, true);
+        }
+
+
+        private function inputField_recordHandler1(event1:AutomationRecordEvent):void
+        {
+            if(event1.automationObject == skinnableTextBase.textDisplay)
+            {
+                // let us record the evnet from the richEditableText as our event
+                recordAutomatableEvent(event1.replayableEvent);
+            }
+        }
+
+        /**
+         *  @private
+         *  Prevent duplicate ENTER key recordings.
+         */
+        override protected function keyDownHandler(event:KeyboardEvent):void
+        {
+            ;
+        }
+
+        /**
+         *  @private
+         */
+
+        override public function get automationTabularData():Object
+        {
+            return new RichEditableTextTabularData(skinnableTextBase.textDisplay);
+        }
+
+
+        /**
+         *  @private
+         */
+
+        override public function get numAutomationChildren():int
+        {
+            var scrollBars:Array = getScrollBars(skinnableTextBase,skinnableTextBase.skin);
+            return scrollBars?scrollBars.length:0;
+        }
+
+        override public function getAutomationChildAt(index:int):IAutomationObject
+        {
+            var scrollBars:Array = getScrollBars(skinnableTextBase,skinnableTextBase.skin);
+            if(scrollBars && index < scrollBars.length)
+                return scrollBars[index];
+            return null;
+        }
+
+        /**
+         *  @private
+         */
+        override public function getAutomationChildren():Array
+        {
+            return getScrollBars(skinnableTextBase,skinnableTextBase.skin);
+        }
+
+        protected function getScrollBars(passedObj:Object, stopWithSkin:UIComponent):Array
+        {
+            var scroller:spark.components.Scroller = null;
+            if(passedObj)
+                scroller = getScroller(passedObj,null);
+            else
+                scroller = getScroller(skinnableTextBase,stopWithSkin);
+
+            if(scroller)
+            {
+                var tempArray:Array = new Array();
+                if(scroller.horizontalScrollBar)
+                    tempArray.push(scroller.horizontalScrollBar);
+                if(scroller.verticalScrollBar)
+                    tempArray.push(scroller.verticalScrollBar);
+
+            }
+            return tempArray;
+
+        }
+        protected function getScroller(passedObj:Object, stopWithSkin:UIComponent):spark.components.Scroller
+        {
+            if(passedObj)
+            {
+                if( !(passedObj.hasOwnProperty("numChildren") &&
+                    passedObj.hasOwnProperty("getChildAt")))
+                    return null;
+            }
+
+            var requiredObject:Object = null;
+            if(passedObj)
+                requiredObject = passedObj;
+            else
+                // just to ensure that if no object is passed, we will consider it on the
+                // current object.
+                requiredObject = skinnableTextBase;
+
+            var n:int = requiredObject.numChildren;
+
+            var obj:Object;
+            for (var i:int = 0; i<n ; i++)
+            {
+                obj  =  requiredObject.getChildAt(i);
+
+                if(obj is spark.components.Scroller)
+                    return obj as spark.components.Scroller;
+
+                // check whether we need to proceed with the element to dig further
+                // if it is a skin we need to proceed.
+                // if the object corresponds to our contentGroup, we need not proceed further
+                if(obj == stopWithSkin)
+                    continue;
+                do
+                {
+                    obj = getScroller(obj,stopWithSkin);
+                }while(obj && !(obj is spark.components.Scroller))
+
+                if(obj is spark.components.Scroller)
+                    return obj as spark.components.Scroller;
+            }
+            return null;
+        }
+
+
+        /**
+         *  @private
+         */
+
+        private function mouseWheelHandler(event:MouseEvent):void
+        {
+            if( isEventTargetApplicabale(event)  )
+                recordAutomatableEvent(event, true);
+        }
+
+        private function isEventTargetApplicabale(event:Event):Boolean
+        {
+            return (event.target == skinnableTextBase.textDisplay);
+        }
+
+        /**
+         *  @private
+         */
+        override public function createAutomationIDPart(child:IAutomationObject):Object
+        {
+            var help:IAutomationObjectHelper = Automation.automationObjectHelper;
+            return help.helpCreateIDPart(uiAutomationObject, child);
+        }
+
+        /**
+         *  @private
+         */
+        override public function resolveAutomationIDPart(part:Object):Array
+        {
+            var help:IAutomationObjectHelper = Automation.automationObjectHelper;
+            return help.helpResolveIDPart(uiAutomationObject, part);
+        }
+
+        /**
+         *  @private
+         */
+        override public function createAutomationIDPartWithRequiredProperties(child:IAutomationObject, properties:Array):Object
+        {
+            var help:IAutomationObjectHelper = Automation.automationObjectHelper;
+            return help.helpCreateIDPartWithRequiredProperties(uiAutomationObject, child,properties);
+
+        }
+
+    }
 }


fix coding style

fix coding style

--- src/aerys/minko/render/shader/compiler/graph/visitors/AbstractVisitor.as
+++ src/aerys/minko/render/shader/compiler/graph/visitors/AbstractVisitor.as
@@ -144,7 +144,6 @@
 													  newNode	: AbstractNode,
 													  modifier	: uint) : void
 		{
-
 			swizzleParents(oldNode, modifier);
 			replaceInParents(oldNode, newNode);
 		}


Fixed AnimationController.clone : cloning labels

--- src/aerys/minko/scene/controller/animation/AnimationController.as
+++ src/aerys/minko/scene/controller/animation/AnimationController.as
@@ -163,6 +163,9 @@
 			var clone : AnimationController = new AnimationController(_timelines.slice(), _looping);
 			clone._isTimelineUpdateLocked	= _isTimelineUpdateLocked.slice();

+			clone._labelNames	= _labelNames.concat();
+			clone._labelTimes	= _labelTimes.concat();
+
 			return clone;
 		}


add support for BitmapData as a source for DynamicTextureController

--- src/aerys/minko/scene/controller/mesh/DynamicTextureController.as
+++ src/aerys/minko/scene/controller/mesh/DynamicTextureController.as
@@ -7,7 +7,7 @@
 	import aerys.minko.scene.node.Mesh;
 	import aerys.minko.scene.node.Scene;
 	import aerys.minko.type.binding.DataProvider;
-
+
 	import flash.display.BitmapData;
 	import flash.display.DisplayObject;
 	import flash.geom.Matrix;
@@ -30,13 +30,13 @@
 	{
 		private var _data					: DataProvider;

-		private var _source					: DisplayObject;
+		private var _source					: Object;
 		private var _framerate				: Number;
 		private var _mipMapping				: Boolean;
 		private var _propertyName			: String;
 		private var _matrix					: Matrix;
 		private var _forceBitmapDataClear	: Boolean;
-		private var _bitmapData				: BitmapData;
+		private var _tmpBitmapData			: BitmapData;
 		private var _texture				: TextureResource;

 		private var _lastDraw	            : Number;
@@ -44,9 +44,7 @@
 		/**
 		 * Create a new DynamicTextureController.
 		 *
-		 * @param source The source DisplayObject to use as a dynamic texture.
-		 * @param width The width of the dynamic texture.
-		 * @param height The height of the dynamic texture.
+		 * @param source The source (BitmapData or DisplayObject) to use as a dynamic texture.
 		 * @param mipMapping Whether mip-mapping should be enabled or not. Default value is 'true'.
 		 * @param framerate The frame rate of the dynamic texture. Default value is '30'.
 		 * @param propertyName The name of the bindings property that should be set with the
@@ -55,9 +53,7 @@
 		 * into the dynamic texture. Default value is 'null'.
 		 *
 		 */
-		public function DynamicTextureController(source					: DisplayObject,
-												 width					: Number,
-												 height					: Number,
+		public function DynamicTextureController(source					: Object,
 												 mipMapping				: Boolean	= true,
 												 framerate				: Number	= 30.,
 												 propertyName			: String	= 'diffuseMap',
@@ -65,9 +61,12 @@
 												 forceBitmapDataClear	: Boolean	= false)
 		{
 			super();
+
+			if (!(source is DisplayObject) && !(source is BitmapData))
+				throw new Error("Invalid argument: source must be of type DisplayObject or BitmapData.");

 			_source = source;
-			_texture = new TextureResource(width, height);
+			_texture = new TextureResource();
 			_framerate = framerate;
 			_mipMapping = mipMapping;
 			_propertyName = propertyName;
@@ -121,17 +120,45 @@
 			{
 				_lastDraw = time;

-				_bitmapData ||= new BitmapData(_source.width, _source.height);
-				if (_forceBitmapDataClear)
-					_bitmapData.fillRect(
-                        new Rectangle(0, 0, _bitmapData.width, _bitmapData.height),
-                        0
-                    );
-
-				_bitmapData.draw(_source, _matrix);
-
-				_texture.setContentFromBitmapData(_bitmapData, _mipMapping);
+				if (_source is DisplayObject)
+				    updateFromDisplayObject();
+				else
+					updateFromBitmapData();
 			}
+		}
+
+		private function updateFromDisplayObject() : void
+		{
+			var sourceDisplayObject : DisplayObject = _source as DisplayObject;
+
+			refreshTempBitmapData();
+
+			_tmpBitmapData.draw(sourceDisplayObject, _matrix);
+			_texture.setContentFromBitmapData(_tmpBitmapData, _mipMapping);
+		}
+
+		private function updateFromBitmapData() : void
+		{
+			if (_matrix)
+			{
+				refreshTempBitmapData();
+
+				_tmpBitmapData.draw(_source as BitmapData, _matrix);
+				_texture.setContentFromBitmapData(_tmpBitmapData, _mipMapping);
+			}
+
+			_texture.setContentFromBitmapData(_source as BitmapData, _mipMapping);
+		}
+
+		private function refreshTempBitmapData() : void
+		{
+			if (!_tmpBitmapData)
+				_tmpBitmapData = new BitmapData(_source.width, _source.height);
+			else if (_forceBitmapDataClear)
+				_tmpBitmapData.fillRect(
+					new Rectangle(0, 0, _tmpBitmapData.width, _tmpBitmapData.height),
+					0
+				);
 		}
 	}
 }


fixed MeshVisibilityController.testCulling() to not attempt to test frustum culling if the geometry does not have bounding volumes

--- src/aerys/minko/scene/controller/mesh/MeshVisibilityController.as
+++ src/aerys/minko/scene/controller/mesh/MeshVisibilityController.as
@@ -123,7 +123,7 @@
 		{
 			var culling	: uint	= _visibilityData.frustumCulling;

-			if (culling != FrustumCulling.DISABLED)
+			if (culling != FrustumCulling.DISABLED && _mesh.geometry.boundingBox)
 			{
 				var camera : Camera = (_mesh.root as Scene).activeCamera;


removed FlexibleLayout backwards compatibility mapping

--- WeaveJS/src/WeaveJS.as
+++ WeaveJS/src/WeaveJS.as
@@ -75,7 +75,6 @@
 			WeaveAPI.ClassRegistry.registerSingletonImplementation(IEditorManager, EditorManager);
 			WeaveAPI.ClassRegistry.registerSingletonImplementation(ICSVParser, CSVParser);
 			WeaveAPI.ClassRegistry.registerSingletonImplementation(ILocale, Locale);
-			Weave.registerClass("FlexibleLayout", LinkableVariable);
 			Weave.registerClass("ExtendedFillStyle", SolidFillStyle);
 			Weave.registerClass("ExtendedLineStyle", SolidLineStyle);


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

--- frameworks/projects/framework/src/mx/effects/effectClasses/AddRemoveEffectTargetFilter.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/AddRemoveEffectTargetFilter.as
@@ -0,0 +1,97 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.effects.effectClasses
+{
+
+import mx.effects.EffectTargetFilter;
+
+/**
+ *  AddRemoveEffectTargetFilter is a subclass of EffectTargetFilter that handles
+ *  the logic for filtering targets that have been added or removed as
+ *  children to a container.
+ *  If you set the Effect.filter property to "add" or "remove",
+ *  then one of these is used.
+ */
+public class AddRemoveEffectTargetFilter extends EffectTargetFilter
+{
+    include "../../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 */
+	public function AddRemoveEffectTargetFilter()
+	{
+		super();
+
+		filterProperties = [ "parent" ];
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  add
+	//----------------------------------
+
+	/**
+	 *  Determines if this is an add or remove filter.
+	 *
+	 *  @default true
+	 */
+	public var add:Boolean = true;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override protected function defaultFilterFunction(
+										propChanges:Array,
+										instanceTarget:Object):Boolean
+	{
+		var n:int = propChanges.length;
+		for (var i:int = 0; i < n; i++)
+		{
+			var props:PropertyChanges = propChanges[i];
+			if (props.target == instanceTarget)
+			{
+				if (add)
+				{
+					return props.start["parent"] == null &&
+						   props.end["parent"] != null;
+				}
+				else
+				{
+					return props.start["parent"] != null &&
+						   props.end["parent"] == null;
+				}
+			}
+		}
+
+		return false;
+	}
+}
+
+}


More general resolving of full asset names.

--- Bin/Data/Scripts/Editor/EditorImport.as
+++ Bin/Data/Scripts/Editor/EditorImport.as
@@ -1,6 +1,4 @@
 // Urho3D editor import functions
-
-bool useLocalIDs = false;

 class ParentAssignment
 {
@@ -13,6 +11,9 @@
     String assetName;
     String fullAssetName;
 }
+
+bool useLocalIDs = false;
+Array<AssetMapping> assetMappings;

 void ImportModel(const String&in fileName)
 {
@@ -99,7 +100,6 @@
     Array<String> convertedMaterials;
     Array<String> convertedMeshes;
     Array<ParentAssignment> parentAssignments;
-    Array<AssetMapping> assetMappings;

     // Read the scene directory structure recursively to get assetname to full assetname mappings
     Array<String> fileNames = fileSystem.ScanDir(filePath, "*.*", SCAN_FILES, true);
@@ -213,7 +213,7 @@
         if (!meshName.empty || shapeType >= 0)
         {
             for (uint i = 0; i < materialNames.length; ++i)
-                ConvertMaterial(materialNames[i], filePath, convertedMaterials, assetMappings);
+                ConvertMaterial(materialNames[i], filePath, convertedMaterials);

             ConvertModel(meshName, filePath, convertedMeshes);
             ConvertModel(collisionMeshName, filePath, convertedMeshes);
@@ -321,14 +321,15 @@

     UpdateSceneWindow();
     UpdateWindowTitle();
-}
-
-String GetFullAssetName(const String& assetName, Array<AssetMapping>@ mappings)
-{
-    for (uint i = 0; i < mappings.length; ++i)
-    {
-        if (mappings[i].assetName == assetName)
-            return mappings[i].fullAssetName;
+    assetMappings.Clear();
+}
+
+String GetFullAssetName(const String& assetName)
+{
+    for (uint i = 0; i < assetMappings.length; ++i)
+    {
+        if (assetMappings[i].assetName == assetName)
+            return assetMappings[i].fullAssetName;
     }

     return assetName;
@@ -384,13 +385,13 @@
     String convertedModelName = filePath + modelName + ".xml";

     // Convert .mesh to .mesh.xml
-    String cmdLine = "ogrexmlconverter.exe \"" + filePath + modelName + "\" \"" + convertedModelName + "\"";
+    String cmdLine = "ogrexmlconverter.exe \"" + filePath + GetFullAssetName(modelName) + "\" \"" + convertedModelName + "\"";
     if (!fileSystem.FileExists(convertedModelName))
         fileSystem.SystemCommand(cmdLine.Replaced('/', '\\'));

     // Convert .mesh.xml to .mdl
     Array<String> args;
-    args.Push("\"" + filePath + modelName + ".xml\"");
+    args.Push("\"" + filePath + GetFullAssetName(modelName) + ".xml\"");
     args.Push("\"" + sceneResourcePath + "Models/" + GetFileNameAndExtension(modelName).Replaced(".mesh", ".mdl") + "\"");
     args.Push("-a");
     fileSystem.SystemRun(fileSystem.programDir + "OgreImporter.exe", args);
@@ -398,7 +399,7 @@
     convertedModels.Push(modelName);
 }

-void ConvertMaterial(const String&in materialName, const String&in filePath, Array<String>@ convertedMaterials, Array<AssetMapping>@ assetMappings)
+void ConvertMaterial(const String&in materialName, const String&in filePath, Array<String>@ convertedMaterials)
 {
     if (materialName.Trimmed().empty)
         return;
@@ -409,7 +410,7 @@
             return;
     }

-    String fileName = filePath + materialName;
+    String fileName = filePath + GetFullAssetName(materialName);
     String outFileName = sceneResourcePath + "Materials/" + GetFileName(materialName) + ".xml";

     if (!fileSystem.FileExists(fileName))
@@ -423,7 +424,7 @@
     while (!file.eof)
     {
         String line = file.ReadLine().Trimmed();
-        if (line.StartsWith("alpha_rejection"))
+        if (line.StartsWith("alpha_rejection") || line.StartsWith("scene_blend alpha_blend"))
             mask = true;
         if (line.StartsWith("cull_hardware none"))
             twoSided = true;
@@ -456,7 +457,7 @@
         outMat.Save(outFile);
         outFile.Close();

-        fileSystem.Copy(filePath + GetFullAssetName(textureName, assetMappings), sceneResourcePath + "Textures/" + textureName);
+        fileSystem.Copy(filePath + GetFullAssetName(textureName), sceneResourcePath + "Textures/" + textureName);
     }

     convertedMaterials.Push(materialName);


Transferred from the Adobe Open Source Subversion Repository

Revision: 7036
Author:   jimurphy@adobe.com
Date:     2009-05-18T16:23:35.783417Z

Log Message:
-----------
Merged 3.x revisions 6955,6995,6997-7002 -> trunk

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/NavBar.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RichTextEditor.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ToolTipBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SchemaMarshaller.as</path>

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

--- frameworks/projects/framework/src/mx/skins/halo/ToolTipBorder.as
+++ frameworks/projects/framework/src/mx/skins/halo/ToolTipBorder.as
@@ -160,31 +160,11 @@

 		switch (borderStyle)
 		{
-			case "toolTip":
-			{
-				// face
-				drawRoundRect(
-					3, 1, w - 6, h - 4, cornerRadius,
-					backgroundColor, backgroundAlpha)
-
-				if (!dropShadow)
-					dropShadow = new RectangularDropShadow();
-
-				dropShadow.distance = 3;
-				dropShadow.angle = 90;
-				dropShadow.color = 0;
-				dropShadow.alpha = 0.4;
-
-				dropShadow.tlRadius = cornerRadius + 2;
-				dropShadow.trRadius = cornerRadius + 2;
-				dropShadow.blRadius = cornerRadius + 2;
-				dropShadow.brRadius = cornerRadius + 2;
-
-				dropShadow.drawShadow(graphics, 3, 0, w - 6, h - 4);
-
-				break;
-			}
-
+			case "none":
+			{
+				// Don't draw anything
+				break;
+			}
 			case "errorTipRight":
 			{
 				// border
@@ -203,7 +183,7 @@
 				filters = [ new DropShadowFilter(2, 90, 0, 0.4) ];
 				break;
 			}
-
+
 			case "errorTipAbove":
 			{
 				// border
@@ -241,6 +221,31 @@
 				filters = [ new DropShadowFilter(2, 90, 0, 0.4) ];
 				break;
 			}
+
+			default: //Tooltip
+			{
+				// face
+				drawRoundRect(
+					3, 1, w - 6, h - 4, cornerRadius,
+					backgroundColor, backgroundAlpha)
+
+				if (!dropShadow)
+					dropShadow = new RectangularDropShadow();
+
+				dropShadow.distance = 3;
+				dropShadow.angle = 90;
+				dropShadow.color = 0;
+				dropShadow.alpha = 0.4;
+
+				dropShadow.tlRadius = cornerRadius + 2;
+				dropShadow.trRadius = cornerRadius + 2;
+				dropShadow.blRadius = cornerRadius + 2;
+				dropShadow.brRadius = cornerRadius + 2;
+
+				dropShadow.drawShadow(graphics, 3, 0, w - 6, h - 4);
+
+				break;
+			}
 		}
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/spark/src/spark/components/NumericStepper.as
+++ frameworks/projects/spark/src/spark/components/NumericStepper.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2008 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: 19988
Author:   dloverin@adobe.com
Date:     2011-01-27T23:22:29.163143Z

Log Message:
-----------
Fix the inheritance of styles into modules and sub-applications.

Fix the scenario where the inheritance of styles from the parent to a module or sub-application are block by default styles in the module or sub-application.

CSSStyleDeclaration.addStyleToProtoChain():

Change the default factory property to be higher in the proto chain. In the below before and after lists, "this default factory" moved from #4 to #2 (a lower number represents a lower priority).

Before the change the order of node in the prototype chain was:
     1. parent style default factories
     2. parent style factories
     3. parent style overrides
     4. this default factory
     5. this factory
     6. this overrides

after this change the order will be:
     1. parent style default factories
     2. this default factory
     3. parent style factories
     4. parent style overrides
     5. this factory
     6. this overrides

QE notes: None.
Doc notes: None.
Bugs: SDK-28104
Reviewer: Glenn
Tests run: full run on cyclone server
Is noteworthy for integration: No.

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as

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

--- frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as
+++ frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as
@@ -835,6 +835,19 @@

     /**
      *  @private
+     *
+     *  The order of nodes in the prototype chain:
+     *
+     *  1. parent style default factories
+     *  2. this default factory
+     *  3. parent style factories
+     *  4. parent style overrides
+     *  5. this factory
+     *  6. this overrides
+     *
+     *  Where a parent style is a style with the same selector as this
+     *  style but in a parent style manager.
+     *
      */
     mx_internal function addStyleToProtoChain(chain:Object,
                                          target:DisplayObject,
@@ -843,64 +856,150 @@
         var nodeAddedToChain:Boolean = false;
         var originalChain:Object = chain;

-        if (filterMap)
-        {
-            chain = {};
-        }
-
-        // Add parent style to proto chain.
-        // If a styleManger parent does not have a style for a given selector,
-        // then skip that parent and move up to the next parent.
+        // Get a list of  parent style declarations for this selector.
+        var parentStyleDeclarations:Vector.<CSSStyleDeclaration> = new Vector.<CSSStyleDeclaration>();
         var styleParent:IStyleManager2 = styleManager.parent;
         while (styleParent)
         {
             var parentStyle:CSSStyleDeclaration = styleParent.getStyleDeclaration(selectorString);
             if (parentStyle)
-            {
-                chain = parentStyle.addStyleToProtoChain(chain, target, filterMap);
-                break;
-            }
+                parentStyleDeclarations.unshift(parentStyle);
+
             styleParent = styleParent.parent;
         }
-
-        // If there's a defaultFactory for this style sheet,
-        // then add the object it produces to the chain.
+
+        // #1. Add parent's default styles. Topmost parent is added to the chain first.
+        for each (var style:CSSStyleDeclaration in parentStyleDeclarations)
+        {
+            // If there's a defaultFactory for this style sheet,
+            // then add the object it produces to the chain.
+            if (style.defaultFactory != null)
+                chain = style.addDefaultStyleToProtoChain(chain, target, filterMap);
+        }
+
+        // #2. Add this style's defaultFactory to the proto chain.
         if (defaultFactory != null)
-        {
-            defaultFactory.prototype = chain;
-            chain = new defaultFactory();
-            nodeAddedToChain = true;
-        }
-
-        // If there's a factory for this style sheet,
-        // then add the object it produces to the chain.
-        var objectFactory:Object = null;
-        if (factory != null)
-        {
-            objectFactory = new factory();
-            factory.prototype = chain;
-            chain = new factory();
-            nodeAddedToChain = true;
-        }
-
-        // If someone has called setStyle() on this CSSStyleDeclaration,
-        // then some of the values returned from the factory are
-        // out-of-date. Overwrite them with the up-to-date values.
-        if (overrides)
-        {
-            // Before we add our overrides to the object at the head of
-            // the chain, make sure that we added an object at the head
-            // of the chain.
-            if (defaultFactory == null && factory == null)
-            {
+            chain = addDefaultStyleToProtoChain(chain, target, filterMap);
+
+        // #3 and #4. Add parent's factory styles and overrides.
+        var addedParentStyleToProtoChain:Boolean = false;
+        for each (style in parentStyleDeclarations)
+        {
+            if (style.factory != null || style.overrides != null)
+            {
+                chain = style.addFactoryAndOverrideStylesToProtoChain(chain, target, filterMap);
+                addedParentStyleToProtoChain = true;
+            }
+        }
+
+        // #5 and #6. Add this factory style and overrides.
+        var inChain:Object = chain;
+        if (factory != null || overrides != null)
+        {
+            chain = addFactoryAndOverrideStylesToProtoChain(chain, target, filterMap);
+            if (inChain != chain)
+                nodeAddedToChain = true;
+        }
+
+        // Here we check if we need to add an empty node to the chain for clone
+        // purposes. If there are parent nodes between this defaultFactory and
+        // this factory, then we can't use the defaultFactory node as the clone
+        // since overrides could get blocked by parent styles.
+        // First we check if we have a defaultFactory and we didn't add a factory
+        // or override node to the chain. If we have a factory or override node
+        // then we will just use that.
+        if (defaultFactory != null && !nodeAddedToChain)
+        {
+            // Now we know we have a default factory node and no factory or override
+            // nodes. We can use the default factory as a clone on the chain if there
+            // are no parent styles below it on the proto chain.
+            // Otherwise create an empty node so overrides and be added later.
+            if (addedParentStyleToProtoChain)
+            {
+                // There are parent styles so create an empty node.
                 var emptyObjectFactory:Function = function():void
                 {
                 };
                 emptyObjectFactory.prototype = chain;
                 chain = new emptyObjectFactory();
-                nodeAddedToChain = true;
-            }
-
+            }
+
+            nodeAddedToChain = true;
+        }
+
+        if (nodeAddedToChain)
+            clones[chain] = 1;
+
+        return chain;
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function addDefaultStyleToProtoChain(chain:Object,
+                                            target:DisplayObject,
+                                            filterMap:Object = null):Object
+    {
+        // If there's a defaultFactory for this style sheet,
+        // then add the object it produces to the chain.
+        if (defaultFactory != null)
+        {
+            var originalChain:Object = chain;
+            if (filterMap)
+            {
+                chain = {};
+            }
+
+            defaultFactory.prototype = chain;
+            chain = new defaultFactory();
+
+            if (filterMap)
+                chain = applyFilter(originalChain, chain, filterMap);
+        }
+
+        return chain;
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal function addFactoryAndOverrideStylesToProtoChain(chain:Object,
+                                                target:DisplayObject,
+                                                filterMap:Object = null):Object
+    {
+        var originalChain:Object = chain;
+        if (filterMap)
+        {
+            chain = {};
+        }
+
+        // If there's a factory for this style sheet,
+        // then add the object it produces to the chain.
+        var objectFactory:Object = null;
+        if (factory != null)
+        {
+            objectFactory = new factory();
+            factory.prototype = chain;
+            chain = new factory();
+        }
+
+        // If someone has called setStyle() on this CSSStyleDeclaration,
+        // then some of the values returned from the factory are
+        // out-of-date. Overwrite them with the up-to-date values.
+        if (overrides)
+        {
+            // Before we add our overrides to the object at the head of
+            // the chain, make sure that we added an object at the head
+            // of the chain.
+            if (factory == null)
+            {
+                var emptyObjectFactory:Function = function():void
+                {
+                };
+                emptyObjectFactory.prototype = chain;
+                chain = new emptyObjectFactory();
+            }
+
             for (var p:String in overrides)
             {
                 if (overrides[p] === undefined)
@@ -912,40 +1011,46 @@

         if (filterMap)
         {
-            if (nodeAddedToChain)
-            {
-
-                var filteredChain:Object = {};
-                // Create an object on the head of the chain using the original chain
-                var filterObjectFactory:Function = function():void
-                {
-                };
-                filterObjectFactory.prototype = originalChain;
-                filteredChain = new filterObjectFactory();
-
-                for (var i:String in chain)
-                {
-                    if (filterMap[i] != null)
-                    {
-                        filteredChain[filterMap[i]] = chain[i];
-                    }
-                }
-
-                chain = filteredChain;
-                chain[FILTERMAP_PROP] = filterMap;
-            }
+            if (factory != null || overrides)
+                chain = applyFilter(originalChain, chain, filterMap);
             else
-            {
                 chain = originalChain;
-            }
-        }
-
-        if (nodeAddedToChain)
-            clones[chain] = 1;
-
+        }
+
+        if (factory != null || overrides)
+            clones[chain] = 1;
+
         return chain;
     }

+
+    /**
+     *  @private
+     */
+    mx_internal function applyFilter(originalChain:Object, chain:Object, filterMap:Object):Object
+    {
+        var filteredChain:Object = {};
+        // Create an object on the head of the chain using the original chain
+        var filterObjectFactory:Function = function():void
+        {
+        };
+        filterObjectFactory.prototype = originalChain;
+        filteredChain = new filterObjectFactory();
+
+        for (var i:String in chain)
+        {
+            if (filterMap[i] != null)
+            {
+                filteredChain[filterMap[i]] = chain[i];
+            }
+        }
+
+        chain = filteredChain;
+        chain[FILTERMAP_PROP] = filterMap;
+
+        return chain;
+    }
+
     /**
      *  @private
      */


Transferred from the Adobe Open Source Subversion Repository

Revision: 10525
Author:   cframpto@adobe.com
Date:     2009-09-23T01:53:11.608472Z

Log Message:
-----------
For multiline input, before accepting the ENTER key make sure maxChars isn't exceeded.

QE notes:
Doc notes:
Bugs: SDK-22941
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: no

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

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -3800,26 +3800,33 @@
         if (editingMode != EditingMode.READ_WRITE)
             return;

+        // We always handle the 'enter' key since we would have to recreate
+        // the container manager to change the configuration if multiline
+        // changes.
         if (event.keyCode == Keyboard.ENTER)
-        {
-            // We always handle the 'enter' key since we would have to recreate
-            // the container manager to change the configuration if multiline
-            // changes.
-            if (multiline)
+        {
+            if (!multiline)
             {
-                var editManager:IEditManager =
-                    EditManager(_textContainerManager.beginInteraction());
-
-                if (editManager.hasSelection())
-                    editManager.splitParagraph();
-
-                _textContainerManager.endInteraction();
+                dispatchEvent(new FlexEvent(FlexEvent.ENTER));
+                event.preventDefault();
+                return;
             }
-            else
-            {
-                dispatchEvent(new FlexEvent(FlexEvent.ENTER));
+
+            // Multiline.  Make sure there is room before acting on it.
+            if (_maxChars != 0 && text.length >= _maxChars)
+            {
+                event.preventDefault();
+                return;
             }
-
+
+            var editManager:IEditManager =
+                EditManager(_textContainerManager.beginInteraction());
+
+            if (editManager.hasSelection())
+                editManager.splitParagraph();
+
+            _textContainerManager.endInteraction();
+
             event.preventDefault();
          }
     }
@@ -3924,6 +3931,11 @@
      */
     private function textContainerManager_damageHandler(event:DamageEvent):void
     {
+        if (ignoreDamageEvent || event.damageLength == 0)
+            return;
+
+        //trace("damageHandler", "generation", _textFlow ? _textFlow.generation : -1, "lastGeneration", lastGeneration);
+
         // The following textContainerManager functions can trigger a damage
         // event:
         //    setText/setTextFlow
@@ -3939,11 +3951,6 @@
         // is composed, even if there are no changes.
         if (_textFlow && _textFlow.generation == lastGeneration)
             return;
-
-        if (ignoreDamageEvent || event.damageLength == 0)
-            return;
-
-        //trace("damageHandler", id, event.damageAbsoluteStart, event.damageLength);

         // If there are pending changes, don't wipe them out.  We have
         // not gotten to commitProperties() yet.


Transferred from the Adobe Open Source Subversion Repository

Revision: 6290
Author:   chaase@adobe.com
Date:     2009-04-27T18:42:18.522446Z

Log Message:
-----------
Added animation behavior to scrollbars and sliders. For now, animation only happens based on mouse events (key events still have previous non-animated behavior).
Also, added shift-click behavior to ScrollBar, behaves essentially like a Slider, going to the clicked location instead of paging toward it.
Finally, fixed an unrelated bug in Animation where Animates set up with a MotionPath with no time=0 keyframe would not run properly.

These changes necessitate changes in Mustella (need to listen to 'change' event on scrollbars/sliders, not 'updateComplete' or 'click', since the animations may cause several valid 'updateComplete' events on the way to the final changed value.

QE Notes: Mustella changes in ScrollBar and Slider necessary. See note above. Changes have been made and are awaiting this checkin to update Mustella tests.
Doc Notes: None
Bugs:
Reviewer: Hans and Glenn (scrolling/sliding changes), Jason (Animation bug changes)
tests: checkintests, Mustella ScrollBar, Slider, Scroller (all required minor changes to pass)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Range.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/components/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Slider.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/effects/KeyFrame.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/flex4/flex4test_testScript.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/defaults.css</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/AnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/ScrollbarFrenzy.mxml</path>

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

--- frameworks/projects/spark/src/spark/effects/animation/Animation.as
+++ frameworks/projects/spark/src/spark/effects/animation/Animation.as
@@ -17,10 +17,12 @@
 import flash.utils.Timer;
 import flash.utils.getTimer;

+import mx.core.mx_internal;
 import mx.events.EffectEvent;
 import mx.resources.IResourceManager;
 import mx.resources.ResourceManager;

+import spark.effects.KeyFrame;
 import spark.effects.SimpleMotionPath;
 import spark.effects.easing.IEaser;
 import spark.effects.easing.Linear;
@@ -28,6 +30,8 @@
 import spark.effects.interpolation.ArrayInterpolator;
 import spark.effects.interpolation.IInterpolator;
 import spark.effects.interpolation.NumberInterpolator;
+
+use namespace mx_internal;

 [DefaultProperty("motionPaths")]

@@ -123,7 +127,7 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function Animation(duration:Number = 0, property:String = null,
+    public function Animation(duration:Number = 500, property:String = null,
         startValue:Object = null, endValue:Object = null)
     {
         this.duration = duration;
@@ -293,13 +297,15 @@
      *  The length of time, in milliseconds, of the animation,
      *  not counting any repetitions defined by
      *  the repeatCount property.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public var duration:Number;
+     *
+     * @default 500
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public var duration:Number = 500;

     //----------------------------------
     //  repeatBehavior
@@ -924,6 +930,31 @@
     {
         // stop an already-playing animation first
         stop();
+
+        // Make sure the time values in our motion paths are reasonable
+        // SimpleMotionPath objects may be set up with no time values, so
+        // we have to fill in those values from the duration when necessary
+        var i:int;
+        var j:int;
+        for (i = 0; i < motionPaths.length; ++i)
+        {
+            var keyframes:Array = motionPaths[i].keyframes;
+            if (isNaN(keyframes[0].time))
+                keyframes[0].time = 0;
+            // Create an initial (time==0) value if necessary
+            else if (keyframes[0].time > 0)
+            {
+                keyframes.splice(0, 0, new KeyFrame(0, null));
+                keyframes[0].timeFraction = 0;
+            }
+            for (j = 1; j < keyframes.length; ++j)
+            {
+                if (isNaN(keyframes[j].time))
+                    keyframes[j].time = duration;
+            }
+        }
+        for (i = 0; i < motionPaths.length; ++i)
+            motionPaths[i].scaleKeyframes(duration);

         if (startDelay > 0)
             addToDelayedAnimations(startDelay);


Transferred from the Adobe Open Source Subversion Repository

Revision: 20127
Author:   sameer@adobe.com
Date:     2011-02-04T09:07:55.998816Z

Log Message:
-----------
Remember the last edited item so that when the grid gets focus, editing behaves correctly.
Take the correct header items into account while configuring scroll bars.
QE notes: Test scroll bars and editing things
Doc notes: No
Bugs: http://bugs.adobe.com/jira/browse/FLEXDMV-2542
http://bugs.adobe.com/jira/browse/FLEXDMV-2325
Reviewer: Sreeni
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as</path>

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

--- frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGrid.as
+++ frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGrid.as
@@ -8102,6 +8102,22 @@
        }
         return 0;
     }
+
+   /**
+    * Get the length of the header items. Length calculation is different
+	* in case grouped columns are specified.
+	*  @private
+	*/
+   override protected function getHeaderItemsLength():int
+   {
+	   if (!columnGrouping)
+		   return super.getHeaderItemsLength();
+
+	   if (headerItemsList)
+		   return headerItemsList.length;
+
+	   return 0;
+   }

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


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package
 {


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

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


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/airframework/src/mx/utils/DirectoryEnumerationMode.as
+++ frameworks/projects/airframework/src/mx/utils/DirectoryEnumerationMode.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.
 //
 ////////////////////////////////////////////////////////////////////////////////