Transferred from the Adobe Open Source Subversion Repository

Revision: 6134
Author:   rfrishbe@adobe.com
Date:     2009-04-10T21:10:42.260080Z

Log Message:
-----------
Fix a bug with autoLayout in SkinnableContainer and SkinnableDataContainer.  When autoLayout is explicitely set, there was a bug in the getter to always return false.

QE Notes: -
Doc Notes: -
Bugs: SDK-20601
Reviewer: Hans
tests: checkintests

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

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

--- frameworks/projects/spark/src/spark/components/SkinnableContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableContainer.as
@@ -334,8 +334,8 @@
         else
         {
             // want the default to be true
-            return (contentGroupProperties.autoLayout === undefined) ?
-                    true : false
+            var v:* = contentGroupProperties.autoLayout;
+            return (v === undefined) ? true : v;
         }
     }


Fixed resource reloading failure caused by load resource as `XMLFile` first.

--- bin/Data/Scripts/Editor/EditorResourceBrowser.as
+++ bin/Data/Scripts/Editor/EditorResourceBrowser.as
@@ -1334,29 +1334,30 @@
         return false;

     String name;
+    File@ file;
+    XMLFile@ xml;
+
     if (useCache)
     {
-        XMLFile@ xml = cache.GetResource("XMLFile", path);
-        if (xml is null)
+        file = cache.GetFile(path);
+        if (file is null)
             return false;
-
-        name = xml.root.name;
     }
     else
     {
-        File@ file = File();
+        file = File();
         if (!file.Open(path))
             return false;
-
-        if (file.size == 0)
-            return false;
-
-        XMLFile@ xml = XMLFile();
-        if (xml.Load(file))
-            name = xml.root.name;
-        else
-            return false;
-    }
+    }
+
+    if (file.size == 0)
+        return false;
+
+    xml = XMLFile();
+    if (xml.Load(file))
+        name = xml.root.name;
+    else
+        return false;

     bool found = false;
     if (!name.empty)


re-enable IFlexInfo

re-enable IFlexInfo

--- frameworks/projects/Core/as/src/org/apache/flex/core/IFlexInfo.as
+++ frameworks/projects/Core/as/src/org/apache/flex/core/IFlexInfo.as
@@ -28,7 +28,6 @@
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	COMPILE::AS3
 	public interface IFlexInfo
 	{
         /**


get rid of warning

get rid of warning

--- frameworks/projects/HTML/as/src/org/apache/flex/html/ButtonBar.as
+++ frameworks/projects/HTML/as/src/org/apache/flex/html/ButtonBar.as
@@ -56,7 +56,6 @@
 		}

         /**
-         * @override
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          */
         COMPILE::JS


Transferred from the Adobe Open Source Subversion Repository

Revision: 16500
Author:   dloverin@adobe.com
Date:     2010-06-09T12:33:11.723963Z

Log Message:
-----------
RSL bug fixes.

1.	Move mx.events.IndexChangedEvent from mx.swc back to framework.swc. Spark ButtonBarBase.as used the class.
2.	CrossDomainRSLItem – https://bugs.adobe.com/jira/browse/SDK-26635 - load all RSLs into the top-level application domain until we can implement the cooperative loading feature. This fix is needed to take advantage of the remove unused rsls feature but keep modules working. Here’s the scenario that broke:

* An application loads the spark RSL but not the OSMF RSL.
* the application loads a module that uses VideoPlayer. The module loads the OSMF RSL in its application domain but the definitions are not seen by the VideoPlayer class in the top-level app domain. The player throws a VerifyError on TimeEvent (TimeEvent is an OSMF class that VideoPlayer has an expression dependency on).
3.	Add Spark components to the HelloWorld test application so make sure spark does not gain a dependency on mx.swc.
4.	PanelAccImpl – clean up an unused import statement.

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/events/IndexChangedEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/accessibility/PanelAccImpl.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/events/IndexChangedEvent.as" copyfrom-rev="16494" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/IndexChangedEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/HelloWorld.mxml</path>

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

--- frameworks/projects/spark/src/spark/accessibility/PanelAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/PanelAccImpl.as
@@ -19,7 +19,6 @@

 import mx.accessibility.AccConst;
 import mx.accessibility.AccImpl;
-import mx.accessibility.PanelAccImpl;
 import mx.core.UIComponent;
 import mx.core.mx_internal;
 import mx.events.ResizeEvent;


Transferred from the Adobe Open Source Subversion Repository

Revision: 22564
Author:   tkraikit@adobe.com
Date:     2011-09-14T19:50:07.656843Z

Log Message:
-----------
Update ASDoc "@productversion Flex 4.5.2" => "@productversion Flex 4.6"

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/OnDemandDataProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DateSpinnerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/graphics/BitmapScaleMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ContentBackgroundAppearance.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/core/FlexVersion.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ArrowDirection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/FormatPattern.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentNavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/core/ISoftKeyboardHintClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/YearProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/calendarClasses/DateSelectorDisplayMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListScrollerSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/ScrollSnappingMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/StageTextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ToggleSwitchSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImageSource.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/NumericDataProvider.as</path>
<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/mobilecomponents/src/spark/preloaders/SplashScreenImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/CalendarDate.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as
@@ -373,7 +373,7 @@
             return null;

         // When this class was first released, navigators was typed Vector
-        // and not Array.  In 4.5.2, TabbedViewNavigator moved away from this
+        // and not Array.  In 4.6, TabbedViewNavigator moved away from this
         // model and uses mxmlContent to manage children.  To maintain backwards
         // compatibility, the return type for this method remained the same.
         // As a result, the mxmlContent array will need to converted.
@@ -386,7 +386,7 @@
     public function set navigators(value:Vector.<ViewNavigatorBase>):void
     {
         // When this class was first released, navigators was typed Vector
-        // and not Array.  In 4.5.2, TabbedViewNavigator moved away from this
+        // and not Array.  In 4.6, TabbedViewNavigator moved away from this
         // model and uses mxmlContent to manage children.  To maintain backwards
         // compatibility, the return type for this method remained the same.
         // As a result, the value vector needs to be converted to an array


Transferred from the Adobe Open Source Subversion Repository

Revision: 23168
Author:   chiedozi@adobe.com
Date:     2011-11-01T17:08:32.587107Z

Log Message:
-----------
Fixed an RTE in TabbedViewNavigator related to setting the selectedIndex during initialization

QE notes:
Doc notes:
Bugs: SDK-31986
Reviewer: Evtim
Tests run: mustella-mobile, checkintests
Is noteworthy for integration: No

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as
@@ -406,17 +406,6 @@
         }

         mxmlContent = contentArray;
-
-        if (value && value.length > 0)
-        {
-            // Reset selectedIndex to -1 and proposed index to 0 so that the appropriate
-            // navigator is selected in commit properties.
-            _selectedIndex = _proposedSelectedIndex = 0;
-        }
-        else
-        {
-            _selectedIndex = _proposedSelectedIndex = NO_PROPOSED_SELECTION;
-        }

         // The proposed selected index is reset because it is no longer valid
         // since the array of navigators has changed.
@@ -700,67 +689,91 @@
             // Store the old index
             var oldIndex:int = _selectedIndex;

-            // If the data provider has changed, the navigator elements have
-            // already been removed, so the following code doesn't need to run
-            if (!selectedIndexAdjusted && !dataProviderChanged && _selectedIndex >= 0 && _selectedIndex < length)
+            if (selectedIndex >= length)
+                selectedIndex = (length > 0) ? 0 : NO_PROPOSED_SELECTION;
+
+            var indexChangedPrevented:Boolean = false;
+            // The selected index property can be changed programmitically on the
+            // TabbedViewNavigator or by its tab bar in response to a user action.  If
+            // this was initiated by the tab bar, a chaning event would have already been
+            // dispatched in tabBar_indexChanging().
+            if (initialized && selectedIndexChanged && !changingEventDispatched)
             {
-                navigator = getElementAt(_selectedIndex) as ViewNavigatorBase;
-                navigator.setActive(false, !maintainNavigationStack);
-                navigator.visible = false;
-                navigator.includeInLayout = false;
-
-                if (navigator.activeView)
-                    navigator.activeView.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE,
-                                                                view_propertyChangeHandler);
-
-                removeNavigatorListeners(navigator);
-            }
-
-            commitSelection();
-
-            if (_selectedIndex >= 0)
-            {
-                // If there is no focus or the item that had focus isn't
-                // on the display list anymore, update the focus to be
-                // the active view or the view navigator
-                updateFocus();
-
-                navigator = getElementAt(_selectedIndex) as ViewNavigatorBase;
-                navigator.setActive(true);
-                navigator.visible = true;
-                navigator.includeInLayout = true;
-
-                addNavigatorListeners(navigator);
-
-                // Update the states of the controls on the newly activated view navigator.
-                // The updateControlsForView() method will automatically bubble up to all
-                // parents of the navigator.
-                navigator.updateControlsForView(navigator.activeView);
-
-                // Force a validation of the new navigator to prevent a flicker from
-                // occurring in cases where multiple validation passes are required
-                // to completely validate a view
-                if (initialized)
-                    currentContentGroup.validateNow();
-
-                if (navigator.activeView)
+                // If the active view's REMOVING event or the navigator's
+                // CHANGING event was canceled, prevent the index change
+                if (!indexCanChange(selectedIndex))
                 {
-                    navigator.activeView.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,
-                                                            view_propertyChangeHandler);
+                    _proposedSelectedIndex = NO_PROPOSED_SELECTION;
+                    indexChangedPrevented = true;
                 }
             }
-
+
+            changingEventDispatched = false;
+
+            if (!indexChangedPrevented)
+            {
+                // If the data provider has changed, the navigator elements have
+                // already been removed, so the following code doesn't need to run
+                if (!selectedIndexAdjusted && !dataProviderChanged && _selectedIndex >= 0 && _selectedIndex < length)
+                {
+                    navigator = getElementAt(_selectedIndex) as ViewNavigatorBase;
+                    navigator.setActive(false, !maintainNavigationStack);
+                    navigator.visible = false;
+                    navigator.includeInLayout = false;
+
+                    if (navigator.activeView)
+                        navigator.activeView.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE,
+                                                                    view_propertyChangeHandler);
+
+                    removeNavigatorListeners(navigator);
+                }
+
+                commitSelection();
+
+                if (_selectedIndex >= 0)
+                {
+                    // If there is no focus or the item that had focus isn't
+                    // on the display list anymore, update the focus to be
+                    // the active view or the view navigator
+                    updateFocus();
+
+                    navigator = getElementAt(_selectedIndex) as ViewNavigatorBase;
+                    navigator.setActive(true);
+                    navigator.visible = true;
+                    navigator.includeInLayout = true;
+
+                    addNavigatorListeners(navigator);
+
+                    // Update the states of the controls on the newly activated view navigator.
+                    // The updateControlsForView() method will automatically bubble up to all
+                    // parents of the navigator.
+                    navigator.updateControlsForView(navigator.activeView);
+
+                    // Force a validation of the new navigator to prevent a flicker from
+                    // occurring in cases where multiple validation passes are required
+                    // to completely validate a view
+                    if (initialized)
+                        currentContentGroup.validateNow();
+
+                    if (navigator.activeView)
+                    {
+                        navigator.activeView.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE,
+                                                                view_propertyChangeHandler);
+                    }
+                }
+
+                // Dispatch selection change event
+                if (hasEventListener(IndexChangeEvent.CHANGE))
+                {
+                    changeEvent = new IndexChangeEvent(IndexChangeEvent.CHANGE, false, false);
+                    changeEvent.oldIndex = oldIndex;
+                    changeEvent.newIndex = _selectedIndex;
+                }
+            }
+
             selectedIndexAdjusted = false;
             dataProviderChanged = false;
             selectedIndexChanged = false;
-
-            // Dispatch selection change event
-            if (hasEventListener(IndexChangeEvent.CHANGE))
-            {
-                changeEvent = new IndexChangeEvent(IndexChangeEvent.CHANGE, false, false);
-                changeEvent.oldIndex = oldIndex;
-                changeEvent.newIndex = _selectedIndex;
-            }
         }

         if (tabBarVisibilityChanged)
@@ -1098,7 +1111,12 @@
     private function tabBar_indexChanging(event:IndexChangeEvent):void
     {
         if (!indexCanChange(event.newIndex))
+        {
             event.preventDefault();
+
+            // Clear changing flag
+            changingEventDispatched = false;
+        }
     }

     /**
@@ -1290,41 +1308,16 @@
      */
     public function set selectedIndex(value:int):void
     {
-        if (value < -1 || value >= length)
-        {
-            var message:String = ResourceManager.getInstance().getString(
-                "collections", "outOfBounds", [ value ]);
-            throw new RangeError(message);
-        }
-
         if (!dataProviderChanged && value == selectedIndex)
             return;

-        // The selected index property can be changed programmitically on the
-        // TabbedViewNavigator or by its tab bar in response to a user action.  If
-        // this was initiated by the tab bar, a chaning event would have already been
-        // dispatched in tabBar_indexChanging().
-        if (initialized && !changingEventDispatched)
-        {
-            // If the active view's REMOVING event or the navigator's
-            // CHANGING event was canceled, prevent the index change
-            if (!indexCanChange(value))
-            {
-                _proposedSelectedIndex = NO_PROPOSED_SELECTION;
-                return;
-            }
-        }
-
         if (activeView)
             activeView.dispatchEvent(new Event("_navigationChange_"));

         _proposedSelectedIndex = value;
         selectedIndexChanged = true;
-        changingEventDispatched = false;

         invalidateProperties();
-
-
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 21769
Author:   jasonsj@adobe.com
Date:     2011-08-02T17:22:14.710585Z

Log Message:
-----------
CalloutButton
- CalloutButton extends Button (previously SkinnableContainer)
- New Callout proxy properties for calloutContent and calloutLayout
- read-only callout property SDK-30838
- New calloutDestructionPolicy
- closeOnResize added to DropDownController to prevent automatically closing when the system manager resizes SDK-30857

Callout
- Callout visual review changes
- Callout properties for actualHorizontalPosition and actualVerticalPosition
- Removed gap style, replaced with mx_internal margin property
- New auto-close behavior when the owner is removed from the stage SDK-30582
- New reposition behavior when the system manager resizes SDK-30857

ASDoc updates

QE notes: Please add tests for bug fixes listed below. Changes to calloutDestructionPolicy and closeOnResize should also be tested while the Callout is open.
Doc notes:
Bugs:
SDK-30860 arrow direction when "start" or"after" and"auto" is not correct
SDK-30838 New APIs required to resize CalloutButton's Callout before it is opened
SDK-30582 android : callout stays visible when the view changes via device's back button
SDK-30857 callout should stay visible on orientation change
Reviewer: evtim
Tests run: checkintests, mustella
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="D">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/tests/airMobileBasicTests/src/mobile/scripts/CalloutButtonTestScript.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SplitViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile320/assets/CalloutContentBackground.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/tests/airMobileBasicTests/src/mobile/views/TestCalloutButton.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile240/assets/CalloutContentBackground.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile160/assets/CalloutContentBackground.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/SplitViewNavigatorSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/SplitViewNavigatorSkin.as
@@ -101,6 +101,7 @@

         // Create the callout but don't add it to display list
         viewNavigatorCallout = new Callout();
+        viewNavigatorCallout.id = "viewNavigatorCallout";
         viewNavigatorCallout.height = 500;
         viewNavigatorCallout.setStyle("color", 0x000000);
         viewNavigatorCallout.setStyle("contentBackgroundAlpha", 0);


Concision

Concision

--- src/Levels/ControlTutorials/WireTutorial.as
+++ src/Levels/ControlTutorials/WireTutorial.as
@@ -28,9 +28,7 @@
 			//info += " You can mouse over ports & wires to see their present value & more information."
 			//info += "\n\nWires can be used to create circuits, connecting any number of inputs to a single output."
 			//info += " You cannot connect more than one output to a circuit."
-			info = "Click and drag to draw wires & connect ports."
-			info += " When you think you've built a solution, click the 'test' button at the top-center to see if your machine passes the test."
-			info += "\n\nHave fun!";
+			info = "Draw wires to connect them, then press Test!";
 		}

 		override public function specialInfo():Vector.<FlxSprite> {


Fixed calculation issues with the last fix for the Flash chunked uploading logic.

--- src/flash/plupload/src/com/plupload/File.as
+++ src/flash/plupload/src/com/plupload/File.as
@@ -282,17 +282,17 @@
 							file._size = file._imageData.length;
 						}

-						// Force at least 4 chunks to fake progress. We need to fake this since the URLLoader
-						// doesn't have a upload progress event and we can't use FileReference.upload since it
-						// doesn't support cookies, breaks on HTTPS and doesn't support custom data so client
-						// side image resizing will not be possible.
-						if (chunking && chunks < 4 && file._size > 1024 * 32) {
-							chunkSize = Math.ceil(file._size / 4);
-							chunks = 4;
-						} else {
-							// If the file is small or chunking is disabled force only one chunk
-							chunkSize = file._size;
-							chunks = 1;
+						if (chunking) {
+							chunks = Math.ceil(file._size / chunkSize);
+
+							// Force at least 4 chunks to fake progress. We need to fake this since the URLLoader
+							// doesn't have a upload progress event and we can't use FileReference.upload since it
+							// doesn't support cookies, breaks on HTTPS and doesn't support custom data so client
+							// side image resizing will not be possible.
+							if (chunks < 4 && file._size > 1024 * 32) {
+								chunkSize = Math.ceil(file._size / 4);
+								chunks = 4;
+							}
 						}

 						// Start uploading the scaled down image
@@ -309,17 +309,17 @@

 					loader.loadBytes(file._fileRef.data);
 				} else {
-					// Force at least 4 chunks to fake progress. We need to fake this since the URLLoader
-					// doesn't have a upload progress event and we can't use FileReference.upload since it
-					// doesn't support cookies, breaks on HTTPS and doesn't support custom data so client
-					// side image resizing will not be possible.
-					if (chunking && chunks < 4 && file._size > 1024 * 32) {
-						chunkSize = Math.ceil(file._size / 4);
-						chunks = 4;
-					} else {
-						// If the file is small or chunking is disabled force only one chunk
-						chunkSize = file._size;
-						chunks = 1;
+					if (chunking) {
+						chunks = Math.ceil(file._size / chunkSize);
+
+						// Force at least 4 chunks to fake progress. We need to fake this since the URLLoader
+						// doesn't have a upload progress event and we can't use FileReference.upload since it
+						// doesn't support cookies, breaks on HTTPS and doesn't support custom data so client
+						// side image resizing will not be possible.
+						if (chunks < 4 && file._size > 1024 * 32) {
+							chunkSize = Math.ceil(file._size / 4);
+							chunks = 4;
+						}
 					}

 					file._multipart = multipart;


Transferred from the Adobe Open Source Subversion Repository

Revision: 22564
Author:   tkraikit@adobe.com
Date:     2011-09-14T19:50:07.656843Z

Log Message:
-----------
Update ASDoc "@productversion Flex 4.5.2" => "@productversion Flex 4.6"

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/OnDemandDataProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DateSpinnerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/graphics/BitmapScaleMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ContentBackgroundAppearance.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/core/FlexVersion.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ArrowDirection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/FormatPattern.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentNavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/core/ISoftKeyboardHintClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/YearProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/calendarClasses/DateSelectorDisplayMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListScrollerSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/ScrollSnappingMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/StageTextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ToggleSwitchSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImageSource.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/NumericDataProvider.as</path>
<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/mobilecomponents/src/spark/preloaders/SplashScreenImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/CalendarDate.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/SpinnerListContainer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/SpinnerListContainer.as
@@ -19,7 +19,7 @@
  *
  *  @langversion 3.0
  *  @playerversion AIR 3
- *  @productversion Flex 4.5.2
+ *  @productversion Flex 4.6
  */

 [Exclude(name="backgroundAlpha", kind="style")]
@@ -32,7 +32,7 @@
 	 *
 	 *  @langversion 3.0
 	 *  @playerversion AIR 3
-	 *  @productversion Flex 4.5.2
+	 *  @productversion Flex 4.6
 	 */
 	public function SpinnerListContainer()
 	{


Transferred from the Adobe Open Source Subversion Repository

Revision: 10372
Author:   klin@adobe.com
Date:     2009-09-18T00:49:09.441663Z

Log Message:
-----------
https://bugs.adobe.com/jira/browse/SDK-23273 - Excluded borderAlpha and borderVisible from mx:TabBar.

https://bugs.adobe.com/jira/browse/SDK-23042 - Pushed Exclude of focusThickness style from SkinnableComponent into specific subclasses (GroupBase, ScrollBar, SkinnableContainerBase, VideoPlayer, TitleBar) so that other subclasses will inherit the focusThickness style.

https://bugs.adobe.com/jira/browse/SDK-23172 - Revert of 10349. Fixed bug where dataTipInstance was not inheriting Slider's styles by assigning Slider as its owner. Also excluded unsupported text styles.

QE Notes: None
Doc Notes: None
Bugs: SDK-23273, SDK-23042, SDK-23172
Reviewer: Jason
API Change: No
Is noteworthy for integration: FB
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TabBar.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/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableContainerBase.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/VideoPlayer.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/airframework/src/spark/components/windowClasses/TitleBar.as</path>

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

--- frameworks/projects/mx/src/mx/controls/TabBar.as
+++ frameworks/projects/mx/src/mx/controls/TabBar.as
@@ -203,11 +203,13 @@
 [Exclude(name="backgroundColor", kind="style")]
 [Exclude(name="backgroundImage", kind="style")]
 [Exclude(name="backgroundSize", kind="style")]
+[Exclude(name="borderAlpha", kind="style")]
 [Exclude(name="borderColor", kind="style")]
 [Exclude(name="borderSides", kind="style")]
 [Exclude(name="borderSkin", kind="style")]
 [Exclude(name="borderStyle", kind="style")]
 [Exclude(name="borderThickness", kind="style")]
+[Exclude(name="borderVisible", kind="style")]
 [Exclude(name="cornerRadius", kind="style")]
 [Exclude(name="dropShadowColor", kind="style")]
 [Exclude(name="dropShadowEnabled", kind="style")]


Transferred from the Adobe Open Source Subversion Repository

Revision: 17668
Author:   hmuller@adobe.com
Date:     2010-09-10T22:52:09.156291Z

Log Message:
-----------
Grid layers are now defined as type GridLayer (a private class), instead of Group.

GridLayer type no longer extends Group, it's now an object that has Group valued root property.   This makes the type's API relatively tiny - only two methods - and makes it possible for GridLayer to encapsulate the Grid itself as a layer (the item renderer layer).

Grid item renders are now consistently typed as IGridItemRenderer, rather than IVisualElement.

DefaultGridItemRenderer is now a UIFTETextField subclass and no longer supports the "textFieldClass" style.  A new UITextField based item renderer has been added, it's UITextFieldGridItemRenderer.

Support for the module implications of embedded fonts is now GridColumn's responsiblity.  GridColumn/itemToRenderer() now wraps item renderer ClassFactory item renders with a local ClassFactory subclass that delegates the newInstance() operation to the grid's moduleFactory.

QE notes:
Doc notes:
Bugs:
Reviewer: Carol, Kevin
Tests run: checkin, mustella cyclone
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/IGridItemRenderer.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/UITextFieldGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ColumnHeaderBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/IGridItemRendererOwner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
+++ frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
@@ -1,52 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2010 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Warning: the implementation of this class is identical to UITextFieldGridItemRenderer.
+// Although most of the common code has been factored into the "IUITextFieldGridItemRenderer.as"
+// include file, the imports metadata and other code below have been copied.  All changes
+// to this file should be mirrored by TextFieldGridItemRendererInclude.as.
+
 package spark.skins.spark
 {
-
-import flash.display.DisplayObject;
-import flash.events.Event;
-import flash.geom.Matrix;
-import flash.geom.Point;
-import flash.geom.Rectangle;
-import flash.text.TextFieldAutoSize;
+import mx.core.UIFTETextField;
+import mx.styles.IStyleClient;

-import mx.core.IToolTip;
-import mx.core.IUITextField;
-import mx.core.LayoutElementUIComponentUtils;
-import mx.core.UIComponent;
-import mx.core.UITextField;
-import mx.core.mx_internal;
-import mx.events.FlexEvent;
-import mx.events.ToolTipEvent;
-import mx.managers.ISystemManager;
-
-import spark.components.Grid;
 import spark.components.IGridItemRenderer;
-import spark.components.supportClasses.GridColumn;
-
-use namespace mx_internal;

 //--------------------------------------
 //  Styles
 //--------------------------------------
-
-/**
- *  The class implementing IUITextField that is used by this component
- *  to render text.
- *
- *
It can be set to either the mx.core.UITextField class
- *  (to use the classic TextField class built into Flash Player)
- *  or the mx.core.UIFTETextField class
- *  (to use the Text Layout Framework to get improved text rendering,
- *  including bidirectional layout).

- *
- *  @default mx.core.UITextField
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 1.5
- *  @productversion Flex 4
- */
-[Style(name="textFieldClass", type="Class", inherit="no")]
-

 include "../../styles/metadata/BasicNonInheritingTextStyles.as"
 include "../../styles/metadata/BasicInheritingTextStyles.as"
@@ -69,19 +46,15 @@

 /**
  *   A simple and efficent IGridItemRenderer that displays a single text label.  This
- *   class is the default value for the s:DataGrid itemRenderer property.
+ *   class is the default value for the s:DataGrid itemRenderer property.   It's based
+ *   on FTE, the FlashTextEngine, It is based on FTE, the “FlashTextEngine”, which supports
+ *   high-quality international typography and font embedding in the same way as other
+ *   Spark controls.
  *
  *
Label text wrapping can be controlled with the lineBreak style.  For example
  *   a DataGrid configured like this:
  *   lineBreak="explicit" variableRowHeight="false" yields fixed height
  *   DataGrid cells whose labels do not wrap.

- *
- *
The value of the label property is displayed with a either a UIFTETextField
- *   or a UITEextField depending on the value of the textFieldClass style.  The default
- *   is UIFTETextField because it balances Spark compatability and cross-platform
- *   performance well.  In some cases specifying
- *   textFieldClass="mx.core.UITextField" (MXML) for the DataGrid will yield
- *   improved scrolling performance for very large DataGrids.

  *
  *
DefaultGridItemRenderer is not intended to be subclassed or copied, it is
  *   effectively final.  Custom item renderers can be created in MXML with the
@@ -89,557 +62,31 @@
  *
  *   @see spark.components.supportClasses.GridItemRenderer
  */
-public class DefaultGridItemRenderer extends UIComponent implements IGridItemRenderer
+public class DefaultGridItemRenderer extends UIFTETextField implements IGridItemRenderer, IStyleClient
 {
+
     public function DefaultGridItemRenderer()
     {
         super();

-        addEventListener(ToolTipEvent.TOOL_TIP_SHOW, toolTipShowHandler);
-    }
-
-    /**
-     *  Padding for the entire renderer.  Not to be confused with the UITextField
-     *  TEXT_WIDTH,HEIGHT_PADDING values which must be added to its textWidth,Height
-     *  to prevent clipping/wrapping.
-     */
-    private static const WIDTH_PADDING:Number = 15;
-    private static const HEIGHT_PADDING:Number = 7;
-
-    /**
-     *  Used to flag a lineBreak style change for commitProperties().   See styleChanged().
-     */
-    private var lineBreakStyleChanged:Boolean = false;
-
-    //--------------------------------------------------------------------------
-    //
-    //  Properties
-    //
-    //--------------------------------------------------------------------------
-
-    private function dispatchChangeEvent(type:String):void
-    {
-        if (hasEventListener(type))
-            dispatchEvent(new Event(type));
-    }
-
-    //----------------------------------
-    //  column
-    //----------------------------------
-
-    private var _column:GridColumn = null;
-
-    [Bindable("columnChanged")]
-
-    /**
-     *  @inheritDoc
-     *
-     *
The Grid's updateDisplayList() method sets this property
-     *  before calling preprare()
.
-     *
-     *  @default null
-     */
-    public function get column():GridColumn
-    {
-        return _column;
-    }
-
-    /**
-     *  @private
-     */
-    public function set column(value:GridColumn):void
-    {
-        if (_column == value)
-            return;
-
-        _column = value;
-        dispatchChangeEvent("columnChanged");
-    }
-
-    //----------------------------------
-    //  data
-    //----------------------------------
-
-    private var _data:Object = null;
-
-    [Bindable("dataChange")]  // compatible with FlexEvent.DATA_CHANGE
-
-    /**
-     *  The value of the dataProvider "item" for this row, i.e. dataProvider.getItemAt(itemIndex).
-     *  Item renderers often bind visual element attributes to data properties.  Note
-     *  that, despite its name, this property does not depend on the column's "dataField".
-     *
-     *  @default null
-     */
-    public function get data():Object
-    {
-        return _data;
-    }
-
-    /**
-     *  @private
-     */
-    public function set data(value:Object):void
-    {
-        if (_data == value)
-            return;
-
-        _data = value;
-
-        const eventType:String = "dataChange";
-        if (hasEventListener(eventType))
-            dispatchEvent(new FlexEvent(eventType));
-    }
-
-    //----------------------------------
-    //  hovered
-    //----------------------------------
-    /**
-     *  @private
-     *  storage for the selected property
-     */
-    private var _hovered:Boolean = false;
-
-    /**
-     *  Set to true when the mouse is hovered over the item renderer.
-     *
-     *  @default false
-     */
-    public function get hovered():Boolean
-    {
-        return _hovered;
-    }
-
-    /**
-     *  @private
-     */
-    public function set hovered(value:Boolean):void
-    {
-        _hovered = value;
-    }
-
-    //----------------------------------
-    //  rowIndex
-    //----------------------------------
-
-    private var _rowIndex:int = -1;
-
-    [Bindable("rowIndexChanged")]
-
-    /**
-     *  @inheritDoc
-     *
-     *
The Grid's updateDisplayList() method sets this property
-     *  before calling prepare()
.
-     *
-     *  @default -1
-     */
-    public function get rowIndex():int
-    {
-        return _rowIndex;
-    }
-
-    /**
-     *  @private
-     */
-    public function set rowIndex(value:int):void
-    {
-        if (_rowIndex == value)
-            return;
-
-        _rowIndex = value;
-        dispatchChangeEvent("rowIndexChanged");
-    }
-
-    //----------------------------------
-    //  showsCaret
-    //----------------------------------
-
-    private var _showsCaret:Boolean = false;
-
-    [Bindable("showsCaretChanged")]
-
-    /**
-     *  @inheritDoc
-     *
-     *
The Grid's updateDisplayList() method sets this property
-     *  before calling preprare()
.
-     *
-     *  @default false
-     */
-    public function get showsCaret():Boolean
-    {
-        return _showsCaret;
-    }
-
-    /**
-     *  @private
-     */
-    public function set showsCaret(value:Boolean):void
-    {
-        if (_showsCaret == value)
-            return;
-
-        _showsCaret = value;
-        dispatchChangeEvent("labelDisplayChanged");
-    }
-
-    //----------------------------------
-    //  selected
-    //----------------------------------
-
-    private var _selected:Boolean = false;
-
-    [Bindable("selectedChanged")]
-
-    /**
-     *  @inheritDoc
-     *
-     *
The Grid's updateDisplayList() method sets this property
-     *  before calling preprare()
.
-     *
-     *  @default false
-     */
-    public function get selected():Boolean
-    {
-        return _selected;
-    }
-
-    /**
-     *  @private
-     */
-    public function set selected(value:Boolean):void
-    {
-        if (_selected == value)
-            return;
-
-        _selected = value;
-        dispatchChangeEvent("selectedChanged");
-    }
-
-    //----------------------------------
-    //  singleLine (private)
-    //----------------------------------
-
-    private var _singleLine:Boolean = false;
-
-    /**
-     *  @private
-     *  If true, then the labelDisplay is confgured to not wrap and to display
-     *  only one line of text.  That's the most efficient rendering mode.  This
-     *  property is false by default, which means that multiline and wordWrap are
-     *  enabled (true) and autoSize is LEFT.
-     */
-    public function get singleLine():Boolean
-    {
-        return _singleLine
-    }
-
-    /**
-     *  @private
-     */
-    public function set singleLine(value:Boolean):void
-    {
-        if (_singleLine == value)
-            return;
-
-        _singleLine = value;
-
-        labelDisplay.multiline = !singleLine;  // can be reset, see updateMeasuredSize()
-        labelDisplay.wordWrap = !singleLine;
-    }
-
-    //----------------------------------
-    //  dragging
-    //----------------------------------
-
-    private var _dragging:Boolean = false;
-
-    [Bindable("draggingChanged")]
-
-    /**
-     *  @inheritDoc
-     *
-     *  @default false
-     */
-    public function get dragging():Boolean
-    {
-        return _dragging;
-    }
-
-    /**
-     *  @private
-     */
-    public function set dragging(value:Boolean):void
-    {
-        if (_dragging == value)
-            return;
-
-        _dragging = value;
-        dispatchChangeEvent("draggingChanged");
-    }
-
-    //----------------------------------
-    //  label
-    //----------------------------------
-
-    private var _label:String = "";
-
-    [Bindable("labelChanged")]
-
-    /**
-     *  @inheritDoc
-     *
-     *
The Grid sets this property to the value of the column's itemToLabel() method, before
-     *  calling preprare().

-     *
-     *  @default ""
-     */
-    public function get label():String
-    {
-        return _label;
-    }
-
-    /**
-     *  @private
-     */
-    public function set label(value:String):void
-    {
-        if (_label == value)
-            return;
-
-        _label = value;
-        invalidateDisplayList();
-        // Defer setting the labelDisplay's text property to avoid extra computation, see updateMeasuredSize()
-
-        dispatchChangeEvent("labelChanged");
-    }
-
-    //----------------------------------
-    //  labelDisplay
-    //----------------------------------
-
-    private var _labelDisplay:IUITextField = null;
-
-    [Bindable("labelDisplayChanged")]
-
-    /**
-     *  An optional component for displaying the label property.   If specified, this component's
-     *  text will be kept in sync with this renderer's label.
-     *
-     *  @default null
-     */
-    public function get labelDisplay():IUITextField
-    {
-        return _labelDisplay
-    }
-
-    /**
-     *  @private
-     */
-    public function set labelDisplay(value:IUITextField):void
-    {
-        if (_labelDisplay == value)
-            return;
-
-        _labelDisplay = value;
-        invalidateSize();
-        dispatchChangeEvent("labelDisplayChanged");
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Methods
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @inheritDoc
-     */
-    public function prepare(willBeRecycled:Boolean):void
-    {
-    }
-
-    /**
-     *  @inheritDoc
-     */
-    public function discard(hasBeenRecycled:Boolean):void
-    {
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Overridden methods: UIComponent
-    //
-    //--------------------------------------------------------------------------
-
-    private function createLabelDisplay():void
-    {
-        if (labelDisplay)
-            removeChild(DisplayObject(labelDisplay));
-
-        labelDisplay = IUITextField(createInFontContext(UITextField));
-        labelDisplay.multiline = true;  // consistent with singleLine=false (the default)
-        labelDisplay.wordWrap = true;
-        labelDisplay.autoSize = TextFieldAutoSize.NONE;
+        multiline = true;  // consistent with singleLine=false (the default)
+        wordWrap = true;
+        autoSize = TextFieldAutoSize.NONE;
+        inheritingStyles = StyleProtoChain.STYLE_UNINITIALIZED;
+        nonInheritingStyles = StyleProtoChain.STYLE_UNINITIALIZED;

         // The default width of a TextField is 100.  If autoWrap is true, and
         // multiline is true, the measured text will wrap if it is wider than
         // the TextField's width. This is not what we want when measuring the
         // width of typicalItem columns that lack an explicit GridColumn width.

-        labelDisplay.setActualSize(4096, NaN);  // 4096 is just an arbitrarily large value
+        setActualSize(4096, NaN);  // 4096 is just an arbitrarily large value

-        addChild(DisplayObject(labelDisplay));
+        addEventListener(ToolTipEvent.TOOL_TIP_SHOW, toolTipShowHandler);
+
     }

-    /**
-     *  @private
-     */
-    override protected function commitProperties():void
-    {
-        super.commitProperties();
-
-        if (!labelDisplay || hasFontContextChanged())
-            createLabelDisplay();
-
-        if (lineBreakStyleChanged)
-        {
-            singleLine = getStyle("lineBreak") == "explicit";
-            lineBreakStyleChanged = false;
-        }
-    }
-
-    /**
-     *  @private
-     */
-    override public function styleChanged(styleProp:String):void
-    {
-        super.styleChanged(styleProp);
-
-        if (!styleProp || (styleProp == "styleName") || (styleProp = "lineBreak"))
-        {
-            lineBreakStyleChanged = true;
-            invalidateProperties();
-        }
-    }
-
-
-    /**
-     *  @private
-     *  The renderer's measuredWidth,Height are just padded versions of the labelDisplay's
-     *  textWidth,Height properties.   The code below is based on the UITextField
-     *  meausuredWidth,Height get methods, although we do not call validateNow() here (as
-     *  they do).
-     *
-     */
-    private function updateMeasuredSize():void
-    {
-        if (getStyle("lineBreak") == "explicit")
-            labelDisplay.multiline = _label.indexOf("\n") != -1;
-
-        labelDisplay.text = _label;  // forces a labelDisplay.validateNow(), if text has changed
+include "TextFieldGridItemRendererInclude.as"

-        const widthPadding:int = WIDTH_PADDING + UITextField.TEXT_WIDTH_PADDING;
-        const heightPadding:int = HEIGHT_PADDING + UITextField.TEXT_HEIGHT_PADDING
-
-        if (!labelDisplay.stage || labelDisplay.embedFonts)
-        {
-            measuredWidth = labelDisplay.textWidth + widthPadding;
-            measuredHeight = labelDisplay.textHeight + heightPadding;
-        }
-        else
-        {
-            const m:Matrix = labelDisplay.transform.concatenatedMatrix;
-            measuredWidth = Math.abs((labelDisplay.textWidth * m.a / m.d)) + widthPadding;
-            measuredHeight  = Math.abs((labelDisplay.textHeight * m.a / m.d)) + heightPadding;
-        }
-    }
-
-    /**
-     *  @private
-     */
-    override protected function measure():void
-    {
-        super.measure();  // initializes measured{Min}Width,Height to 0
-        updateMeasuredSize();
-    }
-
-    /**
-     *  @private
-     *  Watch Out: this code relies on the fact that UITextField/setActualSize() can cause
-     *  labelDisplay.textHeight to change, if the text wraps.  The textfield's measuredHeight
-     *  is just a padded version of textHeight.  This is the only place where labelDisplay.setActualSize()
-     *  is called, so we update the measuredHeight of this render here.  Very unconventional.
-     *  Doing so is essential because after this code runs, i.e. after GridLayout/layoutItemRenderer()
-     *  invokes validateNow() on this renderer, it uses the renderer's preferredBoundsHeight()
-     *  (that's the measuredHeight in our case) to update the overall row height.
-     */
-    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
-    {
-        super.updateDisplayList(width, height);
-
-        if ((unscaledWidth == 0) || (unscaledHeight == 0))
-            return;
-
-        // We shrink the available space by one pixel to avoid rendering on top of the
-        // default row and column separators.
-
-        const labelDisplayX:int = 5;
-        const labelDisplayY:int = 4;
-        const labelDisplayWidth:int = Math.floor(unscaledWidth - 1) - (WIDTH_PADDING - labelDisplayX);
-        const labelDisplayHeight:int = Math.floor(unscaledHeight - 1) - (HEIGHT_PADDING - labelDisplayY);
-
-        labelDisplay.setActualSize(labelDisplayWidth, labelDisplayHeight);  // setActualSize() side-effects labelDisplay.textHeight
-        updateMeasuredSize();  // See @private comment above
-
-        labelDisplay.move(labelDisplayX, labelDisplayY);
-
-        // If the effective value of showDataTips has changed for this column, then
-        // set the renderer's tooltTip property to a placeholder.  The real tooltip
-        // text is computed in the TOOL_TIP_SHOW handler below.
-
-        // TBD(hmuller) - this code should be common with GridItemRenderer
-
-        const showDataTips:Boolean = column.getShowDataTips();
-        const dataTip:String = toolTip;
-        if (showDataTips && !dataTip)
-            toolTip = "<dataTip>";
-        else if (!showDataTips && dataTip)
-            toolTip = null;
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Event Handlers
-    //
-    //--------------------------------------------------------------------------
-
-    // TBD(hmuller) - this code should be common with GridItemRenderer
-    private function toolTipShowHandler(event:ToolTipEvent):void
-    {
-        var toolTip:IToolTip = event.toolTip;
-
-        toolTip.text = column.itemToDataTip(data);  // Lazily compute the tooltip text
-
-        // Move the origin of the tooltip to the origin of this item renderer
-
-        var sm:ISystemManager = systemManager.topLevelSystemManager;
-        var sbRoot:DisplayObject = sm.getSandboxRoot();
-        var screen:Rectangle = sm.getVisibleApplicationRect(null, true);
-        var pt:Point = new Point(0, 0);
-        pt = localToGlobal(pt);
-        pt = sbRoot.globalToLocal(pt);
-
-        toolTip.move(pt.x, Math.round(pt.y + (height - toolTip.height) / 2));
-
-        var screenRight:Number = screen.x + screen.width;
-        pt.x = toolTip.x;
-        pt.y = toolTip.y;
-        pt = sbRoot.localToGlobal(pt);
-        if (pt.x + toolTip.width > screenRight)
-            toolTip.move(toolTip.x - (pt.x + toolTip.width - screenRight), toolTip.y);
-    }
-
-}
+}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

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

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

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

+/*
+ *  The IDisplayObjectContainerInterface defines the basic set of APIs
+ *  for web version of flash.display.DisplayObjectContainer
+ *
+ */
 import flash.text.TextSnapshot;
 import flash.geom.Point;


Transferred from the Adobe Open Source Subversion Repository

Revision: 19244
Author:   rfrishbe@adobe.com
Date:     2010-12-09T23:54:19.047409Z

Log Message:
-----------
Adding loadingIconClass to IconItemRenderer.  This still needs to be PARBed.

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

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as

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

--- frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as
@@ -244,7 +244,7 @@
      *  @private
      *  The source to set iconDisplay to, after waiting an appropriate delay period
      */
-    private var loadingIconSource:Object;
+    private var iconSourceToLoad:Object;

     //--------------------------------------------------------------------------
     //
@@ -817,6 +817,49 @@
         invalidateSize();
         invalidateDisplayList();
     }
+
+	//----------------------------------
+	//  loadingIconClass
+	//----------------------------------
+
+	/**
+	 *  @private
+	 */
+	private var _loadingIconClass:Class;
+
+	/**
+	 *  The icon asset to use while an externally loaded asset is
+	 *  being downloaded.
+	 *
+	 *  @default null
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10
+	 *  @playerversion AIR 2.5
+	 *  @productversion Flex 4.5
+	 */
+	public function get loadingIconClass():Class
+	{
+		return _loadingIconClass;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set loadingIconClass(value:Class):void
+	{
+		if (value == _loadingIconClass)
+			return;
+
+		_loadingIconClass = value;
+
+		iconChanged = true;
+		invalidateProperties();
+
+		// clear clearOnLoad if necessary
+		if (iconDisplay)
+			iconDisplay.clearOnLoad = (loadingIconClass == null);
+	}

     //----------------------------------
     //  messageField
@@ -1415,6 +1458,62 @@
         removeChild(labelDisplay);
         labelDisplay = null;
     }
+
+	/**
+	 *  @private
+	 */
+	private function loadExternalImage(source:Object, iconDelay:Number):void
+	{
+		// set iconDisplay's source now to either loadingIconClass
+		// or null (if no loadingIconClass).  this is so we don't display the old
+		// data while we're loading.
+		iconDisplay.source = loadingIconClass;
+
+		// while we're loading,if loadingIconClass is set,
+		// we'll keep that image up while we're loading
+		// the external content
+		iconDisplay.clearOnLoad = (loadingIconClass == null);
+
+		if (iconDelay > 0)
+		{
+			// set what we're gonna load and start the timer
+			iconSourceToLoad = source;
+
+			if (!iconSetterDelayTimer)
+			{
+				iconSetterDelayTimer = new Timer(iconDelay, 1);
+				iconSetterDelayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, iconSetterDelayTimer_timerCompleteHandler);
+			}
+
+			iconSetterDelayTimer.start();
+		}
+		else // iconDelay == 0
+		{
+			// load up the image immediately
+
+			// need to call validateProperties because we need this loadingIconClass
+			// to actually get loaded up since we set iconDisplay.source to a remote
+			// image on the next line.  BitmapImage doesn't actually attempt to load
+			// up the image (even if it's a locally embedded asset) until commitProperties()
+			iconDisplay.validateProperties();
+
+			iconDisplay.source = source;
+		}
+	}
+
+	/**
+	 *  @private
+	 */
+	private function stopLoadingExternalImage():void
+	{
+		// stop any asynch operation:
+		if (iconSetterDelayTimer)
+		{
+			iconSourceToLoad = null
+			iconSetterDelayTimer.stop();
+			iconSetterDelayTimer.reset();
+		}
+	}

     /**
      *  @private
@@ -1422,40 +1521,28 @@
     private function setIconDisplaySource(source:Object):void
     {
         var iconDelay:Number = getStyle("iconDelay");
-

         // if not a string or URL request (or null), load it up immediately
         var isExternalSource:Boolean = (source is String || source is URLRequest);

-        // if null or iconDelay == 0, do it synchronously
-        if (!isExternalSource || iconDelay == 0)
-        {
-            // stop any asynch operation:
-            if (iconSetterDelayTimer)
-            {
-                loadingIconSource = null
-                iconSetterDelayTimer.stop();
-                iconSetterDelayTimer.reset();
-            }
-
-            // load it up
-            iconDisplay.source = source;
+        // if null or embedded asset do it synchronously
+        if (!isExternalSource)
+        {
+            stopLoadingExternalImage();
+
+			// load it up
+        	iconDisplay.source = source;

             return;
         }

         // if it's the same source, don't cancel this load--let it continue
-        if (loadingIconSource == source)
+        if (iconSourceToLoad == source)
             return;

         // At this point, we know we can cancel the old asynch operation
         // since we're not going to use it anymore
-        if (iconSetterDelayTimer)
-        {
-            loadingIconSource = null
-            iconSetterDelayTimer.stop();
-            iconSetterDelayTimer.reset();
-        }
+		stopLoadingExternalImage();

         // we know we're loading external content, check the cache first:
         var contentCache:ContentCache = iconContentLoader as ContentCache;
@@ -1468,19 +1555,8 @@
             }
         }

-        // otherwise, we need to rely on the timer
-        if (!iconSetterDelayTimer)
-        {
-            iconSetterDelayTimer = new Timer(iconDelay, 1);
-            iconSetterDelayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, iconSetterDelayTimer_timerCompleteHandler);
-        }
-
-        // this is so we don't display the old data while we're loading
-        // FIXME (rfrishbe): perhaps we should add an iconLoadingAsset (must be embedded) property?
-        iconDisplay.source = null;
-        loadingIconSource = source;
-
-        iconSetterDelayTimer.start();
+		// otherwise, we need to load an external asset and use a Timer
+		loadExternalImage(source, iconDelay);
     }

     /**
@@ -1494,9 +1570,9 @@
             return;

         if (iconDisplay)
-            iconDisplay.source = loadingIconSource;
-
-        loadingIconSource = null;
+            iconDisplay.source = iconSourceToLoad;
+
+        iconSourceToLoad = null;
     }

     /**


Pad output frame count with zeros. Fixed #7.

This should make sorting in finder, or when using fileglobs easier.

--- src/swf2png.as
+++ src/swf2png.as
@@ -78,6 +78,15 @@

 		}

+		private function padNumber(input:int, target:int):String {
+			var out:String = input.toString();
+			var targetCount:int = target.toString().length;
+			while(out.length < targetCount) {
+				out = '0' + out;
+			}
+			return out;
+		}
+
 		private function calculateBBox():void {
 			stopClip(loadedSwf);
 			goToFrame(loadedSwf, 0);
@@ -142,7 +151,7 @@
 			var bytearr:ByteArray = PNGEncoder.encode(bitmapData);
 			var increment:String = '';
 			if(totalFrames > 1) {
-				increment = separator + counter;
+				increment = separator + padNumber(counter, totalFrames);
 			}
 			var outfileName:String = outputDirPath + File.separator + prefix + increment + ".png"
 			var file:File = new File(outfileName);


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

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

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

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

 package mx.olap
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 5545
Author:   jimurphy@adobe.com
Date:     2009-03-25T19:00:52.330680Z

Log Message:
-----------
1st pass of rename according to the spec http://opensource.adobe.com/wiki/display/flexsdk/Dropping+the+Fx+Prefix

Flex now requires CSS Style declarations to declare @namespace rules and disambiguate between halo and spark components using CSS 3 namespace prefixes on type selectors. At compile time, this namespace information will be used to map type names to qualified ActionScript class names. At runtime, type selectors are matched on qualified ActionScript class name (for example mx.controls.Button rather than just Button). Flex 3 applications must be compiled with -compatibility-version=3.0.0 to get unqualified CSS type selector behavior.

QE: Yes, this build may help in updating test cases to use the new namespaces and class names.
Dev: Not yet
Doc: Not yet

Modified Paths:
--------------
748 paths were modified

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

--- frameworks/projects/framework/src/mx/styles/StyleProtoChain.as
+++ frameworks/projects/framework/src/mx/styles/StyleProtoChain.as
@@ -84,7 +84,8 @@
         var className:String = object.className;
         var advancedObject:IAdvancedStyleClient = object as IAdvancedStyleClient;

-        var typeHierarchy:OrderedObject = getTypeHierarchy(object, false);
+        var qualified:Boolean = FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0 ? false : true;
+        var typeHierarchy:OrderedObject = getTypeHierarchy(object, qualified);
         var types:Array = typeHierarchy.propertyList;
         var typeCount:int = types.length;
         var classDecls:Array = null;
@@ -750,7 +751,8 @@
      */
     public static function isTypeSelectorMatch(object:IAdvancedStyleClient, type:String):Boolean
     {
-        var typeHierarchy:OrderedObject = getTypeHierarchy(object, false);
+        var qualified:Boolean = FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_0 ? false : true;
+        var typeHierarchy:OrderedObject = getTypeHierarchy(object, qualified);
         return typeHierarchy[type] != null;
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

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

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

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

 package mx.events
 {


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

--- frameworks/projects/mx/src/mx/controls/MenuBar.as
+++ frameworks/projects/mx/src/mx/controls/MenuBar.as
@@ -35,7 +35,6 @@
 import mx.controls.treeClasses.DefaultDataDescriptor;
 import mx.core.ClassFactory;
 import mx.core.EventPriority;
-import mx.core.FlexVersion;
 import mx.core.IFactory;
 import mx.core.IFlexDisplayObject;
 import mx.core.IUIComponent;
@@ -525,9 +524,6 @@
      */
     override public function get baselinePosition():Number
     {
-        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
-            return super.baselinePosition;
-
         if (!validateBaselinePosition())
             return NaN;

@@ -1436,29 +1432,11 @@
             var m:Menu;
             if (menuStyleName)
             {
-                if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
+                for (i = 0; i < menus.length; i++)
                 {
-                    var styleDecl:CSSStyleDeclaration =
-                        StyleManager.getStyleDeclaration("." + menuStyleName);
-
-                    if (styleDecl)
-                    {
-                        for (i = 0; i < menus.length; i++)
-                        {
-                            m = menus[i];
-                            m.styleDeclaration = styleDecl;
-                            m.regenerateStyleCache(true);
-                        }
-                    }
-                 }
-                 else
-                 {
-                    for (i = 0; i < menus.length; i++)
-                    {
-                        m = menus[i];
-                        m.styleName = menuStyleName;
-                    }
-                 }
+                    m = menus[i];
+                    m.styleName = menuStyleName;
+                }
             }
         }
     }
@@ -1784,24 +1762,9 @@
             menu = new Menu();
             menu.showRoot = false;

-            if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
-                menu.styleName = this;
-
             var menuStyleName:Object = getStyle("menuStyleName");
             if (menuStyleName)
-            {
-                if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
-                {
-                    var styleDecl:CSSStyleDeclaration =
-                        StyleManager.getStyleDeclaration("." + menuStyleName);
-                    if (styleDecl)
-                        menu.styleDeclaration = styleDecl;
-                }
-                else
-                {
-                    menu.styleName = menuStyleName;
-                }
-            }
+                menu.styleName = menuStyleName;

             menu.sourceMenuBar = this;
             menu.owner = this;


now including proper metadata

now including proper metadata

Change-Id: If9334b1c420019943627ff5cb5bf663296ec3599

--- WeaveData/src/weave/data/Transforms/ForeignDataMappingTransform.as
+++ WeaveData/src/weave/data/Transforms/ForeignDataMappingTransform.as
@@ -33,6 +33,8 @@
     import weave.data.AttributeColumns.ProxyColumn;
     import weave.data.DataSources.AbstractDataSource;
     import weave.data.hierarchy.ColumnTreeNode;
+    import weave.utils.ColumnUtils;
+    import weave.utils.EquationColumnLib;

     public class ForeignDataMappingTransform extends AbstractDataSource
     {
@@ -70,7 +72,8 @@
                     isBranch: true,
                     hasChildBranches: false,
                     children: function():Array {
-                        if (detectLinkableObjectChange(_rootNode, dataColumns)) dataColumnNames = dataColumns.getNames();
+                        if (detectLinkableObjectChange(_rootNode, dataColumns))
+							dataColumnNames = dataColumns.getNames();
                         return dataColumnNames.map(
                             function(dataColumnName:String, ..._):* {
                                 var column:IAttributeColumn = dataColumns.getObject(dataColumnName) as IAttributeColumn;
@@ -89,25 +92,47 @@

         override protected function generateHierarchyNode(metadata:Object):IWeaveTreeNode
         {
+			if (!metadata)
+				return null;
+
+			var name:String = metadata[DATA_COLUMNNAME_META];
+			metadata = getColumnMetadata(name);
+			if (!metadata)
+				return null;
+
             return new ColumnTreeNode({
                 source: this,
                 idFields: [DATA_COLUMNNAME_META],
                 columnMetadata: metadata
             });
         }
+
+		private function getColumnMetadata(dataColumnName:String):Object
+		{
+			var column:IAttributeColumn = dataColumns.getObject(dataColumnName) as IAttributeColumn;
+			if (!column)
+				return null;
+
+			var metadata:Object = {};
+			for each (var prop:String in column.getMetadataPropertyNames())
+				metadata[prop] = column.getMetadata(prop);
+			metadata[ColumnMetadata.KEY_TYPE] = keyColumn.getMetadata(ColumnMetadata.KEY_TYPE);
+			metadata[DATA_COLUMNNAME_META] = dataColumnName;
+			return metadata;
+		}

         override protected function requestColumnFromSource(proxyColumn:ProxyColumn):void
         {
-            var metadata:Object = proxyColumn.getProxyMetadata();
-            var dataColumnName:String = metadata[DATA_COLUMNNAME_META];
-            var dataColumn:IAttributeColumn = dataColumns.getObject(dataColumnName) as IAttributeColumn;
-			if (!dataColumn)
+            var dataColumnName:String = proxyColumn.getMetadata(DATA_COLUMNNAME_META);
+			var metadata:Object = getColumnMetadata(dataColumnName);
+			if (!metadata)
 			{
 				proxyColumn.dataUnavailable();
 				return;
 			}

-            var equationColumn:EquationColumn = new EquationColumn();
+            var dataColumn:IAttributeColumn = dataColumns.getObject(dataColumnName) as IAttributeColumn;
+            var equationColumn:EquationColumn = proxyColumn.getInternalColumn() as EquationColumn || new EquationColumn();

 			metadata[ColumnMetadata.DATA_TYPE] = "{dataColumn.getMetadata('dataType')}";
             equationColumn.variables.requestObjectCopy("keyColumn", keyColumn);


Adjusted attribute editor count when the editor is being removed.

--- Bin/Data/Scripts/Editor/AttributeEditor.as
+++ Bin/Data/Scripts/Editor/AttributeEditor.as
@@ -13,6 +13,7 @@

 bool inLoadAttributeEditor = false;
 bool showNonEditableAttribute = false;
+uint attributeCountAdjustment = 0;

 Color normalTextColor(1.0f, 1.0f, 1.0f);
 Color modifiedTextColor(1.0f, 0.8f, 0.5f);
@@ -360,7 +361,7 @@
         }
     }

-    return count;
+    return count - attributeCountAdjustment;
 }

 UIElement@ GetAttributeEditorParent(UIElement@ parent, uint index, uint subIndex)
@@ -400,7 +401,10 @@
     if (sameName)
         LoadAttributeEditor(parent, value, info, editable, sameValue, values);
     else
+    {
         parent.Remove();
+        ++attributeCountAdjustment;
+    }

     inLoadAttributeEditor = false;
 }
@@ -702,6 +706,7 @@
     if (fullUpdate)
     {
         list.RemoveAllItems();
+        attributeCountAdjustment = 0;
         Array<UIElement@> children = list.GetChildren();
         for (uint i = 0; i < children.length; ++i)
         {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

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

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

--- frameworks/projects/mobilecomponents/src/spark/styles/metadata/PaddingStyles.as
+++ frameworks/projects/mobilecomponents/src/spark/styles/metadata/PaddingStyles.as
@@ -1,4 +1,29 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2010 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

+/**
+ *  Number of pixels between the component's left border
+ *  and the left edge of its content area.
+ *
The default value is 0.

+ *
The default value for a Button control in the Halo theme is 10
+ *     and in the Spark theme is 6.

+ *
The default value for the ComboBox control is 5.

+ *
The default value for the Form container is 16.

+ *
The default value for the Tree control is 2.

+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
 [Style(name="paddingLeft", type="Number", format="Length", inherit="no")]

 /**