Transferred from the Adobe Open Source Subversion Repository

Revision: 22043
Author:   tkraikit@adobe.com
Date:     2011-08-17T00:40:03.068931Z

Log Message:
-----------
Fixes for:
* SDK-31037: if animation is programmatically initiated, wait until completion to raise change or valueCommit events
* SDK-31100: DateSpinner supports height property and handles width property better
* SDK-31181: set selectedDate to null triggers event
* SDK-31182: set selectedDate to null while minDate/maxDate are in effect
* SDK-31184: set selectedDate to a Date after setting it to null does not dispatch an event
* SDK-31035: improper handling of binding to null selectedDate value

QE notes: none
Doc notes: none
Bugs: SDK-31037, SDK-31100, SDK-31181, SDK-31182, SDK-31184, SDK-31035
Reviewer: jszeto
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<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/tests/airMobileBasicTests/src/mobile/scripts/DateSpinnerTestScript.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/development/eclipse/flex/DateSpinnerTest/src/views/DateSpinnerTestHomeView.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as
+++ frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as
@@ -11,6 +11,7 @@
 package spark.components
 {
 import flash.events.Event;
+import flash.utils.Dictionary;

 import mx.collections.ArrayCollection;
 import mx.collections.IList;
@@ -67,7 +68,9 @@
  *  The locale of the component. Controls how dates are formatted, e.g. in what order the fields
  *  are listed and what additional date-related characters are shown if any. Uses standard locale
  *  identifiers as described in Unicode Technical Standard #35. For example "en", "en_US" and "en-US"
- *  are all English, "ja" is Japanese.
+ *  are all English, "ja" is Japanese. If the specified locale is not supported on the platform, "en_US"
+ *  will be used. To determine if a locale is supported, use
+ *  DateTimeFormatter.getAvailableLocaleIDNames()
  *
  *
The default value is undefined. This property inherits its value from an ancestor; if still
  *  undefined, it inherits from the global locale style.

@@ -181,9 +184,6 @@
      */
     protected static const MERIDIAN_ITEM:String = "meridianItem";

-    // number of days to show by default in DATE_AND_TIME mode
-    private static const DEFAULT_DATE_RANGE:int = 730;
-
     private static const MS_IN_DAY:Number = 1000 * 60 * 60 * 24;

     // choosing January 1980 to guarantee 31 days in the month
@@ -192,7 +192,7 @@
     // meridian
     private static const AM:String = "am";
     private static const PM:String = "pm";
-
+
     // default min/max date
     private static const MIN_DATE_DEFAULT:Date = new Date(1601, 0, 1);
     private static const MAX_DATE_DEFAULT:Date = new Date(9999, 11, 31, 23, 59, 59, 999);
@@ -222,6 +222,9 @@
     //  Variables
     //
     //--------------------------------------------------------------------------
+
+    private var dispatchValueCommitEvent:Boolean = false;
+    private var dispatchChangeEvent:Boolean = false;

     private var populateYearDataProvider:Boolean = true;
     private var populateMonthDataProvider:Boolean = true;
@@ -254,6 +257,12 @@
     private var longestDateItem:Object;
     private var longestYearItem:Object;

+    // controls whether we should snap to or animate to spinner values
+    private var useAnimationToSetSelectedDate:Boolean = false;
+
+    // keep track of which lists are currently animating for programmatic animations
+    private var listsBeingAnimated:Dictionary = new Dictionary();
+
     //--------------------------------------------------------------------------
     //
     //  Skin parts
@@ -545,8 +554,6 @@
         return _selectedDate;
     }

-    private var selectedDateModifiedByUser:Boolean;
-
     /**
      *  @private
      */
@@ -554,7 +561,7 @@
     {
         // no-op if null; there must always be a selectedDate
         if (value == null)
-            return;
+            value = new Date();

         // short-circuit if no change
         if (value.time == _selectedDate.time)
@@ -563,7 +570,24 @@
         _selectedDate = value;
         syncSelectedDate = true;

+        dispatchValueCommitEvent = true;
+
         invalidateProperties();
+    }
+
+    mx_internal function animateToSelectedDate(value:Date):void
+    {
+        // no-op if null; there must always be a selectedDate
+        if (value == null)
+            value = new Date();
+
+        // short-circuit if no change
+        if (value.time == _selectedDate.time)
+            return;
+
+        selectedDate = value;
+
+        useAnimationToSetSelectedDate = true;
     }

     //----------------------------------
@@ -604,8 +628,6 @@
     {
         super.commitProperties();

-        var listsNewlyCreated:Boolean = false;
-
         // TODO: CHECK ON THIS ASSUMPTION
         // TODO: Jason says this is wrong; just use styleName = DateSpinner to link styles
         //       but having trouble getting that to work
@@ -635,7 +657,6 @@
             setupDateItemLists();

             displayModeChanged = false;
-            listsNewlyCreated = true;
             syncSelectedDate = true;
         }

@@ -647,7 +668,7 @@
         // ==================================================

         // correct any integrity violations
-        if (minDateChanged || maxDateChanged || syncSelectedDate || listsNewlyCreated || minuteStepSizeChanged)
+        if (minDateChanged || maxDateChanged || syncSelectedDate || minuteStepSizeChanged)
         {
             // check min <= max
             if (minDate.time > maxDate.time)
@@ -661,6 +682,8 @@
                 else
                     _maxDate.time = _minDate.time + MS_IN_DAY; // max date was changed past min
             }
+
+            var origSelectedDate:Date = new Date(_selectedDate.time);

             // check minDate <= selectedDate <= maxDate
             if (!selectedDate || selectedDate.time < minDate.time)
@@ -689,6 +712,9 @@

                 minuteStepSizeChanged = false;
             }
+
+            if (origSelectedDate.time != _selectedDate.time)
+                dispatchValueCommitEvent = true;

             disableInvalidSpinnerValues(selectedDate);

@@ -699,16 +725,34 @@
         // update selections on the lists if necessary
         if (syncSelectedDate)
         {
-            updateListsToSelectedDate(listsNewlyCreated);
+            updateListsToSelectedDate(useAnimationToSetSelectedDate);
             syncSelectedDate = false;
-        }
-
-        if (selectedDateModifiedByUser)
-        {
-            selectedDateModifiedByUser = false;
-            if (hasEventListener(Event.CHANGE))
-                dispatchEvent(new Event(Event.CHANGE));
-        }
+
+            if (dispatchChangeEvent || dispatchValueCommitEvent)
+            {
+                // dispatch the events: now or after animation?
+                if (useAnimationToSetSelectedDate)
+                {
+                    // we animated the list ourselves; wait for lists
+                    // to report VALUE_COMMIT before dispatching our events
+                    var numEls:int = listContainer.numElements;
+                    var sl:SpinnerList;
+                    for (var elIdx:int = 0; elIdx < numEls; elIdx++)
+                    {
+                        sl = listContainer.getElementAt(elIdx) as SpinnerList;
+                        sl.addEventListener(FlexEvent.VALUE_COMMIT, waitForSpinnerListValueCommit_handler);
+                    }
+                }
+                else
+                {
+                    // dispatch our events immediately
+                    dispatchSelectedDateChangedEvents();
+                }
+            }
+        }
+
+        // reset flags
+        useAnimationToSetSelectedDate = false;
     }

     override public function styleChanged(styleProp:String):void
@@ -762,9 +806,7 @@
         // if itemIndex == itemCount - 1, align as last column

         var s:SpinnerList = SpinnerList(createDynamicPartInstance("dateItemList"));
-        //        s.addEventListener(TouchInteractionEvent.TOUCH_INTERACTION_START, dateItemList_touchEventHandler);
-        //        s.addEventListener(TouchInteractionEvent.TOUCH_INTERACTION_END, dateItemList_touchEventHandler);
-        //      TODO: s.itemRenderer = // ...; for first column (or equivalent)
+        s.percentHeight = 100;
         return s;
     }

@@ -964,12 +1006,22 @@
         populateMeridianDataProvider = false;
     }

-    // set the selected index on the SpinnerList. use animation only if the lists
-    // were not newly created
-    private function goToIndex(list:SpinnerList, newIndex:int, listsCreated:Boolean):void
-    {
-        listsCreated ? list.selectedIndex = newIndex
-            : list.animateToSelectedIndex(newIndex);
+    // set the selected index on the SpinnerList. use animation only if requested
+    private function goToIndex(list:SpinnerList, newIndex:int, useAnimation:Boolean):void
+    {
+        // don't do anything if it's already on that index
+        if (list.selectedIndex == newIndex)
+            return;
+
+        if (useAnimation)
+        {
+            list.animateToSelectedIndex(newIndex);
+            listsBeingAnimated[list] = true;
+        }
+        else
+        {
+            list.selectedIndex = newIndex;
+        }
     }

     // generate objects to populate a SpinnerList with months
@@ -1092,51 +1144,48 @@
         return null;
     }

-    private function updateListsToSelectedDate(listsNewlyCreated:Boolean):void
+    private function updateListsToSelectedDate(useAnimation:Boolean):void
     {
         var newIndex:int;
         if (yearList)
         {
             dateTimeFormatter.dateTimePattern = dateTimeFormatterEx.getYearPattern();
             newIndex = yearList.dataProvider.getItemIndex( generateDateItemObject(dateTimeFormatter.format(selectedDate), selectedDate.fullYear) );
-            goToIndex(yearList, newIndex, listsNewlyCreated);
+            goToIndex(yearList, newIndex, useAnimation);
         }

         if (monthList)
-            goToIndex(monthList, selectedDate.month, listsNewlyCreated);
+            goToIndex(monthList, selectedDate.month, useAnimation);

         if (dateList)
         {
             if (displayMode == DateSelectorDisplayMode.DATE)
             {
-                goToIndex(dateList, selectedDate.date - 1, listsNewlyCreated);
+                goToIndex(dateList, selectedDate.date - 1, useAnimation);
             }
             else // DATE_AND_TIME mode
             {
                 newIndex = dateList.dataProvider.getItemIndex( generateDateItemObject(dayMonthDateFormatter.format(selectedDate), selectedDate.time) );
-                goToIndex(dateList, newIndex, listsNewlyCreated);
+                goToIndex(dateList, newIndex, useAnimation);
             }
         }
         if (hourList)
         {
             // TODO: double-check the math
             newIndex = use24HourTime ? selectedDate.hours : (selectedDate.hours + 11) % 12;
-            goToIndex(hourList, newIndex, listsNewlyCreated);
+            goToIndex(hourList, newIndex, useAnimation);
         }
         if (minuteList)
         {
             // TODO: calculate instead of iterate?
             newIndex = findDateItemIndexInDataProvider(selectedDate.minutes, minuteList.dataProvider);
-            goToIndex(minuteList, newIndex, listsNewlyCreated);
+            goToIndex(minuteList, newIndex, useAnimation);
         }
         if (!use24HourTime && meridianList)
         {
             newIndex = selectedDate.hours < 12 ? 0 : 1;
-            goToIndex(meridianList, newIndex, listsNewlyCreated);
-        }
-
-        if (hasEventListener(FlexEvent.VALUE_COMMIT))
-            dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
+            goToIndex(meridianList, newIndex, useAnimation);
+        }
     }

     // modify existing date item spinner list data providers to mark
@@ -1223,6 +1272,7 @@
                 }
             }
         }
+

         // disable hours that fall outside of the min/max dates
         if (hourList && (displayMode == DateSelectorDisplayMode.TIME || displayMode == DateSelectorDisplayMode.DATE_AND_TIME))
@@ -1302,8 +1352,6 @@
                 }
             }
         }
-
-        // TODO: if we're using YearRangeList, recreate that to match new dates
     }

     // clean out the container: remove all elements, detach event listeners, null out references
@@ -1558,6 +1606,55 @@
             dayMonthDateFormatter.clearStyle("locale");
     }

+    // used to delay the dispatch of change events from this DateSpinner until
+    // the underlying SpinnerLists have stopped animating (signified by
+    // a VALUE_COMMIT event)
+    private function waitForSpinnerListValueCommit_handler(event:FlexEvent):void
+    {
+        // if listsBeingAnimated contains event.target remove it
+        if (listsBeingAnimated[event.target])
+        {
+            delete listsBeingAnimated[event.target];
+        }
+
+        // if we're still waiting on any lists, don't dispatch yet
+        for (var key:Object in listsBeingAnimated)
+        {
+            return;
+        }
+
+        // if no more in listsBeingAnimated, dispatch
+        dispatchSelectedDateChangedEvents();
+
+        // clean up
+        var numEls:int = listContainer.numElements;
+        var sl:SpinnerList;
+        for (var elIdx:int = 0; elIdx < numEls; elIdx++)
+        {
+            sl = listContainer.getElementAt(elIdx) as SpinnerList;
+            sl.removeEventListener(FlexEvent.VALUE_COMMIT, waitForSpinnerListValueCommit_handler);
+        }
+    }
+
+    // dispatch the appropriate events when selectedDate changed
+    private function dispatchSelectedDateChangedEvents():void
+    {
+        if (dispatchChangeEvent)
+        {
+            if (hasEventListener(Event.CHANGE))
+                dispatchEvent(new Event(Event.CHANGE));
+
+            dispatchChangeEvent = false;
+        }
+        if (dispatchValueCommitEvent)
+        {
+            if (hasEventListener(FlexEvent.VALUE_COMMIT))
+                dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
+
+            dispatchValueCommitEvent = false;
+        }
+    }
+
     //----------------------------------------------------------------------------------------------
     //
     //  Event handlers
@@ -1581,8 +1678,6 @@

         var tempDate:Date;
         var cd:CalendarDate;
-
-        selectedDateModifiedByUser = true;

         var numLists:int = listContainer.numElements;
         var currentList:SpinnerList;
@@ -1632,7 +1727,10 @@
                         tempDate = new Date(newValue.data, selectedDate.month, 1);
                         cd = new CalendarDate(tempDate);
                         if (dateList.selectedItem.data > cd.numDaysInMonth)
+                        {
                             newDate.date = cd.numDaysInMonth;
+                            dateRolledBack = true;
+                        }
                     }
                     newDate.fullYear = newValue.data;
                     break;
@@ -1659,12 +1757,15 @@
                     break;
                 default:
                     // unknown list; don't know how to handle
-                    selectedDateModifiedByUser = false;
                     break;
             }
         }

-        selectedDate = newDate;
+        dispatchChangeEvent = true;
+        if (dateRolledBack)
+            animateToSelectedDate(newDate);
+        else
+            selectedDate = newDate;
     }
 }
-}+}


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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////

 package spark.skins.mobile
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.core
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 14744
Author:   klin@adobe.com
Date:     2010-03-12T23:33:39.865284Z

Log Message:
-----------
Merge revision 14741 from 4.x to trunk.

Adding ILayoutDirectionElement to address issues with non-styled components such as embedded bitmaps. Also, addressed issues with changing layoutDirection at runtime.

-Added ILayoutDirectionElement.as with the layoutDirection property and invalidateLayoutDirection(). I took them out of IVisualElement.
-Moved the mirroring code from FlexBitmap to BitmapAsset as well as SpriteAsset. Also, implemented ILayoutDirectionElement in both.
-Addressed issues with layoutDirection changing at runtime by adding logic in UIComponent and Container to call invalidateLayoutDirection() on all of their ILayoutDirectionElement children.
-Updated various other components to use the new interface.
-Updated the dependency checker.

QE notes: No
Doc notes: No
Bugs: SDK-25656, SDK-25685, SDK-25726, SDK-25758 , SDK-25776 , SDK-25784 , SDK-25791, SDK-25806
Reviewer: Jason, Carol
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/SpriteAsset.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/FlexBitmap.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/BitmapAsset.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutDirection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/4.x/frameworks/projects/framework/src/mx/core/ILayoutDirectionElement.as" copyfrom-rev="14741" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutDirectionElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>

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

--- frameworks/projects/mx/src/mx/core/Container.as
+++ frameworks/projects/mx/src/mx/core/Container.as
@@ -2594,14 +2594,14 @@
     {
         var formerParent:DisplayObjectContainer = child.parent;
         if (formerParent && !(formerParent is Loader))
-    {
+        {
             // Adjust index if necessary when former parent happens
             // to be the same container.
             if (formerParent == this)
                 index = (index == numChildren) ? index - 1 : index;

             formerParent.removeChild(child);
-    }
+        }

         addingChild(child);

@@ -3206,6 +3206,27 @@
         // Don't call super.initializationComplete().
     }

+    /**
+     *  @private
+     */
+    override public function invalidateLayoutDirection():void
+    {
+        super.invalidateLayoutDirection();
+
+        // We have to deal with non-styled raw children here.
+        if (_rawChildren)
+        {
+            const rawNumChildren:int = _rawChildren.numChildren;
+
+            for (var i:int = 0; i < rawNumChildren; i++)
+            {
+                var child:DisplayObject = _rawChildren.getChildAt(i);
+                if (!(child is IStyleClient) && child is ILayoutDirectionElement)
+                    ILayoutDirectionElement(child).invalidateLayoutDirection();
+            }
+        }
+    }
+
     /**
      *  @private
      */


Sort widget modules on locale change.

Sort widget modules on locale change.

--- src/com/esri/builder/controllers/LocaleController.as
+++ src/com/esri/builder/controllers/LocaleController.as
@@ -19,6 +19,7 @@
 import com.esri.builder.eventbus.AppEvent;
 import com.esri.builder.model.LocaleModel;
 import com.esri.builder.model.Model;
+import com.esri.builder.model.WidgetTypeRegistryModel;
 import com.esri.builder.supportClasses.LogUtil;

 import mx.core.FlexGlobals;
@@ -77,6 +78,7 @@
         if (selectedLocale != currentLocale)
         {
             FlexGlobals.topLevelApplication.setStyle('locale', selectedLocale);
+            WidgetTypeRegistryModel.getInstance().widgetTypeRegistry.sort();
         }
     }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/DateSpinnerSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/DateSpinnerSkin.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2011 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////
 package spark.skins.mobile
 {
 import mx.core.ClassFactory;


Transferred from the Adobe Open Source Subversion Repository

Revision: 7380
Author:   hmuller@adobe.com
Date:     2009-05-28T19:54:28.063187Z

Log Message:
-----------
List.useVirtualLayout=true is (really) true by default

QE Notes:
Doc Notes:
Bugs: sdk-21473
Reviewer: Deepa

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -756,6 +756,20 @@
             IItemRenderer(renderer).labelText = itemToLabel(IItemRenderer(renderer).data);
     }

+    /**
+     *  @private
+     */
+    override protected function partAdded(partName:String, instance:Object):void
+    {
+        super.partAdded(partName, instance);
+        if (instance == dataGroup)
+        {
+            // Not your typical delegation, see 'set useVirtualLayout'
+            if (_useVirtualLayout && dataGroup.layout)
+                dataGroup.layout.useVirtualLayout = true;
+        }
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Methods


Transferred from the Adobe Open Source Subversion Repository

Revision: 17466
Author:   rfrishbe@adobe.com
Date:     2010-08-24T19:58:32.424056Z

Log Message:
-----------
Fixing up logic for Scroller determining when it can scroll horizontally and/or vertically.  This code has moved in to ScrollerLayout(), and the properties are now set in ScorllerLayout.udl() rather than trying to directly calculate it in another method.

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

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -1206,7 +1206,8 @@
      *  @productversion Flex 4
      */
     protected function adjustSelection(newIndex:int, add:Boolean=false):void
-    {
+    {   // FIXME (rfrishbe): when someone calls this method, we shouldn't dispatch a
+        // change event
         if (_proposedSelectedIndex != NO_PROPOSED_SELECTION)
             _proposedSelectedIndex = newIndex;
         else


Transferred from the Adobe Open Source Subversion Repository

Revision: 5181
Author:   dsubrama@adobe.com
Date:     2009-03-05T22:40:12.746581Z

Log Message:
-----------
List work:

-Introduction of two new interfaces that formalize communication between a component and its renderers: IItemRenderer, IItemRendererOwner
-Removed ISelectableRenderer from use by ButtonBar. ButtonBar now works with the above-mentioned interfaces.
-Added labelField/labelFunction to ListBase - usable by List and ButtonBar.
-Introduced new utility class, LabelUtils, which returns the correct text for a data item's renderer given a labelField and labelFunction.
-Removed data-binding from FxDefaultItemRenderer - the new interfaces determine how a component stuffs the right text into the renderer's optional part, labelElement.

Checkintests: Pass
Mustella: ButtonBar and List tests pass
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxDefaultItemRenderer.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/ItemRenderer.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/ISelectableRenderer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/utils/LabelUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxList.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/IItemRendererOwner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxToggleButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/ButtonBarButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButtonBar.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/IItemRenderer.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -18,10 +18,13 @@

 import mx.collections.IList;
 import mx.components.FxDataContainer;
+import mx.components.ItemRenderer;
+import mx.components.IItemRendererOwner;
 import mx.core.IVisualElement;
 import mx.events.IndexChangedEvent;
 import mx.events.CollectionEvent;
 import mx.events.CollectionEventKind;
+import mx.utils.LabelUtil;

 /**
  *  Dispatched when the selection is going to change.
@@ -58,7 +61,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-public class FxListBase extends FxDataContainer
+public class FxListBase extends FxDataContainer implements IItemRendererOwner
 {
     include "../../core/Version.as";

@@ -140,6 +143,63 @@

         super.dataProvider = value;
         invalidateProperties();
+    }
+
+    //----------------------------------
+    //  labelField
+    //----------------------------------
+
+    private var _labelField:String;
+    private var labelFieldOrFunctionChanged:Boolean;
+
+    /**
+     *  labelField
+     *
+     */
+    public function get labelField():String
+    {
+        return _labelField;
+    }
+
+    /**
+     *  @private
+     */
+    public function set labelField(value:String):void
+    {
+        if (value == _labelField)
+            return
+
+        _labelField = value;
+        labelFieldOrFunctionChanged = true;
+        invalidateProperties();
+    }
+
+    //----------------------------------
+    //  labelFunction
+    //----------------------------------
+
+    private var _labelFunction:Function;
+
+    /**
+     *  labelFunction
+     *
+     */
+    public function get labelFunction():Function
+    {
+        return _labelFunction;
+    }
+
+    /**
+     *  @private
+     */
+    public function set labelFunction(value:Function):void
+    {
+        if (value == _labelFunction)
+            return
+
+        _labelFunction = value;
+        labelFieldOrFunctionChanged = true;
+        invalidateProperties();
     }

     //----------------------------------
@@ -452,6 +512,23 @@
                 dispatchEvent(e);
             }
         }
+
+        if (labelFieldOrFunctionChanged)
+        {
+        	//Cycle through all instantiated renderers
+        	for (var i:int = 0; i < dataGroup.numChildren; i++)
+        	{
+        		var renderer:ItemRenderer = dataGroup.getElementAt(i) as ItemRenderer;
+        		//Push the correct text into the renderer if it has
+        		//a labelElement part.
+        		if (renderer && renderer.labelElement)
+        		{
+        			renderer.labelElement.text =
+        				LabelUtil.itemToLabel(renderer.data, labelField, labelFunction);
+        		}
+        	}
+        	labelFieldOrFunctionChanged = false;
+        }
     }

     //--------------------------------------------------------------------------
@@ -459,6 +536,26 @@
     //  Methods
     //
     //--------------------------------------------------------------------------
+
+    /**
+     *  Given a data item, return the correct text a renderer
+     *  should display while taking labelField and labelFunction
+     *  into account.
+     *
+     *  @param item A data item
+     *
+     *  @return String representing the text to display for the
+     *  passed in item's renderer.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function itemToLabel(item:Object):String
+    {
+    	return LabelUtil.itemToLabel(item, labelField, labelFunction);
+    }

     /**
      *  Called when an item is selected or deselected.


Transferred from the Adobe Open Source Subversion Repository

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

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

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

Modified Paths:
--------------
151 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/animation/SimpleMotionPath.as
+++ frameworks/projects/spark/src/spark/effects/animation/SimpleMotionPath.as
@@ -18,6 +18,11 @@
  * effect, or subclasses of that effect.
  *
  * @see FxAnimate
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
  */
 public class AnimationProperty
 {
@@ -25,6 +30,11 @@
      * The name of the property to be animated. The property can
      * be either a property of the target object in the animation
      * or a style.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public var property:String;

@@ -37,6 +47,11 @@
      * getting the value from the target property directly or calculating
      * it if the other value is valid and there is also a valid valueBy
      * value supplied.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get valueFrom():Object
     {
@@ -56,6 +71,11 @@
      * getting the value from the target property directly or calculating
      * it if the other value is valid and there is also a valid valueBy
      * value supplied.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get valueTo():Object
     {
@@ -89,6 +109,11 @@
      * object to calculate the values through its increment() and decrement()
      * functions. If no interpolator is set, then it will use NumberInterpolator
      * by default.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public function get valueBy():Object
     {


MF-23 Add to shader color revert alpha channel value

--- src/com/merlinds/miracle_tool/controllers/converters/XMLColorConverter.as
+++ src/com/merlinds/miracle_tool/controllers/converters/XMLColorConverter.as
@@ -6,9 +6,6 @@
 package com.merlinds.miracle_tool.controllers.converters {
 	import com.merlinds.miracle.meshes.Color;
 	import com.merlinds.unitls.ColorUtils;
-
-	import flash.debugger.enterDebugger;
-
 	/**
 	 * The XMLColorConverter class present color transformations from the XML to Miracle format.
 	 * In miracle engine this object will be downloaded as Color object and gives to shader color transformations data.
@@ -21,6 +18,7 @@
 		private static const TINT_MULTIPLIER:String = "tintMultiplier";
 		private static const TINT_COLOR:String = "tintColor";
 		//auxiliary constants
+		private static const ALPHA_PREFIX:String = "alpha";
 		private static const MULTIPLIER_POSTFIX:String = "Multiplier";
 		//==============================================================================
 		//{region							PUBLIC METHODS
@@ -67,6 +65,11 @@
 						 * Need to covert it to (-1, 1) form
 						 */
 						attribute = attribute / 255;
+					}else{
+						if(name.lastIndexOf(ALPHA_PREFIX) > -1){
+							//Need to revert alpha
+							attribute = 1 - attribute;
+						}
 					}
 					this[name] = attribute;
 				}else{


Checkpoint for our written-in-ActionScript AMF3 encoder. The protocol was simpler than I'd thought. This should be nearly feature complete (not sure how registered class aliases work precisely, and trait references are not implemented) but has yet to meet a compiler. I'll save that, and the decoder, for tomorrow. It's late.


fixed bug in getValue()

fixed bug in getValue()


cherry pick: Mousedown and mouseup signals on MouseManager

--- src/aerys/minko/type/MouseManager.as
+++ src/aerys/minko/type/MouseManager.as
@@ -12,6 +12,9 @@
 		private var _leftButtonDown		: Boolean			= false;
 		private var _middleButtonDown	: Boolean			= false;
 		private var _rightButtonDown	: Boolean			= false;
+
+		private var _mouseDown			: Signal			= new Signal("mouseDown");
+		private var _mouseUp			: Signal			= new Signal("mouseUp");

 		private var _cursors			: Vector.<String>	= new <String>[];

@@ -43,6 +46,16 @@
 		public function get cursor() : String
 		{
 			return Mouse.cursor;
+		}
+
+		public function get mouseDown() : Signal
+		{
+			return _mouseDown;
+		}
+
+		public function get mouseUp() : Signal
+		{
+			return _mouseUp;
 		}

 		public function MouseManager()
@@ -80,11 +93,13 @@
 		private function mouseLeftDownHandler(event : MouseEvent) : void
 		{
 			_leftButtonDown = true;
+			_mouseDown.execute();
 		}

 		private function mouseLeftUpHandler(event : MouseEvent) : void
 		{
 			_leftButtonDown = false;
+			_mouseUp.execute();
 		}

 		private function mouseMiddleDownHandler(event : MouseEvent) : void


ColumnUtils.forceFirstColumnDynamic() now reuses object name.

--- WeaveData/src/weave/utils/ColumnUtils.as
+++ WeaveData/src/weave/utils/ColumnUtils.as
@@ -530,16 +530,15 @@
 			{
 				// don't run callbacks while we edit session state
 				getCallbackCollection(columnHashMap).delayCallbacks();
-				// remember the order
+				// remember the name order
 				var names:Array = columnHashMap.getNames();
-
-				// create a new wrapper column
-				var newCol:DynamicColumn = columnHashMap.requestObject(null, DynamicColumn, false);
+				// remember the session state of the first column
+				var state:Array = columnHashMap.getSessionState();
+				state.length = 1; // only keep first column
+				// overwrite existing column, reusing the same name
+				var newCol:DynamicColumn = columnHashMap.requestObject(names[0], DynamicColumn, false);
 				// copy the old col inside the new col
-				newCol.requestLocalObjectCopy(cols[0]);
-				// remove old col
-				columnHashMap.removeObject(columnHashMap.getName(cols[0]));
-
+				newCol.setSessionState(state, true);
 				// restore name order
 				columnHashMap.setNameOrder(names);
 				// done editing session state


auto-expanding root object in session editor

--- WeaveUI/src/weave/ui/SessionNavigator.as
+++ WeaveUI/src/weave/ui/SessionNavigator.as
@@ -137,7 +137,8 @@
 			private function updateRootNode():void
 			{
 				var rootNode:WeaveTreeItem = (WeaveAPI.SessionManager as SessionManager).getSessionStateTree(_rootObject, _linkableObjectName, _linkableObjectTypeFilter);
-				refreshDataProvider(rootNode);
+				refreshDataProvider(rootNode);
+				expandItem(rootNode, true);
 			}

 			private function nodeLabelFunction(item:WeaveTreeItem):String


#1 In Progress

#1 In Progress

--- tester/src/main/actionscript/Main.as
+++ tester/src/main/actionscript/Main.as
@@ -33,6 +33,8 @@

 import flash.display.Shape;
 import flash.display.Sprite;
+import flash.display.StageAlign;
+import flash.display.StageScaleMode;
 import flash.events.Event;
 import flash.filesystem.StorageVolume;
 import flash.filesystem.StorageVolumeInfo;
@@ -81,16 +83,22 @@
         removeEventListener(Event.ADDED_TO_STAGE, onAdded);
         addEventListener(Event.REMOVED_FROM_STAGE, onRemoved, false, 0, true);

+        stage.scaleMode = StageScaleMode.NO_SCALE;
+        stage.align = StageAlign.TOP_LEFT;
+
+        const sw:uint = stage.fullScreenWidth;
+        const sh:uint = stage.fullScreenHeight;
+
         var bg:Shape = new Shape();
         bg.graphics.beginFill(0x333333);
-        bg.graphics.drawRect(0, 0, 800, 300);
+        bg.graphics.drawRect(0, 0, sw, sh);
         bg.graphics.endFill();
         addChild(bg);

         // create log text field
         messageLabel = new TextField();
-        messageLabel.width = 800;
-        messageLabel.height = 300;
+        messageLabel.width = sw;
+        messageLabel.height = sh;
         messageLabel.multiline = true;
         messageLabel.wordWrap = true;
         messageLabel.defaultTextFormat = new TextFormat("Arial", 10, 0xFFFFFF);


- change: Lists are have their first entry selected by default now

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

--- src/reprise/controls/List.as
+++ src/reprise/controls/List.as
@@ -28,7 +28,7 @@
 		*                           Protected properties                           *
 		***************************************************************************/
 		protected var m_items:Array;
-		protected var m_selectedIndex:Number = -1;
+		protected var m_selectedIndex:Number = 0;


Change 20090202-bargull-VdP by bargull@dell--p4--2-53 on 2009-02-02 23:46:59
    in /home/Admin/src/svn/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: don't let queuedplayaction recurse

New Features:

Bugs Fixed: LPP-7707

Technical Reviewer: ptw
QA Reviewer: (pending)
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:
Iterate over local copy of "queuedplayaction" and set sprite's "queuedplayaction" to null.
That way "doQueuedPlayAction" won't recurse indefinite.

Tests:
both testcases from bugreport

git-svn-id: d62bde4b5aa582fdf07c8d403e53e0399a7ed285@12719 fa20e4f9-1d0a-0410-b5f3-dc9c16b8b17c

--- WEB-INF/lps/lfc/kernel/swf/LzSprite.as
+++ WEB-INF/lps/lfc/kernel/swf/LzSprite.as
@@ -1451,6 +1451,7 @@
     this.doQueuedDel.unregisterAll();

     var qa = this.queuedplayaction;
+    this.queuedplayaction = null;
     for (var i = 0; i < qa.length; i += 3) {
         this[ qa[i] ] ( qa[i + 1], qa[i + 2] );
     }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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


Transferred from the Adobe Open Source Subversion Repository

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

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

 package mx.effects.effectClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19642
Author:   dloverin@adobe.com
Date:     2011-01-07T13:20:28.366513Z

Log Message:
-----------
Initial check-in of the BusyIndicator component.

QE notes: None.
Doc notes: New component to doc.
Bugs:
Reviewer: Glenn
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/BusyIndicator.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/BusyIndicator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/BusyIndicator.as
@@ -0,0 +1,726 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.components
+{
+
+import flash.display.Graphics;
+import flash.display.Shape;
+import flash.display.Sprite;
+import flash.events.Event;
+import flash.events.TimerEvent;
+import flash.geom.Matrix;
+import flash.geom.Matrix3D;
+import flash.geom.Transform;
+import flash.geom.Vector3D;
+import flash.utils.Timer;
+
+import mx.core.FlexGlobals;
+import mx.core.IUIComponent;
+import mx.core.IVisualElement;
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+import mx.events.FlexEvent;
+import mx.events.PropertyChangeEvent;
+import mx.geom.TransformOffsets;
+
+use namespace mx_internal;
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+/**
+ *  The interval to delay, in milliseconds, between rotations of this
+ *  component. Controls the speed at which this component spins.
+ *
+ *  @default 50
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.1
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ *
+ */
+[Style(name="rotationInterval", type="Number", format="Time", inherit="no")]
+
+/**
+ *  Color of any symbol of a component.
+ *  This is used by the BusyIndicator to color the spokes of the spinner.
+ *
+ *  @default 0x000000
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.1
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+[Style(name="symbolColor", type="uint", format="Color", inherit="yes", theme="spark,mobile")]
+
+/**
+ *  The BusyIndicator defines a component to display a when a long-running
+ *  operation is in progress. This component is a spinner with twelve spokes.
+ *  The color of the spokes is controled by the value of the symbolColor style.
+ *  The transparency of this component can be modified using the alpha property
+ *  but the alpha value of each spoke cannot be modified.
+ *
+ *

+ *  The speed at which this component spins is controled by the rotationInterval
+ *  style. The rotationInterval style is the delay in milliseconds between
+ *  rotates. Decrease the rotationInterval to increase the speed of the spin
+ *  and increase the rotationInterval to slow the spin.
+ *

+ *
+ *
The BusyIndicator has the following default characteristics:

+ *

+ *
Characteristic	Description

+ *
Default size	160 DPI: 22x22 pixels

+ *                                  240 DPI: 34x34 pixels

+ *                                  320 DPI: 44x44 pixels

+ *
Minimum size	20x20 pixels

+ *
Maximum size	No limit

+ *

+ *
+ *  The diameter of the BusyIndicator's spinner is the minimum of the width and
+ *  height of the component. The diameter must be an even number so will be
+ *  reduced by one if it is odd.
+ *
+ *  @mxml
+ *
+*
The <s:BusyCursor> tag inherits the symbolColor style
+ *  and adds the rotationInterval style.

+ *
+ *

+ *  <s:BusyIndicator
+ *
+ *    Styles
+ *    rotationInterval=50
+ *
+ *    Spark Styles
+ *    symbolColor="0x000000"
+ *
+ *  >
+ *

+ *
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.1
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+public class BusyIndicator extends UIComponent
+{
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    static private const DEFAULT_ROTATION_INTERVAL:Number = 50;
+
+    /**
+     *  @private
+     */
+    static private const DEFAULT_MINIMUM_SIZE:Number = 20;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function BusyIndicator()
+    {
+        super();
+
+        alpha = 0.65;       // default alpha
+
+        // Listen to added to stage and removed from stage.
+        // Start rotating when we are on the stage and stop
+        // when we are removed from the stage.
+        addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
+        addEventListener(Event.REMOVED_FROM_STAGE, removedFromStageHandler);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private var effectiveVisibility:Boolean = false;
+
+    /**
+     *  @private
+     */
+    private var effectiveVisibilityChanged:Boolean = true;
+
+    /**
+     *  @private
+     */
+    private var oldUnscaledHeight:Number;
+
+    /**
+     *  @private
+     */
+    private var oldUnscaledWidth:Number;
+
+    /**
+     *  @private
+     */
+    private var rotationTimer:Timer;
+
+    /**
+     *  @private
+     *
+     *  Current rotation of this component in degrees.
+     */
+    private var currentRotation:Number = 0;
+
+    /**
+     *  @private
+     *
+     *  Diameter of the spinner for this component.
+     */
+    private var spinnerDiameter:int;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Public Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: UIComponent
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function commitProperties():void
+    {
+        super.commitProperties();
+
+        if (effectiveVisibilityChanged)
+        {
+            // if visibility changed, re-compute them here
+            computeEffectiveVisibility();
+
+            if (canRotate())
+                startRotation();
+            else
+                stopRotation();
+
+            effectiveVisibilityChanged = false;
+        }
+    }
+
+    /**
+     *  @private
+     */
+    override protected function measure():void
+    {
+        super.measure();
+
+        // Set the default measured size depending on the
+        // applicationDPI
+        var applicationDPI:int = 0;
+        var application:Object = FlexGlobals.topLevelApplication;
+
+        if ("applicationDPI" in application)
+            applicationDPI = application["applicationDPI"];
+
+        if (applicationDPI == 320)
+        {
+            measuredWidth = 44;
+            measuredHeight = 44;
+        }
+        else if (applicationDPI == 240)
+        {
+            measuredWidth = 34;
+            measuredHeight = 34;
+        }
+        else if (applicationDPI == 160)
+        {
+            measuredWidth = 22;
+            measuredHeight = 22;
+        }
+        else
+        {
+            measuredWidth = DEFAULT_MINIMUM_SIZE;
+            measuredHeight = DEFAULT_MINIMUM_SIZE;
+        }
+
+        measuredMinWidth = DEFAULT_MINIMUM_SIZE;
+        measuredMinHeight = DEFAULT_MINIMUM_SIZE;
+    }
+
+    /**
+     *  @private
+     */
+    override public function styleChanged(styleProp:String):void
+    {
+        super.styleChanged(styleProp);
+
+        var allStyles:Boolean = !styleName || styleName == "styleName";
+
+        // Check for skin/icon changes here.
+        // We could only throw out any skins that change,
+        // but since dynamic re-skinning is uncommon, we'll take
+        // the simpler approach of throwing out all skins.
+        if (allStyles || styleName == "rotationInterval")
+        {
+            // Update the timer if the rotation interval has changed.
+            if (isRotating())
+            {
+                stopRotation();
+                startRotation();
+            }
+        }
+
+        if (allStyles || styleName == "symbolColor")
+        {
+            updateSpinnerChildren(spinnerDiameter);
+        }
+    }
+
+    /**
+     *  @private
+     */
+    override protected function updateDisplayList(unscaledWidth:Number,
+                                                  unscaledHeight:Number):void
+    {
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+        // If the size or color changed, then create a new spinner.
+        if (oldUnscaledWidth != unscaledWidth ||
+            oldUnscaledHeight != unscaledHeight)
+        {
+            var newDiameter:Number;
+
+            newDiameter = calculateSpinnerDiameter(unscaledWidth, unscaledHeight);
+            updateSpinnerChildren(newDiameter);
+
+            oldUnscaledWidth = unscaledWidth;
+            oldUnscaledHeight = unscaledHeight;
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *   @private
+     *
+     *   Apply the rules to calculate the spinner diameter from the width
+     *   and height.
+     *
+     *   @param width new width of this component
+     *   @param height new height of this component
+     *
+     *   @return true if the spinner's diameter changes, false otherwise.
+     */
+    private function calculateSpinnerDiameter(width:Number, height:Number):Number
+    {
+        var diameter:Number = Math.min(width, height);
+        diameter = Math.max(DEFAULT_MINIMUM_SIZE, diameter);
+        if (diameter % 2 != 0)
+        {
+            diameter--;
+        }
+
+        return diameter;
+    }
+
+   /**
+    *   @private
+    *
+    *   Removes the old spinner children, if any, and adds
+    *   new ones.
+    */
+    private function updateSpinnerChildren(diameter:Number):void
+    {
+        var isRotating:Boolean = isRotating();
+
+        if (isRotating)
+            stopRotation();
+
+        var n:int = numChildren;
+        for (var i:int = 0; i < n; i++)
+        {
+            removeChildAt(0);
+        }
+
+        // FIXME (dloverin): need to reset the accumulated
+        // transform matrix information. Current attempts
+        // have not worked.
+
+        //setLayoutMatrix3D(new Matrix3D(), false);
+        //postLayoutTransformOffsets = new TransformOffsets();
+
+        // Add the spinner children that when combined create the
+        // spinner.
+        spinnerDiameter = diameter;
+
+        var spinnerChildren:Array = createSpinnerChildren();
+        n = spinnerChildren.length;
+
+        for (i = 0; i < n; i++)
+            addChild(spinnerChildren[i]);
+
+        if (isRotating)
+            startRotation();
+    }
+
+
+    /**
+     *   @private
+     *
+     *   Create the three spinner chilren and returns them in
+     *   an array.
+     *
+     *   The spinner children are created based on the current
+     *   value of the symbolColor style and the spinnerDiameter.
+     *
+     *   The spinner has twelve spokes in the position of a clock
+     *   face. Each spoke has a differnt alpha. Three children
+     *   are used for different parts of the clockface. Each
+     *   child contains four spokes. The first child contains
+     *   the spokes for 12, 3, 6, and 9 o'clock.
+     *
+     *   The second child
+     *   is drawn the same as the first child (but with different
+     *   alphas) but is roatated 30 degrees. The second child
+     *   represents 1, 4, 7, and 10 o'clock.
+     *
+     *   The third child is drawn the same with differnt alpha
+     *   but it is rotated 60 degrees. The third child represents
+     *   2, 5, 8, and 11 o'clock.
+     *
+     */
+    private function createSpinnerChildren():Array
+    {
+
+        var spokeColor:uint = getStyle("symbolColor");
+        var g:Graphics;
+        var spinner12:Shape = new Shape();
+        var spinner1:Shape = new Shape();
+        var spinner2:Shape = new Shape();
+        var localSpinnerDiameter:int = spinnerDiameter;
+        var halfSpinnerDiameter:int = spinnerDiameter / 2;
+        var spinnerWidth:int = spinnerDiameter;
+        var halfSpinnerWidth:int = spinnerWidth / 2;
+        var halfSpinnerHeight:int = spinnerDiameter / 2;
+        var spokeWidth:int = spinnerDiameter / 10;
+        var spokeHeight:int = spinnerDiameter / 4;
+        var halfSpokeWidth:int = spokeWidth / 2;
+        var halfSpokeHeight:int = spokeHeight / 2;
+        var eWidth:int = spokeWidth;
+        var eHeight:int = spokeWidth / 2;
+        var m:Matrix;
+
+        // First child
+        g = spinner12.graphics;
+
+        // 12
+        g.beginFill(spokeColor, 1);
+        g.drawRoundRect(halfSpinnerDiameter - halfSpokeWidth, 1, spokeWidth, spokeHeight, eWidth, eHeight);
+
+        // 9
+        g.beginFill(spokeColor, 0.89);
+        g.drawRoundRect(1, halfSpinnerDiameter - halfSpokeWidth, spokeHeight, spokeWidth,  eWidth, eHeight);
+
+        // 6
+        g.beginFill(spokeColor, 0.73);
+        g.drawRoundRect(halfSpinnerDiameter - halfSpokeWidth, localSpinnerDiameter - spokeHeight - 1, spokeWidth, spokeHeight,  eWidth, eHeight);
+
+        // 3
+        g.beginFill(spokeColor, 0.53);
+        g.drawRoundRect(localSpinnerDiameter - spokeHeight - 1, halfSpinnerDiameter - halfSpokeWidth, spokeHeight, spokeWidth, eWidth, eHeight);
+
+        // Second child
+        g = spinner1.graphics;
+
+        // 1
+        g.beginFill(spokeColor, 0.45);
+        g.drawRoundRect(halfSpinnerDiameter - halfSpokeWidth, 1, spokeWidth, spokeHeight, eWidth, eHeight);
+
+        // 10
+        g.beginFill(spokeColor, 0.93);
+        g.drawRoundRect(1, halfSpinnerDiameter - halfSpokeWidth, spokeHeight, spokeWidth,  eWidth, eHeight);
+
+        // 7
+        g.beginFill(spokeColor, 0.80);
+        g.drawRoundRect(halfSpinnerDiameter - halfSpokeWidth, localSpinnerDiameter - spokeHeight - 1, spokeWidth, spokeHeight,  eWidth, eHeight);
+
+        // 4
+        g.beginFill(spokeColor, 0.55);
+        g.drawRoundRect(localSpinnerDiameter - spokeHeight - 1, halfSpinnerDiameter - halfSpokeWidth, spokeHeight, spokeWidth, eWidth, eHeight);
+
+        m = new Matrix();
+        m.translate(-halfSpinnerDiameter,-halfSpinnerDiameter);
+        m.rotate( (30 * Math.PI) / 180);
+        m.translate(halfSpinnerDiameter, halfSpinnerDiameter);
+        spinner1.transform.matrix = m;
+
+        // Third child
+        g = spinner2.graphics;
+
+        // 2
+        g.beginFill(spokeColor, 0.49);
+        g.drawRoundRect(halfSpinnerDiameter - halfSpokeWidth, 1, spokeWidth, spokeHeight, eWidth, eHeight);
+
+        // 11
+        g.beginFill(spokeColor, 0.95);
+        g.drawRoundRect(1, halfSpinnerDiameter - halfSpokeWidth, spokeHeight, spokeWidth,  eWidth, eHeight);
+
+        // 8
+        g.beginFill(spokeColor, 0.82);
+        g.drawRoundRect(halfSpinnerDiameter - halfSpokeWidth, localSpinnerDiameter - spokeHeight - 1, spokeWidth, spokeHeight,  eWidth, eHeight);
+
+        // 5
+        g.beginFill(spokeColor, 0.65);
+        g.drawRoundRect(localSpinnerDiameter - spokeHeight - 1, halfSpinnerDiameter - halfSpokeWidth, spokeHeight, spokeWidth, eWidth, eHeight);
+
+        m = new Matrix();
+        m.translate(-halfSpinnerDiameter,-halfSpinnerDiameter);
+        m.rotate( (60 * Math.PI) / 180);
+        m.translate(halfSpinnerDiameter, halfSpinnerDiameter);
+        spinner2.transform.matrix = m;
+
+        return [spinner12, spinner1, spinner2];
+    }
+
+    /**
+     *  @private
+     */
+    private function startRotation():void
+    {
+        if (!rotationTimer)
+        {
+            var rotationInterval:Number = getStyle("rotationInterval");
+            if (isNaN(rotationInterval))
+                rotationInterval = DEFAULT_ROTATION_INTERVAL;
+
+            if (rotationInterval < 16.6)
+                rotationInterval = 16.6;
+
+            rotationTimer = new Timer(rotationInterval);
+        }
+
+        if (!rotationTimer.hasEventListener(TimerEvent.TIMER))
+        {
+            rotationTimer.addEventListener(TimerEvent.TIMER, timerHandler);
+            rotationTimer.start();
+        }
+
+    }
+
+    /**
+     *  @private
+     */
+    private function stopRotation():void
+    {
+        if (rotationTimer)
+        {
+            rotationTimer.removeEventListener(TimerEvent.TIMER, timerHandler);
+            rotationTimer.stop();
+            rotationTimer = null;
+        }
+    }
+
+    /**
+     *  @private
+     */
+    private function isRotating():Boolean
+    {
+        return rotationTimer != null;
+    }
+
+    /**
+     *  The BusyIndicator can be rotated if it is both on the display list and
+     *  visible.
+     *
+     *  @returns true if the BusyIndicator can be rotated, false otherwise.
+     */
+    private function canRotate():Boolean
+    {
+        if (effectiveVisibility && stage != null)
+            return true;
+
+        return false;
+    }
+
+    /**
+     *  @private
+     */
+    private function computeEffectiveVisibility():void
+    {
+        // start out with true visibility and enablement
+        // then loop up parent-chain to see if any of them are false
+        effectiveVisibility = true;
+        var current:IVisualElement = this;
+
+        while (current)
+        {
+            if (!current.visible ||
+                (current.designLayer && !current.designLayer.effectiveVisibility))
+            {
+                effectiveVisibility = false;
+                break;
+            }
+
+            current = current.parent as IVisualElement;
+        }
+    }
+
+    /**
+     *  @private
+     *  Add event listeners for SHOW and HIDE on all the ancestors up the parent chain.
+     *  Adding weak event listeners just to be safe.
+     */
+    private function addVisibilityListeners():void
+    {
+        var current:IVisualElement = this;
+        while (current)
+        {
+            // add visibility listeners to the parent
+            current.addEventListener(FlexEvent.HIDE, visibilityChangedHandler, false, 0, true);
+            current.addEventListener(FlexEvent.SHOW, visibilityChangedHandler, false, 0, true);
+
+            // add listeners to the design layer too
+            if (current.designLayer)
+            {
+                current.designLayer.addEventListener("layerPropertyChange",
+                    designLayer_layerPropertyChangeHandler, false, 0, true);
+            }
+
+            current = current.parent as IVisualElement;
+        }
+    }
+
+    /**
+     *  @private
+     *  Remove event listeners for SHOW and HIDE on all the ancestors up the parent chain.
+     */
+    private function removeVisibilityListeners():void
+    {
+        var current:IVisualElement = this;
+        while (current)
+        {
+            current.removeEventListener(FlexEvent.HIDE, visibilityChangedHandler, false);
+            current.removeEventListener(FlexEvent.SHOW, visibilityChangedHandler, false);
+
+            if (current.designLayer)
+            {
+                current.designLayer.removeEventListener("layerPropertyChange",
+                    designLayer_layerPropertyChangeHandler, false);
+            }
+
+            current = current.parent as IVisualElement;
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Event Handlers
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private function addedToStageHandler(event:Event):void
+    {
+        // Check our visibility here since we haven't added
+        // visibility listeners yet.
+        computeEffectiveVisibility();
+
+        if (canRotate())
+            startRotation();
+
+        addVisibilityListeners();
+    }
+
+    /**
+     *  @private
+     */
+    private function removedFromStageHandler(event:Event):void
+    {
+        stopRotation();
+
+        removeVisibilityListeners();
+    }
+
+    /**
+     *  @private
+     *  Event call back whenever the visibility of us or one of our ancestors
+     *  changes
+     */
+    private function visibilityChangedHandler(event:FlexEvent):void
+    {
+        effectiveVisibilityChanged = true;
+        invalidateProperties();
+    }
+
+    /**
+     *  @private
+     *  Event call back whenever the visibility of our designLayer or one of our parent's
+     *  designLayers change.
+     */
+    private function designLayer_layerPropertyChangeHandler(event:PropertyChangeEvent):void
+    {
+        if (event.property == "effectiveVisibility")
+        {
+            effectiveVisibilityChanged = true;
+            invalidateProperties();
+        }
+    }
+
+    /**
+     *  @private
+     *
+     *  Rotate the spinner once for each timer event.
+     */
+    private function timerHandler(event:TimerEvent):void
+    {
+
+        var spinnerRadius:int = (spinnerDiameter / 2);
+        var transformCenter:Vector3D = new Vector3D(spinnerRadius, spinnerRadius);
+        currentRotation += 30;
+        var rotation3D:Vector3D = new Vector3D(0, 0, currentRotation);
+        transformAround(transformCenter, null, rotation3D, null, null, null, null, false);
+
+        event.updateAfterEvent();
+    }
+
+}
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 19980
Author:   chiedozi@adobe.com
Date:     2011-01-27T19:46:02.128372Z

Log Message:
-----------
TabbedViewNavigator now disables the TabBar when a child navigator is changing views
TabbedViewNavigator now enforces its tabBar skinpart to have its requireSelection property be true
Removed an unnecessary  validateNow from TabbedViewNavigator
Resolved some TODOs and FIXMEs

QE notes:
Doc notes:
Bugs:
Reviewer: Jason San Jose
Tests run:
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/managers/PersistenceManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorApplicationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
@@ -1134,7 +1134,6 @@
     {
         viewChanging = true;

-        // TODO (chiedozi): Figure out a pattern for disabling parent navigator as well
         explicitMouseChildren = mouseChildren;
         explicitMouseEnabled = mouseEnabled;
         mouseEnabled = false;
@@ -1390,7 +1389,9 @@
         if (pendingViewTransition == null)
             pendingViewTransition = defaultTransition;

-        // TODO (chiedozi): Comment this more
+        // If a new view is in the process of being activated, we set the
+        // revalidateWhenComplete flag to true so that the navigator knows
+        // to apply this action after the previous one completes.
         if (viewChanging)
         {
             revalidateWhenComplete = true;
@@ -1431,8 +1432,6 @@
      */
     private function commitVisibilityChanges():void
     {
-        // TODO (chiedozi): Check if spark effects handles include in layout for you
-        // Can't change the visibility during a view transition
         if (viewChanging)
         {
             actionBarVisibilityInvalidated = false;
@@ -1799,13 +1798,9 @@
      */
     protected function commitNavigatorAction():void
     {
-        // TODO (chiedozi): Perf only
-//        CONFIG::performanceInstrumentation
-        {
-            // Private event used for performance tests
-            if (hasEventListener("viewChangeStart"))
-                dispatchEvent(new Event("viewChangeStart"));
-        }
+        // Private event
+        if (hasEventListener("viewChangeStart"))
+            dispatchEvent(new Event("viewChangeStart"));

         if (!isActive)
             return;
@@ -1836,9 +1831,7 @@

             viewChangeRequested = false;

-            // TODO (chiedozi): Hide the view to remove a flicker that would occur.
-            // This shouldn't happen because viewAdded should be called before the
-            // view is rendered, but that doesn't seem to happen.  Investigate this.
+            // Hide the view so that it doesn't render this frame
             view.visible = false;

             // Schedule the view added method to occur at a later time so to allow developers


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

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

 package mx.messaging.errors
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 4922
Author:   gosmith@adobe.com
Date:     2009-02-10T22:19:49.510252Z

Log Message:
-----------
Renamed mx.graphics.graphicsClasses to mx.graphics.baseClasses, based on PARB review.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Jason

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/BitmapGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxFadeInstance.as</path>
<path kind="dir" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/TextFlowComposer.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses/GraphicElement.as" copyfrom-rev="4920" action="R">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextGraphic.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses/TextGraphicElement.as" copyfrom-rev="4920" action="R">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/StrokedElement.as</path>
<path kind="dir" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses" copyfrom-rev="4916" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimateShaderTransition.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/TextBlockComposer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/FadeInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/FadeInstance.as
@@ -18,7 +18,7 @@
 import mx.effects.AnimationProperty;
 import mx.events.AnimationEvent;
 import mx.events.FlexEvent;
-import mx.graphics.graphicsClasses.GraphicElement;
+import mx.graphics.baseClasses.GraphicElement;
 import mx.managers.LayoutManager;

 public class FxFadeInstance extends FxAnimateInstance


Transferred from the Adobe Open Source Subversion Repository

Revision: 2805
Author:   chaase@adobe.com
Date:     2008-08-11T20:37:18.700675Z

Log Message:
-----------
First checkin for the "Arbitrary Type Interpolation" feature. This feature has a rewritten Tween class (now named flex.effects.Animation). This class supports the old Tween capabilities, but adds functionality such as the ability to supply alternate interpolation objects (to allow animation of non-Number types), a new Easing API, and new 'repeat behavior' that will allow terser looping or reversing animations. The existing new effects were slightly changed to use the new Animation class (instead of Tween), and the superclass of the new effects, AnimateProperties (renamed 'Animate'), is now a subclass of Effect (not TweenEffect).

Added various new interpolation and easing classes, along with the new packages flex.effects.interpolation and flex.effects.easing. Also added new color-interpolation effect, 'Tint'.

Expect slight tweaks to the API during i7, but the bulk of the functionality and API changes are being checked in now.

Reviewed by Jason S.
Testing: checkintests & mustella tests/Effects (passed)

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Animation.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/.actionScriptProperties</path>
<path kind="file" action="A">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/EffectsProperties.mxml</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/AnimatePropertiesInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/AnimateProperties.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/components/AnimationPropertiesForm.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/FadeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Fade.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/Constant.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/Power.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/ColorInterpolator.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/AnimateInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/TintInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/IEaser.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Tint.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Animate.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/NumberArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/IInterpolator.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/NumberInterpolator.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/ResizeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Resize.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/MoveInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Move.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/events/AnimationEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/interpolation/ArrayInterpolator.as</path>

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/MoveInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/MoveInstance.as
@@ -23,7 +23,7 @@
 import mx.events.TweenEvent;
 import mx.styles.IStyleClient;

-public class MoveInstance extends AnimatePropertiesInstance
+public class MoveInstance extends AnimateInstance
 {
     include "../../core/Version.as";


Transferred from the Adobe Open Source Subversion Repository

Revision: 20005
Author:   cframpto@adobe.com
Date:     2011-01-28T19:36:52.199019Z

Log Message:
-----------
Fix up the text style metadata.  UITextFieldGridItemRenderer is based on TextField so it supports the old mx text styles not the Spark FTE text styles.  Remove verticalAlign style from DefaultGridItemRenderer since it is not currently supported.

QE notes: test setting some styles in UITextFieldGridItemRenderer
Doc notes:
Bugs: SDK-29192
Reviewer: Hans
Tests run: cyclone
Is noteworthy for integration:

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

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

--- frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
+++ frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
@@ -57,6 +57,8 @@
 //  Excluded APIs
 //--------------------------------------

+[Exclude(name="verticalAlign", kind="style")]
+
 // These must be inherited to work correctly.

 [Exclude(name="layoutDirection", kind="property")]
@@ -81,10 +83,12 @@
  *
  *
You can control the label text wrapping by using the lineBreak style.
  *  For example, setting  lineBreak="explicit" and variableRowHeight="false"
- *  creates fixed height cells whose labels do not wrap.

+ *  creates fixed height cells whose labels do not wrap.
+ *  If you do not explicitly set the wordWrap property, wordWrap
+ *  will be set to the value of the grid's variableRowHeight property.

  *
  *
The DefaultGridItemRenderer class is not intended to be subclassed or copied.
- *  Create custom item renderers based on the  GridItemRenderer class.

+ *  Create custom item renderers based on the GridItemRenderer class.

  *
  *
For the highest performance on Microsoft Windows based applications,
  *  use the UITextFieldGridItemRenderer.


Transferred from the Adobe Open Source Subversion Repository

Revision: 17110
Author:   hmuller@adobe.com
Date:     2010-07-29T00:58:47.620972Z

Log Message:
-----------
Revised DefaultGridItemRenderer: it now wraps text that doesn't fit, instead of "..." truncating.  This is now the default item renderer for the DataGrid skin.

QE notes: Changed the default item renderer for DataGridSkin from a group with an s:Label to DefaultGridItemRenderer, a UIComponent that contains a UITextField.
Doc notes:
Bugs:
Reviewer: Kevin
Tests run: none
Is noteworthy for integration: yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DataGridSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
+++ frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as
@@ -261,7 +261,6 @@
             return;

         _label = value;
-
         if (labelDisplay)
             labelDisplay.text = _label;

@@ -336,10 +335,11 @@
         if (!labelDisplay)
         {
             labelDisplay = new UITextField();
-            /*
+
+            labelDisplay.multiline = true;
+            labelDisplay.wordWrap = true;
             labelDisplay.autoSize = TextFieldAutoSize.LEFT;
-            labelDisplay.wordWrap = true;
-            */
+
             addChild(DisplayObject(labelDisplay));
             if (_label != "")
                 labelDisplay.text = _label;
@@ -354,15 +354,10 @@
         super.measure();

         // labelDisplay layout: padding of 3 on left and right and padding of 5 on top and bottom.
-
+
+        measuredHeight = LayoutElementUIComponentUtils.getPreferredBoundsHeight(labelDisplay, null) + 6;
         measuredWidth = LayoutElementUIComponentUtils.getPreferredBoundsWidth(labelDisplay, null) + 10;
-        measuredHeight = LayoutElementUIComponentUtils.getPreferredBoundsHeight(labelDisplay, null) + 6;
-
-        measuredMinWidth = measuredWidth;
-        measuredMinHeight = measuredHeight;
-    }
-
-    private var textIsTruncated:Boolean = false;
+    }

     /**
      *  @private
@@ -373,14 +368,16 @@

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

-        labelDisplay.setActualSize(width-10, height-5);
-
-        if (textIsTruncated)
-            labelDisplay.text = _label;
-        textIsTruncated = labelDisplay.truncateToFit();
+        labelDisplay.setActualSize(width - 10, height - 5);
+
+        // GridLayout/layoutItemRenderers() assumes that after validating the renderer
+        // (see GridLayout/layoutGridElement) renderer.getPreferredBoundsHeight() will
+        // return a value that reflects the column's current width.
+        measuredHeight = LayoutElementUIComponentUtils.getPreferredBoundsHeight(labelDisplay, null) + 6;

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 131
Author:   svetlink@adobe.com
Date:     2008-01-09T15:51:33.919308Z

Log Message:
-----------
Fixing creation of "wrapped" arrays if the wrapper type is already registered in SchemaTypeRegistry.

Bugs: FB-11399 - Web Service (WSDL) has arrayCollection as first item returned. All items that follow are strongly typed data as generated on the web server.

QA: please create a testcase based on the project attached to the bug.
Doc: N/A

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as

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

--- frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as
+++ frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as
@@ -1010,7 +1010,7 @@
             return true;
         }

-		// If maxOccurs > 1 we always create an array, even if it will be empty or null.
+        // If maxOccurs > 1 we always create an array, even if it will be empty or null.
         if (maxOccurs > 1)
         {
             // If we have a type, provide this when creating an array in case
@@ -1025,12 +1025,23 @@
             var emptyArray:* = createIterableValue(typeQName);

             // If this is not the only property in the definition, we assign the
-            // array on a named property on the parent. If this property has no
-            // siblings, the array should be the parent object itself.
-			if (hasSiblings)
-			    setValue(parent, elementQName, emptyArray, typeQName);
-			else
-			    setValue(parent, null, emptyArray, typeQName);
+            // array on a named property on the parent.
+            if (hasSiblings)
+            {
+                setValue(parent, elementQName, emptyArray, typeQName);
+            }
+            else
+            {
+                // If this is a "wrapped array", the iterable value should be assigned
+                // as the value of the parent itself. However, we only replace
+                // the parent if it hasn't been created already. (It could be
+                // created if the parent QName has a registered collectionClass
+                // in the SchemaTypeRegistry - see bug FB-11399).
+                if (!(parent is ContentProxy && parent.object_proxy::content != undefined))
+                {
+                    setValue(parent, null, emptyArray, typeQName);
+                }
+            }
         }

         // If minOccurs == 0 the element is optional so we can omit it if


Transferred from the Adobe Open Source Subversion Repository

Revision: 21441
Author:   deeptika@adobe.com
Date:     2011-06-23T05:51:57.289491Z

Log Message:
-----------
Fetching itemRenderer so that it gets instantiated and doesn't get purged in same run.

QE notes:
Doc notes:
Bugs: FLEXDMV-2577 (AdvancedDataGrid crash with rowHeight is set and editable=true)
Reviewer: Sameer
Tests run:
Is noteworthy for integration:

Modified Paths:
--------------
/private/flex/sdk/branches/4.y/frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as

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

--- frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as
+++ frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as
@@ -6281,6 +6281,8 @@
         if (itemsNeedMeasurement)
         {
             itemsNeedMeasurement = false;
+			// fetch the itemRenderer so that it gets initialized
+			var obj:Object = itemRenderer;
             if (isNaN(explicitRowHeight))
             {
                 if (iterator && columns.length > 0)
@@ -6319,11 +6321,6 @@
                 else
                     setRowHeight(20);
             }
-			else
-			{
-				// fetch the itemRenderer so that it gets initialized
-				var obj:Object = itemRenderer;
-			}
         }
     }


Revert "Fixed issue (RTEs) with editable data grid when it has an array of simple values (Number, String etc)"

This reverts commit 56c55d0f3e6d77f38823a1204321d09c6017f9e2.

--- frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as
+++ frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGridBaseEx.as
@@ -3397,7 +3397,7 @@
                     ObjectUtil.getClassInfo(iterator.current,
                                             ["uid", "mx_internal_uid"]);

-                if (info)
+                if(info)
                     cols = info.properties;
             }

@@ -3420,21 +3420,15 @@
                 // this is an old recordset - use its columns
                 var n:int = cols.length;
                 var colName:Object;
-				if  (n == 0) {
-					col = new AdvancedDataGridColumn();
-					newCols.push(col);
-				}
-				else {
-	                for (var i:int = 0; i < n; i++)
-	                {
-	                    colName = cols[i];
-	                    if (colName is QName)
-	                        colName = QName(colName).localName;
-	                    col = new AdvancedDataGridColumn();
-	                    col.dataField = String(colName);
-	                    newCols.push(col);
-	                }
-				}
+                for (var i:int = 0; i < n; i++)
+                {
+                    colName = cols[i];
+                    if (colName is QName)
+                        colName = QName(colName).localName;
+                    col = new AdvancedDataGridColumn();
+                    col.dataField = String(colName);
+                    newCols.push(col);
+                }
             }
             columns = newCols;
             generatedColumns = true;
@@ -4023,7 +4017,7 @@
         var g:Graphics = background.graphics;
         g.clear();

-        if (columnIndex >= lockedColumnCount &&
+        if(columnIndex >= lockedColumnCount &&
            columnIndex < lockedColumnCount + horizontalScrollPosition)
             return;

@@ -4041,9 +4035,8 @@

         // Height is usually as tall is the items in the row, but not if
         // it would extend below the bottom of listContent
-		var height:Number = 0;
-		if (lastRow)
-        	height = Math.min(lastRow.y + lastRow.height, listContent.height - yy);
+        var height:Number = Math.min(lastRow.y + lastRow.height,
+                                     listContent.height - yy);

         g.drawRect(xx, yy, headerInfo.headerItem.width, height);
         g.endFill();
@@ -8009,8 +8002,8 @@
                 var newData:Object = itemEditorInstance[_columns[event.columnIndex].editorDataField];
                 var property:String = _columns[event.columnIndex].dataField;
                 var data:Object = event.itemRenderer.data;
-                var typeInfo:String = describeType(data).@name;
-                for each (var variable:XML in describeType(data).variable)
+                var typeInfo:String = "";
+                for each(var variable:XML in describeType(data).variable)
                 {
                     if (property == variable.@name.toString())
                     {
@@ -8039,23 +8032,11 @@
                     if (!(newData is int))
                         newData = Number(newData);
                 }
-				if (property == null)
-				{
-					if (data != newData)
-					{
-						bChanged = true;
-						data = newData;
-					}
-				}
-				else
-				{
-					if (data[property] != newData)
-					{
-						bChanged = true;
-						data[property] = newData;
-					}
-				}
-
+                if (data[property] != newData)
+                {
+                    bChanged = true;
+                    data[property] = newData;
+                }
                 if (bChanged && !(data is IPropertyChangeNotifier))
                 {
                     collection.itemUpdated(data, property);


Transferred from the Adobe Open Source Subversion Repository

Revision: 6470
Author:   rfrishbe@adobe.com
Date:     2009-05-01T20:07:28.859826Z

Log Message:
-----------
Renaming SkinnableComponent's methods again...instead of createSkin() and destroySkin(), it's now attachSkin() and detachSkin().

QE Notes: -
Doc Notes: -
Bugs: SDK-19779
Reviewer: -
tests: checkintests, mustella SkinnableComponent tests, Scroller tests (Scroller ones fail some compare bitmaps for me)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>

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

--- frameworks/projects/airspark/src/spark/components/windowClasses/TitleBar.as
+++ frameworks/projects/airspark/src/spark/components/windowClasses/TitleBar.as
@@ -295,14 +295,14 @@
      *  When we are running on the mac, switch to the mac skin and continue the load.
      *
      */
-    override protected function createSkin():void
+    override protected function attachSkin():void
     {
        if (isMac() && getStyle("skinClass") == TitleBarSkin)
        {
             setStyle("skinClass", MacTitleBarSkin);
        }

-       super.createSkin();
+       super.attachSkin();
     }

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 7306
Author:   aharui@adobe.com
Date:     2009-05-27T14:54:00.080376Z

Log Message:
-----------
Fix another pair of mustella failures from the frame1 cleanup

QE Notes: None
Doc Notes: None
Bugs: SDK-21386
Reviewer: corey
tests: checkintests mustella/MarshallPlan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ActiveWindowManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/ChildManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/systemClasses/MarshallPlan.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/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>

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

--- frameworks/projects/framework/src/mx/managers/systemClasses/ChildManager.as
+++ frameworks/projects/framework/src/mx/managers/systemClasses/ChildManager.as
@@ -63,7 +63,7 @@
 		{
 			SystemManager(systemManager).childManager = this;
 			this.systemManager = SystemManager(systemManager);
-			this.systemManager.registerImplementation("mx.managers.ISystemManagerChildManager", this);
+			this.systemManager.registerImplementation("mx.managers::ISystemManagerChildManager", this);
 		}
 	}