Transferred from the Adobe Open Source Subversion Repository

Revision: 17330
Author:   chiedozi@adobe.com
Date:     2010-08-16T17:36:59.538425Z

Log Message:
-----------
Removed the sections functionality from ViewNavigator and refactored that logic into TabbedViewNavigator.  Updated dependent performance tests and components.
Introduced MobileApplicationBase and TabbedMobileApplication do support the tabbed use case for mobile.
Deleted SliderSkin from the framework.  All mobile skins now extend MobileSkin.

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

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/src/spark/skins/mobile/VScrollBarTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/ViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/managers/PersistenceManager.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorSection.as" copyfrom-rev="17260" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileApplicationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="A">/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/effects/FlipViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/ComponentCatalog/src/ScriptRunner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/SlideViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/performance/mobile/ComponentCatalog/src/ComponentCatalog.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorSection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedMobileApplicationSkin.as</path>
<path kind="file" action="A">/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/ViewHistoryData.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/managers/IPersistenceManager.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/effects/IViewTransition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarTrackSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedMobileApplication.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/SliderSkin.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/MobileApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as
@@ -0,0 +1,943 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.core.ISelectableList;
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+import mx.effects.IEffect;
+import mx.effects.Parallel;
+import mx.events.CollectionEvent;
+import mx.events.CollectionEventKind;
+import mx.events.EffectEvent;
+import mx.events.FlexEvent;
+import mx.events.PropertyChangeEvent;
+import mx.events.PropertyChangeEventKind;
+import mx.resources.ResourceManager;
+
+import spark.components.supportClasses.ButtonBarBase;
+import spark.components.supportClasses.NavigationStack;
+import spark.components.supportClasses.ViewNavigatorBase;
+import spark.effects.Move;
+import spark.events.ElementExistenceEvent;
+import spark.events.IndexChangeEvent;
+
+use namespace mx_internal;
+
+[DefaultProperty("navigators")]
+
+//--------------------------------------
+//  Events
+//--------------------------------------
+
+/**
+ *
+ */
+[Event(name="change", type="spark.events.IndexChangeEvent")]
+
+/**
+ *
+ */
+[Event(name="changing", type="spark.events.IndexChangeEvent")]
+
+/**
+ *
+ */
+[Event(name="collectionChange", type="mx.events.CollectionEvent")]
+
+/**
+ *
+ */
+[Event(name="valueCommit", type="mx.events.FlexEvent")]
+
+/**
+ *
+ *  @see spark.components.View
+ *  @see spark.components.ViewNavigator
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+public class TabbedViewNavigator extends ViewNavigatorBase implements ISelectableList
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Constants
+    //
+    //--------------------------------------------------------------------------
+    /**
+     *  @private
+     *  Static constant representing no proposed selection.
+     */
+    private static const NO_PROPOSED_SELECTION:int = -1;
+
+    private static const NO_ACTION:int = -1;
+    private static const CHANGE_SECTION_ACTION:int = 0;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function TabbedViewNavigator()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Skin Parts
+    //
+    //--------------------------------------------------------------------------
+
+    [SkinPart(required="false")]
+    /**
+     *  A skin part that defines the tab bar of the navigator.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public var tabBar:ButtonBarBase;
+
+    //--------------------------------------------------------------------------
+    //
+    // Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private var animateTabBarVisbility:Boolean = false;
+
+    /**
+     *  @private
+     */
+    private var contentGroupProps:Object;
+
+    /**
+     *  @private
+     */
+    private var tabBarVisibilityEffect:IEffect;
+
+    /**
+     *  @private
+     */
+    private var selectedNavigatorChanged:Boolean = false;
+
+    /**
+     *  @private
+     */
+    private var tabBarProps:Object;
+
+    /**
+     *  @private
+     */
+    private var tabBarVisibilityInvalidated:Boolean = false;
+
+    /**
+     *  @private
+     */
+    public var transitionsEnabled:Boolean = true;
+
+    //--------------------------------------------------------------------------
+    //
+    // Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  activeNavigator
+    //----------------------------------
+
+    /**
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get activeNavigator():ViewNavigatorBase
+    {
+        if (!navigators || length == 0 || selectedIndex < 0)
+            return null;
+
+        return navigators[selectedIndex];
+    }
+
+    //----------------------------------
+    //  landscapeOrientation
+    //----------------------------------
+
+    /**
+     *  @inheritDoc
+     */
+    override public function set landscapeOrientation(value:Boolean):void
+    {
+        super.landscapeOrientation = value;
+
+        if (activeNavigator)
+            activeNavigator.landscapeOrientation = value;
+    }
+
+    //----------------------------------
+    //  navigators
+    //----------------------------------
+
+    private var _navigators:Vector.<ViewNavigatorBase>;
+
+    /**
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get navigators():Vector.<ViewNavigatorBase>
+    {
+        return _navigators;
+    }
+    /**
+     *  @private
+     */
+    public function set navigators(value:Vector.<ViewNavigatorBase>):void
+    {
+        // FIXME (chiedozi): Should only add listeners to active view
+        var i:int;
+
+        if (_navigators)
+        {
+            for (i = 0; i < _navigators.length; ++i)
+            {
+                _navigators[i].parentNavigator = null;
+                _navigators[i].removeEventListener(ElementExistenceEvent.ELEMENT_ADD, navigator_elementAddHandler);
+                _navigators[i].removeEventListener(ElementExistenceEvent.ELEMENT_REMOVE, navigator_elementRemoveHandler);
+            }
+        }
+
+        _navigators = value;
+
+        if (value)
+        {
+            for (i = 0; i < value.length; ++i)
+            {
+                _navigators[i].parentNavigator = this;
+                _navigators[i].addEventListener(ElementExistenceEvent.ELEMENT_ADD, navigator_elementAddHandler);
+                _navigators[i].addEventListener(ElementExistenceEvent.ELEMENT_REMOVE, navigator_elementRemoveHandler);
+            }
+
+            selectedIndex = 0;
+        }
+
+        selectedNavigatorChanged = true;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Public Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function hideTabBar(animate:Boolean = true):void
+    {
+        if (tabBar && tabBar.visible)
+        {
+            animateTabBarVisbility = animate;
+            tabBarVisibilityInvalidated = true;
+            invalidateProperties();
+        }
+        else
+        {
+            tabBarVisibilityInvalidated = false;
+        }
+    }
+
+    /**
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function showTabBar(animate:Boolean = true):void
+    {
+        if (tabBar && navigators.length > 1 && !tabBar.visible)
+        {
+            animateTabBarVisbility = animate;
+            tabBarVisibilityInvalidated = true;
+            invalidateProperties();
+        }
+        else
+        {
+            tabBarVisibilityInvalidated = false;
+        }
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    override public function updatePropertiesForView(view:View):void
+    {
+        if (view)
+        {
+            tabBar.visible = tabBar.includeInLayout = view.tabBarVisible;
+            overlayControls = view.overlayControls;
+        }
+        else
+        {
+            tabBar.visible = tabBar.includeInLayout = false;
+            overlayControls = false;
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Private Methods
+    //
+    //--------------------------------------------------------------------------
+
+    override public function backKeyHandler():void
+    {
+        if (activeNavigator)
+            activeNavigator.backKeyHandler();
+    }
+
+    override public function canCancelDefaultBackKeyBehavior():Boolean
+    {
+        return  activeNavigator && activeNavigator.canCancelDefaultBackKeyBehavior();
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected function calculateFinalUIPositions():void
+    {
+        var animateTabBarUp:Boolean;
+
+        if (overlayControls)
+            animateTabBarUp = (tabBar.y + (tabBar.height / 2)) <= height / 2;
+        else
+            animateTabBarUp = tabBar.y <= contentGroup.y;
+
+        // Need to validate to capture final positions and sizes of skin parts
+        validateNow();
+
+        // This will store the final location and sizes of the components
+        tabBarProps.end = captureAnimationValues(tabBar);
+        contentGroupProps.end = captureAnimationValues(contentGroup);
+
+        if (tabBarVisibilityInvalidated)
+        {
+            if (animateTabBarUp)
+            {
+                if (tabBarProps.start.visible)
+                    tabBarProps.end.y = -tabBar.height;
+                else
+                    tabBarProps.start.y = -tabBar.height;
+            }
+            else
+            {
+                if (tabBarProps.start.visible)
+                    tabBarProps.end.y = this.height;
+                else
+                    tabBarProps.start.y = this.height;
+            }
+
+            tabBar.visible = true;
+        }
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected function captureAnimationValues(component:UIComponent):Object
+    {
+        var values:Object = {   y:component.y,
+                                visible: component.visible,
+                                includeInLayout: component.includeInLayout,
+                                cacheAsBitmap: component.cacheAsBitmap };
+
+        return values;
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    override protected function commitProperties():void
+    {
+        super.commitProperties();
+
+        // FIXME (chiedozi): Should cancel any queue view changes
+        // of the active view.
+        if (selectedNavigatorChanged)
+        {
+            if (_selectedIndex != -1)
+            {
+                activeNavigator.active = false;
+                removeElement(_navigators[_selectedIndex]);
+            }
+
+            commitSelection();
+
+            if (_selectedIndex > -1)
+            {
+                activeNavigator.active = true;
+                activeNavigator.landscapeOrientation = landscapeOrientation;
+                addElement(_navigators[_selectedIndex]);
+                UIComponent(activeNavigator).invalidateProperties();
+            }
+
+            selectedNavigatorChanged = false;
+        }
+
+        if (tabBarVisibilityInvalidated)
+            commitVisibilityChanges();
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected function commitSelection():void
+    {
+        _selectedIndex = _proposedSelectedIndex;
+        _proposedSelectedIndex = NO_PROPOSED_SELECTION;
+
+        if (hasEventListener(FlexEvent.VALUE_COMMIT))
+            dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
+
+        var currentSection:NavigationStack = null;
+        if (_selectedIndex > -1)
+            currentSection = navigators[_selectedIndex].navigationStack;
+
+        // FIXME (chiedozi): When a selection changes, old navigator should
+        // destory its current view
+
+        // Check if we need to push the root view
+        if (currentSection && currentSection.length == 0 && currentSection.firstView != null)
+        {
+            currentSection.push(currentSection.firstView, currentSection.firstViewData);
+            ViewNavigator(activeNavigator).invalidateProperties();
+            ViewNavigator(activeNavigator).viewChangeRequested = true;
+        }
+    }
+
+    /**
+     *  @private
+     *  Commits the requested visibility changes made to the action
+     *  bar and tab bar.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected function commitVisibilityChanges():void
+    {
+        // Can't change the visibility during a view transition
+        // FIXME (chiedozi): Shouldn't be able to do this if the child view
+        // is animating
+//        if (viewChanging)
+//        {
+//            tabBarVisibilityInvalidated = false;
+//            return;
+//        }
+
+        // If an animation is running, end it
+        if (tabBarVisibilityEffect)
+            tabBarVisibilityEffect.end();
+
+        if (transitionsEnabled && animateTabBarVisbility)
+        {
+            tabBarVisibilityEffect = createVisibilityAnimation();
+            tabBarVisibilityEffect.addEventListener(EffectEvent.EFFECT_END, visibilityAnimation_completeHandler);
+            tabBarVisibilityEffect.play();
+        }
+        else
+        {
+            if (tabBarVisibilityInvalidated)
+                tabBar.visible = tabBar.includeInLayout = !tabBar.visible;
+            tabBarVisibilityInvalidated = false;
+        }
+    }
+
+    /**
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected function createTabBarVisibilityEffect(hiding:Boolean, props:Object):IEffect
+    {
+        var effect:Move = new Move();
+
+        effect.target = tabBar;
+        effect.yFrom = props.start.y;
+        effect.yTo = props.end.y;
+
+        tabBar.includeInLayout = false;
+        tabBar.cacheAsBitmap = true;
+
+        return effect;
+    }
+
+    /**
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected function createVisibilityAnimation():IEffect
+    {
+        var effect:IEffect;
+        var finalEffect:Parallel = new Parallel();
+
+        // Grab initial values
+        tabBarProps = { start:captureAnimationValues(tabBar) };
+        contentGroupProps = { start:captureAnimationValues(contentGroup) };
+
+        // Update actionBar layout properties
+        if (tabBarVisibilityInvalidated)
+            tabBar.visible = tabBar.includeInLayout = !tabBarProps.start.visible;
+
+        // Calculate final positions.  This method will force a validation
+        calculateFinalUIPositions();
+
+        // The actionbar will be visible if we are animating it
+        if (tabBar.visible)
+        {
+            effect = createTabBarVisibilityEffect(tabBar.visible, tabBarProps);
+            effect.target = tabBar;
+
+            finalEffect.addChild(effect);
+        }
+
+        var moveEffect:Move = new Move();
+        moveEffect.target = contentGroup;
+        moveEffect.yFrom = contentGroupProps.start.y;
+        moveEffect.yTo = contentGroup.y;
+        contentGroup.includeInLayout = false;
+        contentGroup.cacheAsBitmap = true;
+        finalEffect.addChild(moveEffect);
+
+        finalEffect.duration = 250;
+        return finalEffect;
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    private function navigator_elementAddHandler(event:ElementExistenceEvent):void
+    {
+        event.element.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, view_propertyChangeHandler);
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    private function navigator_elementRemoveHandler(event:ElementExistenceEvent):void
+    {
+        event.element.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, view_propertyChangeHandler);
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    override protected function partAdded(partName:String, instance:Object):void
+    {
+        super.partAdded(partName, instance);
+
+        // If the actionBar changes, need to reset the properties on it
+        if (instance == tabBar)
+            tabBar.dataProvider = this;
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    private function view_propertyChangeHandler(event:PropertyChangeEvent):void
+    {
+        if (event.property == "tabBarVisible")
+        {
+    		if (event.newValue)
+    			showTabBar();
+    		else
+    			hideTabBar();
+        }
+        else if (event.property == "overlayControls")
+        {
+            overlayControls = event.newValue;
+        }
+    }
+
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    private function visibilityAnimation_completeHandler(event:EffectEvent):void
+    {
+        event.target.removeEventListener(EffectEvent.EFFECT_END, visibilityAnimation_completeHandler);
+
+        if (tabBarVisibilityInvalidated)
+            tabBar.visible = tabBar.includeInLayout = !tabBarProps.start.visible;
+        else
+            tabBar.includeInLayout = tabBarProps.start.includeInLayout;
+
+        // Restore includeInLayout and cacheAsBitmap properties for each component
+        contentGroup.includeInLayout = contentGroupProps.start.includeInLayout;
+
+        tabBar.cacheAsBitmap = tabBarProps.start.cacheAsBitmap;
+        contentGroup.cacheAsBitmap = contentGroupProps.start.cacheAsBitmap;
+
+        tabBarVisibilityEffect = null;
+        tabBarProps = null;
+        contentGroupProps = null;
+
+        tabBarVisibilityInvalidated = false;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods: ISelectableList
+    //
+    //--------------------------------------------------------------------------
+    //----------------------------------
+    //  selectedIndex
+    //----------------------------------
+
+    /**
+     *  @private
+     *  The proposed selected index. This is a temporary variable that is
+     *  used until the selected index is committed.
+     */
+    protected var _proposedSelectedIndex:int = NO_PROPOSED_SELECTION;
+
+    /**
+     * @private
+     * The backing variable for selectedIndex.
+     */
+    protected var _selectedIndex:int = NO_PROPOSED_SELECTION;
+
+    [Bindable("change")]
+    [Bindable("valueCommit")]
+    /**
+     *  @inheritDoc
+     */
+    public function get selectedIndex():int
+    {
+        if (_proposedSelectedIndex != NO_PROPOSED_SELECTION)
+            return _proposedSelectedIndex;
+
+        return _selectedIndex;
+    }
+    /**
+     * @private
+     */
+    public function set selectedIndex(value:int):void
+    {
+        var cancelIndexChange:Boolean = false;
+
+        if (value < -1 || value >= length)
+        {
+            var message:String = ResourceManager.getInstance().getString(
+                "collections", "outOfBounds", [ value ]);
+            throw new RangeError(message);
+        }
+
+        if (!selectedNavigatorChanged && value == selectedIndex)
+            return;
+
+        // FIXME (chiedozi): Need to be able to cancel this event
+//        if (activeView && !canRemoveCurrentView())
+//            cancelIndexChange = true;
+
+        if (hasEventListener(IndexChangeEvent.CHANGING))
+        {
+            var e:IndexChangeEvent = new IndexChangeEvent(IndexChangeEvent.CHANGING, false, true);
+            e.oldIndex = _selectedIndex;
+            e.newIndex = value;
+
+            if (!dispatchEvent(e))
+                cancelIndexChange = true;
+        }
+
+        // If the active view's REMOVING event or the navigator's
+        // CHANGING event was canceled, prevent the index change
+        if (cancelIndexChange)
+        {
+            _proposedSelectedIndex = NO_PROPOSED_SELECTION;
+            return;
+        }
+
+        _proposedSelectedIndex = value;
+        selectedNavigatorChanged = true;
+
+        invalidateProperties();
+    }
+
+    //----------------------------------
+    //  length
+    //----------------------------------
+
+    /**
+     *  @inheritDoc
+     */
+    public function get length():int
+    {
+        if (!_navigators)
+            return 0;
+
+        return _navigators.length;
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function addItem(item:Object):void
+    {
+        if (!(item is ViewNavigatorBase))
+            throw new Error("You can only add ViewNavigatorBase objects");
+
+        ViewNavigatorBase(item).parentNavigator = parentNavigator ? parentNavigator : this;
+
+        _navigators.push(item);
+        internalDispatchEvent(CollectionEventKind.ADD, item, _navigators.length - 1);
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function addItemAt(item:Object, index:int):void
+    {
+        if (!(item is ViewNavigatorBase))
+            throw new Error("You can only add ViewNavigators");
+
+        if (index < 0 || index > length)
+        {
+            var message:String = ResourceManager.getInstance().getString(
+                "collections", "outOfBounds", [ index ]);
+            throw new RangeError(message);
+        }
+
+        ViewNavigatorBase(item).parentNavigator = parentNavigator ? parentNavigator : this;
+        _navigators.splice(index, 0, item);
+        internalDispatchEvent(CollectionEventKind.ADD, item, index);
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function getItemAt(index:int, prefetch:int = 0):Object
+    {
+        if (index < 0 || index >= length)
+        {
+            var message:String = ResourceManager.getInstance().getString(
+                "collections", "outOfBounds", [ index ]);
+            throw new RangeError(message);
+        }
+
+        return _navigators[index];
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function getItemIndex(item:Object):int
+    {
+        return _navigators.indexOf(item);
+    }
+
+    /**
+     *  This method is not supported by ViewNavigator.  Any changes
+     *  made to individual views inside a <code>NavigationStack</code>
+     *  are ignored.
+     */
+    public function itemUpdated(item:Object, property:Object = null,
+                                oldValue:Object = null,
+                                newValue:Object = null):void
+    {
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function removeAll():void
+    {
+        _navigators.length = 0;
+        internalDispatchEvent(CollectionEventKind.RESET);
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function removeItemAt(index:int):Object
+    {
+        if (index < 0 || index >= length)
+        {
+            var message:String = ResourceManager.getInstance().getString(
+                "collections", "outOfBounds", [ index ]);
+            throw new RangeError(message);
+        }
+
+        var removed:Object = _navigators.splice(index, 1)[0];
+        internalDispatchEvent(CollectionEventKind.REMOVE, removed, index);
+
+        return removed;
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function setItemAt(item:Object, index:int):Object
+    {
+        if (!(item is ViewNavigator))
+            throw new Error("You can only add NavigationStack to a ViewNavigator");
+
+        if (index < 0 || index >= length)
+        {
+            var message:String = ResourceManager.getInstance().getString(
+                "collections", "outOfBounds", [ index ]);
+            throw new RangeError(message);
+        }
+
+        var oldItem:Object = _navigators[index];
+        _navigators[index] = item as ViewNavigatorBase;
+
+        if (hasEventListener(CollectionEvent.COLLECTION_CHANGE))
+        {
+            var updateInfo:PropertyChangeEvent;
+
+            updateInfo = new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE);
+            updateInfo.kind = PropertyChangeEventKind.UPDATE;
+            updateInfo.oldValue = oldItem;
+            updateInfo.newValue = item;
+            updateInfo.property = index;
+
+            internalDispatchEvent(CollectionEventKind.REPLACE, updateInfo, index);
+        }
+
+        return oldItem;
+    }
+
+    /**
+     *  @inheritDoc
+     */
+    public function toArray():Array
+    {
+        var n:int = _navigators.length;
+        var arraySource:Array = new Array(n);
+
+        for (var i:int = 0; i < n; i++)
+        {
+            arraySource[i] = _navigators[i];
+        }
+
+        return arraySource;
+    }
+
+    /**
+     *  @private
+     *  Dispatches a collection event with the specified information.
+     *
+     *  @param kind String indicates what the kind property of the event should be
+     *  @param item Object reference to the item that was added or removed
+     *  @param location int indicating where in the source the item was added.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    private function internalDispatchEvent(kind:String, item:Object = null, location:int = -1):void
+    {
+        if (hasEventListener(CollectionEvent.COLLECTION_CHANGE))
+        {
+            var event:CollectionEvent =
+                new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
+            event.kind = kind;
+            event.items.push(item);
+            event.location = location;
+            dispatchEvent(event);
+        }
+    }
+}
+}


fix asdoc.  Falcon didn't notice private override of protected var

--- frameworks/projects/HTML/as/src/org/apache/flex/html/beads/DataGridColumnView.as
+++ frameworks/projects/HTML/as/src/org/apache/flex/html/beads/DataGridColumnView.as
@@ -45,8 +45,6 @@
 		{
 		}

-		private var _strand:IStrand;
-
 		/**
 		 *  @copy org.apache.flex.core.IBead#strand
 		 *
@@ -58,8 +56,7 @@
 		override public function set strand(value:IStrand):void
 		{
 			super.strand = value;
-			_strand = value;
-		}
+    	}

 		private var _columnIndex:uint;


changed the size of the googleMap 'infoWindow' so that it our pop-up placemark forms would fit inside, expect more changes;

--- flexEditor/src/org/arisgames/editor/components/PlaceMarker.as
+++ flexEditor/src/org/arisgames/editor/components/PlaceMarker.as
@@ -60,8 +60,8 @@
 //                pme.addEventListener(AppConstants.DYNAMICEVENT_PLACEMARKREQUESTSDELETION, map.deletePlaceMarker);
                 iwo.customContent = pme;
                 iwo.drawDefaultFrame = true;
-                iwo.height = 300;
-                iwo.width = 375;
+                iwo.height = 375;
+                iwo.width = 362;

                 openInfoWindow(iwo);
             }


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

--- frameworks/projects/framework/src/mx/core/ContainerGlobals.as
+++ frameworks/projects/framework/src/mx/core/ContainerGlobals.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2006-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: 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@1260764 13f79535-47bb-0310-9956-ffa450edef68

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

 package mx.events
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 4492
Author:   gosmith@adobe.com
Date:     2009-01-12T22:47:10.154251Z

Log Message:
-----------
Simplified how an accessibility class gets hooked into its corresponding component class.

We now do the hooking in the static method enableAccessibility(), which is called by code that is autogenerated by the compiler. Previously this method did nothing and the hooking happened at static initialization time. This allows us to remove the static var accessibilityHooked and the static method hookAccessibility() in each accessibility class.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Deepa and Alex

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ColorPickerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DateFieldAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/LinkButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DateChooserAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/UIComponentAccProps.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AlertAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TitleWindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccordionHeaderAccImpl.as</path>

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

--- frameworks/projects/mx/src/mx/accessibility/MenuBarAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/MenuBarAccImpl.as
@@ -22,11 +22,8 @@
 use namespace mx_internal;

 /**
- *  The MenuBarAccImpl class is the accessibility class for MenuBar.
- *
- *  @helpid 3007
- *  @tiptext This is the MenuBarAccImpl Accessibility Class.
- *  @review
+ *  MenuBarAccImpl is a subclass of AccessibilityImplementation
+ *  which implements accessibility for the MenuBar class.
  */
 public class MenuBarAccImpl extends AccImpl
 {
@@ -34,120 +31,97 @@

 	//--------------------------------------------------------------------------
 	//
-	//  Class initialization
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 *  Static variable triggering the hookAccessibility() method.
-	 *  This is used for initializing MenuBarAccImpl class to hook its
-	 *  createAccessibilityImplementation() method to MenuBar class
-	 *  before it gets called from UIComponent.
-	 */
-	private static var accessibilityHooked:Boolean = hookAccessibility();
-
-	/**
-	 *  @private
-	 *  Static method for swapping the createAccessibilityImplementation()
-	 *  method of MenuBar with the MenuBarAccImpl class.
-	 */
-	private static function hookAccessibility():Boolean
+	//  Constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private static const ROLE_SYSTEM_MENUITEM:uint = 0x0C;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_FOCUSABLE:uint = 0x00100000;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_FOCUSED:uint = 0x00000004;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_HASPOPUP:uint = 0x40000000;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_HOTTRACKED:uint = 0x00000080;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_SELECTABLE:uint = 0x00200000;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_UNAVAILABLE:uint = 0x00000001;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_OBJECT_FOCUS:uint = 0x8005;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_SYSTEM_MENUEND:uint = 0x00000005;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_SYSTEM_MENUSTART:uint = 0x00000004;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_OBJECT_SELECTION:uint = 0x8006;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Enables accessibility in the MenuBar class.
+	 *
+	 *
This method is called by application startup code
+	 *  that is autogenerated by the MXML compiler.
+	 *  Afterwards, when instances of MenuBar are initialized,
+	 *  their accessibilityImplementation property
+	 *  will be set to an instance of this class.

+	 */
+	public static function enableAccessibility():void
 	{
 		MenuBar.createAccessibilityImplementation =
 			createAccessibilityImplementation;
-
-		return true;
-	}
-
-	//--------------------------------------------------------------------------
-	//
-	//  Constants
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 *  Role of menuItem.
-	 */
-	private static const ROLE_SYSTEM_MENUITEM:uint = 0x0C;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_FOCUSABLE:uint = 0x00100000;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_FOCUSED:uint = 0x00000004;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_HASPOPUP:uint = 0x40000000;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_HOTTRACKED:uint = 0x00000080;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_SELECTABLE:uint = 0x00200000;
-
-	/**
-	 *  @private
-	 */
-	private static const STATE_SYSTEM_UNAVAILABLE:uint = 0x00000001;
-
-	/**
-	 *  @private
-	 */
-	private static const EVENT_OBJECT_FOCUS:uint = 0x8005;
-
-	/**
-	 *  @private
-	 */
-	private static const EVENT_SYSTEM_MENUEND:uint = 0x00000005;
-
-	/**
-	 *  @private
-	 */
-	private static const EVENT_SYSTEM_MENUSTART:uint = 0x00000004;
-
-	/**
-	 *  @private
-	 */
-	private static const EVENT_OBJECT_SELECTION:uint = 0x8006;
-
-	//--------------------------------------------------------------------------
-	//
-	//  Class methods
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 *  Method for creating the Accessibility class.
-	 *  This method is called from UIComponent.
-	 *  @review
+	}
+
+	/**
+	 *  @private
+	 *  Creates a MenuBar's AccessibilityImplementation object.
+	 *  This method is called from UIComponent's
+	 *  initializeAccessibility() method.
 	 */
 	mx_internal static function createAccessibilityImplementation(
 								component:UIComponent):void
 	{
 		component.accessibilityImplementation =
 			new MenuBarAccImpl(component);
-	}
-
-	/**
-	 *  Method call for enabling accessibility for a component.
-	 *  This method is required for the compiler to activate
-	 *  the accessibility classes for a component.
-	 */
-	public static function enableAccessibility():void
-	{
 	}

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 22463
Author:   jasonsj@adobe.com
Date:     2011-09-08T21:53:53.798261Z

Log Message:
-----------
Change the default value change for resizeForSoftKeyboard from true to false per discussion with Jacob Surber, Glenn and Jason Szeto. Text-form use case is still supported, but requires a scroller that wraps the text element. This change aligns the resize behavior of both the application and SkinnablePopUpContainer.

QE notes: Tests have been excluded. Add resizeForSoftKeyboard="true" in the main application where necessary to restore original test behavior.
Doc notes: Default value change for Application.resizeForSoftKeyboard from true to false. Users my re-enable this setting in the main application MXML file or opt-in later (i.e. when creating a View used as a text form) by using FlexGlobals.topLevelApplication.resizeForSoftKeyboard.
Bugs:
Reviewer: tkraikit
Tests run: checkintests, mustella
Is noteworthy for integration: yes

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

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

--- frameworks/projects/spark/src/spark/components/Application.as
+++ frameworks/projects/spark/src/spark/components/Application.as
@@ -1188,7 +1188,7 @@
     //----------------------------------
     //  resizeForSoftKeyboard
     //----------------------------------
-    private var _resizeForSoftKeyboard:Boolean = true;
+    private var _resizeForSoftKeyboard:Boolean = false;

     /**
      *  Some devices do not support a hardware keyboard.
@@ -1204,7 +1204,7 @@
      *  <softKeyboardBehavior> attribute in the
      *  application's xml descriptor file to none.

      *
-     *  @default true
+     *  @default false
      *
      *  @langversion 3.0
      *  @playerversion AIR 2.5


fixed bug related to overlays - duplicate function definition

--- flexEditor/src/org/arisgames/editor/util/AppUtils.as
+++ flexEditor/src/org/arisgames/editor/util/AppUtils.as
@@ -268,28 +268,7 @@
 		return go;
     }

-	public static function findParentObjectPaletteItem(child:ObjectPaletteItemBO):ObjectPaletteItemBO
-	{
-		if(child.parentContentFolderId == 0) return null;
-		var go:ArrayCollection = GameModel.getInstance().game.gameObjects;
-		return findOPIinListOfChildren(child.parentContentFolderId, go);
-	}
-
-	public static function findOPIinListOfChildren(id:int, list:ArrayCollection):ObjectPaletteItemBO
-	{
-		for(var i:int = 0; i < list.length; i++)
-		{
-			if((list[i] as ObjectPaletteItemBO).id == id)
-			{
-				return list[i] as ObjectPaletteItemBO;
-			}
-			else if((list[i] as ObjectPaletteItemBO).isFolder())
-			{
-				return findOPIinListOfChildren(id, (list[i] as ObjectPaletteItemBO).children);
-			}
-		}
-		return null;
-	}
+

 	private static function repairPalleteObjectAssociation(o:ObjectPaletteItemBO, lc:Number, pId:Number):void {
 		if (o.isFolder())


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 5770
Author:   gruehle@adobe.com
Date:     2009-03-30T20:58:54.529722Z

Log Message:
-----------
Add [Alternative] metadata to the Halo components that have a Gumbo replacement.

Bugs: SDK-20190
QA notes: none
Doc notes: Additional ASDoc comments added for many of the classes. These should all be reviewed.
Reviewer: Chet

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TileList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Zoom.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ToggleButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/HBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButtonGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ControlBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Cubic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Fade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/RemoveChildAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/TweenEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeRight.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/VBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Glow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Quartic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Box.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeLeft.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ApplicationControlBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Quintic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Tween.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Tile.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/easing/Quadratic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/AddChildAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeDown.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/SetPropertyAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Canvas.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Blur.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/LinkBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Text.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HorizontalList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/WipeUp.as</path>

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

--- frameworks/projects/mx/src/mx/controls/HScrollBar.as
+++ frameworks/projects/mx/src/mx/controls/HScrollBar.as
@@ -81,6 +81,8 @@
 [DefaultTriggerEvent("scroll")]

 [IconFile("HScrollBar.png")]
+
+[Alternative(replacement="spark.components.HScrollBar", since="4.0")]

 /**
  *  The HScrollBar (horizontal ScrollBar) control lets you control


Transferred from the Adobe Open Source Subversion Repository

Revision: 807
Author:   mhorn@adobe.com
Date:     2008-03-13T20:42:31.384362Z

Log Message:
-----------
Many minor ASDoc updates.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>

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

--- frameworks/projects/mx/src/mx/controls/HScrollBar.as
+++ frameworks/projects/mx/src/mx/controls/HScrollBar.as
@@ -86,10 +86,10 @@
  *  display state:

  *
  *

- *
Minimum range value

- *
Maximum range value

+ *
Minimum range value.

+ *
Maximum range value.

  *
Current position - must be within the
- *    minimum and maximum range values

+ *    minimum and maximum range values.

  *
Viewport size - represents the number of items
  *    in the range that you can display at one time. The
  *    number of items must be less than or equal to the


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

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

 package spark.components
 {


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

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

 package mx.olap
 {


Transferred from the Adobe Open Source Subversion Repository

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

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


Fix for Callout positioning on rotate FLEX-34712

Bug shows itself on device, and not in the simulator. When device is rotated, updatePopupPosition() is called too soon and positions to incorrect location. This fix adds a flag after detecting stageOrientationChange. The flag is read in updateDisplayList() and queues updatePopUpPostion() by calling it using callLater().

--- frameworks/projects/spark/src/spark/components/Callout.as
+++ frameworks/projects/spark/src/spark/components/Callout.as
@@ -244,6 +244,8 @@
     //--------------------------------------------------------------------------

     private var invalidatePositionFlag:Boolean = false;
+
+    private var stageOrientationChangedFlag:Boolean = false;

     //--------------------------------------------------------------------------
     //
@@ -764,6 +766,7 @@
         // reset state
         invalidatePositionFlag = false;
         arrowDirectionAdjusted = false;
+        stageOrientationChangedFlag = false;

         // Add to PopUpManager, calls updatePopUpPosition(), and change state
         super.open(owner, modal);
@@ -773,6 +776,10 @@

         if (systemManagerParent)
             systemManagerParent.addEventListener(Event.RESIZE, systemManager_resizeHandler);
+
+        // Detect stage orientation change and set flag
+        if (stage)
+	    stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, stage_orientationChangeHandler);
     }

     /**
@@ -787,6 +794,9 @@

         if (systemManagerParent)
             systemManagerParent.removeEventListener(Event.RESIZE, systemManager_resizeHandler);
+
+        if (stage)
+            stage.removeEventListener(StageOrientationEvent.ORIENTATION_CHANGE, stage_orientationChangeHandler);

         super.close(commit, data);
     }
@@ -802,8 +812,17 @@
         // explicit changes to horizontalPostion and verticalPosition.
         if (isOpen && invalidatePositionFlag)
         {
-            updatePopUpPosition();
-            invalidatePositionFlag = false;
+            //check if stage orientation changed
+            if (stageOrientationChangedFlag)
+            {
+                //queue call to updatePopUpPosition
+                callLater(updatePopUpPosition);
+                stageOrientationChangedFlag = false;
+            }
+            else
+            {
+                updatePopUpPosition();
+            }
         }

         // Position the arrow
@@ -1683,19 +1702,29 @@
      */
     private function systemManager_resizeHandler(event:Event):void
     {
-        // Remove explicit settings if due to Resize effect
-        softKeyboardEffectResetExplicitSize();
+       	// Remove explicit settings if due to Resize effect
+       	softKeyboardEffectResetExplicitSize();

         // Screen resize might require a new arrow direction and callout position
         invalidatePosition();

-        if (!isSoftKeyboardEffectActive)
+      	if (!isSoftKeyboardEffectActive)
         {
             // Force validation and use new screen size only if the keyboard
             // effect is not active. The stage dimensions may be invalid while
             // the soft keyboard is active. See SDK-31860.
             validateNow();
         }
-    }
+     }
+
+    /**
+    *  @private
+    */
+    private function stage_orientationChangeHandler(event:StageOrientationEvent):void
+    {
+        //set flag to use in updateDisplayList
+        //for queuing call to updatePopUpPosition
+        stageOrientationChangedFlag = true;
+    }
+  }
 }
-}


Transferred from the Adobe Open Source Subversion Repository

Revision: 2672
Author:   egeorgie@adobe.com
Date:     2008-07-30T22:52:27.741630Z

Log Message:
-----------
Remove GraphicElement.bounds APIs in favor of measure

Reviewed by Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Path.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Ellipse.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Graphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Rect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/TextBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/graphics/GraphicTags_checkintests.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/IGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/TextGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/StrokedElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/GraphicElementHostImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Line.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/BitmapGraphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/TextGraphicElement.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/Ellipse.as
+++ frameworks/projects/spark/src/spark/primitives/Ellipse.as
@@ -49,13 +49,6 @@
 	//
 	//--------------------------------------------------------------------------

-    override public function get bounds():Rectangle
-	{
-		return new Rectangle(0, 0,
-		                     isNaN(explicitWidth) ? 0 : explicitWidth,
-		                     isNaN(explicitHeight) ? 0 : explicitHeight);
-	}
-
 	/**
 	 *  @inheritDoc
 	 */


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

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

 package mx.core
 {


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

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


qnd: add ".sdk46" to sdk 4.6 client tag

qnd: add ".sdk46" to sdk 4.6 client tag

git-svn-id: 3f608e5a9a704dd448217c0a64c508e7f145cfa1@91631 6b8eccd3-e8c5-4e7d-8186-e12b5326b719

--- kdp3Lib/src/com/kaltura/kdpfl/ApplicationFacade.as
+++ kdp3Lib/src/com/kaltura/kdpfl/ApplicationFacade.as
@@ -94,6 +94,10 @@
 		 */
 		public function start(app:DisplayObject):void
 		{
+			CONFIG::isSDK46 {
+				kdpVersion += ".sdk46";
+			}
+
 			_app = app;
 			appFolder = app.root.loaderInfo.url;
 			appFolder = appFolder.substr(0, appFolder.lastIndexOf('/') + 1);


Add hierarchy generation to SpatialJoinTransform

--- WeaveJS/src/weavejs/data/source/SpatialJoinTransform.as
+++ WeaveJS/src/weavejs/data/source/SpatialJoinTransform.as
@@ -5,11 +5,13 @@
 	import weavejs.api.data.IDataSource;
 	import weavejs.api.data.IQualifiedKey;
 	import weavejs.api.data.ISelectableAttributes;
+	import weavejs.api.data.IWeaveTreeNode;
 	import weavejs.core.LinkableString;
 	import weavejs.data.ColumnUtils;
 	import weavejs.data.column.DynamicColumn;
 	import weavejs.data.column.ProxyColumn;
 	import weavejs.data.column.StringColumn;
+	import weavejs.data.hierarchy.ColumnTreeNode;
 	import weavejs.util.ArrayUtils;
 	import weavejs.util.JS;
 	import weavejs.util.StandardLib;
@@ -38,13 +40,42 @@

 		public function SpatialJoinTransform()
 		{
-			_source = new StandardLib.ol.source.Vector()
+			_source = new StandardLib.ol.source.Vector();
 			_parser = new StandardLib.ol.format.GeoJSON();
 		}

 		override protected function initialize(forceRefresh:Boolean = false):void
 		{
 			super.initialize(true);
+		}
+
+		override public function getHierarchyRoot():IWeaveTreeNode
+		{
+			if (!_rootNode)
+			{
+				_rootNode = new ColumnTreeNode({
+					dataSource: this,
+					data: this,
+					label: getLabel,
+					hasChildBranches: false,
+					children: [
+						generateHierarchyNode({})
+					]
+				});
+			}
+			return _rootNode;
+		}
+
+		override protected function generateHierarchyNode(metadata:Object):IWeaveTreeNode
+		{
+			metadata[ColumnMetadata.TITLE] = ColumnUtils.getTitle(this.geometryColumn)
+			metadata[ColumnMetadata.KEY_TYPE] = this.xColumn.getMetadata(ColumnMetadata.KEY_TYPE);
+			metadata[ColumnMetadata.DATA_TYPE] = this.geometryColumn.getMetadata(ColumnMetadata.KEY_TYPE);
+			return new ColumnTreeNode({
+				dataSource: this,
+				idFields: [],
+				data: metadata
+			});
 		}

 		override protected function requestColumnFromSource(proxyColumn:ProxyColumn):void
@@ -76,7 +107,8 @@
 					continue;
 				}

-				feature = new StandardLib.ol.Feature({id: key, geometry: geometry});
+				feature = new StandardLib.ol.Feature(geometry);
+				feature.setId(key);
 				_source.addFeature(feature);
 			}

@@ -97,7 +129,8 @@
 				}
 			}

-			var column:StringColumn = new StringColumn();
+			var column:StringColumn = new StringColumn(metadata);
+
 			column.setRecords(keys, data);
 			proxyColumn.setInternalColumn(column);
 		}


Чистка кода

Чистка кода

--- src/main/org/shypl/common/logging/LoggerImpl.as
+++ src/main/org/shypl/common/logging/LoggerImpl.as
@@ -1,6 +1,4 @@
 package org.shypl.common.logging {
-	import mx.utils.StringUtil;
-
 	import org.shypl.common.util.StringUtils;

 	internal final class LoggerImpl implements Logger {


Transferred from the Adobe Open Source Subversion Repository

Revision: 21839
Author:   jszeto@adobe.com
Date:     2011-08-04T22:35:00.199381Z

Log Message:
-----------
SpinnerList Bug Fixes

SDK-30904 - SpinnerList dispatches "change" event on programmatic selectedIndex changes

Call setSelectedIndex after a user interaction change

SDK-30961 - SpinnerList should use a less common property name when deciding if an item is disabled

Changed from using "enabled" to "_enabled_". Added static constant to SpinnerList.

SDK-30998 - SpinnerListContainerSkin.layoutContents calls setElementPosition() before setElementSize()

QE notes: none
Doc notes: none
Bugs: SDK-30904, SDK-30961, SDK-30998
Reviewer: Tom K
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/SpinnerListContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/layouts/VerticalSpinnerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/modules/compiler/src/java/flex2/compiler/common/DefaultsConfigurator.java</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListContainerSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListContainerSkin.as
@@ -288,19 +288,19 @@
 		var contentW:Number = contentGroup.getPreferredBoundsWidth();
 		var contentH:Number = contentGroup.getPreferredBoundsHeight();

-		setElementPosition(contentGroup, borderThickness, borderThickness);
 		setElementSize(contentGroup, unscaledWidth - borderThickness * 2, unscaledHeight - borderThickness * 2);
+        setElementPosition(contentGroup, borderThickness, borderThickness);

 		// Inset by the borderThickness horizontally because the selectionIndicator starts at 0
+        setElementSize(border, unscaledWidth - borderThickness * 2, unscaledHeight);
 		setElementPosition(border, borderThickness, 0);
-		setElementSize(border, unscaledWidth - borderThickness * 2, unscaledHeight);
-
+
+        setElementSize(shadow, unscaledWidth - borderThickness * 4, unscaledHeight - borderThickness * 2);
 		setElementPosition(shadow, borderThickness * 2, borderThickness);
-		setElementSize(shadow, unscaledWidth - borderThickness * 4, unscaledHeight - borderThickness * 2);
-
+
+        setElementSize(selectionIndicator, unscaledWidth, selectionIndicatorHeight);
 		setElementPosition(selectionIndicator, 0, Math.floor((unscaledHeight - selectionIndicatorHeight) / 2));
-		setElementSize(selectionIndicator, unscaledWidth, selectionIndicatorHeight);
-
+
 		// The SpinnerLists contain a left and right border. We don't want to show the leftmost
 		// SpinnerLists's left border nor the rightmost one's right border.
 		// We inset the mask on the left and right sides to accomplish this.


Map movies by symbol as well.

Map movies by symbol as well.

--- runtime/src/main/as/flump/xfl/XflLibrary.as
+++ runtime/src/main/as/flump/xfl/XflLibrary.as
@@ -31,7 +31,7 @@
             libraryItemToSymbol[tex.libraryItem] = tex.symbol;
         }
         for each (var movie :XflMovie in movies) {
-            _symbols[movie.libraryItem] = movie;
+            _symbols[movie.symbol] = movie;
             for each (var layer :XflLayer in movie.layers) {
                 for each (var kf :XflKeyframe in layer.keyframes) {
                     if (kf.libraryItem != null) kf.symbol = libraryItemToSymbol[kf.libraryItem];


remove DefaultSender.as

remove DefaultSender.as

--- src/net/manaca/tracking/sender/DefaultSender.as
+++ src/net/manaca/tracking/sender/DefaultSender.as
@@ -1,99 +0,0 @@
-package net.manaca.tracking.sender
-{
-import flash.events.Event;
-import flash.events.IOErrorEvent;
-import flash.events.SecurityErrorEvent;
-import flash.net.URLLoader;
-import flash.net.URLRequest;
-
-import net.manaca.errors.IllegalArgumentError;
-import net.manaca.logging.Tracer;
-import net.manaca.utils.StringUtil;
-
-/**
- *     <tracking basePath="http://musicbo.googlecode.com/files/">
-<track action="track_main">track_main.txt</track>
-<track action="track_play">track_play.txt</track>
-<track action="track_list">track_list.txt</track>
-</tracking>
- *
- * @author Sean
- *
- */
-public class DefaultSender implements ITrackingSender
-{
-    //==========================================================================
-    //  Variables
-    //==========================================================================
-    private var trackingList:*;
-
-    private var basePath:String;
-
-    //==========================================================================
-    //  Constructor
-    //==========================================================================
-    /**
-     * Constructs a new DefaultSender instance.
-     * @param trackingList the value is XML or XMLList
-     */
-    public function DefaultSender(trackingList:*)
-    {
-        if(trackingList && (trackingList is XML || trackingList is XMLList))
-        {
-            this.trackingList = trackingList;
-
-            basePath = trackingList.@basePath;
-        }
-        else
-        {
-            throw new IllegalArgumentError("The trackingList value need is XML or XMLList");
-        }
-    }
-
-    /**
-     *
-     * @param action
-     * @param rest
-     *
-     */
-    public function externalTrack(action:String, rest:Array):void
-    {
-        if(action == null || action == "")
-        {
-            return;
-        }
-        var value:String = trackingList.track.(@action == action);
-        if(value && rest)
-        {
-            value = StringUtil.substitute(value, rest);
-        }
-
-        if(value)
-        {
-            var loader:URLLoader = new URLLoader();
-            loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
-            loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
-            var urlRequest:URLRequest = new URLRequest();
-            urlRequest.url = basePath + value;
-            try
-            {
-                loader.load(urlRequest);
-            }
-            catch(error:Error)
-            {
-                Tracer.error(error);
-            }
-
-            Tracer.debug("[TRACKING]:" + urlRequest.url);
-        }
-    }
-
-    //==========================================================================
-    //  Event handlers
-    //==========================================================================
-    private function errorHandler(event:Event):void
-    {
-        Tracer.error(event);
-    }
-}
-}


Use an Integer here so that we play nicely with Java managers.

git-svn-id: a3e1eb16dde062992de22c830ed8045c8013209a@289 c613c5cb-e716-0410-b11b-feb51c14d237

--- src/as/com/threerings/ezgame/client/EZGameConfigurator.as
+++ src/as/com/threerings/ezgame/client/EZGameConfigurator.as
@@ -27,6 +27,7 @@
 import mx.controls.HSlider;
 import mx.controls.Label;

+import com.threerings.util.Integer;
 import com.threerings.util.StreamableHashMap;
 import com.threerings.util.StringUtil;

@@ -102,7 +103,7 @@
                 var ident :String = String(_customConfigs[ii]);
                 var control :UIComponent = (_customConfigs[ii + 1] as UIComponent);
                 if (control is LabeledSlider) {
-                    params.put(ident, (control as LabeledSlider).slider.value);
+                    params.put(ident, new Integer((control as LabeledSlider).slider.value));

                 } else if (control is CheckBox) {
                     params.put(ident, (control as CheckBox).selected);


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

--- frameworks/projects/framework/src/mx/styles/metadata/ContainerBackgroundStyles.as
+++ frameworks/projects/framework/src/mx/styles/metadata/ContainerBackgroundStyles.as
@@ -1,28 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.
-//
-////////////////////////////////////////////////////////////////////////////////

-/**
- *  Alpha level of the color defined by the backgroundColor
- *  property, of the image or SWF file defined by the backgroundImage
- *  style.
- *  Valid values range from 0.0 to 1.0. For most controls, the default value is 1.0,
- *  but for ToolTip controls, the default value is 0.95 and for Alert controls, the default value is 0.9.
- *
- *  @default 1.0
- *
- *  @langversion 3.0
- *  @playerversion Flash 9
- *  @playerversion AIR 1.1
- *  @productversion Flex 3
- */
 [Style(name="backgroundAlpha", type="Number", inherit="no", theme="halo, spark, mobile")]

 /**


FLEX-35321 test_object_removed_from_stage_via_user_action_is_not_initialized() needed one more frame to complete (made sure it fails without the proposed fix, and passes with it). Also made some variable and function renames, plus now we can also test how many times each validation function has been called.

--- frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
+++ frameworks/projects/framework/tests/mx/managers/LayoutManager_FLEX_35321_Tests.as
@@ -19,101 +19,108 @@
         private static var noEnterFramesRemaining:int = NaN;
         private static const _finishNotifier:EventDispatcher = new EventDispatcher();

-        private var _objectWhichIsRemovedOnSizeValidation:SomeComponent;
+        private var _objectWhichIsRemovedAtValidation:SomeComponent;
         private var _creationCompleteCalls:int;

         [Before]
         public function setUp():void
         {
             _creationCompleteCalls = 0;
-            _objectWhichIsRemovedOnSizeValidation = new SomeComponent();
-            _objectWhichIsRemovedOnSizeValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
-            UIImpersonator.addElement(_objectWhichIsRemovedOnSizeValidation);
+            _objectWhichIsRemovedAtValidation = new SomeComponent();
+            _objectWhichIsRemovedAtValidation.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
+            UIImpersonator.addChild(_objectWhichIsRemovedAtValidation);
         }

         [After]
         public function tearDown():void
         {
             UIImpersonator.removeAllChildren();
-            _objectWhichIsRemovedOnSizeValidation = null;
-        }
+            _objectWhichIsRemovedAtValidation = null;
+        }
+
+
+        //--------------------------------------------------------------------------
+        //
+        //  Test method
+        //
+        //--------------------------------------------------------------------------
+

         [Test]
         public function test_object_removed_from_stage_via_code_is_not_initialized():void
         {
             //given
             UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = false;
-            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = true;
-
-            //when
-            _objectWhichIsRemovedOnSizeValidation.validateNow();
-
-            //then
-            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
-            assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
-        }
+            _objectWhichIsRemovedAtValidation.removeFromStageOnValidateProperties = true;
+
+            //when
+            _objectWhichIsRemovedAtValidation.validateNow();
+
+            //then
+            then_assert_not_initialized();
+        }
+
+
+
+        //--------------------------------------------------------------------------
+        //
+        //  Test method
+        //
+        //--------------------------------------------------------------------------
+

         [Test(async, timeout=500)]
         public function test_object_removed_from_stage_via_user_action_is_not_initialized():void
         {
             //given
             UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = true;
-            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = false;
-
-            //when
-            _objectWhichIsRemovedOnSizeValidation.invalidateDisplayList();
-            _objectWhichIsRemovedOnSizeValidation.invalidateProperties();
-            _objectWhichIsRemovedOnSizeValidation.invalidateSize();
+            _objectWhichIsRemovedAtValidation.removeFromStageOnValidateProperties = false;
+
+            //when
+            _objectWhichIsRemovedAtValidation.invalidateDisplayList();
+            _objectWhichIsRemovedAtValidation.invalidateProperties();
+            _objectWhichIsRemovedAtValidation.invalidateSize();

             //then wait 1 frame
             noEnterFramesRemaining = 1;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_in_next_frame, 300);
-        }
-
-        private function then_remove_from_stage_in_next_frame(event:Event, passThroughData:Object):void
-        {
-            //when
-            _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemovalInNextFrame();
-
-            //then wait 2 frames
-            noEnterFramesRemaining = 2;
-            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_assert_not_initialized, 300);
-        }
-
-        private function then_assert_not_initialized(event:Event, passThroughData:Object):void
-        {
-            //then
-            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
-            assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
-        }
-
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_via_callLater, 300, then_assert_not_initialized);
+        }
+
+
+
+
+        //--------------------------------------------------------------------------
+        //
+        //  Test method
+        //
+        //--------------------------------------------------------------------------

         [Test(async, timeout=750)]
         public function test_object_removed_from_stage_then_readded_is_initialized_once():void
         {
             //given
             UIComponentGlobals.mx_internal::layoutManager.usePhasedInstantiation = true;
-            _objectWhichIsRemovedOnSizeValidation.removeFromStageOnValidateProperties = false;
-
-            //when
-            _objectWhichIsRemovedOnSizeValidation.validateNow();
-            _objectWhichIsRemovedOnSizeValidation.pretendUserAskedForComponentRemovalInNextFrame();
+            _objectWhichIsRemovedAtValidation.removeFromStageOnValidateProperties = false;
+
+            //when
+            _objectWhichIsRemovedAtValidation.invalidateDisplayList();
+            _objectWhichIsRemovedAtValidation.invalidateProperties();
+            _objectWhichIsRemovedAtValidation.invalidateSize();

             //then wait 1 frame
             noEnterFramesRemaining = 1;
             UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
-            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_readd_object, 200);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_remove_from_stage_via_callLater, 300, then_readd_object);
         }

         private function then_readd_object(event:Event, passThroughData:Object):void
         {
             //then
-            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedOnSizeValidation.parent);
-
-            //when
-            UIImpersonator.addElement(_objectWhichIsRemovedOnSizeValidation);
+            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedAtValidation.parent);
+
+            //when
+            UIImpersonator.addElement(_objectWhichIsRemovedAtValidation);

             //then wait 4 frames, to make sure validation is done
             noEnterFramesRemaining = 4;
@@ -124,10 +131,42 @@
         private function then_assert_one_initialization_only(event:Event, passThroughData:Object):void
         {
             //then
-            assertNotNull("The object should be on stage...", _objectWhichIsRemovedOnSizeValidation.parent);
+            assertNotNull("The object should be on stage...", _objectWhichIsRemovedAtValidation.parent);
             assertEquals("When validation is interrupted half-way it should be complete once the object is re-added to stage", 1, _creationCompleteCalls);
         }

+
+        //--------------------------------------------------------------------------
+        //
+        //  Shared test methods
+        //
+        //--------------------------------------------------------------------------
+
+        private function then_remove_from_stage_via_callLater(event:Event, passThroughData:Object):void
+        {
+            //then
+            assertEquals("The first validation step should have completed by now", 1, _objectWhichIsRemovedAtValidation.numValidatePropertiesCalls);
+            assertEquals("But not validateSize()", 0, _objectWhichIsRemovedAtValidation.numValidateSizeCalls);
+            assertEquals("Nor validateDisplayList()", 0, _objectWhichIsRemovedAtValidation.numValidateDisplayListCalls);
+
+            //given
+            const whereToGoNext:Function = passThroughData as Function;
+
+            //when
+            _objectWhichIsRemovedAtValidation.pretendUserAskedForComponentRemovalInNextFrame();
+
+            //then wait 2 frames
+            noEnterFramesRemaining = 3;
+            UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+            Async.handleEvent(this, _finishNotifier, Event.COMPLETE, whereToGoNext, 300);
+        }
+
+        private function then_assert_not_initialized(event:Event = null, passThroughData:Object = null):void
+        {
+            //then
+            assertNull("The object was actually not removed from stage. Huh?", _objectWhichIsRemovedAtValidation.parent);
+            assertEquals("Yep, this is the bug. Why call initialized=true on an object that's not on stage?", 0, _creationCompleteCalls);
+        }

@@ -147,19 +186,20 @@
     }
 }

-import flash.events.TimerEvent;
-import flash.utils.Timer;
-
 import mx.core.IVisualElementContainer;
 import mx.core.UIComponent;

 class SomeComponent extends UIComponent
 {
     private var _removeFromStageOnValidateProperties:Boolean = false;
+    private var _numValidatePropertiesCalls:int = 0;
+    private var _numValidateSizeCalls:int = 0;
+    private var _numValidateDisplayListCalls:int = 0;

     override public function validateProperties():void
     {
         super.validateProperties();
+        _numValidatePropertiesCalls++;
         if(_removeFromStageOnValidateProperties)
             removeFromStage();
     }
@@ -167,11 +207,13 @@
     override public function validateSize(recursive:Boolean = false):void
     {
         super.validateSize(recursive);
+        _numValidateSizeCalls++;
     }

     override public function validateDisplayList():void
     {
         super.validateDisplayList();
+        _numValidateDisplayListCalls++;
     }

     private function removeFromStage():void
@@ -194,4 +236,19 @@
     {
         _removeFromStageOnValidateProperties = value;
     }
+
+    public function get numValidateDisplayListCalls():int
+    {
+        return _numValidateDisplayListCalls;
+    }
+
+    public function get numValidateSizeCalls():int
+    {
+        return _numValidateSizeCalls;
+    }
+
+    public function get numValidatePropertiesCalls():int
+    {
+        return _numValidatePropertiesCalls;
+    }
 }


Added getPropertyNames(), which used to be unnecessary because you could get
the data Object (actually a proxy to it) and do a for or for-each on that,
but we removed that when we made 3 different kinds of sets.

git-svn-id: a3e1eb16dde062992de22c830ed8045c8013209a@307 c613c5cb-e716-0410-b11b-feb51c14d237

--- src/as/com/threerings/ezgame/EZGameControl.as
+++ src/as/com/threerings/ezgame/EZGameControl.as
@@ -266,6 +266,18 @@
     }

     /**
+     * Get the names of all currently-set properties.
+     */
+    public function getProperyNames () :Array
+    {
+        var props :Array = [];
+        for (var s :String in _gameData) {
+            props.push(s);
+        }
+        return props;
+    }
+
+    /**
      * Register an object to receive whatever events it should receive, based on which event
      * listeners it implements.
      */


Example text.

Example text.

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

--- src/as/com/threerings/io/ObjectInputStream.as
+++ src/as/com/threerings/io/ObjectInputStream.as
@@ -71,7 +71,8 @@
      * @return the Object read, or null.
      * @throws TypeError if the object is read successfully but is the wrong type
      *
-     * @example
+     * @example This demonstrates how to type-check the objects read off the stream without
+     * having to cast them.
      * <listing version="3.0">
      *
      * public function readObject (ins :ObjectInputStream) :void