Transferred from the Adobe Open Source Subversion Repository

Revision: 6122
Author:   chaase@adobe.com
Date:     2009-04-10T14:30:17.762458Z

Log Message:
-----------
Various refactorings/renamings/changes from effects PARB review.

QE Notes: mx/effects and spark/effects currently broken (and disabled) due to these API changes. Matt is fixing.
Doc Notes: None
Bugs:
Reviewer: Hans
tests: checkintests, mustella tests/ListDataEffects

Modified Paths:
--------------
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOut.as" copyfrom-rev="5944" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOut.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EasingFraction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Power.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/EffectEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/TweenEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/FadeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Animate.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/RepeatBehavior.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/NumberArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/IEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/Animate3DInstance.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimationProperty.as" copyfrom-rev="5944" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/SimpleMotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateColorInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateShaderTransitionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateFilterInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/Rotate3DInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/AnimationEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/ArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/IEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/RotateInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/ResizeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/MotionPath.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimationProperty.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/MoveInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate.as</path>

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

--- frameworks/projects/framework/src/mx/effects/Effect.as
+++ frameworks/projects/framework/src/mx/effects/Effect.as
@@ -931,31 +931,39 @@
         _triggerEvent = value;
     }

-    //--------------------------------------------------------------------------
-    //
-    //  Methods
-    //
-    //--------------------------------------------------------------------------
-
-    // TODO (chaase): This function should be in an interface, to
+    //----------------------------------
+    // playheadTime
+    //----------------------------------
+
+    // TODO (chaase): This property should be in an interface, to
     // allow it to be called easily through an interface instead of
     // having to import Effect just to call it
-    /**
-     * Sets the current time of an effect. Seek may be used to
-     * fast-forward or reverse to a particular point in time in an effect.
-     *
-     * @param seekTime Number of milliseconds that the effect should
-     * play at. This number should be between 0 and the duration of the
-     * effect.
-     *
-     * @see #duration
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    public function seek(seekTime:Number):void
+    // TODO (chaase): This property should be in an interface, to
+    // allow it to be called easily through an interface instead of
+    // having to import Effect just to call it. Maybe add to IEffect
+    // since it's unlikely that anyone implements that interface
+    // besides Effect.
+    /**
+     *  Current time position of the effect.
+     *  This property has a value between 0 and the total duration,
+     *  which includes the Effect's startDelay,
+     *  repeatCount, and repeatDelay.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get playheadTime():Number
+    {
+        for (var i:int = 0; i < _instances.length; i++)
+        {
+            if (_instances[i])
+                return IEffectInstance(_instances[i]).playheadTime;
+        }
+        return 0;
+    }
+    public function set playheadTime(value:Number):void
     {
         // If the effect is not yet playing, it should still be possible
         // to seek into it. playing and then pausing it provides that
@@ -973,37 +981,19 @@
         for (var i:int = 0; i < _instances.length; i++)
         {
             if (_instances[i])
-                EffectInstance(_instances[i]).seek(seekTime);
+                EffectInstance(_instances[i]).playheadTime = value;
         }
         if (started)
             pause();
     }

-    // TODO (chaase): This property should be in an interface, to
-    // allow it to be called easily through an interface instead of
-    // having to import Effect just to call it
-    // TODO (chaase): Consider renaming this property; playheadTime
-    // is very video-specific
-    /**
-     *  Current position in time of the effect.
-     *  This property has a value between 0 and the actual duration
-     *  (which includes the value of the startDelay,
-     *  repeatCount, and repeatDelay properties).
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    public function get playheadTime():Number
-    {
-        for (var i:int = 0; i < _instances.length; i++)
-        {
-            if (_instances[i])
-                return IEffectInstance(_instances[i]).playheadTime;
-        }
-        return 0;
-    }
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+

     /**
      *  @copy mx.effects.IEffect#getAffectedProperties()


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

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

 package mx.rpc.mxml
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 6957
Author:   jimurphy@adobe.com
Date:     2009-05-15T16:11:59.737851Z

Log Message:
-----------
Merged beta1 revisions 6898,6906,6913,6915,6917,6926,6930 -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/ImageHelper.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VideoDisplay.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VRule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/flash-integration/FlexComponentKit.mxp</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/swf/FXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/ShapeHelper.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HRule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/filters/GlowFilterNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/FlexComponentKit.mxi</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/TypeHelper.java</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -199,6 +199,9 @@
      */
     override public function get selectedIndex():int
     {
+        if (dataProvider == null)
+            return NO_SELECTION;
+
         if (selectedIndices && selectedIndices.length > 0)
             return selectedIndices[selectedIndices.length - 1];

@@ -215,12 +218,13 @@

         super.selectedIndex = value;

-        if (value !== NO_SELECTION)
+        if (value > NO_SELECTION)
             _proposedSelectedIndices = [value];
         else
             _proposedSelectedIndices = [];

-        commitMultipleSelection();
+        multipleSelectionChanged = true;
+        invalidateProperties();
     }

     //----------------------------------
@@ -233,9 +237,12 @@
      */
     override public function get selectedItem():*
     {
+        if (dataProvider == null)
+            return undefined;
+
         if (selectedIndices && selectedIndices.length > 0)
             return dataProvider.getItemAt(selectedIndices[selectedIndices.length - 1]);
-
+
         return super.selectedItem;
     }

@@ -249,12 +256,13 @@

         super.selectedItem = value;

-        if (value !== undefined && dataProvider)
-            _proposedSelectedIndices = [dataProvider.getItemAt(value)];
+        if (value !== undefined && dataProvider && dataProvider.getItemIndex(value) > 0)
+            _proposedSelectedIndices = [dataProvider.getItemIndex(value)];
         else
             _proposedSelectedIndices = [];

-        commitMultipleSelection();
+        multipleSelectionChanged = true;
+        invalidateProperties();
     }

@@ -343,7 +351,20 @@
             var count:int = value.length;

             for (var i:int = 0; i < count; i++)
-                indices[i] = dataProvider.getItemIndex(value[i]);
+            {
+                //TODO (dsubrama) What exactly should we do if an
+                //invalid item is in the selectedItems array?
+                var index:Number = dataProvider.getItemIndex(value[i]);
+                if (index != -1)
+                {
+                    indices[i] = index;
+                }
+                if (index == -1)
+                {
+                    indices = [];
+                    break;
+                }
+            }
         }

         selectedIndices = indices;
@@ -517,7 +538,7 @@
      *  selection properties and view accordingly. Additionally, dispatch the
      *  selectionChanged event.
      */
-    private function commitMultipleSelection():void
+    protected function commitMultipleSelection():void
     {
         var removedItems:Array = [];
         var addedItems:Array = [];
@@ -589,7 +610,7 @@
                 itemSelected(addedItems[i], true);
             }
         }
-
+
         //Dispatch the selectionChanged event
         var e:IndexChangedEvent = new IndexChangedEvent(IndexChangedEvent.SELECTION_CHANGED);
         e.multipleSelectionChange = true;
@@ -809,7 +830,10 @@
     {
         var i:int;
         var curr:Number;
-        var newInterval:Array = [];
+        var newInterval:Array = [];
+
+        if (!selectedIndices || (_proposedSelectedIndices != null))
+            validateNow();

         if (selectedIndex == NO_SELECTION || doingWholesaleChanges)
             return;
@@ -818,7 +842,8 @@
         {
             for (i = 0; i < selectedIndices.length; i++)
             {
-                curr = selectedIndices[i];
+                curr = selectedIndices[i];
+
                 //adding an item above one of the selected items,
                 //bump the selected item up.
                 if (curr >= index)
@@ -867,7 +892,14 @@
                 }
             }
         }
-        selectedIndices = newInterval;
+        _selectedIndices = newInterval;
+        _selectedIndex = (newInterval.length > 0) ? newInterval[newInterval.length - 1] : -1;
+        // If the selection properties have been adjusted to account for items that
+        // have been added or removed, send out a "selectionChanged" event so
+        // any bindings to them are updated correctly.
+        var e:IndexChangedEvent = new IndexChangedEvent(IndexChangedEvent.SELECTION_CHANGED);
+        e.multipleSelectionChange = true;
+        dispatchEvent(e);
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 17297
Author:   rfrishbe@adobe.com
Date:     2010-08-12T00:57:49.940595Z

Log Message:
-----------
Fixing up MobileItemRenderer and List to better deal with 5-way support.  Now when someone presses Enter, the caretted item will be selected when inputMode == "touch".  When figuring out 5-way support for real, this will probably change, but I put this in for now.  I also changed MobileItemRenderer to not draw the separators when it's the caretted item.  Once we get a real XD spec on how item renderers should look (and how 5-ways support for them works/looks), this will change.

Also modified TrackBase so that if we're in touch inputMode, the track isn't selectable.  More work needs to be done here around the thumb and touch scrolling interaction, so this is just a start.

QE notes: None
Doc notes: None
Bugs: SDK-27379, SDK-27366
Reviewer: Jason SJ
Tests run: checkintests, mustella slider, scroller, scrollbar
Is noteworthy for integration: No

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

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -2526,6 +2526,14 @@
             event.preventDefault();
             return;
         }
+
+        // FIXME (rfrishbe): hack for 5-way
+        if (getStyle("inputMode") == "touch" && event.keyCode == Keyboard.ENTER)
+        {
+            setSelectedIndex(caretIndex, true);
+            event.preventDefault();
+            return;
+        }

         // 2. Or was an alphanumeric key hit?
         // Hitting an alphanumeric key causes List's


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

--- frameworks/projects/spark/src/spark/effects/Animate.as
+++ frameworks/projects/spark/src/spark/effects/Animate.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.effects
 {
 import mx.core.mx_internal;


Transferred from the Adobe Open Source Subversion Repository

Revision: 3448
Author:   chaase@adobe.com
Date:     2008-10-01T23:50:40.097700Z

Log Message:
-----------
Adding new SetAction effect, plus minor improvements to effects overall. This new effect combines the old SetPropertyAction and SetStyleAction effects, figuring out for the named property whether it is a property or a style of the target object. Also, added new capabilities to Animation class and fixed some problems with easing default values.

Reviewed by Glenn
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Animate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/NewEffects.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/effectClasses/SetActionInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/effects/SetAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>

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

--- frameworks/projects/spark/src/spark/effects/Animate.as
+++ frameworks/projects/spark/src/spark/effects/Animate.as
@@ -12,6 +12,7 @@
 {

 import flex.effects.easing.IEaser;
+import flex.effects.easing.Sine;
 import flex.effects.effectClasses.AnimateInstance;
 import flex.events.AnimationEvent;

@@ -123,6 +124,11 @@
     // specify a different set.
     private var affectedProperties:Array = null;

+    // Cached default easer. We only need one of these, so we cache this static
+    // object to be reused by any Animate instances that do not specify
+    // a custom easer.
+    private static var defaultEaser:IEaser = new Sine(.5);
+
     //--------------------------------------------------------------------------
     //
     // Properties
@@ -136,8 +142,27 @@
      */
     public var propertyValuesList:Array;

-    public var easer:IEaser;
-
+    /**
+     * The easing behavior for this effect. This IEaser
+     * object will be used to convert the elapsed fraction of
+     * the animation into an eased fraction, which will then be used to
+     * calculate the value at that eased elapsed fraction.
+     *
+     * @default flex.effects.easing.Sine(.5)
+     * @see flex.effects.easing.Sine
+     */
+    public var easer:IEaser = defaultEaser;
+
+    /**
+     * The behavior of a repeating effect (an effect
+     * with repeatCount equal to either 0 or >1). This
+     * value should be either Animation.LOOP, where the animation
+     * will repeat in the same order each time, or Animation.REVERSE,
+     * where the animation will reverse direction each iteration.
+     *
+     * @default Animation.LOOP
+     * @see flex.effects.Animation#repeatBehavior
+     */
     public var repeatBehavior:String = Animation.LOOP;

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


Prep for merge with slowdown-PR

Prep for merge with slowdown-PR


Added type coercion example to project

Added type coercion example to project

Signed-off-by: Erik de Bruin <c195b508e6f0c57aeafdb5e96947e2b79e6a4b40@ixsoftware.nl>

--- examples/LanguageTests/src/LanguageTests.as
+++ examples/LanguageTests/src/LanguageTests.as
@@ -10,6 +10,7 @@
 import interfaces.IC;
 import interfaces.ID;
 import interfaces.IE;
+import interfaces.IF;

 public class LanguageTests extends Sprite implements IA, IE
 {
@@ -88,6 +89,35 @@
 		trace('this as interfaces.ID - [object ...]: ' + testObject.toString());
 		testObject = (this as IE) ? this as IE : 'null';
 		trace('this as interfaces.IE - [object ...]: ' + testObject.toString());
+		trace();
+		try {
+			testObject = Sprite(this);
+			trace('Sprite(this) - [object ...]: ' + testObject.toString());
+		} catch (e:Error)
+		{
+			trace("This shouldn't show!");
+		}
+		try {
+			testObject = B(this);
+			trace("This shouldn't show!");
+		} catch (e:Error)
+		{
+			trace('B(this) - exception expected: ' + e.message);
+		}
+		try {
+			testObject = interfaces.IC(b);
+			trace("This shouldn't show!");
+		} catch (e:Error)
+		{
+			trace('IC(b) - exception expected: ' + e.message);
+		}
+		try {
+			testObject = interfaces.IF(b);
+			trace('IF(b) - [object ...]: ' + testObject.toString());
+		} catch (e:Error)
+		{
+			trace("This shouldn't show!");
+		}
 	}
 }
 }


added bindStyle() function for convenience

Change-Id: I5ffae1c7a6db877346832f34f179d95dd39f2ae7

--- WeaveUISpark/src/weave/utils/LinkableTextFormat.as
+++ WeaveUISpark/src/weave/utils/LinkableTextFormat.as
@@ -26,6 +26,7 @@
 	import mx.core.UIComponent;

 	import weave.api.core.ILinkableObject;
+	import weave.api.getCallbackCollection;
 	import weave.api.registerLinkableChild;
 	import weave.core.LinkableBoolean;
 	import weave.core.LinkableNumber;
@@ -115,5 +116,20 @@
 			destination.setStyle("fontStyle", italic.value ? FontPosture.ITALIC : FontPosture.NORMAL);
 			destination.setStyle("textDecoration", underline.value ? "underline" : "none");
 		}
+
+		/**
+		 * Adds a grouped callback which will call copyToStyle() automatically when this LinkableTextFormat changes.
+		 * @param relevantContext The relevantContext parameter for addGroupedCallback().
+		 * @param destination The component to pass to copyToStyle().
+		 * @see weave.api.core.ICallbackCollection#addGroupedCallback()
+		 */
+		public function bindStyle(relevantContext:Object, destination:UIComponent):void
+		{
+			getCallbackCollection(this).addGroupedCallback(
+				relevantContext,
+				function():void { copyToStyle(destination); },
+				true
+			);
+		}
 	}
 }


refactor

refactor

--- src/com/kemsky/Entry.as
+++ src/com/kemsky/Entry.as
@@ -31,7 +31,7 @@
             {
                 throw new Error();
             }
-            iterator.put(value);
+            iterator.current = value;
         }
     }
 }


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

--- frameworks/projects/advancedgrids/src/mx/skins/halo/AdvancedDataGridColumnWrongDropIndicator.as
+++ frameworks/projects/advancedgrids/src/mx/skins/halo/AdvancedDataGridColumnWrongDropIndicator.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


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

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

 package mx.collections
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as
+++ frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.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: 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@1263106 13f79535-47bb-0310-9956-ffa450edef68

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

 package mx.validators
 {


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

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

 package spark.accessibility
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 8668
Author:   gosmith@adobe.com
Date:     2009-07-17T21:48:09.160570Z

Log Message:
-----------
Fixed a GUMBO_PRIORITY bug in which the whiteSpaceCollapse style was not getting properly applied in Spark components.

As part of this change, we no longer need to set various non-inheriting formats to "inherit" on the TextFlow in order to get them from the hostFormat, because this is now done by TLF.

QE notes: Please test the whiteSpaceCollapse style in RichText, RichEditableText, and TextArea, using MXML syntax, including some cases in which whiteSpaceCollapse is also specified on the <TextFlow>, <p>, or <span> tags. Since this is basic functionality, please add mustella tests to catch future regressions.
Doc notes: None
Bugs: SDK-22254 (GUMBO_PRIORITY)
Reviewer: Carol to review
Tests run: checkintests
Is noteworthy for integration: Yes, this bug came from the Catalyst team.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RichText.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -247,14 +247,6 @@
         if (classInitialized)
             return;

-        staticTextLayoutFormat = new TextLayoutFormat();
-        staticTextLayoutFormat.lineBreak = FormatValue.INHERIT;
-        staticTextLayoutFormat.paddingLeft = FormatValue.INHERIT;
-        staticTextLayoutFormat.paddingRight = FormatValue.INHERIT;
-        staticTextLayoutFormat.paddingTop = FormatValue.INHERIT;
-        staticTextLayoutFormat.paddingBottom = FormatValue.INHERIT;
-        staticTextLayoutFormat.verticalAlign = FormatValue.INHERIT;
-
         staticPlainTextImporter =
             TextConverter.getImporter(TextConverter.PLAIN_TEXT_FORMAT);

@@ -282,12 +274,6 @@
      */
     private static var classInitialized:Boolean = false;

-    /**
-     *  @private
-     *  Used for determining whitespace processing when setting 'content'.
-     */
-    private static var staticTextLayoutFormat:TextLayoutFormat;
-
     /**
      *  @private
      *  This TLF object is used to import a 'text' String
@@ -2664,27 +2650,23 @@
     {
         var textFlow:TextFlow ;

-        // The whiteSpaceCollapse format determines how whitespace
-        // is processed when the children are set.
-        staticTextLayoutFormat.whiteSpaceCollapse =
-            getStyle("whiteSpaceCollapse");
-
         if (content is TextFlow)
         {
             textFlow = content as TextFlow;
-            textFlow.hostFormat = staticTextLayoutFormat;
-                    }
+        }
         else if (content is Array)
         {
             textFlow = new TextFlow();
-            textFlow.hostFormat = staticTextLayoutFormat;
+			textFlow.whiteSpaceCollapse = getStyle("whiteSpaceCollapse");
             textFlow.mxmlChildren = content as Array;
+			textFlow.whiteSpaceCollapse = undefined;
         }
         else
         {
             textFlow = new TextFlow();
-            textFlow.hostFormat = staticTextLayoutFormat;
+			textFlow.whiteSpaceCollapse = getStyle("whiteSpaceCollapse");
             textFlow.mxmlChildren = [ content ];
+			textFlow.whiteSpaceCollapse = undefined;
         }

         return textFlow;


Transferred from the Adobe Open Source Subversion Repository

Revision: 15851
Author:   cframpto@adobe.com
Date:     2010-04-30T18:11:22.933206Z

Log Message:
-----------
Merge rev 15805 from 4.x to trunk.  Pair of RichEditableText autoSize bugs.  Not sure why zh_TW is part of this merge.

Modified Paths:
--------------
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="dir" action="M">/flex/sdk/trunk/frameworks/locale/zh_TW</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -2446,25 +2446,10 @@
                 // Go large.  For performance reasons, want to avoid a scrollRect
                 // whenever possible in drawBackgroundAndSetScrollRect().  This is
                 // particularly true for 1 line TextInput components.
-                if (!isNaN(widthConstraint))
-                {
-                    measuredWidth = widthConstraint;
-                }
-                else
-                {
-                    measuredWidth = !isNaN(explicitWidth) ? explicitWidth :
-                        Math.ceil(calculateWidthInChars());
-                }
-
-                if (!isNaN(heightConstraint))
-                {
-                    measuredHeight = heightConstraint;
-                }
-                else
-                {
-                    measuredHeight = !isNaN(explicitHeight) ? explicitHeight :
-                        Math.ceil(calculateHeightInLines());
-                }
+                measuredWidth = !isNaN(explicitWidth) ? explicitWidth :
+                    Math.ceil(calculateWidthInChars());
+                measuredHeight = !isNaN(explicitHeight) ? explicitHeight :
+                    Math.ceil(calculateHeightInLines());
             }
             else
             {
@@ -2610,33 +2595,32 @@
             }

             _textContainerManager.updateContainer();
-
-            widthConstraint = NaN;
-            heightConstraint = NaN;
-        }
-
-        /**
-         *  @private
+        }
+
+        /**
+         *  @private
+         *  This is called by the layout manager the first time this
+         *  component is measured, or later if its size changes. This
+         *  is not always called before updateDisplayList().  For example,
+         *  for recycled item renderers this is not called if the measured
+         *  size doesn't change.
+         *
+         *  width and height are NaN unless there are constraints on them.
          */
         override public function setLayoutBoundsSize(
                                     width:Number, height:Number,
                                     postLayoutTransform:Boolean = true):void
         {
-            // width and height are NaN unless there are constraints on them.
+            //trace("setLayoutBoundsSize", width, height);
+
             // Save these so when we are auto-sizing we know which dimensions
             // are constrained.  Without this it is not possible to differentiate
             // between a measured width/height that is the same as the
             // constrained width/height to know whether that dimension can
-            // be sized or must be fixed at the constrained value.
-            if (autoSize)
-            {
-                if (!isNaN(width))
-                    widthConstraint = width;
-
-                if (!isNaN(height))
-                    heightConstraint = height;
-            }
-
+            // be sized or must be fixed at the constrained value.
+            widthConstraint = width;
+            heightConstraint = height;
+
             super.setLayoutBoundsSize(width, height, postLayoutTransform);
         }

@@ -3290,7 +3274,7 @@
             {
                 return true;
             }
-
+
             // Is there some sort of width and some sort of height?
             return  (!isNaN(explicitWidth) || !isNaN(_widthInChars) ||
                 !isNaN(widthConstraint)) &&
@@ -3380,6 +3364,11 @@
             // remeasure which will reset autoSize.
             autoSize = false;

+            // If no width or height, there is nothing to remeasure since
+            // there is no room for text.
+            if (width == 0 || height == 0)
+                return false;
+
             if (!isNaN(widthConstraint))
             {
                 // Do we have a constrained width and an explicit height?
@@ -3390,10 +3379,6 @@
                     return false;
                 }

-                // Is there no width?
-                if (width == 0)
-                    return false;
-
                 // No reflow for explicit lineBreak
                 if (_textContainerManager.hostFormat.lineBreak == "explicit")
                     return false;
@@ -3405,10 +3390,6 @@
                 // If so, the sizes are set so no need to remeasure now.
                 if (!isNaN(explicitWidth) || !isNaN(_widthInChars))
                     return false;
-
-                // Is there no height?
-                if (height == 0)
-                    return false;
             }

             // Width or height is different than what was measured.  Since we're


form_decode命令のコード整理・高速化

form_decode命令のコード整理・高速化

git-svn-id: 667ccd08e5f160307f6512a0947301cac150914e@41 ceb3ebad-0e53-d446-8596-a45b2b8d79cd

--- package/win32/common/form_decode.as
+++ package/win32/common/form_decode.as
@@ -10,22 +10,42 @@
 	;
 	;	MpɃGR[hꂽeLXg̓{ɃfR[h܂B
 	;	ϐ2̓efR[hĕϐ1Ɋi[܂B
-	;	ϊXCb`1ɂ'&'sɕϊB
-	;		     2ɂ'+'󔒂ɕϊB
-	;		     3ɂƗƂϊ܂B
+	;	ϊXCb`̌ʂ͈ȉ̂ƂłB
+	;		1ɂ'&'sɕϊ
+	;		2ɂ'+'󔒂ɕϊ
+	;		3ɂƗƂϊ
 	;
+/*
+	2008/02/01 ύX_
+		R[h𐮗E኱B
+	m̕s
+		1icnvbfj[ɊmۂĂȂ
+		obt@I[o[t[N\܂B
+*/
 #deffunc form_decode var cnvbf,var txtbf,int sw
-	sz=strlen(txtbf)
-	i=0 :w=0
-*cnv
-	a=peek(txtbf,i)
-	if a='%' { c=strmid(txtbf,i+1,2)			; {ϊ
-		 c="$"+c :a=int(c) :i+=2
-	}
-	if (sw&1>0)&(a='&') :poke cnvbf,w,13 :a=10 :w+		; '&'͉s
-	if (sw&2>0)&(a='+') :a=32				; '+'͋󔒂
-	poke cnvbf,w,a :i+ :w+
-	if (a!0)&(w<sz) :goto *cnv
+	i = 0                  		// eLXg̓ǂݏoʒu
+	txtsize = strlen(txtbf)		// eLXg̒
+	code = -1              		// ǂ݂R[h
+	repeat
+		if (code == 0)|(i >= txtsize) : break
+		code = peek(txtbf, i)
+		i+
+		if code == '%' {
+			// {ϊ
+			code = int("$" + strmid(txtbf, i, 2))
+			i += 2
+		}
+		if (sw & 1)&(code == '&') {
+			// '&'͉s
+			wpoke cnvbf, cnt, $0A0D
+			continue cnt + 2
+		}
+		if (sw >> 1 & 1)&(code == '+') {
+			// '+'͋󔒂
+			code = 32
+		}
+		poke cnvbf, cnt, code
+	loop
 	return

 #global


Added isConnected().

Added isConnected().

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

--- src/as/com/threerings/ezgame/EZGameControl.as
+++ src/as/com/threerings/ezgame/EZGameControl.as
@@ -26,14 +26,21 @@
         event.userProps = new Object();
         populateProperties(event.userProps);
         disp.root.loaderInfo.sharedEvents.dispatchEvent(event);
-        if (event.ezProps != null) {
+        if ("ezProps" in event) {
             setEZProps(event.ezProps);
-        } else {
-            trace("The game is not being run in the ezgame environment");
         }

         // set up our focusing click handler
         disp.root.addEventListener(MouseEvent.CLICK, handleRootClick);
+    }
+
+    /**
+     * Are we connected and running inside the EZGame environment, or
+     * has someone just loaded up this swf by itself?
+     */
+    public function isConnected () :Boolean
+    {
+        return (_gameData != null);
     }

     // documentation inherited


Properly document our event.

Properly document our event.

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@202 ed5b42cb-e716-0410-a449-f6a68f950b19

--- src/as/com/threerings/flash/MediaContainer.as
+++ src/as/com/threerings/flash/MediaContainer.as
@@ -57,6 +57,14 @@
 import com.threerings.util.ValueEvent;
 import com.threerings.util.Util;

+
+/**
+ * Dispatched when the size of the media being loaded is known.
+ *
+ * @eventType com.threerings.flash.MediaContainer.SIZE_KNOWN
+ */
+[Event(name="mediaSizeKnown", type="com.threerings.util.ValueEvent")]
+
 /**
  * A wrapper class for all media that will be placed on the screen.
  * Subject to change.
@@ -64,7 +72,10 @@
 public class MediaContainer extends Sprite
 {
     /** A ValueEvent we dispatch when our size is known.
-     * Value: [ width, height ]. */
+     * Value: [ width, height ].
+     *
+     * @eventType mediaSizeKnown
+     */
     public static const SIZE_KNOWN :String = "mediaSizeKnown";

     /** A log instance that can be shared by sprites. */


[CreateJS] fixed type coercion with flash.events.Event in Application

--- frameworks/as/src/org/apache/flex/createjs/Application.as
+++ frameworks/as/src/org/apache/flex/createjs/Application.as
@@ -59,7 +59,7 @@
 			loaderInfo.addEventListener(flash.events.Event.INIT, initHandler);
 		}

-		private function initHandler(event:Event):void
+		private function initHandler(event:flash.events.Event):void
 		{
 			MXMLDataInterpreter.generateMXMLProperties(this, MXMLProperties);


Transferred from the Adobe Open Source Subversion Repository

Revision: 20013
Author:   harishs@adobe.com
Date:     2011-01-31T15:32:09.255609Z

Log Message:
-----------
QE notes: Globalization changes. Full cyclone run has been done. Default locale changes and sort bug fixes since Dec 14 2010
Doc notes: ASDOC comments for all classes have been updated.
Bugs: SDK-29132 SDK-29127 SDK-28163  SDK-29075 SDK-28600 SDK-28492 SDK-28856

Reviewer: Gordon Smith, Xie Fang, Zhigang Qi
Tests run: cyclone and checkintests
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/AdvancedStyleClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/collections/SortField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/NumberValidatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/collections/ISort.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/GlobalizationValidatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/CollatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/NumberFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/collections/ISortField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/CurrencyFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/collections/Sort.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/NumberValidator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/DateTimeFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/CurrencyValidator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/collections/SortField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/GlobalizationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/validators/supportClasses/GlobalizationUtils.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/SortingCollator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/StringTools.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/LastOperationStatus.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/collections/Sort.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/supportClasses/NumberFormatterBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/MatchingCollator.as</path>

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

--- frameworks/projects/framework/src/mx/collections/ISort.as
+++ frameworks/projects/framework/src/mx/collections/ISort.as
@@ -37,7 +37,7 @@
      *  The method used to compare items when sorting.
      *  If you specify this property, Flex ignores any
      *  compareFunction properties that you specify in the
-     *  ISortField objects that you use in this class.
+     *  ISortField objects that you use in this class.
      *
      *
The compare function must have the following signature:

      *
@@ -47,21 +47,22 @@
      *
      *

      *
-     *
This function must return the following
+     *
This function must return the following value:
      *

-     *
-1, if a should appear before b in
-     *        the sorted sequence

-     *
0, if a equals b

-     *
1, if a should appear after b in the
-     *        sorted sequence

+     *
-1, if the Object a should appear before the
+     *        Object b in the sorted sequence

+     *
0, if the Object a equals the
+     *        Object b

+     *
1, if the Object a should appear after the
+     *        Object b in the sorted sequence

      *

-     *
To return to the internal comparision function set this value to
+     *
To return to the internal comparision function, set this value to
      *  null.

      *

      *  The fields array specifies the object fields
      *  to compare.
      *  Typically the algorithm will compare properties until the field list is
-     *  exhausted or a non zero value can be returned.
+     *  exhausted or a non-zero value can be returned.
      *  For example:

      *
      *

@@ -109,9 +110,9 @@
      *  field is used in a display.

      *
      *
Alternatively you can specify separate compare functions for each
-     *  sort field by using the ISortField class compareFunction
-     *  property; This way you can use the default comparison for some
-     *  fields and a custom comparison for others.

+     *  sort field by using the ISortField class
+     *  compareFunction property; This way you can use the default
+     *  comparison for some fields and a custom comparison for others.

      *
      *  @langversion 3.0
      *  @playerversion Flash 9
@@ -122,7 +123,7 @@
     function set compareFunction(value:Function):void;

     /**
-     *  An Array of ISortField objects that specifies the fields to compare.
+     *  An Array of ISortField objects that specifies the fields to compare.
      *  The order of the ISortField objects in the array determines
      *  field priority order when sorting.
      *  The default sort comparator checks the sort fields in array
@@ -147,6 +148,10 @@
      *  fields listed in the fields property result in an indeterminate or
      *  non-unique sort order; that is, if two or more items have identical
      *  sort field values. An error is thrown if the sort is not unique.
+     *  The sorting logic uses this unique property value only if sort
+     *  field(s) are specified explicitly. If no sort fields are specified
+     *  explicitly, no error is thrown even when there are identical value
+     *  elements.
      *
      *  @default false
      *
@@ -167,13 +172,16 @@
     /**
      *  Finds the specified object within the specified array (or the insertion
      *  point if asked for), returning the index if found or -1 if not.
-     *  The ListCollectionView class findxxx() methods use
-     *  this method to find the requested item; as a general rule, it is
-     *  easier to use these functions, and not findItem() to find
-     *  data in ListCollectionView-based objects.
+     *  The ListCollectionView class findxxx()
+     *  methods use this method to find the requested item; as a general rule,
+     *  it is easier to use these functions, and not findItem()
+     *  to find data in ListCollectionView-based objects.
      *  You call the findItem() method directly when writing a
-     *  class that supports sorting, such as a new ICollectionView
+     *  class that supports sorting, such as a new ICollectionView
      *  implementation.
+     *  The input items array need to be sorted before calling this function.
+     *  Otherwise this function will not be able to find the specified value
+     *  properly.
      *
      *  @param items the Array within which to search.
      *  @param values Object containing the properties to look for (or
@@ -190,16 +198,25 @@
      *                and second fields in this parameter, but you cannot
      *                specify  only the first and third fields.
      *  @param mode String containing the type of find to perform.
-     *           Valid values are
-     *

-     *
ANY_INDEX_MODE
 Return any position that
-     *                   is valid for the values.
-     *
FIRST_INDEX_MODE
 Return the position
-     *                   where the first occurrance of the values is found.
-     *
LAST_INDEX_MODE
 Return the position
-     *                   where the
+     *           Valid values are:
+     *

+     *

+     *                 ANY_INDEX_MODE
+     *                 Return any position that
+     *                   is valid for the values.
+     *

+     *

+     *                 FIRST_INDEX_MODE
+     *                 Return the position
+     *                   where the first occurrance of the values is found.
+     *

+     *

+     *                 LAST_INDEX_MODE
+     *                 Return the position where the
      *                   last ocurrance of the specified values is found.
-     *

+     *
+     *

+     *

      *  @param returnInsertionIndex If the method does not find an item
      *                     identified by the values parameter,
      *                     and this parameter is true the
@@ -208,11 +225,24 @@
      *                     that is the point in the sorted order where you
      *                     should insert the item.
      *  @param compareFunction a comparator function to use to find the item.
-     *                 If you do not specify this parameter, the function uses
-     *                 the function determined by the ISort instance's
-     *                 compareFunction property,
+     *                 If you do not specify this parameter or , or if you
+     *                 provide a null value,
+     *                 findItem() function uses the
+     *                 compare function determined by the ISort
+     *                 instance's compareFunction property,
      *                 passing in the array of fields determined
-     *                 by the values object and the current SortFields.
+     *                 by the values object and the current
+     *                 SortFields.
+     *
+     *                 If you provide a non-null value, findItem()
+     *                 function uses it as the compare function.
+     *
+     *                 The signature of the function passed as
+     *                 compareFunction must be as follows:
+     *                 function myCompareFunction(a:Object, b:Object):int.
+     *                 Note that there is no third argument unlike the
+     *                 compare function for ISort.compareFunction()
+     *                 property.
      *  @return int The index in the array of the found item.
      *                If the returnInsertionIndex parameter is
      *              false and the item is not found, returns -1.
@@ -221,9 +251,9 @@
      *                the index of the point in the sorted array where the
      *                values would be inserted.
      *
-     *  @throws SortError If there are any parameter errors, the find critieria is not
-     *  compatible with the sort or the comparator function for the sort can not be
-     *  determined.
+     *  @throws SortError If there are any parameter errors,
+     *          the find critieria is not compatible with the sort
+     *          or the comparator function for the sort can not be determined.
      *
      *  @langversion 3.0
      *  @playerversion Flash 9
@@ -247,7 +277,7 @@
      *  If the sort uses the default compareFunction, returns
      *  true if the
      *  property parameter specifies a sort field.
-     *  If the sort or any ISortField uses a custom comparator,
+     *  If the sort or any ISortField uses a custom comparator,
      *  there's no way to know, so return true.
      *
      *  @langversion 3.0
@@ -258,13 +288,14 @@
     function propertyAffectsSort(property:String):Boolean;

     /**
-     *  Goes through the fields array and calls reverse() on
-     *  each of the ISortField objects in the array.
-     *  If the field was descending now it is ascending, and vice versa.
-     *
-     *
Note: an ICollectionView does not automatically update when the
-     *  objects in the fields array are modified; call
-     *  its refresh() method to update the view.

+     *  Goes through the fields array and calls
+     *  reverse() on each of the ISortField objects in
+     *  the array. If the field was descending now it is ascending,
+     *  and vice versa.
+     *
+     *
Note: an ICollectionView does not automatically
+     *  update when the objects in the fields array are modified;
+     *  call its refresh() method to update the view.

      *
      *  @langversion 3.0
      *  @playerversion Flash 9
@@ -278,9 +309,9 @@
      *  To prevent the array from being modified, create a copy
      *  use the copy in the items parameter.
      *
-     *
Flex ICollectionView implementations call the sort
-     *  method automatically and ensure that the sort is performed on a
-     *  copy of the underlying data.

+     *
Flex ICollectionView implementations call the
+     *  sort method automatically and ensure that the sort is
+     *  performed on a copy of the underlying data.

      *
      *  @param items Array of items to sort.
      *


Transferred from the Adobe Open Source Subversion Repository

Revision: 7774
Author:   jszeto@adobe.com
Date:     2009-06-12T00:38:51.011501Z

Log Message:
-----------
GradientGlowFilter bug fix for default type

http://bugs.adobe.com/jira/browse/SDK-21734 - GradientGlowFilter type should default to “outer”

The constructor was calling the super constructor at the end, which caused the class variables to get reset to the parent class backing variable default values. In the process, I also noticed that the filter classes weren’t calling super() in their constructors, so I fixed that issue as well.

QE Notes: None
Doc Notes: None
Bugs: SDK-21734
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/BevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/ConvolutionFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/ColorMatrixFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/BlurFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/DisplacementMapFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/GradientGlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/GlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/DropShadowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/filters/GradientBevelFilter.as</path>

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

--- frameworks/projects/spark/src/spark/filters/BlurFilter.as
+++ frameworks/projects/spark/src/spark/filters/BlurFilter.as
@@ -86,6 +86,8 @@

 	public function BlurFilter(blurX:Number = 4.0, blurY:Number = 4.0, quality:int = 1)
 	{
+		super();
+
 		this.blurX = blurX;
 		this.blurY = blurY;
 		this.quality = quality;


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

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

 package spark.utils
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 18173
Author:   jasonsj@adobe.com
Date:     2010-10-15T17:03:20.801634Z

Log Message:
-----------
Mobile Theme Initial check-in

* New light-look visuals from XD
* Changed airmobile-config.xml to use standalone Mobile theme instead of Spark overlay
* Added theme="spark, mobile" where spark was already white-listed and support is implemented and/or planned for Mobile/spark.css (see https://zerowing.corp.adobe.com/display/flexmobile/Mobile+Theme+Styles+Spec)
* MobileSkin has symbolColor and chromeColor support. Override beginChromeColorFill and drawChromeColor when defining custom chromeColor visuals.
* CheckBox and RadioButton now have chromeColor and symbolColor support
* Added textShadowColor and textShadowAlpha support to Button and ActionBar
* Added chromeColor support to HScrollBar and VScrollBar

QE notes: All mobile skins have been updaetd.
Doc notes: Update mobile skinning documentation for new APIs
Bugs:
SDK-28043 Investigate usage of "viewWidth", "viewHeight" for the Flex Mobile Skin Assets
SDK-27609 Mobile scroll bar skins should use chromeColor
SDK-27646 cornerradius has no effect on button in mobile application
Reviewer: gruehle
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<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/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.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/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Button.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/metadata/BorderStyles.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_symbol.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Image.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_symbol.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/Button_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/metadata/ContainerBackgroundStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.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/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_up.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/TextInput_border.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/Button_down.fxg</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_upSelected.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_upSelected.fxg</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/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_down.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewMenuItemSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_down.fxg</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="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/ToolTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/CheckBox_downSelected.fxg</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/themes/Mobile/spark.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/airmobile-config.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/assets/RadioButton_downSelected.fxg</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationButtonSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.as
@@ -11,6 +11,8 @@

 package spark.skins.mobile.supportClasses
 {
+import flash.display.DisplayObject;
+import flash.display.Graphics;

 /**
  *  Actionscript based skin for toggle buttons. This class can not be used
@@ -24,6 +26,9 @@
  */
 public class SelectableButtonSkinBase extends ButtonSkinBase
 {
+    /* Define the symbol fill items that should be colored by the "symbolColor" style. */
+    static private const symbols:Array = ["symbolIcon"];
+
     public function SelectableButtonSkinBase()
     {
         super();
@@ -41,6 +46,8 @@
         // downIconClass,
         // downSelectedIconClass
         useIconStyle = false;
+        useChromeColor = true;
+        useSymbolColor = true;
     }

     /**
@@ -82,6 +89,26 @@
      *  @productversion Flex 4.5
      */
     protected var downSelectedIconClass:Class;
+
+    /**
+     *  The Class used to create the symbol icon in all selected states
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    protected var symbolIconClass:Class;
+
+    /**
+     *  Optional symbol to display selection state
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public var symbolIcon:Object;

     //--------------------------------------------------------------------------
     //
@@ -89,6 +116,16 @@
     //
     //--------------------------------------------------------------------------

+    override protected function createChildren():void
+    {
+        super.createChildren();
+    }
+
+    override public function get symbolItems():Array
+    {
+        return symbols;
+    }
+
     /**
      *  @private
      */
@@ -100,16 +137,47 @@
         if (currentState != null)
         {
             var currentStateIconClass:Class = upIconClass;
+            var isSelected:Boolean = false;
+
             if (currentState == "down")
+            {
                 currentStateIconClass = downIconClass;
+            }
             else if (currentState == "upAndSelected")
+            {
                 currentStateIconClass = upSelectedIconClass;
+                isSelected = true;
+            }
             else if (currentState == "downAndSelected")
+            {
                 currentStateIconClass = downSelectedIconClass;
+                isSelected = true;
+            }
             else if (currentState.indexOf("AndSelected") != -1)
+            {
                 currentStateIconClass = upSelectedIconClass;
+                isSelected = true;
+            }

             setIcon(currentStateIconClass);
+
+            // swap symbol based on selection state
+            var symbolObj:DisplayObject = (symbolIcon && (symbolIcon is DisplayObject))
+                ? DisplayObject(symbolIcon) : null;
+            var hasSymbol:Boolean = (symbolObj) && contains(symbolObj);
+
+            if (hasSymbol && !isSelected)
+            {
+                removeChild(DisplayObject(symbolObj));
+                invalidateDisplayList();
+            }
+            else if (!hasSymbol && isSelected)
+            {
+                symbolIcon = new symbolIconClass();
+
+                addChild(DisplayObject(symbolIcon));
+                invalidateDisplayList();
+            }
         }
     }

@@ -118,15 +186,24 @@
      */
     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
+        graphics.clear();
+
         super.updateDisplayList(unscaledWidth, unscaledHeight);

         // TODO (jszeto) Does this need to go into a seperate DisplayObject to avoid it from getting
         // clobbered by subclasses?
+
         // Draw a transparent hit area
-        graphics.clear();
         graphics.beginFill(0,0);
         graphics.drawRect(0,0,unscaledWidth, unscaledHeight);
         graphics.endFill();
+
+        // position the symbols to align with the background "icon"
+        if (symbolIcon)
+        {
+            var currentIcon:DisplayObject = getIconDisplay();
+            positionPart(symbolIcon, currentIcon.x, currentIcon.y);
+        }
     }
 }
 }


Factor out common socket error–handling code.

--- swfcat.as
+++ swfcat.as
@@ -277,6 +277,7 @@
 import flash.events.IOErrorEvent;
 import flash.events.ProgressEvent;
 import flash.events.SecurityErrorEvent;
+import flash.events.TextEvent;
 import flash.net.Socket;
 import flash.utils.ByteArray;
 import flash.utils.clearTimeout;
@@ -422,29 +423,29 @@
         this.r2c_schedule = [];
     }

+    /* Return a function that shows an error message and closes the other half
+       of a communication pair. */
+    private function socket_error(message:String, other:Socket):Function
+    {
+        return function(e:Event):void {
+            if (e is TextEvent)
+                log(message + ": " + (e as TextEvent).text + ".");
+            else
+                log(message + ".");
+            if (other && other.connected)
+                other.close();
+            dispatchEvent(new Event(Event.COMPLETE));
+        };
+    }
+
     public function connect():void
     {
         s_r = new Socket();

         s_r.addEventListener(Event.CONNECT, relay_connected);
-        s_r.addEventListener(Event.CLOSE, function (e:Event):void {
-            log("Relay: closed.");
-            if (s_c && s_c.connected)
-                s_c.close();
-            dispatchEvent(new Event(Event.COMPLETE));
-        });
-        s_r.addEventListener(IOErrorEvent.IO_ERROR, function (e:IOErrorEvent):void {
-            log("Relay: I/O error: " + e.text + ".");
-            if (s_c && s_c.connected)
-                s_c.close();
-            dispatchEvent(new Event(Event.COMPLETE));
-        });
-        s_r.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (e:SecurityErrorEvent):void {
-            log("Relay: security error: " + e.text + ".");
-            if (s_c && s_c.connected)
-                s_c.close();
-            dispatchEvent(new Event(Event.COMPLETE));
-        });
+        s_r.addEventListener(Event.CLOSE, socket_error("Relay: closed", s_c));
+        s_r.addEventListener(IOErrorEvent.IO_ERROR, socket_error("Relay: I/O error", s_c));
+        s_r.addEventListener(SecurityErrorEvent.SECURITY_ERROR, socket_error("Relay: security error", s_c));
         s_r.addEventListener(ProgressEvent.SOCKET_DATA, relay_to_client);

         log("Relay: connecting to " + addr_r.host + ":" + addr_r.port + ".");
@@ -458,24 +459,9 @@
         s_c = new Socket();

         s_c.addEventListener(Event.CONNECT, client_connected);
-        s_c.addEventListener(Event.CLOSE, function (e:Event):void {
-            log("Client: closed.");
-            if (s_r && s_r.connected)
-                s_r.close();
-            dispatchEvent(new Event(Event.COMPLETE));
-        });
-        s_c.addEventListener(IOErrorEvent.IO_ERROR, function (e:IOErrorEvent):void {
-            log("Client: I/O error: " + e.text + ".");
-            if (s_r && s_r.connected)
-                s_r.close();
-            dispatchEvent(new Event(Event.COMPLETE));
-        });
-        s_c.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (e:SecurityErrorEvent):void {
-            log("Client: security error: " + e.text + ".");
-            if (s_r && s_r.connected)
-                s_r.close();
-            dispatchEvent(new Event(Event.COMPLETE));
-        });
+        s_c.addEventListener(Event.CLOSE, socket_error("Client: closed", s_r));
+        s_c.addEventListener(IOErrorEvent.IO_ERROR, socket_error("Client: I/O error", s_r));
+        s_c.addEventListener(SecurityErrorEvent.SECURITY_ERROR, socket_error("Client: security error", s_r));
         s_c.addEventListener(ProgressEvent.SOCKET_DATA, client_to_relay);

         log("Client: connecting to " + addr_c.host + ":" + addr_c.port + ".");


FLEX-35043 Updating unit tests to reflect new behaviour.

--- frameworks/projects/framework/tests/mx/collections/ListCollectionView_PropertyChangeEvent_Tests.as
+++ frameworks/projects/framework/tests/mx/collections/ListCollectionView_PropertyChangeEvent_Tests.as
@@ -27,6 +27,7 @@
     import mx.utils.ObjectUtil;

     import org.flexunit.asserts.assertEquals;
+    import org.flexunit.asserts.assertNull;
     import org.flexunit.asserts.assertTrue;

     public class ListCollectionView_PropertyChangeEvent_Tests
@@ -136,7 +137,7 @@
         }

         [Test] //FLEX-35043
-        public function test_when_collection_item_dispatches_PropertyChangeEvent_null_is_removed_from_list():void
+        public function test_when_collection_item_dispatches_PropertyChangeEvent_null_is_not_removed_from_list():void
         {
             //given
             _sut.addItem(null);
@@ -150,7 +151,7 @@

             //then
             assertTrue(positionOfNull != -1);
-            assertEquals(-1, _sut.getItemIndex(null));
+            assertEquals(positionOfNull, _sut.getItemIndex(null));
             assertEquals(positionOfFirstWorkout, _sut.getItemIndex(_firstWorkout));
         }

@@ -194,7 +195,7 @@
         }

         [Test] //FLEX-35043
-        public function test_when_item_is_changed_bypassing_binding_and_collection_notified_of_itemUpdated_without_property_null_is_removed_from_list():void
+        public function test_when_item_is_changed_bypassing_binding_and_collection_notified_of_itemUpdated_without_property_null_is_not_removed_from_list():void
         {
             //given
             _sut.addItem(null);
@@ -210,12 +211,12 @@

             //then
             assertTrue(positionOfNull != -1);
-            assertEquals(-1, _sut.getItemIndex(null));
-            assertEquals(positionOfFirstWorkout, _sut.getItemIndex(_firstWorkout));
-        }
-
-        [Test] //FLEX-35043
-        public function test_when_collection_item_dispatches_PropertyChangeEvent_with_UPDATE_null_is_removed_from_list():void
+            assertEquals(positionOfNull, _sut.getItemIndex(null));
+            assertEquals(positionOfFirstWorkout, _sut.getItemIndex(_firstWorkout));
+        }
+
+        [Test] //FLEX-35043
+        public function test_when_collection_item_dispatches_PropertyChangeEvent_with_UPDATE_null_is_not_removed_from_list():void
         {
             //given
             _sut.addItem(null);
@@ -229,7 +230,7 @@

             //then
             assertTrue(positionOfNull != -1);
-            assertEquals(-1, _sut.getItemIndex(null));
+            assertEquals(positionOfNull, _sut.getItemIndex(null));
             assertEquals(positionOfFirstWorkout, _sut.getItemIndex(_firstWorkout));
         }

@@ -261,6 +262,7 @@
             var sort:InspectableSort = new InspectableSort([new SortField("name")]);
             _sut.sort = sort;
             _sut.refresh();
+
             const positionOfNull:int = _sut.getItemIndex(null);
             const positionOfFirstWorkout:int = _sut.getItemIndex(_firstWorkout);

@@ -289,13 +291,13 @@
             //object's correct position has been inspected with Sort
             assertEquals(_firstWorkout, InspectableSort.lastItemSearchedFor);
             //and null (PropertyChangeEvent.oldValue) has been sought for when trying to remove it
-            assertTrue(InspectableSort.itemsSearchedFor.indexOf(null) != -1);
+            assertEquals(-1, InspectableSort.itemsSearchedFor.indexOf(null));
             //and it's in the same position
             assertEquals(positionOfFirstWorkout, _sut.getItemIndex(_firstWorkout));
         }

         [Test] //FLEX-35043
-        public function test_when_collection_item_dispatches_PropertyChangeEvent_sort_compare_function_called_with_null_and_fatals_if_no_null_check():void
+        public function test_when_collection_item_dispatches_PropertyChangeEvent_sort_compare_function_not_called_with_null():void
         {
             function compareWorkouts(a:Object, b:Object, fields:Array = null):int
             {
@@ -314,12 +316,12 @@
             //when
             _firstWorkout.dispatchEvent(PROPERTY_CHANGE_EVENT);

-            //then - fatal because compareWorkouts was called with null, which it didn't expect (but should have)
-            assertTrue(_uncaughtError is TypeError);
-        }
-
-        [Test] //FLEX-35043
-        public function test_when_collection_notified_of_itemUpdated_without_valid_property_sort_compare_function_called_with_null_and_fatals_if_no_null_check():void
+            //then - no fatal because compareWorkouts was not called with null as an argument
+            assertNull(_uncaughtError);
+        }
+
+        [Test] //FLEX-35043
+        public function test_when_collection_notified_of_itemUpdated_without_property_or_oldValue_sort_compare_function_not_called_with_null():void
         {
             function compareWorkouts(a:Object, b:Object, fields:Array = null):int
             {
@@ -340,8 +342,8 @@
             _firstWorkout.setMinAgeWithoutTriggeringBinding(20);
             _sut.itemUpdated(_firstWorkout);

-            //then - fatal because compareWorkouts was called with null, which it didn't expect (but should have)
-            assertTrue(_uncaughtError is TypeError);
+            //then - no fatal because compareWorkouts was not called with null
+            assertNull(_uncaughtError);
         }

         private static function allowAll(object:Object):Boolean


Embed the movie width/height in the SWF.

--- swfcat.as
+++ swfcat.as
@@ -10,6 +10,7 @@
     import flash.utils.ByteArray;
     import flash.utils.setTimeout;

+    [SWF(width="400", height="300")]
     public class swfcat extends Sprite
     {
         /* David's bridge (nickname eRYaZuvY02FpExln) that also serves a


Add a dummy should_disable function.

Add a dummy should_disable function.

This function controls whether the flash proxy will disable itself,
which we'll do roughly whenever we're running on a mobile browser.

--- swfcat.as
+++ swfcat.as
@@ -134,11 +134,24 @@
                 return default_addr;
         }

+        /* Are circumstances such that we should self-disable and not be a
+           proxy? We take a best-effort guess as to whether this device runs on
+           a battery or the data transfer might be expensive. */
+        private function should_disable():Boolean
+        {
+            return false;
+        }
+
         /* The main logic begins here, after start-up issues are taken care of. */
         private function proxy_main():void
         {
             var fac_url:String;
             var loader:URLLoader;
+
+            if (should_disable()) {
+                puts("Disabling self.");
+                return;
+            }

             if (proxy_pairs.length >= MAX_NUM_PROXY_PAIRS) {
                 setTimeout(proxy_main, FACILITATOR_POLL_INTERVAL);


Optimized travers method: avoid recursion

--- collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
+++ collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
@@ -18,6 +18,7 @@
 	import org.openforis.collect.remoting.service.UpdateRequestOperation;
 	import org.openforis.collect.remoting.service.UpdateRequestOperation$Method;
 	import org.openforis.collect.remoting.service.UpdateResponse;
+	import org.openforis.collect.util.ArrayUtil;

     [Bindable]
     [RemoteClass(alias="org.openforis.collect.model.proxy.RecordProxy")]
@@ -41,10 +42,10 @@
 		 * Traverse all the record's nodes and execute the argument function passing
 		 * the visited node to it
 		 * */
-		public function traverse(fun:Function):void {
-			if(rootEntity != null) {
-				fun(rootEntity);
-				rootEntity.traverse(fun);
+		public function traverse(funct:Function):void {
+			var stack:Array = new Array();
+			if ( rootEntity != null ) {
+				rootEntity.traverse(funct);
 			}
 		}

@@ -180,16 +181,12 @@
 			stack.push(rootEntity);
 			while ( stack.length > 0 ) {
 				var entity:EntityProxy = stack.pop();
-				var childNodeNames:IList = entity.childrenDefinitionNames;
-				for each (var name:String in childNodeNames) {
+				var childDefinitionNames:IList = entity.childDefinitionNames;
+				for each (var name:String in childDefinitionNames) {
 					entity.showChildrenErrorsMap.put(name, true);
-					var children:IList = entity.getChildren(name);
-					for each (var child:NodeProxy in children) {
-						if(child is EntityProxy) {
-							stack.push(EntityProxy(child));
-						}
-					}
-				}
+				}
+				var childrenEntities:IList = entity.getChildEntities();
+				ArrayUtil.addAll(stack, childrenEntities.toArray());
 			}
 		}


OFC-272 Text in text fields should automatically be capitalized while typing

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/ui/component/input/TextInput.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/ui/component/input/TextInput.as
@@ -1,4 +1,5 @@
 package org.openforis.collect.ui.component.input {
+	import flash.events.Event;
 	import flash.events.TextEvent;

 	import mx.controls.TextInput;
@@ -13,11 +14,13 @@
 	public class TextInput extends mx.controls.TextInput {

 		private var _restrictPattern:String;
+		private var _upperCase:Boolean = true;

 		public function TextInput() {
 			super();
 			minWidth = 0;
 			addEventListener(TextEvent.TEXT_INPUT, textInputHandler);
+			addEventListener(Event.CHANGE, changeHandler);
 		}

 		public function selectAll():void {
@@ -40,6 +43,12 @@
 			}
 		}

+		protected function changeHandler(event:Event):void {
+			if(upperCase) {
+				text = text.toUpperCase();
+			}
+		}
+
 		public function get restrictPattern():String {
 			return _restrictPattern;
 		}
@@ -47,6 +56,14 @@
 		public function set restrictPattern(value:String):void {
 			_restrictPattern = value;
 		}
+
+		public function get upperCase():Boolean {
+			return _upperCase;
+		}
+
+		public function set upperCase(value:Boolean):void {
+			_upperCase = value;
+		}


fix coding style

fix coding style

--- src/aerys/minko/render/geometry/stream/VertexStream.as
+++ src/aerys/minko/render/geometry/stream/VertexStream.as
@@ -284,7 +284,7 @@
 		 */
 		public function lock() : ByteArray
 		{
-			if (_locked)
+			if (_locked)
 				throw new Error('The stream is already locked.');
 			if (_localDispose)
 				throw new Error('Cannot lock stream data which is already disposed.');