Transferred from the Adobe Open Source Subversion Repository

Revision: 7228
Author:   rfrishbe@adobe.com
Date:     2009-05-22T19:33:44.026452Z

Log Message:
-----------
VideoPlayer bug fixes:

 *   When finishing a streaming video, the playhead doesn’t reset back to the beginning if autoRewind is true (I hooked up the playhead bidning event to look at autoRewound).
 *   Sizing issues on the skin
 *   When no property was specified on the VideoPlayer, we’d get an RTE when tryign to grab properties from the videoElementProperties variable.
 *   Remove startTime and duration from the play() method.
*   Other minor tweaks on the skin
*  Some random ASDOc fixes and making events use typed events rather than "propertyChangeEvent"

QE Notes: -
Doc Notes: -
Bugs: SDK-21355, SDK-21028, SDK-20972, SDK-21275, SDK-20986, SDK-20790
Reviewer: Deepa
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/VideoElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerPlayPauseButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerFullScreenFullScreenButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerFullScreenPlayPauseButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerScrubBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerScrubBarThumbSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerVolumeBarMuteButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerFullScreenScrubBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerFullScreenScrubBarThumbSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerFullScreenVolumeBarMuteButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VideoPlayerVolumeBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerScrubBarTrackSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VideoPlayer.as</path>

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

--- frameworks/projects/spark/src/spark/components/VideoPlayer.as
+++ frameworks/projects/spark/src/spark/components/VideoPlayer.as
@@ -781,6 +781,7 @@
     //----------------------------------

     [Bindable("playheadUpdate")]
+    [Bindable("autoRewound")]
     [Inspectable(Category="General", defaultValue="0")]

     /**
@@ -1027,6 +1028,7 @@
             videoElement.addEventListener("playingChanged", videoElement_playingChangedHandler);

             // just strictly for binding purposes
+            videoElement.addEventListener("autoRewound", videoElement_autoRewoundHandler);
             videoElement.addEventListener("sourceChanged", dispatchEvent);
             videoElement.addEventListener("volumeChanged", videoElement_volumeChangedHandler);

@@ -1034,46 +1036,49 @@

             var newVideoProperties:uint = 0;

-            if (videoElementProperties.source !== undefined)
+            if (videoElementProperties)
             {
-                videoElement.source = videoElementProperties.source;
-                newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
-                                                        SOURCE_PROPERTY_FLAG, true);
-            }
-
-            if (videoElementProperties.autoPlay !== undefined)
-            {
-                videoElement.autoPlay = videoElementProperties.autoPlay;
-                newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
-                                                        AUTO_PLAY_PROPERTY_FLAG, true);
-            }
-
-            if (videoElementProperties.volume !== undefined)
-            {
-                videoElement.volume = videoElementProperties.volume;
-                newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
-                                                        VOLUME_PROPERTY_FLAG, true);
-            }
-
-            if (videoElementProperties.autoRewind !== undefined)
-            {
-                videoElement.autoRewind = videoElementProperties.autoRewind;
-                newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
-                                                        AUTO_REWIND_PROPERTY_FLAG, true);
-            }
-
-            if (videoElementProperties.maintainAspectRatio !== undefined)
-            {
-                videoElement.maintainAspectRatio = videoElementProperties.maintainAspectRatio;
-                newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
-                                                        MAINTAIN_ASPECT_RATIO_PROPERTY_FLAG, true);
-            }
-
-            if (videoElementProperties.muted !== undefined)
-            {
-                videoElement.muted = videoElementProperties.muted;
-                newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
-                                                        MUTED_PROPERTY_FLAG, true);
+                if (videoElementProperties.source !== undefined)
+                {
+                    videoElement.source = videoElementProperties.source;
+                    newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
+                                                            SOURCE_PROPERTY_FLAG, true);
+                }
+
+                if (videoElementProperties.autoPlay !== undefined)
+                {
+                    videoElement.autoPlay = videoElementProperties.autoPlay;
+                    newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
+                                                            AUTO_PLAY_PROPERTY_FLAG, true);
+                }
+
+                if (videoElementProperties.volume !== undefined)
+                {
+                    videoElement.volume = videoElementProperties.volume;
+                    newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
+                                                            VOLUME_PROPERTY_FLAG, true);
+                }
+
+                if (videoElementProperties.autoRewind !== undefined)
+                {
+                    videoElement.autoRewind = videoElementProperties.autoRewind;
+                    newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
+                                                            AUTO_REWIND_PROPERTY_FLAG, true);
+                }
+
+                if (videoElementProperties.maintainAspectRatio !== undefined)
+                {
+                    videoElement.maintainAspectRatio = videoElementProperties.maintainAspectRatio;
+                    newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
+                                                            MAINTAIN_ASPECT_RATIO_PROPERTY_FLAG, true);
+                }
+
+                if (videoElementProperties.muted !== undefined)
+                {
+                    videoElement.muted = videoElementProperties.muted;
+                    newVideoProperties = BitFlagUtil.update(newVideoProperties as uint,
+                                                            MUTED_PROPERTY_FLAG, true);
+                }
             }

             videoElementProperties = newVideoProperties;
@@ -1162,26 +1167,46 @@
             // copy proxied values from video (if explicitely set) to videoProperties

             var newVideoProperties:Object = {};
+            var propertySet:Boolean = false;

             if (BitFlagUtil.isSet(videoElementProperties as uint, SOURCE_PROPERTY_FLAG))
+            {
                 newVideoProperties.source = videoElement.source;
+                propertySet = true;
+            }

             if (BitFlagUtil.isSet(videoElementProperties as uint, AUTO_PLAY_PROPERTY_FLAG))
+            {
                 newVideoProperties.autoPlay = videoElement.autoPlay;
+                propertySet = true;
+            }

             if (BitFlagUtil.isSet(videoElementProperties as uint, VOLUME_PROPERTY_FLAG))
+            {
                 newVideoProperties.volume = videoElement.volume;
+                propertySet = true;
+            }

             if (BitFlagUtil.isSet(videoElementProperties as uint, AUTO_REWIND_PROPERTY_FLAG))
+            {
                 newVideoProperties.autoRewind = videoElement.autoRewind;
+                propertySet = true;
+            }

             if (BitFlagUtil.isSet(videoElementProperties as uint, MAINTAIN_ASPECT_RATIO_PROPERTY_FLAG))
+            {
                 newVideoProperties.maintainAspectRatio = videoElement.maintainAspectRatio;
+                propertySet = true;
+            }

             if (BitFlagUtil.isSet(videoElementProperties as uint, MUTED_PROPERTY_FLAG))
+            {
                 newVideoProperties.muted = videoElement.muted;
-
-            videoElementProperties = newVideoProperties;
+                propertySet = true;
+            }
+
+            if (propertySet)
+                videoElementProperties = newVideoProperties;

             videoElement.removeEventListener(spark.events.VideoEvent.CLOSE, dispatchEvent);
             videoElement.removeEventListener(spark.events.VideoEvent.COMPLETE, videoElement_completeHandler);
@@ -1193,6 +1218,7 @@
             videoElement.removeEventListener("playingChanged", videoElement_playingChangedHandler);

             // just strictly for binding purposes
+            videoElement.removeEventListener("autoRewound", videoElement_autoRewoundHandler);
             videoElement.removeEventListener("sourceChanged", dispatchEvent);
             videoElement.removeEventListener("volumeChanged", videoElement_volumeChangedHandler);
         }
@@ -1267,9 +1293,9 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function play(startTime:Number=NaN, duration:Number=NaN):void
-    {
-        videoElement.play(startTime, duration);
+    public function play():void
+    {
+        videoElement.play();
     }

     /**
@@ -1400,6 +1426,20 @@
         if (totalTimeLabel)
             updateTotalTime();

+        dispatchEvent(event);
+    }
+
+    /**
+     *  @private
+     */
+    private function videoElement_autoRewoundHandler(event:Event):void
+    {
+        updateScrubBar();
+
+        if (playheadTimeLabel)
+            updatePlayheadTime();
+
+        // for binding purposes:
         dispatchEvent(event);
     }

@@ -1560,8 +1600,17 @@
     {
         playerControls.visible = true;

-        fullScreenHideControlTimer.reset();
-        fullScreenHideControlTimer.start();
+        if (fullScreenHideControlTimer)
+        {
+            fullScreenHideControlTimer.reset();
+            fullScreenHideControlTimer.start();
+        }
+        else
+        {
+            fullScreenHideControlTimer = new Timer(FULL_SCREEN_HIDE_CONTROLS_DELAY, 1);
+            fullScreenHideControlTimer.addEventListener(TimerEvent.TIMER_COMPLETE,
+                fullScreenHideControlTimer_timerCompleteHandler, false, 0, true);
+        }
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 19656
Author:   aharui@adobe.com
Date:     2011-01-07T20:52:17.503407Z

Log Message:
-----------
Initial check in of support for bitmaps for different densities.  P-ARB is not final so names could still change.

QE notes: new feature
Doc notes: new feature
Bugs: none
Reviewer: Evtim,
Tests run: checkintests mustella full run
Is noteworthy for integration: yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/BitmapImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/spark-manifest.xml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/utils/MultiDPIBitmapSource.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/BitmapImage.as
+++ frameworks/projects/spark/src/spark/primitives/BitmapImage.as
@@ -30,9 +30,11 @@
 import flash.geom.Rectangle;
 import flash.net.URLRequest;
 import flash.system.ApplicationDomain;
+import flash.system.Capabilities;
 import flash.system.LoaderContext;
 import flash.utils.ByteArray;

+import mx.core.FlexGlobals;
 import mx.core.IInvalidating;
 import mx.core.mx_internal;
 import mx.events.FlexEvent;
@@ -40,6 +42,7 @@
 import mx.graphics.BitmapScaleMode;
 import mx.graphics.BitmapSmoothingQuality;
 import mx.utils.LoaderUtil;
+import mx.utils.DensityUtil;

 import spark.core.ContentRequest;
 import spark.core.DisplayObjectSharingMode;
@@ -47,6 +50,7 @@
 import spark.layouts.HorizontalAlign;
 import spark.layouts.VerticalAlign;
 import spark.primitives.supportClasses.GraphicElement;
+import spark.utils.MultiDPIBitmapSource;

 use namespace mx_internal;

@@ -920,17 +924,32 @@
      */
     override protected function measure():void
     {
+        var app:Object = FlexGlobals.topLevelApplication;
+        var densityScale:Number;
+
         if (loadedContent)
         {
             // Return size of our loaded image content.
             measuredWidth = imageWidth;
             measuredHeight = imageHeight;
+            if ("applicationDPI" in app) // density scaling may be in effect
+            {
+                densityScale = app.systemManager.scaleX;
+                measuredWidth /= densityScale;
+                measuredHeight /= densityScale;
+            }
         }
         else if (_bitmapData)
         {
             // Return size of our bitmap data.
             measuredWidth = _bitmapData.width;
             measuredHeight = _bitmapData.height;
+            if ("applicationDPI" in app) // density scaling may be in effect
+            {
+                densityScale = app.systemManager.scaleX;
+                measuredWidth /= densityScale;
+                measuredHeight /= densityScale;
+            }
         }
         else
         {
@@ -1281,6 +1300,9 @@
         var bitmapData:BitmapData;
         var tmpSprite:DisplayObject;

+        if (value is MultiDPIBitmapSource)
+            value = getActualValue(value as MultiDPIBitmapSource);
+
         // Clear the previous scaleGrid properties
         _scaleGridLeft = NaN;
         _scaleGridRight = NaN;
@@ -1384,6 +1406,21 @@

     /**
      *  @private
+     *  Figure out which source to use
+     */
+    mx_internal function getActualValue(values:MultiDPIBitmapSource):Object
+    {
+        var app:Object = FlexGlobals.topLevelApplication;
+        var dpi:int;
+        if ("runtimeDPI" in app)
+            dpi = app["runtimeDPI"];
+        else
+            dpi = DensityUtil.classifyDPI(Capabilities.screenDPI);
+        return values.getSource(dpi);
+    }
+
+    /**
+     *  @private
      */
     mx_internal function loadExternal(source:Object):void
     {
@@ -1397,8 +1434,8 @@
         if (contentLoader)
         {
             // We defer our load request to the configured content loader.
-            var contentRequest:ContentRequest = contentLoader.load(source, contentLoaderGrouping);
-
+            var contentRequest:ContentRequest = contentLoader.load(source, contentLoaderGrouping);
+
             if (contentRequest.complete)
             {
                 // No need to attach listeners as we've received a fully complete


rolling back before refactoring

rolling back before refactoring

--- GA_AS3/src/com/google/analytics/utils/Environment.as
+++ GA_AS3/src/com/google/analytics/utils/Environment.as
@@ -26,7 +26,7 @@

     import flash.system.Capabilities;
     import flash.system.Security;
-    import flash.system.System;
+    import flash.system.System;

     /**
      * Local Informations provide informations for the local environment.
@@ -73,7 +73,7 @@
                 v = Version.fromString( version );
             }

-            if( dom == null )
+            if( !dom )
             {
                 dom = new HTMLDOM();
             }
@@ -184,6 +184,11 @@
                 return _referrer;
             }

+            if( protocol == Protocols.file )
+            {
+                return "localhost";
+            }
+
             return "";
         }

@@ -228,6 +233,11 @@
                 }

                 return str;
+            }
+
+            if( protocol == Protocols.file )
+            {
+                return "localhost";
             }

             return "";


fixed some typos

fixed some typos

--- src/flexlib/css/CSSPropertyInjector.as
+++ src/flexlib/css/CSSPropertyInjector.as
@@ -29,7 +29,7 @@
 import mx.styles.StyleManager;

 /**
- *  An utility to dynmacially inject values from CSSStyleDeclarations into a target
+ *  A utility to dynmacially inject values from CSSStyleDeclarations into a target
  *  object.
  *
  *  NOTE: This code is being developed and has not be thoroughly tested...
@@ -48,12 +48,12 @@

     /**
      *  Constructor.
-     */
-	public function CSSPropertyInjector()
-	{
-		super();
-	}
-
+     */
+    public function CSSPropertyInjector()
+    {
+        super();
+    }
+

     //--------------------------------------------------------------------------
     //
@@ -64,77 +64,77 @@
     /**
      *  Uses introspection to determine the properties of the target object. These
      *  properties are used in place of styles.
-     */
-	public function get useIntrospection() : Boolean
-	{
-		return __useIntrospection;
-	}
-	public function set useIntrospection( val : Boolean ) : void
-	{
-		__useIntrospection = val;
-		__useIntrospectionChanged = true;
-		invalidateProperties();
-	}
-
-	/**
-	 *  The target object to apply the CSS values to.
-	 */
-	public function get target() : Object
-	{
-		return __target;
-	}
-	public function set target( val : Object ) : void
-	{
-		__target = val;
-		__targetChanged = true;
-		invalidateProperties();
-	}
-
-	/**
-	 *  The target objects to apply the CSS values to.
-	 */
-	public function get targets() : Array
-	{
-		return __targets;
-	}
-	public function set targets( val : Array ) : void
-	{
-		__targets = val;
-		__targetsChanged = true;
-		invalidateProperties();
-	}
-
-	/**
-	 *  The style name of the CSSDeclaration to inject from.
-	 */
-	public function get styleName() : String
-	{
-		return __styleName;
-	}
-	public function set styleName( val : String ) : void
-	{
-		__styleName = val;
-		__styleNameChanged = true;
-		invalidateProperties();
-	}
-
-	/**
-	 *  A set of styles to read from the CSSStyleDeclration and set on the target(s). If
-	 *  useIntrospection is true, these are ignored.
-	 *
-	 *  Note: it is much more efficient to specify a set of styles and set
-	 *  useIntrospection to false.
-	 */
-	public function get styles() : Array
-	{
-		return __styles;
-	}
-	public function set styles( val : Array ) : void
-	{
-		__styles = val;
-		__stylesChanged = true;
-		invalidateProperties();
-	}
+     */
+    public function get useIntrospection() : Boolean
+    {
+        return __useIntrospection;
+    }
+    public function set useIntrospection( val : Boolean ) : void
+    {
+        __useIntrospection = val;
+        __useIntrospectionChanged = true;
+        invalidateProperties();
+    }
+
+    /**
+     *  The target object to apply the CSS values to.
+     */
+    public function get target() : Object
+    {
+        return __target;
+    }
+    public function set target( val : Object ) : void
+    {
+        __target = val;
+        __targetChanged = true;
+        invalidateProperties();
+    }
+
+    /**
+     *  The target objects to apply the CSS values to.
+     */
+    public function get targets() : Array
+    {
+        return __targets;
+    }
+    public function set targets( val : Array ) : void
+    {
+        __targets = val;
+        __targetsChanged = true;
+        invalidateProperties();
+    }
+
+    /**
+     *  The style name of the CSSDeclaration to inject from.
+     */
+    public function get styleName() : String
+    {
+        return __styleName;
+    }
+    public function set styleName( val : String ) : void
+    {
+        __styleName = val;
+        __styleNameChanged = true;
+        invalidateProperties();
+    }
+
+    /**
+     *  A set of styles to read from the CSSStyleDeclration and set on the target(s). If
+     *  useIntrospection is true, these are ignored.
+     *
+     *  Note: it is much more efficient to specify a set of styles and set
+     *  useIntrospection to false.
+     */
+    public function get styles() : Array
+    {
+        return __styles;
+    }
+    public function set styles( val : Array ) : void
+    {
+        __styles = val;
+        __stylesChanged = true;
+        invalidateProperties();
+    }

     //--------------------------------------------------------------------------
@@ -146,133 +146,133 @@
     /**
      *  Added to adhere to the framework lifecycle naming convention. Just calls
      *  commitProperties().
-     */
-	public function invalidateProperties() : void
-	{
-		commitProperties();
-	}
-
-	/**
-	 *  @protected
-	 *
-	 *  Applies the injection when all the required properties have been committed.
-	 */
-	protected function commitProperties() : void
-	{
-		//  if at least target or targets is set as well as styleName
-		//  and styles.. and one of these values has changed...
-		//  the style declaration is retreived and applied
-		if ( ( __target != null || __targets != null ) &&
-			 ( __styles != null || useIntrospection == true ) &&
-			 __styleName != null &&
-			 ( __targetChanged == true || __targetsChanged == true ||
-			   __styleNameChanged == true || __stylesChanged == true ) )
-		{
-			if ( __styleNameChanged == true )
-			{
-				getCSSStyleDeclaration();
-			}
-
-			__targetChanged = __targetsChanged = __styleNameChanged = __stylesChanged = false;
-
-			applyStyles();
-		}
-	}
-
-	/**
-	 *  @protected
-	 *
-	 *  Loads the CSSStyleDeclaration from the StyleManager.
-	 */
-	protected function getCSSStyleDeclaration() : void
-	{
-		__cssStyleDeclaration = StyleManager.getStyleDeclaration( styleName );
-
-		if ( __cssStyleDeclaration == null )
-		{
-			__cssStyleDeclaration = StyleManager.getStyleDeclaration( "." + styleName );
-		}
-	}
-
-	/**
-	 *  @protected
-	 *
-	 *  Applies the style values in __cssStyleDeclaration to the target object(s)
-	 */
-	protected function applyStyles() : void
-	{
-		var styles : Array = this.styles;
-
-		if ( useIntrospection == true )
-		{
-			var description : XML = describeType( target );
-			var propNames : Array = [];
-			for each ( var accessor : XML in description.accessor )
-			{
-				propNames.push( accessor.@name.toString() );
-			}
-			for each ( var variable : XML in description.variable )
-			{
-				propNames.push( variable.@name.toString() );
-			}
-			styles = propNames;
-		}
-
-		if ( target != null )
-		{
-			assignStylesToTarget( styles, this.target );
-		}
-
-		if ( targets != null )
-		{
-			for each ( var target : Object in targets )
-			{
-				assignStylesToTarget( styles, target );
-			}
-		}
-	}
-
-	/**
-	 *  @protected
-	 *
-	 *  Assigns a set of styles to a target object
-	 */
-	protected function assignStylesToTarget( styles : Array, target : Object ) : void
-	{
-		for each ( var style : String in styles )
-		{
-			if ( target.hasOwnProperty( style ) &&
-				 __cssStyleDeclaration.getStyle( style ) != null )
-			{
-				target[ style ] = __cssStyleDeclaration.getStyle( style );
-			}
-		}
-	}
-
-
+     */
+    public function invalidateProperties() : void
+    {
+        commitProperties();
+    }
+
+    /**
+     *  @protected
+     *
+     *  Applies the injection when all the required properties have been committed.
+     */
+    protected function commitProperties() : void
+    {
+        //  if at least target or targets is set as well as styleName
+        //  and styles.. and one of these values has changed...
+        //  the style declaration is retreived and applied
+        if ( ( __target != null || __targets != null ) &&
+             ( __styles != null || useIntrospection == true ) &&
+             __styleName != null &&
+             ( __targetChanged == true || __targetsChanged == true ||
+               __styleNameChanged == true || __stylesChanged == true ) )
+        {
+            if ( __styleNameChanged == true )
+            {
+                getCSSStyleDeclaration();
+            }
+
+            __targetChanged = __targetsChanged = __styleNameChanged = __stylesChanged = false;
+
+            applyStyles();
+        }
+    }
+
+    /**
+     *  @protected
+     *
+     *  Loads the CSSStyleDeclaration from the StyleManager.
+     */
+    protected function getCSSStyleDeclaration() : void
+    {
+        __cssStyleDeclaration = StyleManager.getStyleDeclaration( styleName );
+
+        if ( __cssStyleDeclaration == null )
+        {
+            __cssStyleDeclaration = StyleManager.getStyleDeclaration( "." + styleName );
+        }
+    }
+
+    /**
+     *  @protected
+     *
+     *  Applies the style values in __cssStyleDeclaration to the target object(s)
+     */
+    protected function applyStyles() : void
+    {
+        var styles : Array = this.styles;
+
+        if ( useIntrospection == true )
+        {
+            var description : XML = describeType( target );
+            var propNames : Array = [];
+            for each ( var accessor : XML in description.accessor )
+            {
+                propNames.push( accessor.@name.toString() );
+            }
+            for each ( var variable : XML in description.variable )
+            {
+                propNames.push( variable.@name.toString() );
+            }
+            styles = propNames;
+        }
+
+        if ( target != null )
+        {
+            assignStylesToTarget( styles, this.target );
+        }
+
+        if ( targets != null )
+        {
+            for each ( var target : Object in targets )
+            {
+                assignStylesToTarget( styles, target );
+            }
+        }
+    }
+
+    /**
+     *  @protected
+     *
+     *  Assigns a set of styles to a target object
+     */
+    protected function assignStylesToTarget( styles : Array, target : Object ) : void
+    {
+        for each ( var style : String in styles )
+        {
+            if ( target.hasOwnProperty( style ) &&
+                 __cssStyleDeclaration.getStyle( style ) != null )
+            {
+                target[ style ] = __cssStyleDeclaration.getStyle( style );
+            }
+        }
+    }
+
+
     //--------------------------------------------------------------------------
     //
     //  Variables
     //
     //--------------------------------------------------------------------------

-	protected var __target : Object = null;
-	protected var __targetChanged : Boolean = false;
-
-	protected var __targets : Array = null;
-	protected var __targetsChanged : Boolean = false;
-
-	protected var __styleName : String = null;
-	protected var __styleNameChanged : Boolean = false;
-
-	protected var __styles : Array = null;
-	protected var __stylesChanged : Boolean = false;
-
-	protected var __useIntrospection : Boolean = true;
-	protected var __useIntrospectionChanged : Boolean = false;
-
-	protected var __cssStyleDeclaration : CSSStyleDeclaration = null;
-
+    protected var __target : Object = null;
+    protected var __targetChanged : Boolean = false;
+
+    protected var __targets : Array = null;
+    protected var __targetsChanged : Boolean = false;
+
+    protected var __styleName : String = null;
+    protected var __styleNameChanged : Boolean = false;
+
+    protected var __styles : Array = null;
+    protected var __stylesChanged : Boolean = false;
+
+    protected var __useIntrospection : Boolean = true;
+    protected var __useIntrospectionChanged : Boolean = false;
+
+    protected var __cssStyleDeclaration : CSSStyleDeclaration = null;
+
 } //  end class
 } //  end package


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

--- frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as
+++ frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//  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
+//
+//      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: 18914
Author:   jasonsj@adobe.com
Date:     2010-12-01T21:03:45.402847Z

Log Message:
-----------
TextField textHeight and textWidth return different values when on/off stage and using scaling. When not scaling, these properties return consistent values on/off stage. This commit refactors StyleableTextField measuedWidth and measuredHeight to call measuredTextSize():Point which uses removes, measures, then adds the text field back to the display list. This fixes several issues around text positioning in skins when the stage is scaled.

QE notes: When scaling and on the stage, additional Event.ADDED and Event.REMOVED will be dispatched for StyleableTextField when measuring.
Doc notes:
Bugs:
Reviewer: gruehle, rfrishbe
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderDataTip.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/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/styles/metadata/BasicInheritingTextStyles.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/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
@@ -953,7 +953,7 @@
             // commit styles to get an accurate measurement
             StyleableTextField(element).commitStyles();

-            return StyleableTextField(element).measuredWidth;
+            return StyleableTextField(element).measuredTextSize.x;
         }
         else
         {
@@ -992,7 +992,7 @@
             // commit styles to get an accurate measurement
             StyleableTextField(element).commitStyles();

-            return StyleableTextField(element).measuredHeight;
+            return StyleableTextField(element).measuredTextSize.y;
         }
         else
         {


renderer = null

renderer = null

--- src/eu/stefaner/elasticlists/ui/facetboxes/FacetBoxElement.as
+++ src/eu/stefaner/elasticlists/ui/facetboxes/FacetBoxElement.as
@@ -1,41 +1,37 @@
- /*
+/*

-  Copyright 2010, Moritz Stefaner
+Copyright 2010, Moritz Stefaner

-   Licensed 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
+Licensed 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

-       http://www.apache.org/licenses/LICENSE-2.0
+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.
+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.

-*/
+ */

 package eu.stefaner.elasticlists.ui.facetboxes {
 	import eu.stefaner.elasticlists.data.DataItem;
 	import eu.stefaner.elasticlists.data.FacetValue;
-	import eu.stefaner.elasticlists.ui.elements.InteractiveNodeSprite;
-
+	import eu.stefaner.elasticlists.ui.elements.InteractiveNodeSprite;
 	import flash.display.Sprite;
 	import flash.events.Event;
-	import flash.events.MouseEvent;
-
-	public class FacetBoxElement extends InteractiveNodeSprite {
-
+	import flash.events.MouseEvent;
+	public class FacetBoxElement extends InteractiveNodeSprite {
 		public var container : FacetBox;
 		public var facetValue : FacetValue;
 		private var _highlighted : Boolean;
-		public var highlightMarker : Sprite;
-
+		public var highlightMarker : Sprite;
 		public function FacetBoxElement() {
-			super();
-		}
-
+			super();
+			renderer = null;
+		}
 		// REVISIT: move params to constructor, move rest with onStageInit?
 		public function init(c : FacetBox, d : FacetValue) : void {
 			container = c;
@@ -52,20 +48,17 @@
 			selectionMarker.cacheAsBitmap = true;

 			label = facetValue.label;
-			selected = facetValue.selected;
+			selected = facetValue.selected;
 			updateStats();
-		}
-
+		}
 		public function updateStats() : void {
-		};
-
+		};
 		//---------------------------------------
 		// EVENT HANDLERS
 		//---------------------------------------
 		override protected function onClick(e : MouseEvent) : void {
 			container.onFacetBoxElementClick(this);
-		};
-
+		};
 		override public function onSelectionStatusChange(e : Event = null) : void {
 			//trace("onSelectionStatusChange " + this);
 			selected = facetValue.selected;
@@ -73,25 +66,20 @@
 			if(parent && selected) {
 				parent.setChildIndex(this, parent.numChildren - 1);
 			}
-		};
-
+		};
 		private function onHighlightStatusChange(event : Event = null) : void {
 			highlighted = facetValue.highlighted;
-		}
-
+		}
 		//---------------------------------------
 		// DISPLAY STATE
 		//---------------------------------------
 		public function collapse() : void {
-		};
-
+		};
 		public function expand() : void {
-		};
-
+		};
 		public function get highlighted() : Boolean {
 			return _highlighted;
-		}
-
+		}
 		public function set highlighted(arg : Boolean) : void {
 			_highlighted = arg;
 			if(highlightMarker != null) {


Added update() to Graphic class and active property to turn on/off updating, used for animated Entitites.

--- net/flashpunk/Graphic.as
+++ net/flashpunk/Graphic.as
@@ -8,7 +8,12 @@
 	public class Graphic
 	{
 		/**
-		 * If the graphic is visible.
+		 * If the graphic should update.
+		 */
+		public var active:Boolean = false;
+
+		/**
+		 * If the graphic should render.
 		 */
 		public var visible:Boolean = true;

@@ -50,6 +55,14 @@
 		}

 		/**
+		 * Updates the graphic.
+		 */
+		public function update():void
+		{
+
+		}
+
+		/**
 		 * Renders the graphic to the screen buffer.
 		 * @param	point		The position to draw the graphic.
 		 * @param	camera		The camera offset.


For primitive types, the coercive casts never fail. Let's be lenient and let
a TypedArray of int work if people fill it with strings like "4" or "9".

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

--- src/as/com/threerings/io/streamers/ArrayStreamer.as
+++ src/as/com/threerings/io/streamers/ArrayStreamer.as
@@ -105,12 +105,12 @@
         out.writeInt(arr.length);
         if (_elementType == int) {
             for (ii = 0; ii < arr.length; ii++) {
-                out.writeInt(arr[ii] as int);
+                out.writeInt(int(arr[ii]));
             }

         } else if (_elementType == Boolean) {
             for (ii = 0; ii < arr.length; ii++) {
-                out.writeBoolean(arr[ii] as Boolean);
+                out.writeBoolean(Boolean(arr[ii]));
             }

         } else if (_isFinal) {


Transferred from the Adobe Open Source Subversion Repository

Revision: 22608
Author:   smgilson@adobe.com
Date:     2011-09-16T17:19:03.985309Z

Log Message:
-----------
- Add ViewMenu example, add image to ViewMenu.as

- fix typos in ASDoc comments

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

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/asdoc/en_US/spark/components/examples/ViewMenuExampleHome.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/asdoc/en_US/spark/components/examples/ViewMenuExample.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewMenuItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/BusyIndicator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ViewMenu.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as
@@ -65,7 +65,7 @@
  *  Because its children are view navigators, the view navigator for each
  *  pane contains its own view stack and action bar.
  *
- *
The following images shows the SplitViewNavigator container in a
+ *
The following image shows the SplitViewNavigator container in a
  *  horizontal layout with a master and detail pane:

  *
  *


Transferred from the Adobe Open Source Subversion Repository

Revision: 9207
Author:   dsubrama@adobe.com
Date:     2009-08-10T20:06:36.793713Z

Log Message:
-----------
SDK-22608 – GraphicElement.rotation should not be bindable since it doesn’t satisfy either of the “bindable requirements” – the property is never set “under the covers” by other framework code and its something not settable by the end-user of the application.

SDK-22631 – Request from Design View. They need a way to distinguish whether the dynamic event, callLaterError, is dispatched from UIComponent or LayoutManager. I added a field on the dynamic event object, source, which refers back to the emitter. Additionally, cleaned up the incorrect copy&pasted comment in LayoutManager.

QE notes: None beyond regression
Doc notes: No
Bugs: SDK-22608, SDK-22631
Reviewer: Alex
Tests run: Checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
@@ -1560,7 +1560,6 @@
         invalidateTransform(previous != needsDisplayObject);
     }

-    [Bindable("propertyChange")]
     [Inspectable(category="General")]

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 16971
Author:   clucier@adobe.com
Date:     2010-07-19T18:10:41.071515Z

Log Message:
-----------
Mirroring related bug fixes.

QE notes: None
Doc notes: None
Bugs: SDK-26906, SDK-26710
Reviewer: Kevin
Tests run: Checkin
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
@@ -2907,7 +2907,9 @@
         // set the layoutFeatures.mirror flag.  Similarly, if mirroring isn't
         // required, then clear the layoutFeatures.mirror flag.

-        const mirror:Boolean = (_layoutDirection != null) && (_layoutDirection != parentElt.layoutDirection);
+        const mirror:Boolean = (parentElt.layoutDirection != null && _layoutDirection != null)
+            && (_layoutDirection != parentElt.layoutDirection);
+
         if ((layoutFeatures) ? (mirror != layoutFeatures.mirror) : mirror)
         {
             if (layoutFeatures == null)


- fixed dataTipPlacement style enum on VSlider

--- src/flexlib/controls/VSlider.as
+++ src/flexlib/controls/VSlider.as
@@ -10,85 +10,85 @@
 package flexlib.controls
 {

-import flexlib.controls.sliderClasses.ExtendedSlider;
+  import flexlib.controls.sliderClasses.ExtendedSlider;

-import mx.controls.sliderClasses.SliderDirection;
+  import mx.controls.sliderClasses.SliderDirection;

-//--------------------------------------
-//  Styles
-//--------------------------------------
+  //--------------------------------------
+  //  Styles
+  //--------------------------------------

-/**
- *  The location of the data tip relative to the thumb.
- *  Possible values are "left", "right",
- *  "top", and "bottom".
- *
- *  @default "left"
- */
-[Style(name="dataTipPlacement", type="String", enumeration="left, top, right, bottom", inherit="no")]
+  /**
+   *  The location of the data tip relative to the thumb.
+   *  Possible values are "left", "right",
+   *  "top", and "bottom".
+   *
+   *  @default "left"
+   */
+  [Style(name="dataTipPlacement", type="String", enumeration="left,top,right,bottom", inherit="no")]

-//--------------------------------------
-//  Excluded APIs
-//--------------------------------------
+  //--------------------------------------
+  //  Excluded APIs
+  //--------------------------------------

-[Exclude(name="direction", kind="property")]
+  [Exclude(name="direction", kind="property")]

-//--------------------------------------
-//  Other metadata
-//--------------------------------------
+  //--------------------------------------
+  //  Other metadata
+  //--------------------------------------

-[DefaultBindingProperty(source="value", destination="labels")]
+  [DefaultBindingProperty(source="value", destination="labels")]

-[DefaultTriggerEvent("change")]
+  [DefaultTriggerEvent("change")]

-[IconFile("VSlider.png")]
+  [IconFile("VSlider.png")]

-/**
- *  An alternative to the VSlider control included in the Flex framework. This
- *  version of the VSlider allows you to drag the region between the thumbs, if
- *  the slider has mutliple thumbs. If there is more than one thumb then the region
- *  between the topmost thumb and the bottommost thumb is draggable.
- *
- *
To use this control an enable the draggable regions between the thumbs you
- *  need to set the thumbCount to something greater than 1, otherwise
- *  this control will work exactly like the original VSlider.

- *
- *  @mxml
- *
- *
The <flexlib:VSlider> tag inherits all of the tag attributes
- *  of its superclass, and adds the following tag attribute:

- *
- *

- *  <flexlib:VSlider
- *    Styles
- *    dataTipPlacement="top"
- *  />
- *

- *

- *
- *  @see mx.controls.VSlider
- *  @see flexlib.controls.HSlider
- *  @see flexlib.baseClasses.SliderBase
- */
-public class VSlider extends ExtendedSlider
-{
-	//include "../core/Version.as";
-
-	//--------------------------------------------------------------------------
-	//
-	//  Constructor
-	//
-	//--------------------------------------------------------------------------
+  /**
+   *  An alternative to the VSlider control included in the Flex framework. This
+   *  version of the VSlider allows you to drag the region between the thumbs, if
+   *  the slider has mutliple thumbs. If there is more than one thumb then the region
+   *  between the topmost thumb and the bottommost thumb is draggable.
+   *
+   *
To use this control an enable the draggable regions between the thumbs you
+   *  need to set the thumbCount to something greater than 1, otherwise
+   *  this control will work exactly like the original VSlider.

+   *
+   *  @mxml
+   *
+   *
The <flexlib:VSlider> tag inherits all of the tag attributes
+   *  of its superclass, and adds the following tag attribute:

+   *
+   *

+   *  <flexlib:VSlider
+   *    Styles
+   *    dataTipPlacement="top"
+   *  />
+   *

+   *

+   *
+   *  @see mx.controls.VSlider
+   *  @see flexlib.controls.HSlider
+   *  @see flexlib.baseClasses.SliderBase
+   */
+  public class VSlider extends ExtendedSlider
+  {
+    //include "../core/Version.as";

-	/**
-	 *  Constructor.
-	 */
-	public function VSlider()
-	{
-		super();
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------

-		direction = SliderDirection.VERTICAL;
-	}
-}
+    /**
+     *  Constructor.
+     */
+    public function VSlider()
+    {
+      super();
+
+      direction = SliderDirection.VERTICAL;
+    }
+  }

 }


Add symbols

Add symbols

--- src/aerys/minko/type/loader/AssetsLibrary.as
+++ src/aerys/minko/type/loader/AssetsLibrary.as
@@ -4,6 +4,7 @@
 	import aerys.minko.render.material.Material;
 	import aerys.minko.render.material.basic.BasicMaterial;
 	import aerys.minko.render.resource.texture.TextureResource;
+	import aerys.minko.scene.node.ISceneNode;
 	import aerys.minko.type.Signal;

 	public final class AssetsLibrary
@@ -11,18 +12,22 @@
 		private var _numGeometries 	: uint 						= 0;
 		private var _numMaterials	: uint 						= 0;
 		private var _numTextures	: uint 						= 0;
+		private var _numSymbols		: uint 						= 0;

 		private var _geometryList	: Vector.<Geometry> 		= new Vector.<Geometry>();
 		private var _materialList	: Vector.<Material> 		= new Vector.<Material>();
 		private var _textureList	: Vector.<TextureResource> 	= new Vector.<TextureResource>();
+		private var _symbolList		: Vector.<ISceneNode>		= new Vector.<ISceneNode>();

 		private var _geometries		: Object;
+		private var _symbols		: Object;
 		private var _textures		: Object;
 		private var _materials		: Object;
 		private var _layers			: Vector.<String>;
 		private var _nameToLayer	: Object;

 		private var _geometryAdded	: Signal;
+		private var _symbolAdded	: Signal;
 		private var _textureAdded	: Signal;
 		private var _materialAdded	: Signal;
 		private var _layerAdded		: Signal;
@@ -33,6 +38,11 @@
 			initializeSignals();
 		}

+		public function get numSymbols() : uint
+		{
+			return _numSymbols;
+		}
+
 		public function get numTextures() : uint
 		{
 			return _numTextures;
@@ -48,6 +58,11 @@
 			return _numMaterials;
 		}

+		public function getSymbolAt(index : uint) : ISceneNode
+		{
+			return _symbolList[index];
+		}
+
 		public function getMaterialAt(index : uint): Material
 		{
 			return _materialList[index];
@@ -61,6 +76,11 @@
 		public function getTextureAt(index : uint): TextureResource
 		{
 			return _textureList[index];
+		}
+
+		public function getSymbolByName(name : String) : ISceneNode
+		{
+			return _symbols[name];
 		}

 		public function getMaterialByName(name : String) : Material
@@ -83,6 +103,7 @@
 			_geometries		= {};
 			_textures		= {};
 			_materials		= {};
+			_symbols		= {};

 			_layers			= new Vector.<String>(32, true);
 			_layers[0]		= 'Default';
@@ -98,6 +119,7 @@
 			_textureAdded	= new Signal('AssetsLibrary.textureAdded');
 			_materialAdded	= new Signal('AssetsLibrary.materialAdded');
 			_layerAdded		= new Signal('AssetsLibrary.layerAdded');
+			_symbolAdded	= new Signal('AssetsLibrary.symbolAdded');
 		}

 		public function get layerAdded() : Signal
@@ -118,6 +140,22 @@
 		public function get geometryAdded() : Signal
 		{
 			return _geometryAdded;
+		}
+
+		public function get symbolAdded() : Signal
+		{
+			return _symbolAdded;
+		}
+
+		public function setSymbol(name : String, node : ISceneNode) : void
+		{
+			if (_symbolList.indexOf(node) == -1)
+			{
+				++_numSymbols;
+				_symbolList.push(node);
+				_symbols[name] = node;
+				_symbolAdded.execute(this, name, node);
+			}
 		}

 		public function setGeometry(name : String, geometry : Geometry) : void


Added in a flag so that repeat messages aren't sent.

--- WeaveData/src/weave/services/collaboration/CollaborationService.as
+++ WeaveData/src/weave/services/collaboration/CollaborationService.as
@@ -96,6 +96,7 @@
 		private var connectedToServer:Boolean = false;
 		private var stateSet:Boolean  		  = false;
 		private var stateLog:SessionStateLog  = null;
+		private var mess:Boolean              = false;

 		public var userList:ArrayCollection  = new ArrayCollection();
 		public var username:String;
@@ -245,8 +246,13 @@
 		//Handles sending session state changes
 		public function sendSessionStateDiff( diffID:int, diff:Object, target:String=null ):void
 		{
-			var message:SessionStateMessage = new SessionStateMessage(diffID, diff);
-			sendEncodedObject( message, target );
+			if( mess == false )
+			{
+				var message:SessionStateMessage = new SessionStateMessage(diffID, diff);
+				sendEncodedObject( message, target );
+			}
+			else
+				mess = false;
 		}

 		//When a message is recieved pass it on to the user
@@ -373,15 +379,16 @@
 						else
 						{
 							// rewind local changes
-							for (i = stateLog.undoHistory.length - 1; i >= 0; i--)
-								setSessionState(root, stateLog.undoHistory[i].backward, false);
+/*							for (i = stateLog.undoHistory.length - 1; i >= 0; i--)
+								setSessionState(root, stateLog.undoHistory[i].backward, false);*/

 							// apply remote change
+							mess = true;
 							setSessionState(root, ssm.diff, false);

 							// replay local changes
-							for (i = 0; i < stateLog.undoHistory.length; i++)
-								setSessionState(root, stateLog.undoHistory[i].forward, false);
+/*							for (i = 0; i < stateLog.undoHistory.length; i++)
+								setSessionState(root, stateLog.undoHistory[i].forward, false);*/
 						}
 					}
 				}


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.effects
 {


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 12554
Author:   dsubrama@adobe.com
Date:     2009-12-04T22:44:10.552584Z

Log Message:
-----------
In anticipation of deferring SDK-24211, I am making List.findKey and List.findString methods mx_internal. When we fix SDK-24211, we will probably collapse/remove those two methods

QE notes: This shouldn't affect tests unless you subclass these methods in which case you'll need to change the function signature.
Doc notes: No
Bugs: No
Reviewer: Evtim
Tests run: Checkintests
Is noteworthy for integration: Yes

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

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -2212,7 +2212,7 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    protected function findKey(eventCode:int):Boolean
+    mx_internal function findKey(eventCode:int):Boolean
     {
         var tmpCode:int = eventCode;

@@ -2236,7 +2236,7 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function findString(str:String):Boolean
+    mx_internal function findString(str:String):Boolean
     {
         if (!dataProvider || dataProvider.length == 0)
             return false;


Transferred from the Adobe Open Source Subversion Repository

Revision: 6812
Author:   clucier@adobe.com
Date:     2009-05-12T00:12:47.147255Z

Log Message:
-----------
Merging beta1 change 6811 to trunk to take care of an RTE affecting the performance suite.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/bundles/en_US/components.properties</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/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>

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

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

         return super.selectedIndex;
     }
@@ -216,9 +216,11 @@
         super.selectedIndex = value;

         if (value !== NO_SELECTION)
-            selectedIndices = [value];
+            _proposedSelectedIndices = [value];
         else
-            selectedIndices = [];
+            _proposedSelectedIndices = [];
+
+        commitMultipleSelection();
     }

     //----------------------------------
@@ -231,8 +233,8 @@
      */
     override public function get selectedItem():*
     {
-        if (_selectedIndices && _selectedIndices.length > 0)
-            return dataProvider.getItemAt(_selectedIndices[_selectedIndices.length - 1]);
+        if (selectedIndices && selectedIndices.length > 0)
+            return dataProvider.getItemAt(selectedIndices[selectedIndices.length - 1]);

         return super.selectedItem;
     }
@@ -247,10 +249,12 @@

         super.selectedItem = value;

-        if (value !== undefined)
-            selectedItems = [value];
+        if (value !== undefined && dataProvider)
+            _proposedSelectedIndices = [dataProvider.getItemAt(value)];
         else
-            selectedItems = [];
+            _proposedSelectedIndices = [];
+
+        commitMultipleSelection();
     }

@@ -264,7 +268,10 @@

     [Bindable("selectionChanged")]
     /**
-     *  Selected indices for this component.
+     *  Selected indices for this component. If multiple selection
+     *  is off and this property is set, the first value in
+     *  the Array will be selected in order to honor single
+     *  selection.
      *
      *  @default null
      *
@@ -293,7 +300,10 @@

     [Bindable("selectionChanged")]
     /**
-     *  Selected items for this component.
+     *  Selected items for this component. If multiple selection
+     *  is off and this property is set, the first value in
+     *  the Array will be selected in order to honor single
+     *  selection.
      *
      *  @default null
      *
@@ -369,9 +379,15 @@
     {
         var retVal:Boolean = super.commitSelectedIndex();

+        // The requiresSelection property is handled by ListBase.
+        // When true, selectedIndex gets updated in commitSelectedIndex()
+        // in the parent class. We need to ensure the selectedIndices
+        // property stays in-sync and so we override commitSelectedIndex
+        // here to keep the properties in lockstep with each other.
         if (_selectedIndex != NO_SELECTION)
+        {
             selectedIndices = [_selectedIndex];
-
+        }
         return retVal;
     }

@@ -507,6 +523,14 @@
         var addedItems:Array = [];
         var i:int;
         var count:int;
+
+        // Ensure that multiple selection is allowed and that proposed
+        // selected indices honors it. For example, in the single
+        // selection case, proposedSelectedIndices should only be an
+        // array of 1 entry. If its not, we pare it down and select the
+        // first item.
+        if (!allowMultipleSelection && _proposedSelectedIndices.length > 1)
+            _proposedSelectedIndices = [_proposedSelectedIndices[0]];

         if (!isEmpty(_selectedIndices) && !isEmpty(_proposedSelectedIndices))
         {


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

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

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

Modified Paths:
--------------
663 paths were modified

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

--- frameworks/projects/mx/src/mx/containers/DividedBox.as
+++ frameworks/projects/mx/src/mx/containers/DividedBox.as
@@ -43,6 +43,11 @@
  *  and before the dividerRelease event.
  *
  *  @eventType mx.events.DividerEvent.DIVIDER_DRAG
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Event(name="dividerDrag", type="mx.events.DividerEvent")]

@@ -53,6 +58,11 @@
  *  before any dividerDrag events are dispatched.
  *
  *  @eventType mx.events.DividerEvent.DIVIDER_PRESS
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Event(name="dividerPress", type="mx.events.DividerEvent")]

@@ -70,6 +80,11 @@
  *  DividerBox's updateComplete event has been triggered.
  *
  *  @eventType mx.events.DividerEvent.DIVIDER_RELEASE
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Event(name="dividerRelease", type="mx.events.DividerEvent")]

@@ -87,6 +102,11 @@
  *  A resize cursor appears when the mouse is over this area.
  *
  *  @default 6
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="dividerAffordance", type="Number", format="Length", inherit="no")]

@@ -96,6 +116,11 @@
  *  and a value of 1.0 means completely opaque.
  *
  *  @default 0.75
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="dividerAlpha", type="Number", inherit="no")]

@@ -106,6 +131,11 @@
  *  only the divider's knob is shown.
  *
  *  @default 0x6F7777
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="dividerColor", type="uint", format="Color", inherit="yes")]

@@ -113,6 +143,11 @@
  *  The divider skin.
  *
  *  The default value is the "mx.skin.BoxDividerSkin" symbol in the Assets.swf file.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="dividerSkin", type="Class", inherit="no")]

@@ -124,6 +159,11 @@
  *  The visible thickness cannot be set to a value larger than the affordance.
  *
  *  @default 3
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="dividerThickness", type="Number", format="Length", inherit="no")]

@@ -131,6 +171,11 @@
  *  The cursor skin for a horizontal DividedBox.
  *
  *  The default value is the "mx.skins.cursor.HBoxDivider" symbol in the Assets.swf file.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="horizontalDividerCursor", type="Class", inherit="no")]

@@ -138,6 +183,11 @@
  *  The cursor skin for a vertical DividedBox.
  *
  *  The default value is the "mx.skins.cursor.VBoxDivider" symbol in the Assets.swf file.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Style(name="verticalDividerCursor", type="Class", inherit="no")]

@@ -237,6 +287,11 @@
  *  @see mx.containers.VDividedBox
  *
  *  @includeExample examples/DividedBoxExample.mxml
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class DividedBox extends Box
 {
@@ -293,6 +348,11 @@

 	/**
 	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function DividedBox()
 	{
@@ -439,6 +499,11 @@
 	 *  The class for the divider between the children.
 	 *
 	 *  @default mx.containers.dividedBoxClasses.BoxDivider
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	protected var dividerClass:Class = BoxDivider;

@@ -454,6 +519,11 @@
 	 *  If false, they are not resized
 	 *  until the user releases the divider.
 	 *  @default false
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var liveDragging:Boolean = false;

@@ -466,6 +536,11 @@
 	 *  The count is always numChildren - 1.
 	 *
 	 *  @return The number of dividers.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function get numDividers():int
 	{
@@ -483,6 +558,11 @@
 	 *  If true, the DividedBox automatically resizes to the size
 	 *  of its children.
      *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function	get	resizeToContent():Boolean
     {
@@ -697,6 +777,11 @@
 	 *  or from the top for a vertical DividedBox.
 	 *
 	 *  @return A BoxDivider object.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function getDividerAt(i:int):BoxDivider
 	{
@@ -715,6 +800,11 @@
      *  a divider up or left. The divider movement is
      *  constrained in the same manner as if a user
  	 *  had moved it.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function moveDivider(i:int, amt:Number):void
 	{


Transferred from the Adobe Open Source Subversion Repository

Revision: 9177
Author:   jimurphy@adobe.com
Date:     2009-08-07T21:15:07.894169Z

Log Message:
-----------
Merged 3.4 revisions 8630,8660,8683,8735,8750,8753,8755,8757,8759,8764,8776,8798,8821,8824,8837,8862,8911,8946,8949,8962,8965,9026,9109,9131,9138-9139,9147 -> trunk

integrates:
player: 10.0.32.18
AIR kit: 1.5.2.8870 (20090721ap)

checkintests: pass

(btw: I'm not happy about doing this on a Friday PM!)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/in/air/air_version.txt</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/BrowserManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/mac/Install Flash Player 10 UB.dmg</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/mac/AIR Integration Kit.tbz2</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPMultiService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/player/10/playerglobal.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncResponder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SimpleXMLDecoder.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/flashplayer.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/in/air/win/AIR Integration Kit.zip</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/libflashplayer.so.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/FlashPlayer.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/mac/Flash Player.app.zip</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/lib/flex-messaging-common.jar</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/Install Flash Player 10 Plugin.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/mxml/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/AbstractWebService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/win/Install Flash Player 10 ActiveX.exe</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/MessagePerformanceUtils.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/mxml/IMXMLSupport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/ISOAPDecoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/AbstractOperation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/in/player/10/lnx/install_flash_player_10_linux.tar.gz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SimpleXMLEncoder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Text.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLSchemaInstance.as</path>

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

--- frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as
+++ frameworks/projects/rpc/src/mx/rpc/http/HTTPService.as
@@ -80,6 +80,22 @@
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
+
+  /**
+  *  You use the HTTPService class to represent an
+  *  HTTPService object in ActionScript. When you call the HTTPService object's
+  *  send() method, it makes an HTTP request to the
+  *  specified URL, and an HTTP response is returned. Optionally, you can pass
+  *  parameters to the specified URL. When you do not go through the server-based
+  *  proxy service, you can use only HTTP GET or POST methods. However, when you set
+  *  the useProxy  property to true and you use the server-based proxy service, you
+  *  can also use the HTTP HEAD, OPTIONS, TRACE, and DELETE methods.
+  *
+  *
Note: Due to a software limitation, HTTPService does not generate user-friendly
+  *  error messages when using GET.

+  *
+  *  @see mx.rpc.http.mxml.HTTPService
+  */
 public class HTTPService extends AbstractInvoker
 {
     //--------------------------------------------------------------------------
@@ -835,6 +851,11 @@
      *  as specified in the server configuration. For example, if you're connected over the my-rtmp channel
      *  and you log out using one of your RPC components, anything that was connected over my-rtmp is logged out.
      *
+     *
Note: Adobe recommends that you use the mx.messaging.ChannelSet.logout() method
+     *  rather than this method.

+     *
+     *  @see mx.messaging.ChannelSet#logout()
+     *
      *  @langversion 3.0
      *  @playerversion Flash 9
      *  @playerversion AIR 1.1


Transferred from the Adobe Open Source Subversion Repository

Revision: 11017
Author:   egeorgie@adobe.com
Date:     2009-10-19T23:55:34.596395Z

Log Message:
-----------
Drag and Drop - add dragging support to TileLayout

QE notes: TileLayout drag and drop is ready for testing now.
Doc notes: None
Bugs: None
Reviewer: Deepa
Tests run: checkintests, mustella (ListDragDrop, List)
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -1266,8 +1266,16 @@
             }
         }

+        // If selection is pending on mouse up then we have just moused down on
+        // an item, part of an already commited selection.
+        // However if we moused down on an item that's not currently selected,
+        // we must commit the selection before trying to start dragging since
+        // listeners may prevent the item from being selected.
+        if (!pendingSelectionOnMouseUp)
+            validateProperties();
+
         // Handle any drag gestures that may have been started
-        if (!dragEnabled)
+        if (!dragEnabled || this.selectedIndices.indexOf(newIndex) == -1)
             return;

         mouseDownPoint = event.target.localToGlobal(new Point(event.localX, event.localY));
@@ -1281,7 +1289,7 @@
         systemManager.getSandboxRoot().addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, mouseUpHandler, false, 0, true);
         systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler, false, 0, true);
     }
-
+
     /**
      *  Handles MouseEvent.MOUSE_MOVE events from any mouse
      *  targets contained in the list including the renderers.  This method


Some memory-related fixes in DTCrowd.

Some memory-related fixes in DTCrowd.

--- as3_lib/src/recastnavigation/detour/crowd/DTCrowd.as
+++ as3_lib/src/recastnavigation/detour/crowd/DTCrowd.as
@@ -83,7 +83,7 @@
             }
             for (var i:int = 0; i < maxAgents; ++i)
             {
-                var agent_ptr:int = ptr + OFFSET_M_AGENTS + DTCrowdAgent.SIZE * i;
+                var agent_ptr:int = CModule.read32(ptr + OFFSET_M_AGENTS) + DTCrowdAgent.SIZE * i;
                 _agents[i].ptr = agent_ptr;

                 // Alloc new localvar to hold agent's userData.
@@ -229,11 +229,11 @@
         }

         [Inline]
-        private function handleUserData(idx:int, params:DTCrowdAgentParams):void
+        private final function handleUserData(idx:int, params:DTCrowdAgentParams):void
         {
             // Restore agent params' userData localvar.
             var localvar_ptr:int = _localvars[idx];
-            var userData_ptr:int = ptr + OFFSET_M_AGENTS + DTCrowdAgent.SIZE * idx + DTCrowdAgent.OFFSET_PARAMS + DTCrowdAgentParams.OFFSET_USER_DATA;
+            var userData_ptr:int = CModule.read32(ptr + OFFSET_M_AGENTS) + DTCrowdAgent.SIZE * idx + DTCrowdAgent.OFFSET_PARAMS + DTCrowdAgentParams.OFFSET_USER_DATA;
             CModule.write32(userData_ptr, localvar_ptr);

             // Put userData from argument params to agent params.


Transferred from the Adobe Open Source Subversion Repository

Revision: 8
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-15T01:49:31.087529Z

Log Message:
-----------
The beginning of the open-source Flex SDK.

Populated the flex/sdk/trunk directory with an open-source subset of files from //depot/flex/sdk/...@191097 in the Faramir Perforce server. This changelist is a bit past the 3.0rc0 build.

The Ant scripts will not successfully build yet. They need to be adapted to the open-source subset.

Modified Paths:
--------------
2532 paths were modified

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

--- frameworks/projects/rpc/src/mx/rpc/xml/ContentProxy.as
+++ frameworks/projects/rpc/src/mx/rpc/xml/ContentProxy.as
@@ -0,0 +1,286 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2006-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.rpc.xml
+{
+
+import flash.utils.getQualifiedClassName;
+import flash.utils.flash_proxy;
+import flash.utils.Proxy;
+import mx.utils.object_proxy;
+import mx.utils.ObjectProxy;
+import mx.utils.ObjectUtil;
+
+[ExcludeClass]
+
+/**
+ * Wraps the value of an element's or child type's content so that it can be
+ * added as a property to a parent complex type at a later time when processing
+ * against a Schema.
+ *
+ * @private
+ */
+public dynamic class ContentProxy extends Proxy
+{
+    public function ContentProxy(content:* = undefined, makeObjectsBindable:Boolean = false, isSimple:Boolean = true)
+    {
+        super();
+
+        object_proxy::content = content;
+        object_proxy::makeObjectsBindable = makeObjectsBindable;
+        object_proxy::isSimple = isSimple;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Internal Properties
+    //
+    //--------------------------------------------------------------------------
+
+    object_proxy function get makeObjectsBindable():Boolean
+    {
+        return _makeObjectsBindable;
+    }
+
+    object_proxy function set makeObjectsBindable(value:Boolean):void
+    {
+        _makeObjectsBindable = value;
+        if (value && !_isSimple && !(_content is ObjectProxy))
+        {
+            _content = new ObjectProxy(_content);
+        }
+    }
+
+    object_proxy function get isSimple():Boolean
+    {
+        return _isSimple;
+    }
+
+    object_proxy function set isSimple(value:Boolean):void
+    {
+        _isSimple = value;
+    }
+
+    object_proxy function get content():*
+    {
+        return _content;
+    }
+
+    object_proxy function set content(value:*):void
+    {
+        if (value is ContentProxy)
+            value = ContentProxy(value).object_proxy::content;
+        _content = value;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Returns the specified property value of the proxied object.
+     *
+     *  @param name Typically a string containing the name of the property,
+     *  or possibly a QName where the property name is found by
+     *  inspecting the localName property.
+     *
+     *  @return The value of the property.
+     *  In some instances this value may be an instance of
+     *  ObjectProxy.
+     */
+    override flash_proxy function getProperty(name:*):*
+    {
+        if (_content != null)
+            return _content[name];
+        else
+            return undefined;
+    }
+
+    /**
+     *  Returns the value of the proxied object's method with the specified name.
+     *
+     *  @param name The name of the method being invoked.
+     *
+     *  @param rest An array specifying the arguments to the
+     *  called method.
+     *
+     *  @return The return value of the called method.
+     */
+    override flash_proxy function callProperty(name:*, ... rest):*
+    {
+        if (_content != null)
+            return _content[name].apply(_content, rest);
+        else
+            return undefined;
+    }
+
+    /**
+     *  Deletes the specified property on the proxied object.
+     *
+     *  @param name Typically a string containing the name of the property,
+     *  or possibly a QName where the property name is found by
+     *  inspecting the localName property.
+     *
+     *  @return A Boolean indicating if the property was deleted.
+     */
+    override flash_proxy function deleteProperty(name:*):Boolean
+    {
+        var deleted:Boolean;
+        if (!_isSimple && _content != null)
+        {
+            var oldVal:Object = _content[name];
+            deleted = delete _content[name];
+        }
+        return deleted;
+    }
+
+    /**
+     *  This is an internal function that must be implemented by
+     *  a subclass of flash.utils.Proxy.
+     *
+     *  @param name The property name that should be tested
+     *  for existence.
+     *
+     *  @see flash.utils.Proxy#hasProperty()
+     */
+    override flash_proxy function hasProperty(name:*):Boolean
+    {
+        var hasProperty:Boolean;
+        if (_content != null)
+        {
+            hasProperty = (name in _content);
+        }
+        return hasProperty;
+    }
+
+    /**
+     *  Updates the specified property on the proxied object.
+     *
+     *  @param name Object containing the name of the property that
+     *  should be updated on the proxied object.
+     *
+     *  @param value Value that should be set on the proxied object.
+     */
+    override flash_proxy function setProperty(name:*, value:*):void
+    {
+        var oldContent:*;
+
+        if (_isSimple)
+        {
+            oldContent = _content;
+            if (oldContent !== value)
+            {
+                _content = value;
+            }
+        }
+        else
+        {
+            if (_content == null)
+                _content = object_proxy::createObject();
+
+            oldContent = _content[name];
+            if (oldContent !== value)
+            {
+                _content[name] = value;
+            }
+        }
+    }
+
+    /**
+     *  This is an internal function that must be implemented by
+     *  a subclass of flash.utils.Proxy.
+     *
+     *  @see flash.utils.Proxy#nextName()
+     */
+    override flash_proxy function nextName(index:int):String
+    {
+        return _propertyList[index - 1];
+    }
+
+    /**
+     *  This is an internal function that must be implemented by
+     *  a subclass of flash.utils.Proxy.
+     *
+     *  @see flash.utils.Proxy#nextNameIndex()
+     */
+    override flash_proxy function nextNameIndex(index:int):int
+    {
+        if (index == 0)
+        {
+            object_proxy::setupPropertyList();
+        }
+
+        if (index < _propertyList.length)
+        {
+            return index + 1;
+        }
+        else
+        {
+            return 0;
+        }
+    }
+
+    /**
+     *  This is an internal function that must be implemented by
+     *  a subclass of flash.utils.Proxy.
+     *
+     *  @see flash.utils.Proxy#nextValue()
+     */
+    override flash_proxy function nextValue(index:int):*
+    {
+        if (!_isSimple && _content != null)
+        {
+            return _content[_propertyList[index -1]];
+        }
+        return undefined;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Internal Methods
+    //
+    //--------------------------------------------------------------------------
+
+    object_proxy function setupPropertyList():void
+    {
+        if (getQualifiedClassName(_content) == "Object")
+        {
+            _propertyList = [];
+            for (var prop:String in _content)
+                _propertyList.push(prop);
+        }
+        else
+        {
+            _propertyList = ObjectUtil.getClassInfo(_content, null, {includeReadOnly:false, uris:["*"]}).properties;
+        }
+    }
+
+    object_proxy function createObject():*
+    {
+        if (object_proxy::makeObjectsBindable)
+        {
+            return new ObjectProxy();
+        }
+        else
+        {
+            return {};
+        }
+    }
+
+    private var _content:*;
+    private var _isSimple:Boolean = true;
+    private var _makeObjectsBindable:Boolean;
+    private var _propertyList:Array;
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

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

--- frameworks/projects/spark/src/spark/effects/Animate.as
+++ frameworks/projects/spark/src/spark/effects/Animate.as
@@ -0,0 +1,183 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flex.effects
+{
+
+import flex.effects.easing.IEaser;
+import flex.effects.effectClasses.AnimateInstance;
+
+import mx.core.mx_internal;
+import mx.effects.Effect;
+import mx.effects.IEffectInstance;
+import mx.events.EffectEvent;
+import mx.styles.IStyleClient;
+
+use namespace mx_internal;
+
+[DefaultProperty("propertyValuesList")]
+
+/**
+ * This effect animates an arbitrary set of properties between values, as specified
+ * in the propertyValuesList array. Example usage is as follows:
+ *
+ * @example Using the Animate effect to move a button from (100, 100)
+ * to (200, 150):
+ * <listing version="3.0">
+ * var button:Button = new Button();
+ * var anim:Animate = new Animate(button);
+ * anim.propertyValuesList = [
+ *     new PropertyValuesHolder("x", [100,200]),
+ *     new PropertyValuesHolder("y", [100,150])];
+ * anim.play();
+ * </listing>
+ */
+public class Animate extends Effect
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     */
+    public function Animate(target:Object = null)
+    {
+        super(target);
+
+        instanceClass = AnimateInstance;
+
+        mx_internal::applyTransitionEndProperties = true;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    // Cached version of the affected properties. By default, we simply return
+    // the list of properties specified in the propertyValuesList array.
+    // Subclasses should override getAffectedProperties() if they wish to
+    // specify a different set.
+    private var affectedProperties:Array = null;
+
+    //--------------------------------------------------------------------------
+    //
+    // Properties
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     * An array of PropertyValuesHolder objects, each of which holds the
+     * name of the property being animated and the values that the property
+     * will take on during the animation.
+     */
+    public var propertyValuesList:Array;
+
+    public var easer:IEaser;
+
+    public var repeatBehavior:String = Animation.LOOP;
+
+    //--------------------------------------------------------------------------
+    //
+    // Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     * By default, the affected properties are the same as those specified
+     * in the propertyValuesList array. If subclasses affect
+     * or track a different set of properties, they should override this
+     * method.
+     */
+    override public function getAffectedProperties():Array /* of String */
+    {
+        if (!affectedProperties && propertyValuesList)
+        {
+            affectedProperties = new Array(propertyValuesList.length);
+            for (var i:int = 0; i < propertyValuesList.length; ++i)
+            {
+                var effectHolder:PropertyValuesHolder = PropertyValuesHolder(propertyValuesList[i]);
+                affectedProperties[i] = effectHolder.property;
+            }
+        }
+        return affectedProperties;
+    }
+
+    /**
+     *  @private
+     */
+    override protected function initInstance(instance:IEffectInstance):void
+    {
+        super.initInstance(instance);
+
+        var animateInstance:AnimateInstance = AnimateInstance(instance);
+
+        if (easer)
+            animateInstance.easer = easer;
+
+        if (isNaN(repeatCount))
+            animateInstance.repeatCount = repeatCount;
+
+        animateInstance.repeatBehavior = repeatBehavior;
+
+        // Deep-copy the propertyValuesList into the instance
+        if (propertyValuesList != null)
+        {
+            animateInstance.propertyValuesList = new Array(propertyValuesList.length);
+            var i:int, j:int;
+            for (i = 0; i < propertyValuesList.length; ++i)
+            {
+                var effectHolder:PropertyValuesHolder = PropertyValuesHolder(propertyValuesList[i]);
+                var holder:PropertyValuesHolder = new PropertyValuesHolder();
+                holder.property = effectHolder.property;
+                if (effectHolder.values)
+                {
+                    holder.values = new Array(effectHolder.values.length);
+                    for (j = 0; j < effectHolder.values.length; ++j)
+                    {
+                        holder.values[j] = effectHolder.values[j];
+                    }
+                }
+                else
+                {
+                    holder.values = [undefined, undefined];
+                }
+                animateInstance.propertyValuesList[i] = holder;
+            }
+        }
+    }
+
+    override protected function applyValueToTarget(target:Object, property:String,
+                                          value:*, props:Object):void
+    {
+        if (property in target)
+        {
+            // The "property in target" test only tells if the property exists
+            // in the target, but does not distinguish between read-only and
+            // read-write properties. Put a try/catch around the setter and
+            // ignore any errors.
+            try
+            {
+                target[property] = value;
+            }
+            catch(e:Error)
+            {
+                // Ignore errors
+            }
+        }
+    }
+}
+}