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

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


removed flexlib copyright header

removed flexlib copyright header

--- FlexUnit4UIListener/src/org/flexunit/flexui/controls/PromptingTextInput.as
+++ FlexUnit4UIListener/src/org/flexunit/flexui/controls/PromptingTextInput.as
@@ -1,26 +1,3 @@
-/*
-Copyright (c) 2007 FlexLib Contributors.  See:
-    http://code.google.com/p/flexlib/wiki/ProjectContributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
 package org.flexunit.flexui.controls
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 import mx.core.mx_internal;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.containers
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 10464
Author:   rfrishbe@adobe.com
Date:     2009-09-21T17:40:30.663638Z

Log Message:
-----------
Removing support in Flex framework for compatibility version < 3.  We won't support compatibility-version 2 or 2.01 anymore.  We only keep compatibility-version for one full release, so for Flex 4, we only support compatibility-version = 3.x.

This should reduce our code-size some as we no longer need this old code.  I didn't clean up the compiler's support for compatibility-versioning as it didn't seem worth the effort.

QE notes: -
Doc notes: -
Bugs: SDK-15360
Reviewer: Kevin
Tests run: checkintests, Joan ran all mustella tests
Is noteworthy for integration: Yes

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/skins/halo/HaloBorder.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/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/accordionClasses/AccordionHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/CanvasLayout.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/spark/src/mx/core/UITLFTextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/AccordionHeaderSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Alert.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NavBar.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/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/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeaderBase.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/styles/StyleProxy.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/containers/TabNavigator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DateChooserYearArrowSkin.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/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/menuClasses/MenuBarItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/PanelSkin.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/styles/StyleManagerImpl.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/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/scrollClasses/ScrollBar.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/controls/colorPickerClasses/SwatchPanel.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/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.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/controls/List.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/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/Flex.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/framework/src/mx/controls/sliderClasses/Slider.as</path>

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

--- frameworks/projects/mx/src/mx/controls/ColorPicker.as
+++ frameworks/projects/mx/src/mx/controls/ColorPicker.as
@@ -23,7 +23,6 @@
 import flash.utils.getTimer;
 import mx.controls.colorPickerClasses.SwatchPanel;
 import mx.controls.colorPickerClasses.WebSafePalette;
-import mx.core.FlexVersion;
 import mx.core.UIComponent;
 import mx.core.UIComponentGlobals;
 import mx.core.mx_internal;
@@ -1161,8 +1160,6 @@
             swatchPreview.styleName = new StyleProxy(this, swatchStyleFilters);
             swatchPreview.color = selectedColor;
             swatchPreview.name = "colorPickerSwatch";
-            if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
-                swatchPreview.setStyle("swatchBorderSize", 0);

             addChild(swatchPreview);
         }
@@ -1258,15 +1255,11 @@

         if (dropdownSwatch)
         {
-            // VERSION check
-            if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0)
+            if (styleProp == "swatchPanelStyleName")
             {
-                if (styleProp == "swatchPanelStyleName")
-                {
-                    var swatchPanelStyleName:Object = getStyle("swatchPanelStyleName");
-                    if (swatchPanelStyleName)
-                        dropdownSwatch.styleName = swatchPanelStyleName;
-                }
+                var swatchPanelStyleName:Object = getStyle("swatchPanelStyleName");
+                if (swatchPanelStyleName)
+                    dropdownSwatch.styleName = swatchPanelStyleName;
             }
             dropdownSwatch.styleChanged(styleProp);
         }
@@ -1339,8 +1332,6 @@
             var swatchPanelStyleName:Object = getStyle("swatchPanelStyleName");
             if (swatchPanelStyleName)
                 dropdownSwatch.styleName = swatchPanelStyleName;
-            else if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
-                dropdownSwatch.styleName = this;

             // Assign event handlers
             dropdownSwatch.addEventListener(ColorPickerEvent.ITEM_ROLL_OVER,


Transferred from the Adobe Open Source Subversion Repository

Revision: 8856
Author:   smgilson@adobe.com
Date:     2009-07-28T13:44:19.365479Z

Log Message:
-----------
- Fix broken ASDoc comment for inactive state in ScrollBar.as
- remove old hideChildrenTarget property from MXML syntax of Resize.as

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBar.as</path>

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

--- frameworks/projects/spark/src/spark/effects/Resize.as
+++ frameworks/projects/spark/src/spark/effects/Resize.as
@@ -46,7 +46,6 @@
  *    heightTo="val"
  *    widthBy="val"
  *    heightBy="val"
- *    hideChildrenTargets=""
  *  />
  *  </pre>
  *


Transferred from the Adobe Open Source Subversion Repository

Revision: 3411
Author:   egeorgie@adobe.com
Date:     2008-09-29T23:44:01.337941Z

Log Message:
-----------
* Change layout-related width/height, explicit width/height, measured width/height properties from post-scale to pre-transform. yay!
* Flex3 containers are updated to support the new behavior.
* Repeatedly scaling a component can differ from before, since we no longer accumulate rounding errors.
* The change is gated by a version flag, in compatibility mode these properties don't change.

Reviewed by Glenn, Ely

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/BoxLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Box.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/CanvasLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Tile.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/PostScaleAdapter.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/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/LayoutItemUIC.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>

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

--- frameworks/projects/mx/src/mx/containers/Box.as
+++ frameworks/projects/mx/src/mx/containers/Box.as
@@ -409,7 +409,7 @@
         var n:int = numChildren;
         for (var i:int = 0; i < n; i++)
         {
-            var child:IUIComponent = IUIComponent(getChildAt(i));
+            var child:IUIComponent = getLayoutChildAt(i);

             var size:Number = vertical ? child.height : child.width;
             var perc:Number = vertical ? child.percentHeight : child.percentWidth;


 - changed
 	- tomporay change of transition speed in DefaultTooltipRenderer, will be replaced soon by css transition

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

--- src/reprise/ui/renderers/DefaultTooltipRenderer.as
+++ src/reprise/ui/renderers/DefaultTooltipRenderer.as
@@ -79,7 +79,7 @@

 		protected function doShow(...rest) : void
 		{
-			opacity += .1;
+			opacity += .4;
 			if (opacity >= 1)
 			{
 				FrameCommandExecutor.instance().removeCommand(fadeIn);
@@ -91,7 +91,7 @@

 		protected function doHide(...rest) : void
 		{
-			opacity -= .1;
+			opacity -= .4;
 			if (opacity <= 0)
 			{
 				FrameCommandExecutor.instance().removeCommand(fadeOut);


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.collections
 {


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 4600
Author:   jszeto@adobe.com
Date:     2009-01-20T21:11:33.133710Z

Log Message:
-----------
Flex SDK - Move style metadata from base class down to component classes

Previously, all spark and text styles were defined on FxComponent even though not every component supports all of those styles. So I have moved each style to the top-most base class where the style will apply to all descendant classes of that base class.

This is the set of styles that were added to the various classes:

baseColor
color
focusColor
symbolColor
selectionColor
contentBackgroundColor
rollOverColor
alternatingItemColors
basic text styles
advanced text styles

Here are some details about the implementation:
- baseColor was added to FxComponent because every component and container supports it
- FxContainer and GroupBase are containers, so their children can potentially support any of the styles. Thus the container classes support all of the styles indirectly.
- FxDataContainer doesn't support all of the styles because its subclasses (FxButtonBar, FxList) don't support all styles.
- FxList supports selectionColor, but not inactiveSelectionColor or unfocusedSelectionColor. All other components that support selectionColor, support the other two styles, and thus include styles/metadata/SelectionFormatTextStyles.as
- GroupBase contains the style declarations that have the full ASDoc. All other declarations use the @copy keyword to reference the asdoc from GroupBase.

QE Notes: Update tests to remove references to styles that are no longer allowed on various components/FxButton.as
Doc Notes: Write the ASDoc comments for the style declarations in GroupBase
Bugs: n/a
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxNumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxCheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxTextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxRadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxTextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxSpinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
@@ -42,14 +42,70 @@
 //  Styles
 //--------------------------------------

-include "../../styles/metadata/BasicContainerFormatTextStyles.as"
+include "../../styles/metadata/AdvancedCharacterFormatTextStyles.as"
 include "../../styles/metadata/AdvancedContainerFormatTextStyles.as"
-include "../../styles/metadata/BasicParagraphFormatTextStyles.as"
 include "../../styles/metadata/AdvancedParagraphFormatTextStyles.as"
 include "../../styles/metadata/BasicCharacterFormatTextStyles.as"
-include "../../styles/metadata/AdvancedCharacterFormatTextStyles.as"
+include "../../styles/metadata/BasicContainerFormatTextStyles.as"
+include "../../styles/metadata/BasicParagraphFormatTextStyles.as"
 include "../../styles/metadata/SelectionFormatTextStyles.as"
-include "../../styles/metadata/SparkColorStyles.as"
+
+/**
+ *  @review
+ *
+ *  The colors to use for the backgrounds of the items in the list.
+ *  The value is an array of two or more colors.
+ *  The backgrounds of the list items alternate among the colors in the array.
+ *
+ *  @default undefined
+ */
+[Style(name="alternatingItemColors", type="Array", arrayType="uint", format="Color", inherit="yes")]
+
+/**
+ *  @review
+ *
+ *  The main color for a component.
+ *
+ *  @default 0xCCCCCC
+ */
+[Style(name="baseColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ *  @review
+ *
+ *  Color of the fill of an itemRenderer
+ *
+ *  @default 0xFFFFFF
+ */
+[Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ *  @review
+ *
+ *  Color of focus ring when the component is in focus
+ *
+ *  @default 0x70B2EE
+ */
+[Style(name="focusColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ *  @review
+ *
+ *  Color of the highlights when the mouse is over the component
+ *
+ *  @default 0xCEDBEF
+ */
+[Style(name="rollOverColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ *  @review
+ *
+ *  Color of any symbol of a component. Examples include the check mark of a FxCheckBox or
+ *  the arrow of a FxScrollButton
+ *
+ *  @default 0x000000
+ */
+[Style(name="symbolColor", type="uint", format="Color", inherit="yes")]

 [Exclude(name="enabled", kind="property")]


Transferred from the Adobe Open Source Subversion Repository

Revision: 17109
Author:   klin@adobe.com
Date:     2010-07-28T23:37:16.977688Z

Log Message:
-----------
First round of changes for Spark DataGrid skinning.

DataGridSkin - Added alpha for disabled state and minWidth/minHeight. Altered the background/border/selection/hover/caret colors to XD specifications. Adjusted the label positioning and the ColumnHeaderBar size and positioning.
DefaultGridItemRenderer - Changed default padding on the left and right to 5. Changed the default height to 26 with padding of 5 on top and bottom.
GridLayout - removed the call to initializeGridElement since alternating row colors aren't default
ColumnHeaderBarLayout - Removed laying out the separators and forced the buttons to overlap one pixel.

QE notes: No
Doc notes: No
Bugs: SDK-26827, SDK-26935, SDK-27051
Reviewer: Hans
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/DefaultColumnHeaderRenderer.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/skins/spark/DataGridSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ColumnHeaderBarLayout.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
+++ frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
@@ -355,8 +355,8 @@

         // labelDisplay layout: padding of 3 on left and right and padding of 5 on top and bottom.

-        measuredWidth = LayoutElementUIComponentUtils.getPreferredBoundsWidth(labelDisplay, null) + 6;
-        measuredHeight = LayoutElementUIComponentUtils.getPreferredBoundsHeight(labelDisplay, null) + 10;
+        measuredWidth = LayoutElementUIComponentUtils.getPreferredBoundsWidth(labelDisplay, null) + 10;
+        measuredHeight = LayoutElementUIComponentUtils.getPreferredBoundsHeight(labelDisplay, null) + 6;

         measuredMinWidth = measuredWidth;
         measuredMinHeight = measuredHeight;
@@ -371,15 +371,15 @@
     {
         super.updateDisplayList(width, height);

-        // labelDisplay layout: padding of 3 on left and right and padding of 5 on top and bottom.
-
-        labelDisplay.setActualSize(width-6, height-10);
+        // labelDisplay layout: padding of 5 on left and right and padding of 5 on top.
+
+        labelDisplay.setActualSize(width-10, height-5);

         if (textIsTruncated)
             labelDisplay.text = _label;
         textIsTruncated = labelDisplay.truncateToFit();

-        labelDisplay.move(3, 5);
+        labelDisplay.move(5, 5);
     }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 20306
Author:   chiedozi@adobe.com
Date:     2011-02-11T23:51:08.085547Z

Log Message:
-----------
Added [ExcludeClass] metadata tags to ViewDescriptor and NavigationStack
Removed unnecessary imports from ViewNavigatorApplication and TabbedViewNavigatorApplication

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigatorApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigatorApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as
@@ -18,6 +18,8 @@
 import flash.utils.getQualifiedClassName;

 import spark.components.View;
+
+[ExcludeClass]

 /**
  *  The ViewDescriptor object is a data structure used to store information


copy old CSVParser from commit 7a0c543a1b4dcc0d3587d14f261b252f20c88af9

--- WeaveJS/src/weavejs/data/CSVParser.as
+++ WeaveJS/src/weavejs/data/CSVParser.as
@@ -1,318 +1,503 @@
-/* ***** BEGIN LICENSE BLOCK *****
- *
- * This file is part of Weave.
- *
- * The Initial Developer of Weave is the Institute for Visualization
- * and Perception Research at the University of Massachusetts Lowell.
- * Portions created by the Initial Developer are Copyright (C) 2008-2015
- * the Initial Developer. All Rights Reserved.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * ***** END LICENSE BLOCK ***** */
-
-package weavejs.data
-{
-	import weavejs.WeaveAPI;
-	import weavejs.api.core.ILinkableObject;
-	import weavejs.api.data.ICSVParser;
+/*
+	Weave (Web-based Analysis and Visualization Environment)
+	Copyright (C) 2008-2011 University of Massachusetts Lowell
+
+	This file is a part of Weave.
+
+	Weave is free software: you can redistribute it and/or modify
+	it under the terms of the GNU General Public License, Version 3,
+	as published by the Free Software Foundation.
+
+	Weave is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
+
+	You should have received a copy of the GNU General Public License
+	along with Weave.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+package weavejs.data
+{
+	import weavejs.WeaveAPI;
+	import weavejs.api.core.ILinkableObject;
+	import weavejs.api.data.ICSVParser;
+	import weavejs.util.AsyncSort;
 	import weavejs.util.JS;
-
-	/**
-	 * Parses and generates CSV-encoded data.
-	 */
-	public class CSVParser implements ICSVParser, ILinkableObject
-	{
-		private static const CR:String = '\r';
-		private static const LF:String = '\n';
+	import weavejs.util.StandardLib;
+
+	/**
+	 * This is an all-static class containing functions to parse and generate valid CSV files.
+	 * Ported from AutoIt Script to Flex. Original author: adufilie
+	 *
+	 * @author skolman
+	 * @author adufilie
+	 */
+	public class CSVParser implements ICSVParser, ILinkableObject
+	{
+		private static const CR:String = '\r';
+		private static const LF:String = '\n';
 		private static const CRLF:String = '\r\n';
-
-		private static const flascc:Object = null;
-
-		/**
-		 * Creates a CSVParser.
-		 * @param asyncMode If this is set to true, parseCSV() will work asynchronously
-		 *                  and trigger callbacks when it finishes.
-		 *                  If this is set to false, no callback collection will be generated
-		 *                  for this instance of CSVParser as a result of calling its methods.
-		 *                  Note that if asyncMode is enabled, you can only parse one CSV string at a time.
-		 * @param delimiter A single character for the delimiter
-		 * @param quote A single character for the quote
-		 */
-		public function CSVParser(asyncMode:Boolean = false, delimiter:String = ',', quote:String = '"')
-		{
-			this.asyncMode = asyncMode;
-			if (delimiter && delimiter.length == 1)
-				this.delimiter = delimiter;
-			if (quote && quote.length == 1)
-				this.quote = quote;
-		}
-
-		// modes set in constructor
-		private var asyncMode:Boolean;
-		private var delimiter:String = ',';
-		private var quote:String = '"';
-		private var removeBlankLines:Boolean = true;
-		private var parseTokens:Boolean = true;
-
-		// async state
-		private var csvData:String;
-		private var csvDataArray:Array;
-
-		/**
-		 * @return The resulting two-dimensional Array from the last call to parseCSV().
-		 */
-		public function get parseResult():Array
-		{
-			return csvDataArray;
-		}
-
-		/**
-		 * @inheritDoc
-		 */
-		public function parseCSV(csvData:String):Array
-		{
-			if (asyncMode)
-			{
-				this.csvData = csvData;
-				this.csvDataArray = [];
-				// high priority because preparing data is often the first thing we need to do
-				WeaveAPI.Scheduler.startTask(this, parseIterate, WeaveAPI.TASK_PRIORITY_HIGH, parseDone);
-			}
-			else
-			{
-				csvDataArray = flascc.parseCSV(csvData, delimiter, quote, removeBlankLines, parseTokens);
-			}
-
-			return csvDataArray;
-		}
-
-		private function parseIterate(stopTime:int):Number
-		{
-			// This isn't actually asynchronous at the moment, but moving the code to
-			// FlasCC made it so much faster that it won't matter most of the time.
-			// The async code structure is kept in case we want to make it asynchronous again in the future.
-			flascc.parseCSV(csvData, delimiter, quote, removeBlankLines, parseTokens, csvDataArray);
-			csvData = null;
-			return 1;
-		}
-
-		private function parseDone():void
-		{
-			if (asyncMode)
-				Weave.getCallbacks(this).triggerCallbacks();
-		}
-
-		/**
-		 * @inheritDoc
-		 */
-		public function parseCSVRow(csvData:String):Array
-		{
-			if (csvData == null)
-				return null;
-
-			var rows:Array = flascc.parseCSV(csvData, delimiter, quote, removeBlankLines, parseTokens);
-			if (rows.length == 0)
-				return rows;
-			if (rows.length == 1)
-				return rows[0];
-			// flatten
-			return [].concat.apply(null, rows);
-		}
-
-		/**
-		 * @inheritDoc
-		 */
-		public function createCSV(rows:Array):String
-		{
-			return flascc.createCSV(rows, delimiter, quote);
-		}
-
-		/**
-		 * @inheritDoc
-		 */
-		public function createCSVRow(row:Array):String
-		{
-			return row ? flascc.createCSV([row], delimiter, quote) : null;
-		}
-
-		/**
-		 * @inheritDoc
-		 */
-		public function convertRowsToRecords(rows:Array, headerDepth:int = 1):Array
-		{
-			if (rows.length < headerDepth)
-				throw new Error("headerDepth is greater than the number of rows");
-			assertHeaderDepth(headerDepth);
-
-			var records:Array = new Array(rows.length - headerDepth);
-			for (var r:int = headerDepth; r < rows.length; r++)
-			{
-				var record:Object = {};
-				var row:Array = rows[r];
-				for (var c:int = 0; c < row.length; c++)
-				{
-					var output:Object = record;
-					var cell:Object = row[c];
-					for (var h:int = 0; h < headerDepth; h++)
-					{
-						var colName:String = rows[h][c];
-						if (h < headerDepth - 1)
-						{
-							if (!output[colName])
-								output[colName] = {};
-							output = output[colName];
-						}
-						else
-							output[colName] = cell;
-					}
-				}
-				records[r - headerDepth] = record;
-			}
-			return records;
-		}
-
-		/**
-		 * @inheritDoc
-		 */
-		public function getRecordFieldNames(records:Array, includeNullFields:Boolean = false, headerDepth:int = 1):Array
-		{
-			assertHeaderDepth(headerDepth);
-
-			var nestedFieldNames:Object = {};
-			for each (var record:Object in records)
-				_outputNestedFieldNames(record, includeNullFields, nestedFieldNames, headerDepth);
-
-			var fields:Array = [];
-			_collapseNestedFieldNames(nestedFieldNames, fields);
-			return fields.sort();
-		}
-		private function _outputNestedFieldNames(record:Object, includeNullFields:Boolean, output:Object, depth:int):void
-		{
-			for (var field:String in record)
-			{
-				if (includeNullFields || record[field] != null)
-				{
-					if (depth == 1)
-					{
-						output[field] = false;
-					}
-					else
-					{
-						if (!output[field])
-							output[field] = {};
-						_outputNestedFieldNames(record[field], includeNullFields, output[field], depth - 1);
-					}
-				}
-			}
-		}
-		private function _collapseNestedFieldNames(nestedFieldNames:Object, output:Array, prefix:Array = null):void
-		{
-			for (var field:String in nestedFieldNames)
-			{
-				if (nestedFieldNames[field]) // either an Object or false
-				{
-					_collapseNestedFieldNames(nestedFieldNames[field], output, prefix ? prefix.concat(field) : [field]);
-				}
-				else // false means reached full nesting depth
-				{
-					if (prefix) // is depth > 1?
-						output.push(prefix.concat(field)); // output the list of nested field names
-					else
-						output.push(field); // no array when max depth is 1
-				}
-			}
-		}
-
-		/**
-		 * @inheritDoc
-		 */
-		public function convertRecordsToRows(records:Array, columnOrder:Array = null, allowBlankColumns:Boolean = false, headerDepth:int = 1):Array
-		{
-			assertHeaderDepth(headerDepth);
-
-			var fields:Array = columnOrder;
-			if (fields == null)
-				fields = getRecordFieldNames(records, allowBlankColumns, headerDepth);
-
-			var r:int;
-			var c:int;
-			var cell:Object;
-			var row:Array;
-			var rows:Array = new Array(records.length + headerDepth);
-
-			// construct multiple header rows from field name chains
-			for (r = 0; r < headerDepth; r++)
-			{
-				row = new Array(fields.length);
-				for (c = 0; c < fields.length; c++)
-				{
-					if (headerDepth > 1)
-						row[c] = fields[c][r] || ''; // fields are Arrays
-					else
-						row[c] = fields[c] || ''; // fields are Strings
-				}
-				rows[r] = row;
-			}
-
-			for (r = 0; r < records.length; r++)
-			{
-				var record:Object = records[r];
-				row = new Array(fields.length);
-				for (c = 0; c < fields.length; c++)
-				{
-					if (headerDepth == 1)
-					{
-						// fields is an Array of Strings
-						cell = record[fields[c]];
-					}
-					else
-					{
-						// fields is an Array of Arrays
-						cell = record;
-						for each (var field:String in fields[c])
-							if (cell)
-								cell = cell[field];
-					}
-					row[c] = cell != null ? String(cell) : '';
-				}
-				rows[headerDepth + r] = row;
-			}
-			return rows;
-		}
-
-		private static function assertHeaderDepth(headerDepth:int):void
-		{
-			if (headerDepth < 1)
-				throw new Error("headerDepth must be > 0");
-		}
-
-		//test();
-		private static var _tested:Boolean = false;
-		private static function test():void
-		{
-			if (_tested)
-				return;
-			_tested = true;
-
-			var _:Object = {};
-			_.parser = WeaveAPI.CSVParser;
-			_.csv=[
-				'internal,internal,public,public,public,private,private,test',
-				'id,type,title,keyType,dataType,connection,sqlQuery,empty',
-				'2,1,state name,fips,string,resd,"select fips,name from myschema.state_data",',
-				'3,1,population,fips,number,resd,"select fips,pop from myschema.state_data",',
-				'1,0,state data table'
-			].join('\n');
-			_.table = _.parser.parseCSV(_.csv);
-			_.records = _.parser.convertRowsToRecords(_.table, 2);
-			_.rows = _.parser.convertRecordsToRows(_.records, null, false, 2);
-			_.fields = _.parser.getRecordFieldNames(_.records, false, 2);
-			_.fieldOrder = _.parser.parseCSV('internal,id\ninternal,type\npublic,title\npublic,keyType\npublic,dataType\nprivate,connection\nprivate,sqlQuery');
-			_.rows2 = _.parser.convertRecordsToRows(_.records, _.fieldOrder, false, 2);
-			JS.log(_);
-		}
-	}
-}
+
+		/**
+		 * @param delimiter
+		 * @param quote
+		 * @param asyncMode If this is set to true, parseCSV() will work asynchronously and trigger callbacks when it finishes.
+		 *                  Note that if asyncMode is enabled, you can only parse one CSV string at a time.
+		 */
+		public function CSVParser(asyncMode:Boolean = false, delimiter:String = ',', quote:String = '"')
+		{
+			this.asyncMode = asyncMode;
+			if (delimiter && delimiter.length == 1)
+				this.delimiter = delimiter;
+			if (quote && quote.length == 1)
+				this.quote = quote;
+		}
+
+		// modes set in constructor
+		private var asyncMode:Boolean;
+		private var delimiter:String = ',';
+		private var quote:String = '"';
+		private var parseTokens:Boolean = true;
+
+		// async state
+		private var csvData:String;
+		private var csvDataArray:Array;
+		private var i:int;
+		private var row:int;
+		private var col:int;
+		private var escaped:Boolean;
+
+		/**
+		 * @return  The resulting two-dimensional Array from the last call to parseCSV().
+		 */
+		public function get parseResult():Array
+		{
+			return csvDataArray;
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function parseCSV(csvData:String):Array
+		{
+			// initialization
+			this.csvData = csvData;
+			this.csvDataArray = [];
+			this.i = 0;
+			this.row = 0;
+			this.col = 0;
+			this.escaped = false;
+
+			if (asyncMode)
+			{
+				// high priority because preparing data is often the first thing we need to do
+				WeaveAPI.Scheduler.startTask(this, parseIterate, WeaveAPI.TASK_PRIORITY_HIGH, parseDone);
+			}
+			else
+			{
+				parseIterate(Number.MAX_VALUE);
+				parseDone();
+			}
+
+			return csvDataArray;
+		}
+
+		private function parseIterate(stopTime:int):Number
+		{
+			// run initialization code on first iteration
+			if (i == 0)
+			{
+				if (!csvData) // null or empty string?
+					return 1; // done
+
+				// start off first row with an empty string token
+				csvDataArray[row] = [''];
+			}
+
+			while (JS.now() < stopTime)
+			{
+				if (i >= csvData.length)
+					return 1; // done
+
+				var currentChar:String = csvData.charAt(i);
+				var twoChar:String = currentChar + csvData.charAt(i+1);
+				if (escaped)
+				{
+					if (twoChar == quote+quote) //escaped quote
+					{
+						csvDataArray[row][col] += (parseTokens?currentChar:twoChar);//append quote(s) to current token
+						i += 1; //skip second quote mark
+					}
+					else if (currentChar == quote)	//end of escaped text
+					{
+						escaped = false;
+						if (!parseTokens)
+						{
+							csvDataArray[row][col] += currentChar;//append quote to current token
+						}
+					}
+					else
+					{
+						csvDataArray[row][col] += currentChar;//append quotes to current token
+					}
+				}
+				else
+				{
+
+					if (twoChar == delimiter+quote)
+					{
+						escaped = true;
+						col += 1;
+						csvDataArray[row][col] = (parseTokens?'':quote);
+						i += 1; //skip quote mark
+					}
+					else if (currentChar == quote && csvDataArray[row][col] == '')		//start new token
+					{
+						escaped = true;
+						if (!parseTokens)
+							csvDataArray[row][col] += currentChar;
+					}
+					else if (currentChar == delimiter)		//start new token
+					{
+						col += 1;
+						csvDataArray[row][col] = '';
+					}
+					else if (twoChar == CRLF)	//then start new row
+					{
+						i += 1; //skip line feed
+						row += 1;
+						col = 0;
+						csvDataArray[row] = [''];
+					}
+					else if (currentChar == CR)	//then start new row
+					{
+						row += 1;
+						col = 0;
+						csvDataArray[row] = [''];
+					}
+					else if (currentChar == LF)	//then start new row
+					{
+						row += 1;
+						col = 0;
+						csvDataArray[row] = [''];
+					}
+					else //append single character to current token
+						csvDataArray[row][col] += currentChar;
+				}
+				i++;
+			}
+
+			return i / csvData.length;
+		}
+
+		private function parseDone():void
+		{
+			// if there is more than one row and last row is empty,
+			// remove last row assuming it is there because of a newline at the end of the file.
+			for (var iRow:int = csvDataArray.length; iRow--;)
+			{
+				var dataLine:Array = csvDataArray[iRow];
+
+				if (dataLine.length == 1 && dataLine[0] == '')
+					csvDataArray.splice(iRow, 1);
+			}
+
+			if (asyncMode)
+				Weave.getCallbacks(this).triggerCallbacks();
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function createCSV(rows:Array):String
+		{
+			var lines:Array = new Array(rows.length);
+			for (var i:int = rows.length; i--;)
+			{
+				var tokens:Array = new Array(rows[i].length);
+				for (var j:int = tokens.length; j--;)
+					tokens[j] = createCSVToken(rows[i][j]);
+
+				lines[i] = tokens.join(delimiter);
+			}
+			var csvData:String = lines.join(LF);
+			return csvData;
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function parseCSVRow(csvData:String):Array
+		{
+			if (csvData == null)
+				return null;
+
+			var rows:Array = parseCSV(csvData);
+			if (rows.length == 0)
+				return rows;
+			if (rows.length == 1)
+				return rows[0];
+			// flatten
+			return [].concat.apply(null, rows);
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function createCSVRow(row:Array):String
+		{
+			return createCSV([row]);
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function parseCSVToken(token:String):String
+		{
+			var parsedToken:String = '';
+
+			var tokenLength:int = token.length;
+
+			if (token.charAt(0) == quote)
+			{
+				var escaped:Boolean = true;
+				for (var i:int = 1; i <= tokenLength; i++)
+				{
+					var currentChar:String = token.charAt(i);
+					var twoChar:String = currentChar + token.charAt(i+1);
+
+					if (twoChar == quote+quote) //append escaped quote
+					{
+						i += 1;
+						parsedToken += quote;
+					}
+					else if (currentChar == quote && escaped)
+					{
+						escaped = false;
+					}
+					else
+					{
+						parsedToken += currentChar;
+					}
+				}
+			}
+			else
+			{
+				parsedToken = token;
+			}
+			return parsedToken;
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function createCSVToken(str:String):String
+		{
+			if (str == null)
+				str = '';
+
+			// determine if quotes are necessary
+			if ( str.length > 0
+				&& str.indexOf(quote) < 0
+				&& str.indexOf(delimiter) < 0
+				&& str.indexOf(LF) < 0
+				&& str.indexOf(CR) < 0
+				&& str == StandardLib.trim(str) )
+			{
+				return str;
+			}
+
+			var token:String = quote;
+			for (var i:int = 0; i <= str.length; i++)
+			{
+				var currentChar:String = str.charAt(i);
+				if (currentChar == quote)
+					token += quote + quote;
+				else
+					token += currentChar;
+			}
+			return token + quote;
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function convertRowsToRecords(rows:Array, headerDepth:int = 1):Array
+		{
+			if (rows.length < headerDepth)
+				throw new Error("headerDepth is greater than the number of rows");
+			assertHeaderDepth(headerDepth);
+
+			var records:Array = new Array(rows.length - headerDepth);
+			for (var r:int = headerDepth; r < rows.length; r++)
+			{
+				var record:Object = {};
+				var row:Array = rows[r];
+				for (var c:int = 0; c < row.length; c++)
+				{
+					var output:Object = record;
+					var cell:Object = row[c];
+					for (var h:int = 0; h < headerDepth; h++)
+					{
+						var colName:String = rows[h][c];
+						if (h < headerDepth - 1)
+						{
+							if (!output[colName])
+								output[colName] = {};
+							output = output[colName];
+						}
+						else
+							output[colName] = cell;
+					}
+				}
+				records[r - headerDepth] = record;
+			}
+			return records;
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function getRecordFieldNames(records:Array, includeNullFields:Boolean = false, headerDepth:int = 1):Array
+		{
+			assertHeaderDepth(headerDepth);
+
+			var nestedFieldNames:Object = {};
+			for each (var record:Object in records)
+			_outputNestedFieldNames(record, includeNullFields, nestedFieldNames, headerDepth);
+
+			var fields:Array = [];
+			_collapseNestedFieldNames(nestedFieldNames, fields);
+			return fields;
+		}
+		private function _outputNestedFieldNames(record:Object, includeNullFields:Boolean, output:Object, depth:int):void
+		{
+			for (var field:String in record)
+			{
+				if (includeNullFields || record[field] != null)
+				{
+					if (depth == 1)
+					{
+						output[field] = false;
+					}
+					else
+					{
+						if (!output[field])
+							output[field] = {};
+						_outputNestedFieldNames(record[field], includeNullFields, output[field], depth - 1);
+					}
+				}
+			}
+		}
+		private function _collapseNestedFieldNames(nestedFieldNames:Object, output:Array, prefix:Array = null):void
+		{
+			for (var field:String in nestedFieldNames)
+			{
+				if (nestedFieldNames[field]) // either an Object or false
+				{
+					_collapseNestedFieldNames(nestedFieldNames[field], output, prefix ? prefix.concat(field) : [field]);
+				}
+				else // false means reached full nesting depth
+				{
+					if (prefix) // is depth > 1?
+						output.push(prefix.concat(field)); // output the list of nested field names
+					else
+						output.push(field); // no array when max depth is 1
+				}
+			}
+		}
+
+		/**
+		 * @inheritDoc
+		 */
+		public function convertRecordsToRows(records:Array, columnOrder:Array = null, allowBlankColumns:Boolean = false, headerDepth:int = 1):Array
+		{
+			assertHeaderDepth(headerDepth);
+
+			var fields:Array = columnOrder;
+			if (fields == null)
+			{
+				fields = getRecordFieldNames(records, allowBlankColumns, headerDepth);
+				AsyncSort.sortImmediately(fields);
+			}
+
+			var r:int;
+			var c:int;
+			var cell:Object;
+			var row:Array;
+			var rows:Array = new Array(records.length + headerDepth);
+
+			// construct multiple header rows from field name chains
+			for (r = 0; r < headerDepth; r++)
+			{
+				row = new Array(fields.length);
+				for (c = 0; c < fields.length; c++)
+				{
+					if (headerDepth > 1)
+						row[c] = fields[c][r] || ''; // fields are Arrays
+					else
+						row[c] = fields[c] || ''; // fields are Strings
+				}
+				rows[r] = row;
+			}
+
+			for (r = 0; r < records.length; r++)
+			{
+				var record:Object = records[r];
+				row = new Array(fields.length);
+				for (c = 0; c < fields.length; c++)
+				{
+					if (headerDepth == 1)
+					{
+						// fields is an Array of Strings
+						cell = record[fields[c]];
+					}
+					else
+					{
+						// fields is an Array of Arrays
+						cell = record;
+						for each (var field:String in fields[c])
+						if (cell)
+							cell = cell[field];
+					}
+					row[c] = cell != null ? String(cell) : '';
+				}
+				rows[headerDepth + r] = row;
+			}
+			return rows;
+		}
+
+		private static function assertHeaderDepth(headerDepth:int):void
+		{
+			if (headerDepth < 1)
+				throw new Error("headerDepth must be > 0");
+		}
+
+		//test();
+		private static var _tested:Boolean = false;
+		private static function test():void
+		{
+			if (_tested)
+				return;
+			_tested = true;
+
+			var _:Object = {};
+			_.parser = WeaveAPI.CSVParser;
+			_.csv=[
+				'internal,internal,public,public,public,private,private,test',
+				'id,type,title,keyType,dataType,connection,sqlQuery,empty',
+				'2,1,state name,fips,string,resd,'+'"'+'select fips,name from myschema.state_data'+'"'+',',
+				'3,1,population,fips,number,resd,'+'"'+'select fips,pop from myschema.state_data'+'"'+',',
+				'1,0,state data table'
+			].join('\n');
+			_.table = _.parser.parseCSV(_.csv);
+			_.records = _.parser.convertRowsToRecords(_.table, 2);
+			_.rows = _.parser.convertRecordsToRows(_.records, null, false, 2);
+			_.fields = _.parser.getRecordFieldNames(_.records, false, 2);
+			_.fieldOrder = _.parser.parseCSV('internal,id\ninternal,type\npublic,title\npublic,keyType\npublic,dataType\nprivate,connection\nprivate,sqlQuery');
+			_.rows2 = _.parser.convertRecordsToRows(_.records, _.fieldOrder, false, 2);
+			JS.log(_);
+		}
+	}
+}


code cleanup.

code cleanup.

--- WeaveCore/src/weave/compiler/Compiler.as
+++ WeaveCore/src/weave/compiler/Compiler.as
@@ -1053,7 +1053,7 @@
 		 * Generates a deterministic JSON representation of an object, meaning object keys appear in sorted order.
 		 * @param object The object to stringify.
 		 */
-		public static function stringify(object:Object, sortKeys:Boolean = true):String
+		public static function stringify(object:Object):String
 		{
 			var output:Array;
 			var item:Object;
@@ -1067,7 +1067,7 @@
 			{
 				output = [];
 				for each (item in object)
-					output.push(stringify(item, sortKeys));
+					output.push(stringify(item));
 				return "[" + output.join(", ") + "]";
 			}
 			// loop over keys in Object
@@ -1075,14 +1075,14 @@
 			if (object.constructor == Object)
 			{
 				for (key in object)
-					output.push(encodeString(key) + ": " + stringify(object[key], sortKeys));
+					output.push(encodeString(key) + ": " + stringify(object[key]));
 			}
 			else
 			{
 				for each (var list:Array in describeTypeJSON(object, DescribeType.ACCESSOR_FLAGS | DescribeType.VARIABLE_FLAGS)['traits'])
 					for each (item in list)
 						if (item.access != 'writeonly')
-							output.push(encodeString(item.name) + ": " + stringify(object[item.name], sortKeys));
+							output.push(encodeString(item.name) + ": " + stringify(object[item.name]));
 			}
 			// sort keys
 			StandardLib.sort(output);


formatting

formatting

--- runtime/src/main/as/flump/mold/LayerMold.as
+++ runtime/src/main/as/flump/mold/LayerMold.as
@@ -41,8 +41,7 @@
         return json;
     }

-    public function toXML () :XML
-    {
+    public function toXML () :XML {
         var xml :XML = <layer name={name}/>
         if (flipbook) xml.@flipbook = flipbook;
         for each (var kf :KeyframeMold in keyframes) xml.appendChild(kf.toXML());


Transferred from the Adobe Open Source Subversion Repository

Revision: 19065
Author:   rfrishbe@adobe.com
Date:     2010-12-06T18:37:28.339600Z

Log Message:
-----------
PARB changes: getting rid of minimumDownStateTime as a style.  Instead, we just base it off of touchDelay, while still offering a way to disable it for toggle buttons

I will checkin the changes to defaults.css, removing setting the minimumDownStateTime style, in another checkin.

QE notes:
Doc notes:
Bugs:
Reviewer: Jason SZ
Tests run: checkintests, mustella Button, CheckBox
Is noteworthy for integration: No

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
@@ -107,27 +107,6 @@
  *  @productversion Flex 4
  */
 [Style(name="iconPlacement", type="String", enumeration="top,bottom,right,left", inherit="no", theme="spark, mobile")]
-
-/**
- *  When there is a touchDelay, and the touch interaction is complete (user mouseUp) before
- *  the touchDelay is over, then the component goes in to the down state for a period
- *  of time to ensure the user gets visual feedback on this operation.  This period of
- *  time after mouseUp that the component is in the down state is the
- *  minimumDownStateTime.
- *
- *
This property exists for quick taps that occur on a component and ensures
- *  that the user receives reasonable feedback for their button click operation.

- *
- *
If the mobile theme is applied, the default value for this style is 100 ms for
- *  typical buttons.  For toggle buttons, the default value for this style is 0 ms.

- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.5
- *  @productversion Flex 4.5
- */
-[Style(name="minimumDownStateTime", type="Number", format="Time", inherit="no", minValue="0.0")]
-

 /**
  *  Number of milliseconds to wait after the first buttonDown
@@ -414,6 +393,23 @@
      *  the button was actually selected.
      */
     private var mouseUpDeselectTimer:Timer;
+
+	/**
+	 *  @private
+	 *  When there is a touchDelay and the touch interaction is complete (user mouseUp) before
+	 *  the touchDelay is over, usually the component goes in to the down state for a period
+	 *  of time to ensure the user gets visual feedback on this operation.
+	 *  This behavior is for quick taps that occur on a component and ensures
+	 *  that the user receives reasonable feedback for their button click operation.
+	 *
+	 *
This property can disable that behavior.  If set to false,
+	 *  which is the default, then on a quick tap, the Button will go in to the down state
+	 *  for touchDelay milli-seconds.  If set to true,
+	 *  on a quick tap, the Button does not go in to the down state at all.  This
+	 *  is useful in toggle buttons, where there's no need to go in to the down state
+	 *  to give the user feedback--going in to the selected state is good enough.

+	 */
+	mx_internal var disableMinimumDownStateTime:Boolean = false;

     //--------------------------------------------------------------------------
     //
@@ -1067,7 +1063,7 @@
      */
     private function startSelectButtonAfterDelayTimer():void
     {
-        var touchDelay:int = getStyle("touchDelay");
+        var touchDelay:Number = getStyle("touchDelay");

         if (touchDelay > 0)
         {
@@ -1100,7 +1096,7 @@
      */
     private function startDeselectButtonAfterDelayTimer():void
     {
-        var minimumDownStateTime:int = getStyle("minimumDownStateTime");
+        var minimumDownStateTime:Number = (disableMinimumDownStateTime ? 0 : getStyle("touchDelay"));

         if (minimumDownStateTime > 0)
         {


Transferred from the Adobe Open Source Subversion Repository

Revision: 10006
Author:   gruehle@adobe.com
Date:     2009-09-03T22:04:47.081899Z

Log Message:
-----------
Initial checkin of the "More styles for Spark skins" feature. Details here:
http://opensource.adobe.com/wiki/display/flexsdk/More+Styles+for+Spark+Skins

There are some known issues:
* Panel bottom corners not rounded correctly when the panel has a control bar
* cornerRadius on Tab and DateChooser non functional
* cornerRadius values > 4 have drawing artifacts in the "down" state of Button and button-like components
* TextInput/TextArea incorrectly list lineBreak and verticalAlign as valid styles

This checkin also includes a couple minor unrelated bug fixes:
* Remove MiniDebugTarget. This is a logging target that used MiniDebug, which hasn't worked since Flex 1.5
* Fix RTEs when setting focusSkin to null
* Optimization: don't measure skins if the host component has explicit sizes

QE notes: Yes, many baseline images will need to be regenerated
Doc notes: New ASDoc comments should be scrubbed
Bugs: SDK-22931, SDK-22798, SDK-22217, SDK-19358
Reviewer: Jason
Tests run: checkintests, cyclone
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/StepperIncrButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/PopUpButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/SparkChromeWindowedApplicationSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/WindowedApplicationSkin.mxml</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/spark/src/spark/skins/spark/ButtonBarLastButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/framework/src/mx/logging/targets/MiniDebugTarget.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/airframework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DropDownListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/StepperDecrButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Slider.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/spark/src/spark/skins/spark/SpinnerDecrementButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/INavigatorContent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IDeferredContentOwner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/TextInputSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/BasicTests.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/TextAreaSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Skin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/EditableComboBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.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/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/DefaultButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ButtonBarLastButtonSkin.mxml</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/sparkskins/src/mx/skins/spark/SparkSkinForHalo.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/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ButtonBarFirstButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/TextInputBorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/SpinnerIncrementButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/halo-manifest.xml</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/airframework/src/spark/components/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/PanelBorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ButtonBarFirstButtonSkin.mxml</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/skins/spark/DropDownListButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/ComboBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/SparkSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RectangularDropShadow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/BorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/NumericStepperTextInputSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/PanelSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ApplicationSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/basicTests/spark/scripts/BorderTestScript.mxml</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/skins/spark/FocusSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ApplicationSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
@@ -31,6 +31,26 @@
 use namespace mx_internal;

 include "../../styles/metadata/BasicInheritingTextStyles.as"
+
+/**
+ *  The radius of the corners of this component.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="cornerRadius", type="Number", format="Length", inherit="no", theme="spark")]
+
+/**
+ *  The alpha of the focus ring for this component.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="focusAlpha", type="Number", inherit="no", theme="spark")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#focusColor


Transferred from the Adobe Open Source Subversion Repository

Revision: 11095
Author:   eitan@ascender.com
Date:     2009-10-22T23:34:03.596935Z

Log Message:
-----------
Added changes in spark components to use AccImpl.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownList.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/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextArea.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/spark/src/spark/components/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/CheckBox.as</path>

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


Added getAll().

Added getAll().

git-svn-id: a1a4b28b82a3276cc491891159dd9963a0a72fae@4946 542714f4-19e9-0310-aa3c-eee0fc999fb1

--- src/as/com/threerings/util/MessageBundle.as
+++ src/as/com/threerings/util/MessageBundle.as
@@ -71,23 +71,19 @@
      * @param includeParent if true, messages from our parent bundle (and its
      * parent bundle, all the way up the chain will be included).
      */
-   /* COMMENTED OUT: pending proper implementation (and need)
-   public function getAll (
-            prefix :String, messages :Array, includeParent :Boolean = true) :void
-    {
-        var key :String;
-        // TODO: possibly patch ResourceBundle to have getKeys()
-        //for (key in _bundle.getKeys()) {
-        //    if (StringUtil.startsWith(key, prefix)) {
-        //        messages.push(get(key));
-        //    }
-        //}
+    public function getAll (
+        prefix :String, messages :Array, includeParent :Boolean = true) :void
+    {
+        for (var key :String in _bundle.content) {
+            if (StringUtil.startsWith(key, prefix)) {
+                messages.push(get(key));
+            }
+        }

         if (includeParent && _parent != null) {
             _parent.getAll(prefix, messages, includeParent);
         }
     }
-    */

     /**
      * Get a String from the resource bundle, or null if there was an


Transferred from the Adobe Open Source Subversion Repository

Revision: 13035
Author:   hneelu@adobe.com
Date:     2009-12-17T07:35:16.160630Z

Log Message:
-----------
Updating automation project to latest p4 changes.

Modified Paths:
--------------
228 paths were modified

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

--- frameworks/projects/automation/src/mx/automation/delegates/controls/ComboBoxAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/ComboBoxAutomationImpl.as
@@ -292,8 +292,7 @@
 		{
 			var delegate:IAutomationObject = comboBox.dropdown as IAutomationObject;

-			//return delegate.getAutomationChildren();
-			return Automation.automationManager2.getAutomationChildrenArray(delegate);
+			return delegate.getAutomationChildren();
 		}
 		/**
 		 *  @private


Transferred from the Adobe Open Source Subversion Repository

Revision: 5098
Author:   gauravj@adobe.com
Date:     2009-02-27T02:21:27.489350Z

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:
--------------
151 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransitionShaderInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransitionShaderInstance.as
@@ -42,6 +42,11 @@
      * when the effect is played by grabbing a snapshot of the target
      * object, or by using a transparent bitmap if the object does not
      * exist in the start state of a transition.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public var bitmapFrom:BitmapData;

@@ -51,6 +56,11 @@
      * when the effect is played by grabbing a snapshot of the target
      * object, or by using a transparent bitmap if the object does not
      * exist in the end state of a transition.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public var bitmapTo:BitmapData;

@@ -98,6 +108,11 @@
      * </listing>
      *
      * @see flash.display.Shader
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public var shaderCode:ByteArray;

@@ -113,6 +128,11 @@
      *   var shaderEffect = new FxAnimateShaderTransition();
      *   shaderEffect.shaderCode = WipeCodeClass;
      *   shaderEffect.shaderProperties = {direction:1};</listing>
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public var shaderProperties:Object;

@@ -121,6 +141,11 @@
      * property as the underlying bytecode. Each instance needs its
      * own separate Shader, but can share the bytecode. When each instance
      * is played, we create the Shader that the instance will use.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected var shader:Shader;

@@ -145,6 +170,11 @@
      * property of the target object with every update during the animation,
      * so that animated updates to the underlying shader are reflected
      * in the filter applied to the display object that the user sees.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     protected var shaderFilter:ShaderFilter;


Transferred from the Adobe Open Source Subversion Repository

Revision: 22616
Author:   aaltman@adobe.com
Date:     2011-09-16T21:02:52.536844Z

Log Message:
-----------
Fixed StageText bitmap swapping to use the topmost window instead of the active window to determine if it needs to swap a bitmap for the StageText

QE notes: None
Doc notes: None
Bugs: SDK-31530 SDK-31516
Reviewer: cframpto aharui
Tests run: checkintests mustella-mobile
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as
@@ -40,6 +40,7 @@

 import mx.core.DPIClassification;
 import mx.core.FlexGlobals;
+import mx.core.IRawChildrenContainer;
 import mx.core.IUIComponent;
 import mx.core.LayoutDirection;
 import mx.core.UIComponent;
@@ -1302,18 +1303,12 @@
      */
     override public function setFocus():void
     {
-        if (effectiveEnabled)
-        {
-            if (stageText != null)
-            {
-                // If alwaysShowProxyImage is set, don't dispose the image.
-                // We shouldn't get here in this case; this is just a backstop.
-                if (!alwaysShowProxyImage)
-                    disposeProxyImage();
-
-                stageText.assignFocus();
-            }
-        }
+        // Do not set focus if the StageText is invisible (it has been replaced
+        // by a proxy image). This component may be in a form that is lower in
+        // z-order than the topmost form and we cannot allow the StageText,
+        // which cannot clip, to appear above the topmost form.
+        if (effectiveEnabled && stageText != null && stageText.visible)
+            stageText.assignFocus();
     }

     /**
@@ -1392,8 +1387,7 @@

             // If this is a new StageText created while a popup is already open,
             // a proxy image needs to be created for it.
-            if (awm)
-                updateProxyImageForForm(awm.form);
+            updateProxyImageForTopmostForm();
         }

         updateProxyImage();
@@ -1732,6 +1726,54 @@
     }

     /**
+     *  Iterate through the forms tracked by ActiveWindowManager and return the
+     *  one that is highest in z-order.
+     */
+    private function findTopmostForm():Object
+    {
+        if (!awm)
+            return null;
+
+        var form:Object = awm.form;
+        var formIndex:int = getFormIndex(form);
+
+        for each (var otherForm:Object in awm.forms)
+        {
+            var otherIndex:int = getFormIndex(otherForm);
+
+            if (otherIndex > formIndex)
+            {
+                form = otherForm;
+                formIndex = otherIndex;
+            }
+        }
+
+        return form;
+    }
+
+    /**
+     *  Determine an index for the given form that may be used to determine the
+     *  relative z-orders of forms.
+     */
+    private function getFormIndex(form:Object):int
+    {
+        return form is DisplayObject ?
+            systemManager.rawChildren.getChildIndex(form as DisplayObject) :
+            -1;
+    }
+
+    /**
+     *  Determine whether the given form is an application. This is the same
+     *  check as is used by ActiveWindowManager.
+     */
+    private function isFormApplication(form:DisplayObject):Boolean
+    {
+        return systemManager.document is IRawChildrenContainer ?
+            IRawChildrenContainer(systemManager.document).rawChildren.contains(form) :
+            systemManager.document.contains(form);
+    }
+
+    /**
      *  Replace the existing proxy image representing this StageText with a new
      *  one. Call this whenever the StageText's properties, contents, or
      *  geometry changes. This does nothing if there is no proxy image, so it is
@@ -1770,6 +1812,11 @@
         }
     }

+    /**
+     *  If this component is part of the form that is active, remove the proxy
+     *  bitmap (if present) and show the StageText. Otherwise, create or update
+     *  the proxy bitmap and hide the StageText.
+     */
     private function updateProxyImageForForm(form:Object):void
     {
         if (form && form.hasOwnProperty("focusManager"))
@@ -1780,6 +1827,24 @@
             else if (!alwaysShowProxyImage)
                 disposeProxyImage();
         }
+    }
+
+    /**
+     *  Find the topmost form in z-order and show the StageText if this is a
+     *  child of that form. Otherwise, create or update the proxy bitmap and
+     *  hide the StageText.
+     */
+    private function updateProxyImageForTopmostForm():void
+    {
+        if (!awm)
+            return;
+
+        var form:Object = awm.form;
+
+        if (!(form is DisplayObject) || isFormApplication(form as DisplayObject))
+            form = findTopmostForm();
+
+        updateProxyImageForForm(form);
     }

     /**
@@ -2078,17 +2143,17 @@

     private function awm_activatedFormHandler(event:DynamicEvent):void
     {
+        updateProxyImageForTopmostForm();
+    }
+
+    private function awm_deactivatedFormHandler(event:DynamicEvent):void
+    {
+        // When the ActiveWindowManager dispatches the deactivatedForm event,
+        // its internal list of forms has not been updated yet. So, determining
+        // the topmost form from that list will fail and find the old topmost
+        // form (the one that is going away). Always assume that the form passed
+        // as the event property will be the new topmost form.
         var form:Object = event.hasOwnProperty("form") ? event.form : null;
-        // Both the activatedForm and deactivatedForm events pass the form that
-        // is becoming active as the "form" property.
-        updateProxyImageForForm(form);
-    }
-
-    private function awm_deactivatedFormHandler(event:DynamicEvent):void
-    {
-        var form:Object = event.hasOwnProperty("form") ? event.form : null;
-        // Both the activatedForm and deactivatedForm events pass the form that
-        // is becoming active as the "form" property.
         updateProxyImageForForm(form);
     }

@@ -2197,7 +2262,7 @@
                 // The effect may have played while a popup is open. If so, we
                 // need to make sure the proxy image stays.
                 if (awm)
-                    updateProxyImageForForm(awm.form);
+                    updateProxyImageForTopmostForm();
                 else
                     disposeProxyImage();
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 22022
Author:   cframpto@adobe.com
Date:     2011-08-16T18:38:02.995174Z

Log Message:
-----------
More ASdoc edits/corrections for mobile text.

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/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as
@@ -246,7 +246,6 @@
  *  skins which is used to present the user with a native text input field.
  *  It cannot be used in MXML markup, is not compatible with effects, and
  *  is not compatible with transformations such as rotation, scale, and skew.
- *  It does not support embedded fonts.

  *
  *
StageText allows for better text entry and manipulation experiences on mobile devices
  *  using native text fields.
@@ -256,45 +255,42 @@
  *

  *
  *
Limitation of StageText-based controls:
- *
+ *

  *
Native text input fields cannot be clipped by other Flex content and are rendered in a
  *  layer above the Stage.
- *  Because of this limitation, components that use StageText-based skin classes will always appear
- *  to be on top of other Flex components.
+ *  Because of this limitation, components that use StageText-based skin classes will always appear
+ *  to be on top of other Flex components.
  *  Flex popups and drop-downs will also be obscured by any visible native text fields.
  *  Finally, native text fields' relative z-order cannot be controlled by the application.

  *
  *
StageText uses a native text control both for text display and text entry.
- *  These native controls cannot use embedded fonts directly.
- *  Other text controls may be used as workarounds if embedded font support is a requirement.

- *
- *
StageText does not support links or html markup. Only plain text is supported.

- *
- *
StageText text is always selectable.

- *
- *
StageText does not support fractional alpha values.

+ *  These native controls do not support embedded fonts.

  *
  *
The padding around native text controls may be different than the padding around
  *  TextField controls.

  *
- *
StageText does not support programmatic control of scroll position at this time.

- *
- *
StageText does not dispatch low-level keyboard events for most keys.
- *  Most notably, the tab key will not dispatch keyDown or keyUp events.
- *  As a consequence, focus cannot be removed from a component using StageText with the tab key.

- *
- *
StageText is currently not capable of measuring text.
- *  Because of this, any functionality which requires determining the dimensions of text is not
- *  supported.

- *
- *
Similiar to other native applications, when you tap outside of the native text field the
+ *
StageText does not support links or html markup. Only plain text is supported.

+ *
+ *
StageText text is always selectable.

+ *
+ *
StageText does not support fractional alpha values.

+ *
+ *
StageText does not dispatch keyboard events for most keys.
+ *  This means that the tab key will not dispatch keyDown or keyUp events so focus
+ *  cannot be removed from a StageText-based control with the tab key.

+ *
+ *
StageText is currently not capable of measuring text.

+ *
+ *
Similiar to other native applications, when you tap outside of the native text field, the
  *  text field gives up focus and the soft keyboard goes away.
  *  This differs from when you tap outside of a TextField and the focus stays in the TextField and
  *  the soft keyboard remains visible.

  *
- *
Scrolling form workflows do not work.
- *  In the near-term, StageText will not support an event model necessary to allow for
+ *
At this time StageText does not support programmatic control of scroll position.

+ *
+ *
At this time StageText does not support an event model necessary to allow for
  *  touch-based scrolling of forms containing native text fields.

+ *

  *

  *
  *  @see flash.text.StageText
@@ -938,7 +934,7 @@

     /**
      *  @private
-     *  @copy flash.text.StageText#selectable
+     *  @inheritDoc
      */
     public function get selectable():Boolean
     {
@@ -958,6 +954,8 @@
      *  The active, or last clicked position, of the selection. If the
      *  implementation does not support selection anchor this is the last
      *  character of the selection.
+     *
+     *
This value can not be used as the source for data binding.

      *
      *  @langversion 3.0
      *  @playerversion AIR 3.0
@@ -977,6 +975,8 @@
      *  implementation does not support selection anchor this is the first
      *  character of the selection.
      *
+     *
This value can not be used as the source for data binding.

+     *
      *  @langversion 3.0
      *  @playerversion AIR 3.0
      *  @productversion Flex 4.5.2
@@ -1062,7 +1062,7 @@
     /**
      *  @inheritDoc
      *
-     *  @default AutoCapitalize.NONE
+     *  @default "none"
      *
      *  @see flash.text.AutoCapitalize
      *
@@ -1129,7 +1129,7 @@
     /**
      *  @inheritDoc
      *
-     *  @default ReturnKeyLabel.DEFAULT
+     *  @default "default"
      *
      *  @see flash.text.ReturnKeyLabel
      *
@@ -1165,7 +1165,7 @@
     /**
      *  @inheritDoc
      *
-     *  @default SoftKeyboardType.DEFAULT
+     *  @default "default"
      *
      *  @see flash.text.SoftKeyboardType
      *
@@ -1311,13 +1311,7 @@
     //--------------------------------------------------------------------------

     /**
-     *  Appends the specified text to the end of the text component, as if you
-     *  had clicked at the end and typed.
-     *
-     *
An insertion point is then set after the new text. If necessary, the
-     *  text will scroll to ensure that the insertion point is visible.

-     *
-     *  @param text The text to be appended.
+     *  @inheritDoc
      *
      *  @langversion 3.0
      *  @playerversion AIR 3.0


FragmentLoader.as: get rid of one more variable

--- src/org/mangui/hls/stream/FragmentLoader.as
+++ src/org/mangui/hls/stream/FragmentLoader.as
@@ -40,7 +40,7 @@
         /** last loaded level. **/
         private var _last_loaded_level : int = 0;
         /** Callback for passing forward the fragment tags. **/
-        private var _callback : Function;
+        private var _tags_callback : Function;
         /** sequence number that's currently loading. **/
         private var _seqnum : int;
         /** Quality level of the last fragment load. **/
@@ -68,8 +68,6 @@
         private var _pts_loading_in_progress : Boolean = false;
         /** boolean to indicate that PTS of new playlist has just been loaded */
         private var _pts_just_loaded : Boolean = false;
-        /** boolean to indicate whether Buffer could request new fragment load **/
-        private var _need_reload : Boolean = true;
         /** Timer used to monitor/schedule fragment download. **/
         private var _timer : Timer;
         /** requested seek position **/
@@ -115,7 +113,7 @@
                 return;
             }
             // check fragment loading status, try to load a new fragment if needed
-            if (_frag_loading == false || _need_reload == true) {
+            if (_frag_loading == false) {
                 var loadstatus : int;
                 // if previous fragment loading failed
                 if (_bIOError) {
@@ -128,7 +126,6 @@
                 var level : int;
                 // check if first fragment after seek has been already loaded
                 if (_fragment_first_loaded == false) {
-                    _need_reload = false;
                     // select level for first fragment load
                     if (_manifest_just_loaded) {
                         level = _hls.startlevel;
@@ -156,7 +153,7 @@
                     /* first fragment already loaded
                      * check if we need to load next fragment, do it only if buffer is NOT full
                      */
-                } else if (HLSSettings.maxBufferLength == 0 || _hls.stream.bufferLength < HLSSettings.maxBufferLength) {
+                } else if (HLSSettings.maxBufferLength == 0 || _hls.stream.bufferLength < HLSSettings.maxBufferLength) {
                     // select level for next fragment load
                     if (_bIOError == true) {
                         /* in case IO Error has been raised, stick to same level */
@@ -187,7 +184,6 @@
                         _switchlevel = true;
                         _hls.dispatchEvent(new HLSEvent(HLSEvent.LEVEL_SWITCH, _level));
                     }
-                    _need_reload = false;
                     // check if we received playlist for choosen level. if live playlist, ensure that new playlist has been refreshed
                     if ((_levels[level].fragments.length == 0) || (_hls.type == HLSTypes.LIVE && _last_loaded_level != level)) {
                         // playlist not yet received
@@ -215,7 +211,7 @@
                         Log.warn("long pause on live stream or bad network quality");
                     }
                     _timer.stop();
-                    seek(-1, _callback);
+                    seek(-1, _tags_callback);
                     return;
                 } else if (loadstatus > 0) {
                     // seqnum not available in playlist
@@ -230,7 +226,7 @@
             _retry_count = 0;
             _retry_timeout = 1000;
             _frag_loading = false;
-            _callback = callback;
+            _tags_callback = callback;
             _seek_pos = position;
             _fragment_first_loaded = false;
             _frag_previous = null;
@@ -297,7 +293,7 @@
                 var hlsError : HLSError = new HLSError(HLSError.FRAGMENT_LOADING_ERROR, _frag_current.url, "I/O Error :" + message);
                 _hls.dispatchEvent(new HLSEvent(HLSEvent.ERROR, hlsError));
             }
-            _need_reload = true;
+            _frag_loading = false;
         }

         private function _fragLoadHTTPStatusHandler(event : HTTPStatusEvent) : void {
@@ -353,7 +349,7 @@
                     Log.warn("fragment size is null, invalid it and load next one");
                 }
                 _levels[_level].updateFragment(_seqnum, false);
-                _need_reload = true;
+                _frag_loading = false;
                 return;
             }
             CONFIG::LOGGING {
@@ -818,12 +814,12 @@
                             // clean-up tags
                             fragData.tags = new Vector.<FLVTag>();
                             // tell that new fragment could be loaded
-                            _need_reload = true;
+                            _frag_loading = false;
                             return;
                         }
                     }
                     // provide tags to HLSNetStream
-                    _callback(_level, _frag_current.continuity, _frag_current.seqnum, _frag_current.tag_list, fragData.tags, fragData.tag_pts_min, fragData.tag_pts_max, _hasDiscontinuity, min_offset, _frag_current.program_date + fragData.tag_pts_start_offset);
+                    _tags_callback(_level, _frag_current.continuity, _frag_current.seqnum, _frag_current.tag_list, fragData.tags, fragData.tag_pts_min, fragData.tag_pts_max, _hasDiscontinuity, min_offset, _frag_current.program_date + fragData.tag_pts_start_offset);
                     var processing_duration : Number = (new Date().valueOf() - _frag_current.metrics.loading_request_time);
                     var bandwidth : Number = Math.round(fragData.bytesLoaded * 8000 / processing_duration);
                     var tagsMetrics : HLSLoadMetrics = new HLSLoadMetrics(_level, bandwidth, fragData.tag_pts_end_offset, processing_duration);
@@ -891,7 +887,7 @@
                         }
                         // let's directly jump to the accurate level to improve quality at player start
                         _level = bestlevel;
-                        _need_reload = true;
+                        _frag_loading = false;
                         _switchlevel = true;
                         _hls.dispatchEvent(new HLSEvent(HLSEvent.LEVEL_SWITCH, _level));
                         return;
@@ -911,7 +907,7 @@
                 var tagsMetrics : HLSLoadMetrics = new HLSLoadMetrics(_level, fragMetrics.bandwidth, fragData.pts_max - fragData.pts_min, fragMetrics.processing_duration);

                 if (fragData.tags.length) {
-                    _callback(_level, _frag_current.continuity, _frag_current.seqnum, _frag_current.tag_list, fragData.tags, fragData.tag_pts_min, fragData.tag_pts_max, _hasDiscontinuity, start_offset + fragData.tag_pts_start_offset / 1000, _frag_current.program_date + fragData.tag_pts_start_offset);
+                    _tags_callback(_level, _frag_current.continuity, _frag_current.seqnum, _frag_current.tag_list, fragData.tags, fragData.tag_pts_min, fragData.tag_pts_max, _hasDiscontinuity, start_offset + fragData.tag_pts_start_offset / 1000, _frag_current.program_date + fragData.tag_pts_start_offset);
                     _hls.dispatchEvent(new HLSEvent(HLSEvent.TAGS_LOADED, tagsMetrics));
                     fragData.tags_pts_min_audio = fragData.tags_pts_max_audio;
                     fragData.tags_pts_min_video = fragData.tags_pts_max_video;