Fixed bug where bar chart group-by-sort-column feature would sort by RGB
color instead of the data used to generate the RGB value.
Grouped bar chart now displays record labels using the individual column
names.

Change-Id: I3a2c9f07794595b5d8100a67e9c7b43bf7196bef

--- WeaveUI/src/weave/visualization/plotters/CompoundBarChartPlotter.as
+++ WeaveUI/src/weave/visualization/plotters/CompoundBarChartPlotter.as
@@ -29,7 +29,9 @@
 	import weave.api.WeaveAPI;
 	import weave.api.core.ILinkableObject;
 	import weave.api.data.IAttributeColumn;
+	import weave.api.data.IColumnWrapper;
 	import weave.api.data.IQualifiedKey;
+	import weave.api.detectLinkableObjectChange;
 	import weave.api.linkSessionState;
 	import weave.api.newDisposableChild;
 	import weave.api.newLinkableChild;
@@ -83,7 +85,6 @@
 			registerSpatialProperty(colorColumn); // because color is used for sorting
 			registerLinkableChild(this, Weave.properties.axisFontSize);
 			registerLinkableChild(this, Weave.properties.axisFontColor);
-			colorColumn.addImmediateCallback(this, function():void { _binnedSortColumnTriggerCounter = 0; });

 			_binnedSortColumn.binningDefinition.requestLocalObject(CategoryBinningDefinition, true); // creates one bin per unique value in the sort column
 		}
@@ -96,14 +97,13 @@
 		private const fillStyle:SolidFillStyle = newDisposableChild(this, SolidFillStyle);

 		public const groupBySortColumn:LinkableBoolean = registerSpatialProperty(new LinkableBoolean(false)); // when this is true, we use _binnedSortColumn
-		private var _binnedSortColumnTriggerCounter:uint = 0;
 		private const _binnedSortColumn:BinnedColumn = newSpatialProperty(BinnedColumn); // only used when groupBySortColumn is true
 		private const _sortedIndexColumn:SortedIndexColumn = _binnedSortColumn.internalDynamicColumn.requestLocalObject(SortedIndexColumn, true); // this sorts the records
 		private const _filteredSortColumn:FilteredColumn = _sortedIndexColumn.requestLocalObject(FilteredColumn, true); // filters before sorting
 		public function get sortColumn():DynamicColumn { return _filteredSortColumn.internalDynamicColumn; }
 		public const labelColumn:DynamicColumn = newLinkableChild(this, DynamicColumn);

-		private var _sortByColor:Function = ColumnUtils.generateSortFunction([colorColumn]);
+		private var _sortByColor:Function;

 		public function sortAxisLabelFunction(value:Number):String
 		{
@@ -177,9 +177,30 @@

 		private function sortBins():void
 		{
-			if (groupBySortColumn.value && _binnedSortColumnTriggerCounter != _binnedSortColumn.triggerCounter)
+			if (!groupBySortColumn.value)
+				return;
+			var colorChanged:Boolean = detectLinkableObjectChange(sortBins, colorColumn);
+			var binsChanged:Boolean = detectLinkableObjectChange(sortBins, _binnedSortColumn);
+
+			if (colorChanged)
 			{
-				_binnedSortColumnTriggerCounter = _binnedSortColumn.triggerCounter;
+				// find internal color column, then use its internal column
+				var column:IAttributeColumn = colorColumn;
+				while (column)
+				{
+					if (column is ColorColumn)
+					{
+						column = (column as ColorColumn).internalDynamicColumn;
+						break;
+					}
+					if (column is IColumnWrapper)
+						column = (column as IColumnWrapper).internalColumn;
+				}
+				_sortByColor = ColumnUtils.generateSortFunction([column]);
+			}
+
+			if (colorChanged || binsChanged)
+			{
 				for (var i:int = 0; i < _binnedSortColumn.numberOfBins; i++)
 					_binnedSortColumn.getKeysFromBinIndex(i).sort(_sortByColor);
 			}
@@ -493,7 +514,7 @@
 					{
 						_bitmapText.text = heightColumn.getValueFromKey(recordKey, String);
 						var valueLabelPos:Number = valueLabelDataCoordinate.value;
-						if(isNaN(valueLabelPos))
+						if (isNaN(valueLabelPos))
 						{
 							valueLabelPos = (height >= 0) ? yMax : yNegativeMax;
 						}
@@ -542,11 +563,14 @@
 					//------------------------------------

 					//------------------------------------
-					// BEGIN code to draw one label using labelColumn
+					// BEGIN code to draw one label using labelColumn (or column title if grouped)
 					//------------------------------------
 					if (shouldDrawLabel && !heightMissing)
 					{
-						_bitmapText.text = labelColumn.getValueFromKey(recordKey, String);
+						if (_groupingMode == GROUP)
+							_bitmapText.text = ColumnUtils.getTitle(heightColumn);
+						else
+							_bitmapText.text = labelColumn.getValueFromKey(recordKey, String);
 						_bitmapText.horizontalAlign = BitmapText.HORIZONTAL_ALIGN_RIGHT;
 						var labelPos:Number = labelDataCoordinate.value;
 						if (_horizontalMode)


Transferred from the Adobe Open Source Subversion Repository

Revision: 14869
Author:   cframpto@adobe.com
Date:     2010-03-19T02:24:27.434644Z

Log Message:
-----------
Merge mirroring changes 14728-14730, 14772-14775, 14806 from 4.x to trunk.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airspark/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VSlider.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</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/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Scroller.as</path>

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

--- frameworks/projects/mx/src/mx/controls/MenuBar.as
+++ frameworks/projects/mx/src/mx/controls/MenuBar.as
@@ -38,6 +38,7 @@
 import mx.core.IFactory;
 import mx.core.IFlexDisplayObject;
 import mx.core.IUIComponent;
+import mx.core.LayoutDirection;
 import mx.core.UIComponent;
 import mx.core.UIComponentGlobals;
 import mx.core.mx_internal;
@@ -1801,7 +1802,7 @@

         // If the layout has been mirrored, then the 0,0 is the uppper
         // right corner; compensate here.
-        if (layoutDirection == "rtl")
+        if (layoutDirection == LayoutDirection.RTL)
             pt.x -= menu.getExplicitOrMeasuredWidth();

         // check to see if we'll go offscreen


Transferred from the Adobe Open Source Subversion Repository

Revision: 11247
Author:   klin@adobe.com
Date:     2009-10-28T21:59:11.963883Z

Log Message:
-----------
Fix for https://bugs.adobe.com/jira/browse/SDK-23184.

Updated a bunch of Style metadata ASDocs to describe different defaults between the Halo and Spark themes. Also, fixed a few typos along the way.

defaults.css - rearranged a few styles to be in alphabetical order
Button.as - removed extra emphasizedSkin style metadata
Panel.as - added spark theme to borderAlpha metadata

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBarButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/halo/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/fl/video/NCManagerNative.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SkinStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</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/styles/metadata/BorderStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/FlexModuleFactory.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/TreeItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/TextStyles.as</path>
<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/LinkButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/menuClasses/MenuItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/PopUpMenuIcon.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/PaddingStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManagerProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/GapStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/fl/video/NCManagerDynamicStream.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/LinkBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/FocusStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/BitmapImage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/StrokedElement.as</path>

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

--- frameworks/projects/mx/src/mx/core/Application.as
+++ frameworks/projects/mx/src/mx/core/Application.as
@@ -1335,7 +1335,7 @@
         // nothing to init
         if (flexContextMenu != null)
         {
-            // make sure we set it back on systemManager b/c it may have been overriden by now
+            // make sure we set it back on systemManager b/c it may have been overridden by now
             if (systemManager is InteractiveObject)
                 InteractiveObject(systemManager).contextMenu = contextMenu;
             return;


Transferred from the Adobe Open Source Subversion Repository

Revision: 3031
Author:   chaase@adobe.com
Date:     2008-08-28T21:17:21.801208Z

Log Message:
-----------
Fixed SDK-16615, SDK-16576, SDK-16631, SDK-16635, TH-1507, SDK-16622. This is another round of Animation/effect changes. Some are API improvements (such as adding proper event dispatching to Animate), most are fixes for various SDK and Thermo bugs that have been filed. Here's an explanation of the changes per file:

Animate.as: (sdk-16622)
All of the changes here are to add AnimationEvent dispatching to this class, similar to what we had in TweenEffect for TweenEvent. Note that we have a new event now, ANIMATION_REPEAT, and that ANIMATION_END only gets sent out once for each animation (instead of after each repetition, which is what the Flex3 effects did)

Animation.as: (sdk-16635)
We were noop'ing 0-duration animations. We now handle this correctly by sending out a START event, then send out UPDATE/END events with the final value

AnimateInstance.as:
These changes relate to two problems/fixes:
- Dispatching events correctly (sdk-16622)
- Handling styles correctly before effects are completely set up (sdk-16615)

MoveInstance.as: (sdk-16631)
We didn't handle the situation where the user supplied only one of left/right or one of bottom/top.

TintInstance.as: (sdk-16615)
We weren't correctly detecting that colors were not being set by the user, which messed up assumptions for transition from/to values

ColorInterpolator.as (sdk-16576)
Removed redundant line of code

Tint.as: (sdk-16615)
Fixes to support property coloring during transitions

Effect.as:
Removed trace() statements that crept in there in an earlier checkin

Reviewed by Glenn
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/TintInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Animate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Tint.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/MoveInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/ColorInterpolator.as</path>

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

--- frameworks/projects/framework/src/mx/effects/Effect.as
+++ frameworks/projects/framework/src/mx/effects/Effect.as
@@ -1309,12 +1309,9 @@
                 m = relevantStyles.length;
                 for (j = 0; j < m; j++)
                 {
-                    trace("relevantStyles[j] = " + relevantStyles[j]);
                     if (relevantStyles[j] in propChanges[i].end &&
                         target is IStyleClient)
                     {
-                        trace("AnimProp: style, value = " + relevantStyles[j] + ", " +
-                            propChanges[i].end[relevantStyles[j]]);
                         target.setStyle(relevantStyles[j], propChanges[i].end[relevantStyles[j]]);
                     }
                 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 18139
Author:   hmuller@adobe.com
Date:     2010-10-12T19:02:33.052295Z

Log Message:
-----------
Data,Grid variableRowHeight is now false by default.

The DefaultGridItemRenderer and UITextFieldItemRenderer classes now configure their wordWrap property to match variableRowHeight, unless wordWrap is explicitly specified.

Fixed layoutItemRenderers() which had never (!) called the prepare()/discard() IGridItemRenderer methods.

Fixed GridDimensions/getTypicalContentHeight() - removed dependency on variableRowHeight.

QE notes: This commit's cyclone failures have been vetted
Doc notes:
Bugs: SDK-28179
Reviewer: Kevin
Tests run: checkin, mustella cyclone
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/IGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/UITextFieldGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridDimensions.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as</path>

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

--- frameworks/projects/spark/src/spark/components/Grid.as
+++ frameworks/projects/spark/src/spark/components/Grid.as
@@ -2106,7 +2106,7 @@
     /**
      *  @private
      */
-    private var _variableRowHeight:Boolean = true;
+    private var _variableRowHeight:Boolean = false;

     /**
      *  @private
@@ -2118,9 +2118,10 @@
     /**
      *  If true, each row's height is the maximum of preferred heights of the cells displayed so far.
      *
-     *
If false, the height of each row is just the value of rowHeight.

-     *
-     *  @default true
+     *
If false, the height of each row is just the value of rowHeight.
+     *  If rowHeight isn't specified, then the height of each row is defined by the typicalItem

+     *
+     *  @default false
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

Revision: 5999
Author:   jszeto@adobe.com
Date:     2009-04-07T22:00:52.943622Z

Log Message:
-----------
DropDownList fixes

- added support for enabled / disabled
- update labelElement when labelField or labelFunction has changed
- close the dropdown on focusOut
- skin fixed to use proper text margins. Component no longer resizes when first item is selected.
- disabled mouse interaction in InvalidatingSprite
- added null check to List keyboard handler

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/InvalidatingSprite.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/DropDownListSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -612,34 +612,38 @@
     protected function list_keyDownHandler(event:KeyboardEvent):void
     {
         super.keyDownHandler(event);
-        var delta:int = 0;
-
-        if (layout is VerticalLayout)
-            switch(event.keyCode)
-            {
-                case Keyboard.UP: delta = -1; break;
-                case Keyboard.DOWN: delta = +1; break;
-            }
-        else if (layout is HorizontalLayout)
-            switch(event.keyCode)
-            {
-                case Keyboard.LEFT: delta = -1; break;
-                case Keyboard.RIGHT: delta = +1; break;
-            }
-
-        // Note that the KeyboardEvent is canceled even if the selectedIndex doesn't
-        // change because we don't want another component to start handling these
-        // events when the selectedIndex reaches a limit.
-        if (delta != 0)
-        {
-            event.preventDefault();
-            var maxSelectedIndex:int = dataProvider.length - 1;
-            selectedIndex = Math.min(Math.max(0, selectedIndex + delta), maxSelectedIndex);
-            // TODO (jszeto) Added this because we want the selection to commit immediately
-            // Explore better way to accomplish this.
-            commitSelectedIndex();
-            ensureIndexIsVisible(selectedIndex);
-        }
+
+        if (dataProvider)
+        {
+	        var delta:int = 0;
+
+	        if (layout is VerticalLayout)
+	            switch(event.keyCode)
+	            {
+	                case Keyboard.UP: delta = -1; break;
+	                case Keyboard.DOWN: delta = +1; break;
+	            }
+	        else if (layout is HorizontalLayout)
+	            switch(event.keyCode)
+	            {
+	                case Keyboard.LEFT: delta = -1; break;
+	                case Keyboard.RIGHT: delta = +1; break;
+	            }
+
+	        // Note that the KeyboardEvent is canceled even if the selectedIndex doesn't
+	        // change because we don't want another component to start handling these
+	        // events when the selectedIndex reaches a limit.
+	        if (delta != 0)
+	        {
+	            event.preventDefault();
+	            var maxSelectedIndex:int = dataProvider.length - 1;
+	            selectedIndex = Math.min(Math.max(0, selectedIndex + delta), maxSelectedIndex);
+	            // TODO (jszeto) Added this because we want the selection to commit immediately
+	            // Explore better way to accomplish this.
+	            commitSelectedIndex();
+	            ensureIndexIsVisible(selectedIndex);
+	        }
+		}
     }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 10165
Author:   klin@adobe.com
Date:     2009-09-11T19:15:28.670403Z

Log Message:
-----------
Added Inspectable metadata for repeatBehavior property

QE notes: repeatBehavior should code hint in FB now
Doc notes: None
Bugs: sdk-22681
Reviewer: Ryan
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Animate.as

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

--- frameworks/projects/spark/src/spark/effects/Animate.as
+++ frameworks/projects/spark/src/spark/effects/Animate.as
@@ -268,6 +268,9 @@
      * Storage for the repeatBehavior property.
      */
     private var _repeatBehavior:String = RepeatBehavior.LOOP;
+
+    [Inspectable(category="General", enumeration="loop,reverse", defaultValue="loop" )]
+
     /**
      * The behavior of a repeating effect, which means an effect
      * with repeatCount equal to either 0 or > 1. This


Added our names back into the text output

--- asunit-4.0/src/asunit4/printers/TextPrinter.as
+++ asunit-4.0/src/asunit4/printers/TextPrinter.as
@@ -19,7 +19,7 @@

 	public class TextPrinter extends Sprite implements IRunListener {

-        public static var DEFAULT_HEADER:String = "AsUnit 4.0\n\nFlash Player version: " + Capabilities.version
+        public static var DEFAULT_HEADER:String = "AsUnit 4.0 by Luke Bayes and Ali Mills\n\nFlash Player version: " + Capabilities.version
 		public static var LOCAL_PATH_PATTERN:RegExp = /([A-Z]:\\[^\/:\*\?<>\|]+\.\w{2,6})|(\\{2}[^\/:\*\?<>\|]+\.\w{2,6})/g;

         public var backgroundColor:uint = 0x333333;


Transferred from the Adobe Open Source Subversion Repository

Revision: 14095
Author:   cframpto@adobe.com
Date:     2010-02-10T17:33:30.511669Z

Log Message:
-----------
Merge 14076 from 4.x branch to trunk.

Revision: 14076
Author:   cframpto@adobe.com
Date:     2010-02-09 15:23:15 -0800 (Tue, 09 Feb 2010)
Log Message:
***********
Add UIComponent.mapKeycodeForLayoutDirection().  This should be called by any keyDownHandlers() which handles Keyboard.LEFT and Keyboard.RIGHT, and optionally for Keyboard.UP and Keyboard.DOWN, if they behave like Keyboard.LEFT and Keyboard.RIGHT.  If the layoutDirection="rtl", it maps LEFT to RIGHT, RIGHT to LEFT, UP to RIGHT and DOWN to LEFT.  This allows the keyDownHandler() to perform the correct action without adding lots of special case code to the key handling code.

QE notes: For layoutDirection="rtl" need to test LEFT, RIGHT, UP and DOWN keys.
Doc notes: None
Bugs: SDK-25330
Reviewed By: Hans
Tests run: checkintests
Is noteworthy for integration: No

Ticket Links:
***********
    http://bugs.adobe.com/jira/browse/SDK-25330

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="dir" action="M">/flex/sdk/trunk/frameworks</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CalendarLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</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/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/SliderThumb.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.as</path>

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

--- frameworks/projects/mx/src/mx/controls/ButtonBar.as
+++ frameworks/projects/mx/src/mx/controls/ButtonBar.as
@@ -1064,7 +1064,11 @@
         if (event.eventPhase != EventPhase.AT_TARGET)
             return;

-        switch (event.keyCode)
+        // If rtl layout, need to swap LEFT/UP for RIGHT/DOWN so correct action
+        // is done.
+        var keyCode:int = mapKeycodeForLayoutDirection(event, true);
+
+        switch (keyCode)
         {
             case Keyboard.DOWN:
             case Keyboard.RIGHT:
@@ -1093,7 +1097,7 @@
                 {
                     drawButtonFocus(focusedIndex, true);
                 }
-
+
                 event.stopPropagation();
                 break;
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 5099
Author:   gauravj@adobe.com
Date:     2009-02-27T03:43:02.639229Z

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

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

Modified Paths:
--------------
147 paths were modified

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

--- frameworks/projects/rpc/src/mx/rpc/wsdl/WSDLPort.as
+++ frameworks/projects/rpc/src/mx/rpc/wsdl/WSDLPort.as
@@ -38,6 +38,11 @@
     /**
      * Represents the binding which defines the message format and protocol
      * used to interoperate with operations for this port.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get binding():WSDLBinding
     {
@@ -51,6 +56,11 @@

     /**
      * The endpointURI is the SOAP bound address defined for this port.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get endpointURI():String
     {
@@ -64,6 +74,11 @@

     /**
      * The unique name of this port.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get name():String
     {
@@ -72,6 +87,11 @@

     /**
      * The WSDL service to which this port belongs.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get service():WSDLService
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 6919
Author:   smgilson@adobe.com
Date:     2009-05-14T18:09:59.289095Z

Log Message:
-----------
Update ASdoc for 3D effects

QE Notes: None
Doc Notes: None
Bugs: -
Checkintests: passed

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Move3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Scale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Rotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>

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

--- frameworks/projects/spark/src/spark/effects/Move.as
+++ frameworks/projects/spark/src/spark/effects/Move.as
@@ -19,10 +19,9 @@

 /**
  *  The Move effect move the target object
- *  in the x and y directions. An important difference between the Move
- *  effect and the Move effect is that the x and y property specifications
- *  for Move specify not absolute values of the x and y coordinates on the target,
- *  but rather the change in x and y that should occur to the transform center around
+ *  in the x and y directions.
+ *  The x and y property specifications of the Move effect specify
+ *  the change in x and y that should occur to the transform center around
  *  which the overall transform occurs.
  *  If, for example, the
  *  autoCenterTransform property is set, then the from/to/by values
@@ -87,7 +86,16 @@
     //----------------------------------
     [Inspectable(category="General")]
     /**
-     * whether or not this effect should animate the target directly or its post layout transform offsets.
+     *  Specifies whether the parent container of the effect target
+     *  updates its layout based on changes to the effect target
+     *  while the effect plays.
+     *
+     *  @default true
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public var affectLayout:Boolean = true;

@@ -231,7 +239,7 @@
         }
         else
         {
-        	addPostLayoutMotionPath("postLayoutTranslationX", xFrom, xTo, xBy);
+            addPostLayoutMotionPath("postLayoutTranslationX", xFrom, xTo, xBy);
             addPostLayoutMotionPath("postLayoutTranslationY", yFrom, yTo, yBy);
         }
         super.initInstance(instance);


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 31
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-18T22:53:44.445926Z

Log Message:
-----------
Perforce Change 191386 by rfrishbe@ryan on 2007/12/18 17:52:29 AIR Dependency Issues. Mostly just changing types from concrete classes to interfaces. Also removing some unused private methods in Window/WindowedApplication. Bugs: SDK-14028 QA: Yes Doc: No Review: Alex

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/windowClasses/StatusBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>

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

--- frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as
+++ frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as
@@ -14,17 +14,15 @@

 import flash.events.KeyboardEvent;
 import flash.filesystem.File;
-import mx.controls.DataGrid;
+
 import mx.controls.dataGridClasses.DataGridColumn;
 import mx.controls.fileSystemClasses.FileSystemControlHelper;
 import mx.core.ClassFactory;
+import mx.core.IUITextField;
+import mx.core.ScrollPolicy;
 import mx.core.mx_internal;
-import mx.core.ScrollPolicy;
 import mx.events.ListEvent;
 import mx.formatters.DateFormatter;
-import mx.styles.CSSStyleDeclaration;
-import mx.styles.StyleManager;
-import mx.utils.DirectoryEnumeration;

 use namespace mx_internal;

@@ -1433,6 +1431,7 @@
 import mx.core.UIComponent;
 import mx.core.UITextField;
 import mx.events.FlexEvent;
+import mx.core.IUITextField;

 ////////////////////////////////////////////////////////////////////////////////
 //
@@ -1595,9 +1594,9 @@
     //----------------------------------

     /**
-     *  The internal UITextField that displays the text in this renderer.
-     */
-    protected var label:UITextField;
+     *  The internal IUITextField that displays the text in this renderer.
+     */
+    protected var label:IUITextField;

     //----------------------------------
     //  listData
@@ -1647,9 +1646,9 @@

         if (!label)
         {
-            label = UITextField(createInFontContext(UITextField));
+            label = IUITextField(createInFontContext(UITextField));
             label.styleName = this;
-            addChild(label);
+            addChild(DisplayObject(label));
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 21765
Author:   aaltman@adobe.com
Date:     2011-08-02T00:58:57.293820Z

Log Message:
-----------
StageText fixes:
Make sure prompt text styles get committed.
Remove text height adjustment that causes text to appear too low on iOS.
Forward new key down and key up events from StageText.
Use new key down event to correctly dispatch an ENTER event.
Place cursor after programmatically inserted/appended text.
Cleaned up and fixed workaround code that stops StageText from accepting typed text.

QE notes: None
Doc notes: None
Bugs: SDK-30728, SDK-30793, SDK-30806, SDK-30868, SDK-30925
Reviewer: cframpto
Tests run: checkintests, mustella-mobile
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as
@@ -12,6 +12,7 @@
 package spark.skins.mobile
 {
 import spark.components.TextInput;
+import spark.components.supportClasses.StyleableTextField;
 import spark.skins.mobile.supportClasses.StageTextSkinBase;

 /**
@@ -83,17 +84,18 @@
         var textHeight:Number = getElementPreferredHeight(textDisplay);
         var textY:Number = Math.round(0.5 * (unscaledTextHeight - textHeight)) + paddingTop;

-        var adjustedTextHeight:Number = textHeight + paddingBottom;
-
         if (textDisplay)
         {
             textDisplay.commitStyles();
-            setElementSize(textDisplay, unscaledTextWidth, adjustedTextHeight);
+            setElementSize(textDisplay, unscaledTextWidth, unscaledTextHeight);
             setElementPosition(textDisplay, paddingLeft, textY);
         }

         if (promptDisplay)
         {
+            if (promptDisplay is StyleableTextField)
+                StyleableTextField(promptDisplay).commitStyles();
+
             var promptHeight:Number = getElementPreferredHeight(promptDisplay);
             var promptY:Number = Math.round(0.5 * (unscaledTextHeight - promptHeight)) + paddingTop;


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

--- frameworks/projects/mx/src/mx/effects/effectClasses/AddItemActionInstance.as
+++ frameworks/projects/mx/src/mx/effects/effectClasses/AddItemActionInstance.as
@@ -0,0 +1,77 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.effects.effectClasses
+{
+
+import flash.events.Event;
+import mx.core.mx_internal;
+import mx.controls.listClasses.ListBase;
+import mx.effects.IEffectTargetHost;
+
+/**
+ *  The AddItemActionInstance class implements the instance class
+ *  for the AddItemAction effect.
+ *  Flex creates an instance of this class when it plays a AddItemAction
+ *  effect; you do not create one yourself.
+ *
+ *  @see mx.effects.AddItemAction
+ */
+public class AddItemActionInstance extends ActionEffectInstance
+{
+    include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @param target The Object to animate with this effect.
+     */
+    public function AddItemActionInstance(target:Object)
+    {
+        super(target);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override public function initEffect(event:Event):void
+    {
+        super.initEffect(event);
+    }
+
+    /**
+     *  @private
+     */
+    override public function play():void
+    {
+        // Dispatch an effectStart event from the target.
+        super.play();
+
+        effectTargetHost.addDataEffectItem(target);
+
+        // We're done...
+        finishRepeat();
+    }
+}
+
+}


Friendlier toString() for Notice and Error messages.

--- driver/src/main/flex/org/postgresql/febe/message/ResponseMessageBase.as
+++ driver/src/main/flex/org/postgresql/febe/message/ResponseMessageBase.as
@@ -1,5 +1,6 @@
 package org.postgresql.febe.message {

+    import org.postgresql.NoticeFields;
     import org.postgresql.febe.message.AbstractMessage;
     import org.postgresql.febe.message.IBEMessage;
     import org.postgresql.io.ICDataInput;
@@ -17,5 +18,13 @@
             }
         }

+        public function toString():String {
+            var items:Array = [];
+            for (var key:String in fields) {
+                items.push(NoticeFields.describe(key) + ': ' + fields[key]);
+            }
+            return super.toString() + '[' + items.join(', ') + ']';
+        }
+
     }
 }


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

--- frameworks/projects/charts/src/mx/charts/chartClasses/HLOCSeriesBase.as
+++ frameworks/projects/charts/src/mx/charts/chartClasses/HLOCSeriesBase.as
@@ -0,0 +1,1477 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.charts.chartClasses
+{
+
+import flash.display.Graphics;
+import flash.geom.Rectangle;
+import mx.charts.DateTimeAxis;
+import mx.charts.HitData;
+import mx.charts.series.items.HLOCSeriesItem;
+import mx.charts.series.renderData.HLOCSeriesRenderData;
+import mx.collections.CursorBookmark;
+import mx.core.IDataRenderer;
+import mx.core.IFactory;
+import mx.core.IFlexDisplayObject;
+import mx.core.mx_internal;
+import mx.graphics.IStroke;
+import mx.styles.ISimpleStyleClient;
+import mx.resources.IResourceManager;
+import mx.charts.series.CandlestickSeries;
+import flash.geom.Point;
+import mx.charts.chartClasses.IAxis;
+
+use namespace mx_internal;
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+include "../styles/metadata/ItemRendererStyles.as"
+
+[ResourceBundle("charts")]
+
+/**
+ *  HLOCSeriesBase is the base class for the two financial series types,
+ *  HLOCSeries and CandlestickSeries.
+ *  Most of the behavior related to charting open, close, high and low values
+ *  resides in this class.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class HLOCSeriesBase extends Series implements IColumn
+{
+    include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function HLOCSeriesBase()
+    {
+        super();
+
+        _instanceCache = new InstanceCache(null, this);
+        _instanceCache.properties = { styleName: this };
+
+        dataTransform = new CartesianTransform();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private var _instanceCache:InstanceCache;
+
+    /**
+     *  @private
+     */
+    mx_internal var _renderData:HLOCSeriesRenderData;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  closeField
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the closeField property.
+     */
+    private var _closeField:String = "";
+
+    [Inspectable(category="General")]
+
+    /**
+     *  Specifies the field of the data provider that determines
+     *  the y-axis location of the closing value of the element.
+     *
+     *  @default ""
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get closeField():String
+    {
+        return _closeField;
+    }
+
+    /**
+     *  @private
+     */
+    public function set closeField(value:String):void
+    {
+        _closeField = value;
+
+        dataChanged();
+    }
+
+    //----------------------------------
+    //  columnWidthRatio
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the columnWidthRatio property.
+     */
+    private var _columnWidthRatio:Number = 0.65;
+
+    [Inspectable(category="General", defaultValue="0.65")]
+
+    /**
+     *  Specifies the width of elements relative to the category width.
+     *  A value of 1 uses the entire space, while a value
+     *  of 0.6 uses 60% of the element's available space.
+     *  You typically do not set this property directly.
+     *  The actual element width used is the smaller of the
+     *  columnWidthRatio and maxColumnWidth
+     *  properties.
+     *
+     *  @default 0.65.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get columnWidthRatio():Number
+    {
+        return _columnWidthRatio;
+    }
+
+    /**
+     *  @private
+     */
+    public function set columnWidthRatio(value:Number):void
+    {
+        _columnWidthRatio = value;
+
+        invalidateTransform();
+    }
+
+    //----------------------------------
+    //  highField
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the highField property.
+     */
+    private var _highField:String = "";
+
+    [Inspectable(category="General")]
+
+    /**
+     *  Specifies the field of the data provider that determines
+     *  the y-axis location of the high value of the element.
+     *
+     *  @default ""
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get highField():String
+    {
+        return _highField;
+    }
+
+    /**
+     *  @private
+     */
+    public function set highField(value:String):void
+    {
+        _highField = value;
+
+        dataChanged();
+    }
+
+    //----------------------------------
+    //  horizontalAxis
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the horizontalAxis property.
+     */
+    private var _horizontalAxis:IAxis;
+
+    [Inspectable(category="Data")]
+
+    /**
+     *  Defines the labels, tick marks, and data position
+     *  for items on the x-axis.
+     *  Use either the LinearAxis class or the CategoryAxis class
+     *  to set the properties of the horizontalAxis as a child tag in MXML
+     *  or create a LinearAxis or CategoryAxis object in ActionScript.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get horizontalAxis():IAxis
+    {
+        return _horizontalAxis;
+    }
+
+    /**
+     *  @private
+     */
+    public function set horizontalAxis(value:IAxis):void
+    {
+        _horizontalAxis = value;
+        _bAxesDirty = true;
+
+        invalidateData();
+        invalidateProperties();
+    }
+
+    //----------------------------------
+    //  items
+    //----------------------------------
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function get items():Array /* of HLOCSeriesItem */
+    {
+        return _renderData ? _renderData.filteredCache : null;
+    }
+
+    //----------------------------------
+    //  itemType
+    //----------------------------------
+
+    /**
+     *  The subtype of ChartItem used by this series
+     *  to represent individual items.
+     *  Subclasses can override and return a more specialized class
+     *  if they need to store additional information in the items.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    protected function get itemType():Class
+    {
+        return HLOCSeriesItem;
+    }
+
+    //----------------------------------
+    //  lowField
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the lowField property.
+     */
+    private var _lowField:String = "";
+
+    [Inspectable(category="General")]
+
+    /**
+     *  Specifies the field of the data provider that determines
+     *  the y-axis location of the low value of the element.
+     *
+     *  @default ""
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get lowField():String
+    {
+        return _lowField;
+    }
+
+    /**
+     *  @private
+     */
+    public function set lowField(value:String):void
+    {
+        _lowField = value;
+
+        dataChanged();
+    }
+
+    //----------------------------------
+    //  maxColumnWidth
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the maxColumnWidth property.
+     */
+    private var _maxColumnWidth:Number;
+
+    [Inspectable(category="General")]
+
+    /**
+     *  Specifies the width of the elements, in pixels.
+     *  The actual element width used is the smaller of this style
+     *  and the columnWidthRatio property.
+     *  You typically do not set this value directly;
+     *  it is assigned by the enclosing chart.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get maxColumnWidth():Number
+    {
+        return _maxColumnWidth;
+    }
+
+    /**
+     *  @private
+     */
+    public function set maxColumnWidth(value:Number):void
+    {
+        _maxColumnWidth = value;
+
+        invalidateTransform();
+    }
+
+    //----------------------------------
+    //  offset
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the offset property.
+     */
+    private var _offset:Number = 0;
+
+    [Inspectable(category="General", defaultValue="0")]
+
+    /**
+     *  Specifies how far to offset the center of the elements
+     *  from the center of the available space,
+     *  relative to the category width.
+     *  At the value of default 0,
+     *  the elements are centered on the space.
+     *  Set to -50 to center the element
+     *  at the beginning of the available space.
+     *  You typically do not set this property directly.
+     *  The enclosing chart control manages this value based on
+     *  the value of its columnWidthRatio property.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get offset():Number
+    {
+        return _offset;
+    }
+
+    /**
+     *  @private
+     */
+    public function set offset(value:Number):void
+    {
+        _offset = value;
+
+        invalidateTransform();
+    }
+
+    //----------------------------------
+    //  openField
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the openField property.
+     */
+    mx_internal var _openField:String = "";
+
+    [Inspectable(category="General")]
+
+    /**
+     *  Specifies the field of the data provider that determines
+     *  the y-axis location of the opening value of the element.
+     *
+     *  @default ""
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get openField():String
+    {
+        return _openField;
+    }
+
+    /**
+     *  @private
+     */
+    public function set openField(value:String):void
+    {
+        _openField = value;
+
+        dataChanged();
+    }
+
+    //----------------------------------
+    //  renderDataType
+    //----------------------------------
+
+    /**
+     *  The subtype of ChartRenderData used by this series
+     *  to store all data necessary to render.
+     *  Subclasses can override and return a more specialized class
+     *  if they need to store additional information for rendering.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    protected function get renderDataType():Class
+    {
+        return HLOCSeriesRenderData;
+    }
+
+        private var _bAxesDirty:Boolean = false;
+
+    //----------------------------------
+    //  verticalAxis
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the verticalAxis property.
+     */
+    private var _verticalAxis:IAxis;
+
+    [Inspectable(category="Data")]
+
+    /**
+     *  Defines the labels, tick marks, and data position
+     *  for items on the y-axis.
+     *  Use either the LinearAxis class or the CategoryAxis class
+     *  to set the properties of the horizontalAxis as a child tag in MXML
+     *  or create a LinearAxis or CategoryAxis object in ActionScript.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get verticalAxis():IAxis
+    {
+        return _verticalAxis;
+    }
+
+    /**
+     *  @private
+     */
+    public function set verticalAxis(value:IAxis):void
+    {
+        _verticalAxis = value;
+        _bAxesDirty = true;
+
+        invalidateData();
+        //invalidateChildOrder();
+        invalidateProperties();
+    }
+
+    //----------------------------------
+    //  xField
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the xField property.
+     */
+    private var _xField:String = "";
+
+    [Inspectable(category="General")]
+
+    /**
+     *  Specifies the field of the data provider that determines
+     *  the x-axis location of the element.
+     *  If set to the empty string (""),
+     *  Flex renders the columns in the order they appear in the dataProvider.
+     *
+     *  @default ""
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get xField():String
+    {
+        return _xField;
+    }
+
+    /**
+     *  @private
+     */
+    public function set xField(value:String):void
+    {
+        _xField = value;
+
+        dataChanged();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: Series
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function updateData():void
+    {
+        var renderDataType:Class = this.renderDataType;
+        _renderData = new renderDataType();
+
+        _renderData.cache = [];
+        var i:int = 0;
+        var itemClass:Class = itemType;
+
+        if (cursor)
+        {
+            cursor.seek(CursorBookmark.FIRST);
+            while (!cursor.afterLast)
+            {
+                _renderData.cache[i] = new itemClass(this, cursor.current, i);
+                i++;
+                cursor.moveNext();
+            }
+        }
+
+        cacheIndexValues(_xField, _renderData.cache, "xValue");
+
+        cacheDefaultValues(_highField, _renderData.cache, "highValue");
+
+        cacheNamedValues(_lowField, _renderData.cache,
+        "lowValue");
+        if (_openField != "")
+            cacheNamedValues(_openField, _renderData.cache, "openValue");
+
+        cacheNamedValues(_closeField, _renderData.cache, "closeValue");
+		if(dataTransform && dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS) is NumericAxis &&
+			!(dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS) is DateTimeAxis) &&
+        	(dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS) as NumericAxis).direction == "inverted")
+        	_renderData.cache = reverseYValues(_renderData.cache);
+        if(dataTransform && dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS) is NumericAxis &&
+        	!(dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS) is DateTimeAxis) &&
+        	(dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS) as NumericAxis).direction == "inverted")
+        	_renderData.cache = reverseXValues(_renderData.cache);
+        super.updateData();
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function updateMapping():void
+    {
+        dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS).
+            mapCache(_renderData.cache, "xValue", "xNumber", _xField == "");
+
+        var yAxis:IAxis = dataTransform.getAxis(
+                            CartesianTransform.VERTICAL_AXIS);
+
+        yAxis.mapCache(_renderData.cache, "lowValue", "lowNumber");
+
+        yAxis.mapCache(_renderData.cache, "highValue", "highNumber");
+
+        if (_openField != "")
+            yAxis.mapCache(_renderData.cache, "openValue", "openNumber");
+
+        yAxis.mapCache(_renderData.cache, "closeValue", "closeNumber");
+
+        super.updateMapping();
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function updateFilter():void
+    {
+        _renderData.filteredCache = filterFunction(_renderData.cache);
+        super.updateFilter();
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function updateTransform():void
+    {
+        dataTransform.transformCache(_renderData.filteredCache,
+                                     "xNumber", "x", "highNumber", "high");
+
+        dataTransform.transformCache(_renderData.filteredCache,
+                                     null, null, "highNumber", "high");
+
+        dataTransform.transformCache(_renderData.filteredCache,
+                                     null, null, "lowNumber", "low");
+
+        if (_openField != "")
+        {
+            dataTransform.transformCache(_renderData.filteredCache,
+                                         null, null, "openNumber", "open");
+        }
+
+        dataTransform.transformCache(_renderData.filteredCache,
+                                     null, null, "closeNumber", "close");
+
+        var unitSize:Number = dataTransform.getAxis(
+                                CartesianTransform.HORIZONTAL_AXIS).unitSize
+
+        var params:Array /* of Object */ =
+        [
+            { xNumber: 0 },
+            { xNumber: _columnWidthRatio * unitSize / 2 },
+            { xNumber: _offset * unitSize }
+        ];
+
+        dataTransform.transformCache(params, "xNumber", "x", null, null);
+
+        _renderData.renderedHalfWidth = params[1].x -  params[0].x;
+
+        if (_offset == 0)
+            _renderData.renderedXOffset = 0;
+        else
+            _renderData.renderedXOffset = params[2].x -  params[0].x;
+
+        if (!isNaN(_maxColumnWidth) &&
+            _maxColumnWidth < _renderData.renderedHalfWidth)
+        {
+            _renderData.renderedXOffset *= _maxColumnWidth /
+                                           _renderData.renderedHalfWidth;
+
+            _renderData.renderedHalfWidth = _maxColumnWidth;
+        }
+
+        super.updateTransform();
+        allSeriesTransform = true;
+
+        if (chart && chart is CartesianChart)
+        {
+            var cChart:CartesianChart = CartesianChart(chart);
+            var n:int = cChart.series.length;
+
+
+            for (var i:int = 0; i < n; i++)
+            {
+                if (cChart.getSeriesTransformState(cChart.series[i]))
+                    allSeriesTransform = false;
+            }
+
+         	n = cChart.secondSeries.length;
+            for (i = 0; i < n; i++)
+            {
+                if (cChart.getSeriesTransformState(cChart.secondSeries[i]))
+                    allSeriesTransform = false;
+            }
+            if (allSeriesTransform)
+                cChart.measureLabels();
+        }
+    }
+
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function commitProperties():void
+    {
+        super.commitProperties();
+
+        if (dataTransform)
+        {
+            if (_horizontalAxis)
+            {
+                _horizontalAxis.chartDataProvider = dataProvider;
+                CartesianTransform(dataTransform).setAxis(
+                    CartesianTransform.HORIZONTAL_AXIS,_horizontalAxis);
+            }
+
+            if (_verticalAxis)
+            {
+                _verticalAxis.chartDataProvider = dataProvider;
+                CartesianTransform(dataTransform).setAxis(
+                    CartesianTransform.VERTICAL_AXIS, _verticalAxis);
+            }
+        }
+
+        var c:CartesianChart = CartesianChart(chart);
+        if (c)
+        {
+            if (!_horizontalAxis)
+            {
+                if (c.secondSeries.indexOf(this) != -1 && c.secondHorizontalAxis)
+                {
+                    if (dataTransform.axes[CartesianTransform.HORIZONTAL_AXIS] != c.secondHorizontalAxis)
+                        CartesianTransform(dataTransform).setAxis(
+                            CartesianTransform.HORIZONTAL_AXIS,c.secondHorizontalAxis);
+                }
+                else if (dataTransform.axes[CartesianTransform.HORIZONTAL_AXIS] != c.horizontalAxis)
+                        CartesianTransform(dataTransform).setAxis(
+                            CartesianTransform.HORIZONTAL_AXIS,c.horizontalAxis);
+            }
+
+            if (!_verticalAxis)
+            {
+                if (c.secondSeries.indexOf(this) != -1 && c.secondVerticalAxis)
+                {
+                    if (dataTransform.axes[CartesianTransform.VERTICAL_AXIS] != c.secondVerticalAxis)
+                        CartesianTransform(dataTransform).setAxis(
+                            CartesianTransform.VERTICAL_AXIS,c.secondVerticalAxis);
+                }
+                else if (dataTransform.axes[CartesianTransform.VERTICAL_AXIS] != c.verticalAxis)
+                        CartesianTransform(dataTransform).setAxis(
+                            CartesianTransform.VERTICAL_AXIS, c.verticalAxis);
+            }
+        }
+        dataTransform.elements = [this];
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function updateDisplayList(unscaledWidth:Number,
+                                                  unscaledHeight:Number):void
+    {
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+        if (!dataTransform)
+            return;
+
+        var g:Graphics = graphics;
+        g.clear();
+
+        if (!isNaN(_maxColumnWidth) &&
+            (_maxColumnWidth <= 0 || _columnWidthRatio <= 0))
+        {
+            return;
+        }
+
+        var renderData:HLOCSeriesRenderData =
+            transitionRenderData == null ?
+            _renderData :
+            HLOCSeriesRenderData(transitionRenderData);
+
+        var renderCache:Array /* of HLOCSeriesItem */ = renderData.filteredCache;
+
+        var i:int;
+        var sampleCount:int = renderCache.length;
+        var rc:Rectangle;
+        var instances:Array /* of IFlexDisplayObject */;
+        var inst:IFlexDisplayObject;
+        var v:HLOCSeriesItem;
+
+        _instanceCache.factory = getStyle("itemRenderer");
+        _instanceCache.count = sampleCount;
+        instances = _instanceCache.instances;
+
+        var bSetData:Boolean = sampleCount > 0 &&
+                               (instances[0] is IDataRenderer);
+
+        if (transitionRenderData &&
+            transitionRenderData.elementBounds)
+        {
+            var elementBounds:Array /* of Rectangle */ = transitionRenderData.elementBounds;
+
+            for (i = 0; i < sampleCount; i++)
+            {
+                inst = instances[i];
+
+                v = renderCache[i];
+                v.itemRenderer = inst;
+                if (this is CandlestickSeries)
+                {
+                    v.fill = CandlestickSeries(this).fillFunction(v,i);
+                    if (!(v.fill))
+                        v.fill = CandlestickSeries(this).defaultFillFunction(v,i);
+                    if ((v.itemRenderer as Object).hasOwnProperty('invalidateDisplayList'))
+                        (v.itemRenderer as Object).invalidateDisplayList();
+                }
+                if (bSetData)
+                    (inst as IDataRenderer).data = v;
+
+                rc = elementBounds[i];
+                inst.move(rc.left, rc.top);
+                inst.setActualSize(rc.width, rc.height);
+            }
+        }
+        else
+        {
+            var ro:Number = renderData.renderedHalfWidth +
+                            renderData.renderedXOffset;
+
+            var lo:Number = -renderData.renderedHalfWidth +
+                            renderData.renderedXOffset;
+
+            rc = new Rectangle();
+            var considerOpen:Boolean = _openField != "";
+
+            for (i = 0; i < sampleCount; i++)
+            {
+                v = renderCache[i];
+
+                rc.left = v.x + lo;
+                rc.right = v.x + ro;
+                rc.top = Math.min(v.high,Math.min(v.low,v.close));
+                if (considerOpen)
+                    rc.top = Math.min(rc.top,v.open);
+                rc.bottom = Math.max(v.high,Math.max(v.low,v.close));
+                if (considerOpen)
+                    rc.bottom = Math.max(rc.bottom,v.close);
+
+                inst = instances[i];
+                v.itemRenderer = inst;
+                if (this is CandlestickSeries)
+                {
+                    v.fill = CandlestickSeries(this).fillFunction(v,i);
+                    if (!(v.fill))
+                        v.fill = CandlestickSeries(this).defaultFillFunction(v,i);
+                    if ((v.itemRenderer as Object).hasOwnProperty('invalidateDisplayList'))
+                        (v.itemRenderer as Object).invalidateDisplayList();
+                }
+                if (bSetData)
+                    (inst as IDataRenderer).data = v
+                inst.move(rc.left,rc.top);
+                inst.setActualSize(rc.width,rc.height);
+            }
+            if (chart && allSeriesTransform && chart.chartState == 0)
+                chart.updateAllDataTips();
+        }
+
+    }
+
+    /**
+     *  @private
+     */
+    override public function dataToLocal(... dataValues):Point
+    {
+        var data:Object = {};
+        var da:Array /* of Object */ = [ data ];
+        var n:int = dataValues.length;
+
+        if (n > 0)
+        {
+            data["d0"] = dataValues[0];
+            dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS).
+                mapCache(da, "d0", "v0");
+        }
+
+        if (n > 1)
+        {
+            data["d1"] = dataValues[1];
+            dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS).
+                mapCache(da, "d1", "v1");
+        }
+
+        dataTransform.transformCache(da,"v0","s0","v1","s1");
+
+        return new Point(data.s0 + this.x,
+                         data.s1 + this.y);
+    }
+
+    /**
+     *  @private
+     */
+    override public function localToData(v:Point):Array /* of Object */
+    {
+        var values:Array /* of Object */ = dataTransform.invertTransform(
+                                            v.x - this.x,
+                                            v.y - this.y);
+        return values;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+
+    override public function getItemsInRegion(r:Rectangle):Array /* of HLOCSeriesItem */
+    {
+        if (interactive == false || !_renderData)
+            return [];
+
+        var arrItems:Array /* of HLOCSeriesItem */ = [];
+        var rc:Rectangle = new Rectangle();
+        var localRectangle:Rectangle = new Rectangle();
+        var n:uint = _renderData.filteredCache.length;
+        var considerOpen:Boolean = _openField != "";
+
+        localRectangle.topLeft = globalToLocal(r.topLeft);
+        localRectangle.bottomRight = globalToLocal(r.bottomRight);
+
+        for (var i:int=0; i < n; i++)
+        {
+            var v:HLOCSeriesItem = _renderData.filteredCache[i];
+
+            var ro:Number = renderData.renderedHalfWidth + renderData.renderedXOffset;
+            var lo:Number = -renderData.renderedHalfWidth + renderData.renderedXOffset;
+
+            rc.left = v.x + lo;
+            rc.right = v.x + ro;
+            rc.top = Math.min(v.high,Math.min(v.low,v.close));
+            if (considerOpen)
+                rc.top = Math.min(rc.top,v.open);
+            rc.bottom = Math.max(v.high,Math.max(v.low,v.close));
+            if (considerOpen)
+                rc.bottom = Math.max(rc.bottom,v.close);
+
+            // Handle cases when width and height are -ve.
+            if (rc.right < rc.left || rc.bottom < rc.top)
+            {
+                var rcTemp:Rectangle = new Rectangle(rc.x,rc.y,rc.width,rc.height);
+                if (rc.right < rc.left)
+                {
+                    rcTemp.left = rc.right;
+                    rcTemp.right = rc.left;
+                }
+                if (rc.bottom < rc.top)
+                {
+                    rcTemp.top = rc.bottom;
+                    rcTemp.bottom = rc.top;
+                }
+                rc = rcTemp;
+            }
+            if (rc.intersects(localRectangle))
+                arrItems.push(v);
+        }
+        return arrItems;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function describeData(dimension:String,
+                                          requiredFields:uint):Array /* of DataDescription */
+    {
+        validateData();
+
+        if (_renderData.cache.length == 0)
+            return [];
+
+        var description:DataDescription = new DataDescription();
+        description.boundedValues = null;
+
+        if (dimension == CartesianTransform.VERTICAL_AXIS)
+        {
+            extractMinMax(_renderData.cache, "highNumber", description);
+            extractMinMax(_renderData.cache, "lowNumber", description);
+        }
+        else if (dimension == CartesianTransform.HORIZONTAL_AXIS)
+        {
+            if (_xField != "")
+            {
+                if ((requiredFields &
+                     DataDescription.REQUIRED_MIN_INTERVAL) != 0)
+                {
+                    // If we need to know the min interval,
+                    // then we rely on the cache being in order.
+                    // So we need to sort it if it hasn't already been sorted.
+                    var sortedCache:Array /* of HLOCSeriesItem */ = _renderData.cache.concat();
+                    sortedCache.sortOn("xNumber", Array.NUMERIC);
+                    extractMinMax(sortedCache, "xNumber", description,
+                                  (requiredFields &
+                                   DataDescription.REQUIRED_MIN_INTERVAL) != 0);
+                }
+                else
+                {
+                    extractMinMax(_renderData.cache, "xNumber", description,
+                                  (requiredFields &
+                                   DataDescription.REQUIRED_MIN_INTERVAL) != 0);
+                }
+            }
+            else
+            {
+                description.min = _renderData.cache[0].xNumber;
+                description.max =
+                    _renderData.cache[_renderData.cache.length - 1].xNumber;
+                if ((requiredFields &
+                     DataDescription.REQUIRED_MIN_INTERVAL) != 0)
+                {
+                    extractMinInterval(_renderData.cache, "xNumber",
+                                       description);
+                }
+            }
+
+            description.padding = 0.5;
+        }
+        else
+        {
+            return [];
+        }
+
+        return [ description ];
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function get legendData():Array /* of LegendData */
+    {
+        var ld:LegendData = new LegendData();
+        var marker:IFlexDisplayObject;
+
+        ld.element = this;
+
+        var markerClass:IFactory = getStyle("legendMarkerRenderer");
+        if (!markerClass)
+            markerClass = getStyle("itemRenderer");
+
+        if (markerClass)
+        {
+            marker = markerClass.newInstance();
+            if (marker as ISimpleStyleClient)
+                (marker as ISimpleStyleClient).styleName = this;
+        }
+
+        ld.marker = marker;
+        ld.label = displayName;
+
+        return [ ld ];
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function styleChanged(styleProp:String):void
+    {
+        super.styleChanged(styleProp);
+
+        var styles:String = "stroke fill";
+        if (styleProp == null ||
+            styleProp == "" ||
+            styles.indexOf(styleProp) != -1)
+        {
+            invalidateDisplayList();
+            legendDataChanged();
+        }
+        if (styleProp == "itemRenderer")
+        {
+            _instanceCache.remove = true;
+            _instanceCache.discard = true;
+            _instanceCache.count = 0;
+            _instanceCache.discard = false;
+        	_instanceCache.remove = false;
+        }
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function get renderData():Object
+    {
+        if (!_renderData)
+        {
+            var renderDataType:Class = this.renderDataType;
+            var rv:HLOCSeriesRenderData = new renderDataType();
+
+            rv.cache = rv.filteredCache = [];
+            rv.renderedHalfWidth = 0;
+            rv.renderedXOffset = 0;
+
+            return rv;
+        }
+
+        return _renderData;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function beginInterpolation(sourceRenderData:Object,
+                                                destRenderData:Object):Object
+    {
+        var interpFields:Object =
+            { x: true, high: true, low: true, close: true };
+
+        if (_openField != "")
+            interpFields.open = true;
+
+        var idata:Object = initializeInterpolationData(
+            sourceRenderData.cache, destRenderData.cache,
+            interpFields, itemType,
+            { sourceRenderData: sourceRenderData,
+              destRenderData: destRenderData });
+
+        var interpolationRenderData:HLOCSeriesRenderData =
+            HLOCSeriesRenderData(destRenderData.clone());
+
+        interpolationRenderData.cache = idata.cache;
+        interpolationRenderData.filteredCache = idata.cache;
+
+        transitionRenderData = interpolationRenderData;
+
+        return idata;
+    }
+
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override protected function getMissingInterpolationValues(
+                                    sourceProps:Object, srcCache:Array /* of HLOCSeriesItem */,
+                                    destProps:Object, destCache:Array /* of HLOCSeriesItem */,
+                                    index:Number, customData:Object):void
+    {
+        for (var p:String in sourceProps)
+        {
+            var src:Number = sourceProps[p];
+            var dst:Number = destProps[p];
+
+            if (p == "high" || p == "low" ||
+                p == "open" || p == "close")
+            {
+                if (isNaN(src))
+                    src = unscaledHeight;
+                if (isNaN(dst))
+                    dst = unscaledHeight;
+            }
+            else if (p == "x")
+            {
+                if (isNaN(src))
+                    src = dst;
+                if (isNaN(dst))
+                    dst = src;
+            }
+
+            sourceProps[p] = src;
+            destProps[p] = dst;
+        }
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    override public function getElementBounds(renderData:Object):void
+    {
+        var cache :Array /* of HLOCSeriesItem */ = renderData.filteredCache;
+        var rb :Array /* of Rectangle */ = [];
+        var sampleCount:int = cache.length;
+
+        if (sampleCount)
+        {
+            var ro:Number = renderData.renderedHalfWidth +
+                            renderData.renderedXOffset;
+
+            var lo:Number = -renderData.renderedHalfWidth +
+                            renderData.renderedXOffset;
+
+            var v:HLOCSeriesItem = cache[0];
+            var maxBounds:Rectangle = new Rectangle(v.x, v.low, 0, 0);
+
+            for (var i:int = 0; i < sampleCount; i++)
+            {
+                v = cache[i];
+
+                var top:Number = Math.min(v.high, v.low);
+
+                var b:Rectangle = new Rectangle(
+                    v.x + lo, top, ro - lo, Math.max(v.high, v.low) - top);
+
+                maxBounds.left = Math.min(maxBounds.left, b.left);
+                maxBounds.top = Math.min(maxBounds.top, b.top);
+                maxBounds.right = Math.max(maxBounds.right, b.right);
+                maxBounds.bottom = Math.max(maxBounds.bottom, b.bottom);
+
+                rb[i] = b;
+            }
+        }
+        else
+        {
+            maxBounds = new Rectangle();
+        }
+
+        renderData.elementBounds = rb;
+        renderData.bounds =  maxBounds;
+    }
+
+    /**
+     * @private
+     */
+    override protected function defaultFilterFunction(cache:Array /*of HLOCSeriesItem */ ):Array /*of HLOCSeriesItem*/
+    {
+    	var filteredCache:Array /*of HLOCSeriesItem*/ = [];
+    	if (filterDataValues == "outsideRange")
+        {
+            filteredCache = cache.concat();
+
+            dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS).
+                filterCache(filteredCache, "xNumber", "xFilter");
+
+            var yAxis:IAxis = dataTransform.getAxis(
+                                CartesianTransform.VERTICAL_AXIS);
+
+            yAxis.filterCache(filteredCache,
+                              "lowNumber", "lowFilter");
+
+            yAxis.filterCache(filteredCache,
+                              "highNumber", "highFilter");
+
+            if (_openField != "")
+            {
+                yAxis.filterCache(filteredCache,
+                                  "openNumber", "openFilter");
+            }
+
+            yAxis.filterCache(filteredCache,
+                              "closeNumber", "closeFilter");
+
+            stripNaNs(filteredCache, "xFilter");
+
+            stripNaNs(filteredCache, "lowFilter");
+
+            stripNaNs(filteredCache, "highFilter");
+
+            if (_openField != "")
+                stripNaNs(filteredCache, "openFilter");
+
+            stripNaNs(filteredCache, "closeFilter");
+        }
+        else if (filterDataValues == "nulls")
+        {
+        	filteredCache = cache.concat();
+
+        	stripNaNs(filteredCache, "xNumber");
+
+            stripNaNs(filteredCache, "lowNumber");
+
+            stripNaNs(filteredCache, "highNumber");
+
+            if (_openField != "")
+                stripNaNs(filteredCache, "openNumber");
+
+            stripNaNs(filteredCache, "closeNumber");
+        }
+        else if (filterDataValues == "none")
+        {
+            filteredCache = cache;
+        }
+        return filteredCache;
+    }
+
+    //-------------------------------------------------------------------------------
+    //
+    // Methods
+    //
+    //-------------------------------------------------------------------------------
+    /**
+     *  Generates a text description of a ChartItem
+     *  suitable for display as a DataTip.
+     *
+     *  @param hd The HitData for the ChartItem.
+     *
+     *  @return The item's DataTip.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    protected function formatDataTip(hd:HitData):String
+    {
+        var openString:String = resourceManager.getString("charts", "open");
+        var closeString:String = resourceManager.getString("charts", "close");
+        var highString:String = resourceManager.getString("charts", "high");
+        var lowString:String = resourceManager.getString("charts", "low");
+
+        var dt:String = "";
+        var n:String = displayName;
+        if (n != null && n.length>0)
+            dt += "" + n + "
";
+
+        var xName:String = dataTransform.getAxis(
+            CartesianTransform.HORIZONTAL_AXIS).displayName;
+
+        if (xName != "")
+            dt += "" + xName + ": ";
+
+        dt += dataTransform.getAxis(CartesianTransform.HORIZONTAL_AXIS).
+              formatForScreen(HLOCSeriesItem(hd.chartItem).xValue) + "\n";
+
+        var yName:String = dataTransform.getAxis(
+            CartesianTransform.VERTICAL_AXIS).displayName;
+
+        if (_openField != "")
+        {
+            if (yName != "")
+                dt += "" + yName + " (" + openString + "): ";
+            else
+                dt += "" + openString + ": ";
+
+            dt += dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS).
+                  formatForScreen(HLOCSeriesItem(hd.chartItem).openValue) + "\n";
+        }
+
+        if (yName != "")
+            dt += "" + yName + " (" + closeString + "): ";
+        else
+            dt += "" + closeString + ": ";
+
+        dt += dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS).
+              formatForScreen(HLOCSeriesItem(hd.chartItem).closeValue) + "\n";
+
+        if (yName != "")
+            dt += "" + yName + " (" + highString + "): ";
+        else
+            dt += "" + highString + ": ";
+
+        dt += dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS).
+              formatForScreen(HLOCSeriesItem(hd.chartItem).highValue) + "\n";
+
+        if (yName != "")
+            dt += "" + yName + " (" + lowString + "): ";
+        else
+            dt += "" + lowString + ": ";
+
+        dt += dataTransform.getAxis(CartesianTransform.VERTICAL_AXIS).
+              formatForScreen(HLOCSeriesItem(hd.chartItem).lowValue) + "\n";
+
+        return dt;
+    }
+
+    private function reverseYValues(cache:Array):Array
+    {
+    	var i:int = 0;
+        var n:int = cache.length;
+        for(i = 0; i < n ; i++)
+        {
+        	cache[i]["highValue"] = -(cache[i]["highValue"]);
+        	cache[i]["lowValue"] = -(cache[i]["lowValue"]);
+        	if(_openField != "")
+        		cache[i]["openValue"] = -(cache[i]["openValue"]);
+        	cache[i]["closeValue"] = -(cache[i]["closeValue"]);
+        }
+    	return cache;
+    }
+
+     private function reverseXValues(cache:Array):Array
+    {
+    	var i:int = 0;
+        var n:int = cache.length;
+        for(i = 0; i < n ; i++)
+        {
+        	cache[i]["xValue"] = -(cache[i]["xValue"]);
+        }
+    	return cache;
+    }
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 19328
Author:   mhorn@adobe.com
Date:     2010-12-13T20:45:00.405533Z

Log Message:
-----------
ASDoc updates

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationAngledButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderDataTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationButtonSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as
@@ -59,6 +59,14 @@
     //
     //--------------------------------------------------------------------------

+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public function ActionBarSkin()
     {
         super();
@@ -166,6 +174,9 @@
     //
     //--------------------------------------------------------------------------

+    /**
+     *  @private
+     */
     override protected function createChildren():void
     {
         border = new borderClass();
@@ -210,6 +221,9 @@
         addChild(titleDisplay);
     }

+    /**
+     *  @private
+     */
     override protected function measure():void
     {
         var titleWidth:Number = 0;
@@ -246,6 +260,9 @@
             + (layoutBorderHeight * 2);
     }

+    /**
+     *  @private
+     */
     override protected function commitCurrentState():void
     {
         super.commitCurrentState();
@@ -258,6 +275,9 @@
         invalidateDisplayList();
     }

+    /**
+     *  @private
+     */
     override protected function updateDisplayList(unscaledWidth:Number,
                                                   unscaledHeight:Number):void
     {
@@ -460,6 +480,9 @@
         title = "";
     }

+    /**
+     *  @private
+     */
     override protected function createChildren():void
     {
         super.createChildren();
@@ -486,6 +509,9 @@
         addChild(titleDisplay);
     }

+    /**
+     *  @private
+     */
     override protected function commitProperties():void
     {
         super.commitProperties();
@@ -504,6 +530,9 @@
         }
     }

+    /**
+     *  @private
+     */
     override protected function measure():void
     {
         var textWidth:Number = 0;
@@ -536,7 +565,10 @@
         measuredHeight = textHeight;
     }

-    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+     /**
+     *  @private
+     */
+   override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
         super.updateDisplayList(unscaledWidth, unscaledHeight);