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

--- frameworks/projects/framework/src/mx/collections/CursorBookmark.as
+++ frameworks/projects/framework/src/mx/collections/CursorBookmark.as
@@ -0,0 +1,121 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.collections
+{
+
+/**
+ *  Encapsulates the positional aspects of a cursor in an
+ *  ICollectionView.  Bookmarks are used to return a cursor to
+ *  an absolute position within the ICollectionView.
+ *
+ *  @see mx.collections.IViewCursor#bookmark
+ *  @see mx.collections.IViewCursor#seek()
+ */
+public class CursorBookmark
+{
+    include "../core/Version.as";
+
+    private static var _first:CursorBookmark;
+    private static var _last:CursorBookmark;
+    private static var _current:CursorBookmark;
+
+    /**
+     *  A bookmark for the first item in an ICollectionView.
+     *
+     *  @return The bookmark to the first item.
+     */
+    public static function get FIRST():CursorBookmark
+    {
+        if (!_first)
+            _first = new CursorBookmark("${F}");
+        return _first;
+    }
+
+    /**
+     *  A bookmark for the last item in an ICollectionView.
+     * If the view has no items, the cursor is at this bookmark.
+     *
+     *  @return The bookmark to the last item.
+     */
+    public static function get LAST():CursorBookmark
+    {
+        if (!_last)
+            _last = new CursorBookmark("${L}");
+        return _last;
+    }
+
+    /**
+     *  A bookmark representing the current item for the IViewCursor in
+     *  an ICollectionView.
+     *
+     *  @return The bookmark to the current item.
+     */
+    public static function get CURRENT():CursorBookmark
+    {
+        if (!_current)
+            _current = new CursorBookmark("${C}");
+        return _current;
+    }
+
+    /**
+     *  Creates a new instance of a bookmark with the specified value.
+     *
+     *  @param value The value of this bookmark.
+     */
+    public function CursorBookmark(value:Object)
+    {
+        super();
+        _value = value;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    // value
+    //----------------------------------
+
+    private var _value:Object;
+
+    /**
+     *  The underlying marker representation of the bookmark.
+     *  This value is generally understood only by the IViewCursor
+     *  or ICollectionView implementation.
+     */
+    public function get value():Object
+    {
+        return _value;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Get the approximate index of the item represented by this bookmark
+     *  in its view.  If the item has been paged out this method could throw an
+     *  ItemPendingError.  If the item is not in the current view -1 is
+     *  returned.  This method also returns -1 if index-based location is not
+     *  possible.
+     */
+    public function getViewIndex():int
+    {
+        return -1;
+    }
+}
+
+}


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

--- frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as
+++ frameworks/projects/framework/src/mx/core/ResourceModuleRSLItem.as
@@ -0,0 +1,124 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.core
+{
+
+import flash.events.ErrorEvent;
+import flash.events.Event;
+import flash.events.IEventDispatcher;
+import flash.events.IOErrorEvent;
+import flash.events.ProgressEvent;
+import mx.events.ResourceEvent;
+import mx.events.RSLEvent;
+import mx.resources.IResourceManager;
+import mx.resources.ResourceManager;
+
+[ExcludeClass]
+
+/**
+ *	@private
+ *
+ *  Preloads a resource module during frame 1, from an URL that was
+ *  specified in the application's parameters["resourceModuleURLs"].
+ *
+ *  The Preloader uses RSLListLoader to sequentially load
+ *  cross-domain RSLs, regular RSLs, and resource modules.
+ *  Each of these is represented by an RSLItem in a queue
+ *  processed by RSLListLoader.
+ *  The class names ResourceModuleRSLItem, RSLItem, RSLListLoader,
+ *  and RSLEvent are slightly misleading in that a resource module
+ *  isn't really an RSL.
+ */
+public class ResourceModuleRSLItem extends RSLItem
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+    /**
+	 *  @private
+     */
+	public function ResourceModuleRSLItem(url:String)
+	{
+		super(url);
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *
+	 *  Preloads a resource module
+     *
+     *  @param progressHandler Receives ProgressEvent.PROGRESS events, may be null
+	 *
+     *  @param completeHandler Receives Event.COMPLETE events, may be null
+	 *
+     *  @param ioErrorHandler Receives IOErrorEvent.IO_ERROR events, may be null
+	 *
+     *  @param securityErrorHandler Receives SecurityErrorEvent.SECURITY_ERROR events, may be null
+	 *
+     *  @param rslErrorHandler Receives RSLEvent.RSL_ERROR events, may be null
+	 */
+	override public function load(progressHandler:Function,
+                                  completeHandler:Function,
+	                              ioErrorHandler:Function,
+	                              securityErrorHandler:Function,
+	                              rslErrorHandler:Function):void
+	{
+	    chainedProgressHandler = progressHandler;
+	    chainedCompleteHandler = completeHandler;
+	    chainedIOErrorHandler = ioErrorHandler;
+	    chainedSecurityErrorHandler = securityErrorHandler;
+	    chainedRSLErrorHandler = rslErrorHandler;
+
+		var resourceManager:IResourceManager = ResourceManager.getInstance();
+
+		var eventDispatcher:IEventDispatcher =
+			resourceManager.loadResourceModule(url);
+
+		eventDispatcher.addEventListener(
+			ResourceEvent.PROGRESS, itemProgressHandler);
+
+		eventDispatcher.addEventListener(
+			ResourceEvent.COMPLETE, itemCompleteHandler);
+
+		eventDispatcher.addEventListener(
+			ResourceEvent.ERROR, resourceErrorHandler);
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden event handlers
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private function resourceErrorHandler(event:ResourceEvent):void
+	{
+		var errorEvent:IOErrorEvent = new IOErrorEvent(IOErrorEvent.IO_ERROR);
+		errorEvent.text = event.errorText;
+
+		super.itemErrorHandler(errorEvent);
+	}
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 8531
Author:   cframpto@adobe.com
Date:     2009-07-13T19:25:57.883279Z

Log Message:
-----------
If using an embedded font, need to measure the text with it so that if auto-sizing, the correct amount of space is allocated.

QA Notes:
Doc Notes: SDK-22205.
Reviewers: will be Gordon

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/RichEditableText.as

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -1606,7 +1606,10 @@
             // SWF where the embedded font is.)
             // Otherwise, this will be null.
             embeddedFontContext = getEmbeddedFontContext();
-
+
+            _textContainerManager.textLineCreator =
+                ITextLineCreator(embeddedFontContext);
+
             if (debug)
                 trace("hostFormat=");
             _textContainerManager.hostFormat =
@@ -1949,17 +1952,21 @@
         // If we're autoSizing we're telling the layout manager one set of
         // values and TLF another set of values so there is room for the text
         // to grow.
-        if  (!autoSize)
-        {
-            _textContainerManager.compositionWidth = unscaledWidth;
+
+        // TODO:(cframpto) compositionWidth can be NaN when
+        // autoSize for blockProgression=="rl" is implemented
+
+        // FIXME:(cframpto) remove NaN check when TLF setter is fixed
+        // to check for NaN correctly
+
+        _textContainerManager.compositionWidth = unscaledWidth;
+        if (!autoSize)
             _textContainerManager.compositionHeight = unscaledHeight;
-        }
-
+        else if (!isNaN(_textContainerManager.compositionHeight))
+            _textContainerManager.compositionHeight = NaN;
+
         if (debug)
             trace("updateContainer()");
-
-        _textContainerManager.textLineCreator =
-            ITextLineCreator(embeddedFontContext);

         _textContainerManager.updateContainer();
     }
@@ -2378,7 +2385,8 @@
         // If dimension is NaN, composer will measure text in that
         // direction.  This can cause a damage event if changed.
         _textContainerManager.compositionWidth = composeWidth;
-        _textContainerManager.compositionHeight = NaN;
+        if (!isNaN(_textContainerManager.compositionHeight))
+            _textContainerManager.compositionHeight = NaN;

         // Compose only.  The display should not be updated.
         _textContainerManager.compose();
@@ -2468,15 +2476,6 @@
         // because there is flicker as the display objects are updated with the
         // sizes and positions from layout pass1 and then from layout pass 2.
         invalidateSize();
-
-        // Changing the text size can change the
-        // size of other components, for example, if text is in a panel.
-        // If we do not intervene, the rest of the updates will occur, then any
-        // invalidated components will be remeasured and the display updated
-        // again, which can cause flicker if the sizes change.
-        //if (parentDocument is UIComponent)
-        //    (UIComponent(parentDocument)).validateNow();
-        // return false;

         return true;
     }
@@ -2490,13 +2489,6 @@
      */
     private function calculateFontMetrics():void
     {
-        // If the CSS styles for this component specify an embedded font,
-        // embeddedFontContext will be set to the module factory that
-        // should create TextLines (since they must be created in the
-        // SWF where the embedded font is.)
-        // Otherwise, this will be null.
-        embeddedFontContext = getEmbeddedFontContext();
-
         var fontDescription:FontDescription = new FontDescription();

         var s:String;
@@ -2519,7 +2511,7 @@
             // specify an embedded font.
             if (s == "auto")
             {
-                s = embeddedFontContext ?
+                s = _textContainerManager.textLineCreator ?
                     FontLookup.EMBEDDED_CFF :
                     FontLookup.DEVICE;
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 4632
Author:   gosmith@adobe.com
Date:     2009-01-23T01:04:09.458652Z

Log Message:
-----------
TextView (and therefore FxTextArea) now supports line-by-line, instead of pixel-by-pixel, vertical scrolling, by using the scrollLines() method in TLF.

QE Notes: None
Doc Notes: None
Bugs: SDK-18752
Reviewer: Deepa

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -13,7 +13,6 @@
 {

 import flash.display.BlendMode;
-import flash.display.Graphics;
 import flash.events.Event;
 import flash.events.FocusEvent;
 import flash.geom.Rectangle;
@@ -22,19 +21,15 @@
 import flash.text.engine.TextBlock;
 import flash.text.engine.TextElement;
 import flash.text.engine.TextLine;
-import flash.ui.Keyboard;

 import flashx.textLayout.compose.IFlowComposer;
 import flashx.textLayout.compose.StandardFlowComposer;
 import flashx.textLayout.container.DisplayObjectContainerController;
 import flashx.textLayout.container.IContainerController;
-import flashx.textLayout.conversion.ImportExportConfiguration;
-import flashx.textLayout.conversion.ITextImporter;
+import flashx.textLayout.conversion.ConversionType;
 import flashx.textLayout.conversion.TextFilter;
-import flashx.textLayout.conversion.ConversionType;
 import flashx.textLayout.edit.EditManager;
 import flashx.textLayout.edit.EditingMode;
-import flashx.textLayout.edit.IEditManager;
 import flashx.textLayout.edit.ISelectionManager;
 import flashx.textLayout.edit.IUndoManager;
 import flashx.textLayout.edit.SelectionFormat;
@@ -56,7 +51,6 @@
 import flashx.textLayout.formats.IContainerFormat;
 import flashx.textLayout.formats.IParagraphFormat;
 import flashx.textLayout.formats.ParagraphFormat;
-import flashx.textLayout.operations.ApplyFormatOperation;
 import flashx.textLayout.operations.CutOperation;
 import flashx.textLayout.operations.DeleteTextOperation;
 import flashx.textLayout.operations.FlowOperation;
@@ -66,9 +60,9 @@
 import flashx.textLayout.operations.SplitParagraphOperation;

 import mx.core.IViewport;
+import mx.core.ScrollUnit;
+import mx.core.UIComponent;
 import mx.core.mx_internal;
-import mx.core.UIComponent;
-import mx.core.ScrollUnit;
 import mx.events.FlexEvent;
 import mx.events.TextOperationEvent;
 import mx.utils.StringUtil;
@@ -1021,30 +1015,50 @@
             return 0;

         var maxDelta:Number = contentHeight - scrollR.height - scrollR.y;
-        var minDelta:Number = -scrollR.y;
+        var minDelta:Number = -scrollR.y;
+
+        var flowComposer:IFlowComposer = textFlow.flowComposer;

         switch (unit)
         {
             case ScrollUnit.UP:
-                return (scrollR.y <= 0) ? 0 : -1;
+            {
+        		return !flowComposer || flowComposer.numControllers == 0 ?
+            		   0 :
+            		   flowComposer.getControllerAt(0).scrollLines(-1);
+            }

             case ScrollUnit.DOWN:
-                return (scrollR.y >= maxDelta) ? 0 : 1;
+            {
+        		return !flowComposer || flowComposer.numControllers == 0 ?
+					   0 :
+					   flowComposer.getControllerAt(0).scrollLines(1);
+            }

             case ScrollUnit.PAGE_UP:
+            {
                 return Math.max(minDelta, -scrollR.height);
+            }

             case ScrollUnit.PAGE_DOWN:
+            {
                 return Math.min(maxDelta, scrollR.height);
+            }

-            case ScrollUnit.HOME:
+            case ScrollUnit.HOME:
+            {
                 return minDelta;
+            }

-            case ScrollUnit.END:
+            case ScrollUnit.END:
+           	{
                 return maxDelta;
+            }

             default:
+            {
                 return 0;
+            }
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 11675
Author:   hmuller@adobe.com
Date:     2009-11-12T00:25:39.300334Z

Log Message:
-----------
Added minValue,maxValue,etc Style/Inspectable metadata tags for tools.

QE notes:
Doc notes:
Bugs: sdk-24100
Reviewer: Glenn
Tests run:
Is noteworthy for integration: yes

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/spark/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/styles/metadata/BasicInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Fade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AddAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/GradientStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/VideoElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/SolidColorStroke.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Rect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/styles/metadata/BasicNonInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/SolidColor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.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/framework/src/mx/graphics/GradientEntry.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Keyframe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/styles/metadata/AdvancedInheritingTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Range.as</path>

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

--- frameworks/projects/spark/src/spark/effects/animation/Animation.as
+++ frameworks/projects/spark/src/spark/effects/animation/Animation.as
@@ -258,6 +258,10 @@
      * Storage for the animationTarget property.
      */
     private var _playheadTime:Number;
+
+    [Inspectable(minValue="0.0")]
+
+
     /**
      *  The total elapsed time of the animation, including any start delay
      *  and repetitions. For an animation playing through its first cycle,
@@ -293,6 +297,8 @@
     {
         return _isPlaying;
     }
+
+    [Inspectable(minValue="0.0")]

     /**
      *  The length of time, in milliseconds, of the animation,
@@ -352,6 +358,9 @@
      * Storage for the repeatCount property.
      */
     private var _repeatCount:int = 1;
+
+    [Inspectable(minValue="0")]
+
     /**
      *  The number of times that this animation repeats.
      *  A value of 0 means that it repeats indefinitely.
@@ -381,6 +390,9 @@
      * Storage for the repeatDelay property.
      */
     private var _repeatDelay:Number = 0;
+
+    [Inspectable(minValue="0.0")]
+
     /**
      *  The amount of time, in milliseconds, to delay before each repetition cycle
      *  begins. Setting this value to a non-zero number
@@ -418,6 +430,9 @@
      * Storage for the startDelay property.
      */
     private var _startDelay:Number = 0;
+
+    [Inspectable(minValue="0.0")]
+
     /**
      *  The amount of time spent waiting before the animation
      *  begins.


A fix for mismatching type casting introduced while migrating the class to XML

git-svn-id: c197267f952b24206666de142881703007ca05d5@11603 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/igniterealtime/xiff/vcard/VCard.as
+++ src/org/igniterealtime/xiff/vcard/VCard.as
@@ -616,10 +616,10 @@
 		 */
 		public function saveVCard( connection:XMPPConnection, user:RosterItemVO ):void
 		{
-			var iq:IQ = new IQ( null, IQ.TYPE_SET, XMPPStanza.generateID( "save_vcard_" ),
-								null, this, _vCardSent );
+			var id:String = XMPPStanza.generateID( "save_vcard_" );
+			var iq:IQ = new IQ( null, IQ.TYPE_SET, id, null, this, _vCardSent );
 			var vcardExt:VCardExtension = new VCardExtension();
-			var vcardExtNode:XML = vcardExt.getNode() as XML;
+			var vcardExtNode:XML = new XML(vcardExt.getNode().toString());
 			//var vcardExtNode:XML = vcardExt.node;

 			if ( firstName || middleName || lastName )


Avatar write support http://www.igniterealtime.org/community/thread/40952

--- src/org/igniterealtime/xiff/vcard/VCard.as
+++ src/org/igniterealtime/xiff/vcard/VCard.as
@@ -216,6 +216,7 @@

 		/**
 		 * Version of the VCard. Usually 2.0 or 3.0.
+		 * @see http://xmpp.org/extensions/xep-0054.html#impl
 		 */
 		public var version:Number;

@@ -268,6 +269,12 @@
 		 *
 		 */
 		private var _avatar:DisplayObject;
+
+		/**
+		 *
+		 * @hint for saving avatar
+		 */
+		private var _avatarType:String;

 		/**
 		 *
@@ -391,14 +398,26 @@
 		}

 		/**
-		 * Get the byte array to be used with a Loader.loadBytes or similar.
-		 * @return Avatar bytes if any
+		 * The byte array to be used with a Loader.loadBytes or similar.
 		 */
 		public function get avatar():ByteArray
 		{
 			return _imageBytes;
 		}
-
+		public function set avatar( value:ByteArray ) : void
+		{
+			_imageBytes = value;
+		}
+
+		/**
+		 * The image type of the avatar. Used for saving the image.
+		 * If this is blank, the avatar will not be saved.
+		 */
+		public function set avatarType( value:String ) : void
+		{
+			_avatarType = value;
+		}
+
 		/**
 		 * Deserializes the incoming IQ to fill the values of this vcard.
 		 * @param iq
@@ -572,7 +591,14 @@

 					case "AGE":
 						break;
-
+
+					//there is some ambiguity surrounding how vCard versions are handled
+					//so we need to check it here as well as looking for the attribute
+					//as above.  SEE:  http://xmpp.org/extensions/xep-0054.html#impl
+					case "VERSION":
+						version = Number(child.text());
+						break;
+
 					default:
 						trace( "handleVCard. unhandled case child.name(): " + child.name() );
 						break;
@@ -831,6 +857,38 @@
 				homeVoiceNode.NUMBER = homeVoiceNumber;
 				vcardExtNode.appendChild( homeVoiceNode );
 			}
+
+			if ( avatar != null && _avatarType != null)
+			{
+				var avatarNode:XML = <PHOTO/>
+				var avatarBase64:String;
+
+				try
+				{
+					avatarBase64 = Base64.encodeByteArray(avatar);
+				}
+				catch(err:Error)
+				{
+					throw new Error("VCard:saveVCard Error encoding bytes " + err.getStackTrace());
+				}
+
+				try
+				{
+					var binaryNode:XML = <BINVAL/>;
+					binaryNode.appendChild(avatarBase64);
+					avatarNode.appendChild(binaryNode);
+				}
+				catch(err:Error)
+				{
+					throw new Error("VCard:saveVCard Error converting bytes to string " + err.message);
+				}
+
+				var typeNode:XML = <TYPE/>;
+				typeNode.appendChild(_avatarType);
+				avatarNode.appendChild(typeNode);
+
+				vcardExtNode.appendChild( avatarNode );
+			}

 			iq.addExtension( vcardExt );
 			connection.send( iq );


http://www.igniterealtime.org/issues/browse/XIFF-60 Part 1.

git-svn-id: c197267f952b24206666de142881703007ca05d5@11269 b35dd754-fafc-0310-a699-88a17e54d16e

--- src/org/igniterealtime/xiff/conference/Room.as
+++ src/org/igniterealtime/xiff/conference/Room.as
@@ -768,7 +768,12 @@
 								roomEvent.data = form;
 								dispatchEvent( roomEvent );
 							}
-
+						}
+						else if ( msg.type == Message.CHAT_TYPE )
+						{
+							roomEvent = new RoomEvent( RoomEvent.PRIVATE_MESSAGE );
+							roomEvent.data = msg;
+							dispatchEvent( roomEvent );
 						}
 					}
 					else if ( isThisUser( msg.to.unescaped ) && msg.type == Message.CHAT_TYPE )


DateUtil の更新

DateUtil の更新

DateUtil#fromRFC822 と DateUtil#fromW3C を追加。

--- net/saqoosha/util/DateUtil.as
+++ net/saqoosha/util/DateUtil.as
@@ -1,10 +1,124 @@
-package net.saqoosha.util {
+package net.saqoosha.util {

 	public class DateUtil {

-		public static var dayNamesShort:Array = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
-		public static var monthNamesShort:Array = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct','Nov', 'Dec'];
+		public static const MILLISECOND:Number = 1;
+		public static const SECOND:Number = MILLISECOND * 1000;
+		public static const MINUTE:Number = SECOND * 60;
+		public static const HOUR:Number = MINUTE * 60;
+		public static const DAY:Number = HOUR * 24;
+
+		public static var dayNamesShort:Array = [
+			'Sun',
+			'Mon',
+			'Tue',
+			'Wed',
+			'Thu',
+			'Fri',
+			'Sat'
+		];
+
+		public static var monthNamesShort:Array = [
+			'Jan',
+			'Feb',
+			'Mar',
+			'Apr',
+			'May',
+			'Jun',
+			'Jul',
+			'Aug',
+			'Sep',
+			'Oct',
+			'Nov',
+			'Dec'
+		];
+
+        public static var monthNamesLong:Array = [
+			'January',
+			'Febrary',
+			'March',
+			'April',
+			'May',
+			'June',
+			'July',
+			'August',
+			'September',
+			'October',
+			'November',
+			'December'
+		];
+
+        public static var timezones:Object = {
+            'ADT': -3 * HOUR,
+            'AST': -4 * HOUR,
+            'CDT': -5 * HOUR,
+            'CST': -6 * HOUR,
+            'EDT': -4 * HOUR,
+            'EST': -5 * HOUR,
+            'GMT': 0,
+            'MDT': -6 * HOUR,
+            'MST': -7 * HOUR,
+            'PDT': -7 * HOUR,
+            'PST': -8 * HOUR,
+            'UT': 0,
+            'UTC': 0,
+            'Z': 0,
+            'A': -1 * HOUR,
+            'M': -12 * HOUR,
+            'N': 1 * HOUR,
+            'Y': 12 * HOUR
+        }

+        public static function fromRFC822(dateString:String):Date {
+            var parts:Array = dateString.split(/\s+/);
+            var dayNames:Array = dayNamesShort.map(function (...a):* {
+				return a[0].toLowerCase();
+			});
+
+            var dn:String = parts[0].toLowerCase();
+            var dl:int = dn.length - 1;
+            if ([',', '.'].indexOf(dn.charAt(dl)) !== -1 ||
+				dayNames.indexOf(dn) !== -1) {
+                parts.shift();
+            }
+
+            var Y:int, m:int, d:int;
+            d = int(parts.shift());
+            m = monthNamesShort.indexOf(parts.shift());
+            Y = int(parts.shift());
+
+            var H:int, M:int, S:int, times:Array, tzInfo:String;
+            //  check format.
+            if (parts.length) {
+                times = parts.shift().split(':');
+                H = int(times.shift());
+                M = int(times.shift());
+                S = int(times.shift());
+            }
+            else {
+                H = 0;
+                M = 0;
+                S = 0;
+            }
+            tzInfo = parts.shift() || 'GMT';
+
+            var op:int = 1, offset:Number = 0, utc:Number = Date.UTC(Y, m, d, H, M, S);
+
+            if (tzInfo.search(/\d/) === -1) {
+                offset = timezones[tzInfo];
+            }
+            else {
+                if (tzInfo.length > 4) {
+                    if (tzInfo.charAt(0) == '-') {
+                        op = -1;
+                    }
+                    tzInfo = tzInfo.substr(1, 4);
+                }
+                offset = (int(tzInfo.substr(0, 2)) * HOUR + int(tzInfo.substr(2, 2)) * MINUTE) * op;
+            }
+            return new Date(utc - offset);
+        }
+
 		public static function toRFC822(d:Date):String {
 			var date:Number = d.getDate();
 			var hours:Number = d.getHours();
@@ -53,5 +167,23 @@
 			sb += ofm;
 			return sb;
 		}
-	}
-}+
+        public static function fromW3C(dateString:String):Date {
+            var parts:Array = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})([-+](\d{2})(?::?(\d{2}))|Z)$/.exec(dateString);
+            var utc:Number = Date.UTC(parts[1], int(parts[2])-1, parts[3], parts[4], parts[5], parts[6]);
+
+            var offset:Number = 0;
+            var tzInfo:String = parts[7];
+            var hour:int = int(parts[8]);
+            var minutes:int = int(parts[9]);
+
+            if (tzInfo && tzInfo != 'Z') {
+                offset = hour * HOUR + minutes * MINUTE;
+                if (tzInfo.charAt(0) == '-') {
+                    offset *= -1;
+                }
+            }
+            return new Date(utc - offset);
+        }
+    }
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 6656
Author:   chaase@adobe.com
Date:     2009-05-05T20:09:55.169625Z

Log Message:
-----------
Fix to autoReverse capability in Transitions. This was broken in a recent refactoring where the seek() function went away (replaced by making playheadTime a read/write property). The code in UIComponent was not updated, so it was still trying to seek() on the reversing transition, which failed, making the end result a snap-to-end of the previous effect (just like the default autoReverse="false" behavior).
Fix was to refer to playheadTime instead of seek().

QE Notes: -
Doc Notes: -
Bugs: SDK-20661
Reviewer: Jason
tests: checkintests

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -8889,14 +8889,13 @@
         {
             if (_currentTransition.autoReverse &&
                 transitionFromState == requestedCurrentState &&
-                transitionToState == _currentState &&
-                "playheadTime" in _currentTransition.effect)
+                transitionToState == _currentState)
             {
                 if (_currentTransition.effect.duration == 0)
                     prevTransitionFraction = 0;
                 else
                     prevTransitionFraction =
-                        _currentTransition.effect["playheadTime"] /
+                        _currentTransition.effect.playheadTime /
                         getTotalDuration(_currentTransition.effect);
             }
             _currentTransition.effect.end();
@@ -8950,10 +8949,9 @@
                 transition_effectEndHandler);
             nextTransition.effect.play();
             if (!isNaN(prevTransitionFraction) &&
-                nextTransition.effect.duration != 0 &&
-                "seek" in nextTransition.effect)
-                nextTransition.effect["seek"]((1 - prevTransitionFraction) *
-                    getTotalDuration(nextTransition.effect));
+                nextTransition.effect.duration != 0)
+                nextTransition.effect.playheadTime = (1 - prevTransitionFraction) *
+                    getTotalDuration(nextTransition.effect);
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 2464
Author:   jimurphy@adobe.com
Date:     2008-07-14T19:50:33.449468Z

Log Message:
-----------
add flex 4 to trunk

Modified Paths:
--------------
134 paths were modified

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

--- frameworks/projects/spark/src/spark/core/MaskType.as
+++ frameworks/projects/spark/src/spark/core/MaskType.as
@@ -0,0 +1,33 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package flex.graphics
+{
+
+/**
+ *  Documentation is not currently available.
+ */
+public final class MaskType
+{
+	include "../core/Version.as";
+
+	/**
+	 *  Documentation is not currently available.
+	 */
+	public static const CLIP:String = "clip";
+
+	/**
+	 *  Documentation is not currently available.
+	 */
+	public static const ALPHA:String = "alpha";
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 6919
Author:   smgilson@adobe.com
Date:     2009-05-14T18:09:59.289095Z

Log Message:
-----------
Update ASdoc for 3D effects

QE Notes: None
Doc Notes: None
Bugs: -
Checkintests: passed

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Move3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Scale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Rotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>

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

--- frameworks/projects/spark/src/spark/effects/Scale.as
+++ frameworks/projects/spark/src/spark/effects/Scale.as
@@ -80,7 +80,16 @@
     //----------------------------------
     [Inspectable(category="General")]
     /**
-     * whether or not this effect should animate the target directly or its post layout transform offsets.
+     *  Specifies whether the parent container of the effect target
+     *  updates its layout based on changes to the effect target
+     *  while the effect plays.
+     *
+     *  @default true
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public var affectLayout:Boolean = true;


Fall back on a default value when the initial data does not exist in UserData.

Summary:
Trivial Change
Fall back on a default value when the initial data does not exist in UserData.

Test Plan: This is sparta.

Reviewers: bvanous, #dev_tools_team, zac-playfab

Reviewed By: #dev_tools_team, zac-playfab

Subscribers: zac-playfab

Differential Revision: https://phab.playfabdev.com/D396

--- targets/actionscript/source/PlayFabApiTests.as
+++ targets/actionscript/source/PlayFabApiTests.as
@@ -238,7 +238,7 @@
         }
         private function UserDataApi_GetSuccess1(result:com.playfab.ClientModels.GetUserDataResult) : void
         {
-            testIntExpected = int(result.Data[TEST_DATA_KEY].Value);
+            testIntExpected = result.Data.hasOwnProperty(TEST_DATA_KEY) ? int(result.Data[TEST_DATA_KEY].Value) : 1;
             testIntExpected = (testIntExpected + 1) % 100; // This test is about the expected value changing - but not testing more complicated issues like bounds

             var updateRequest:com.playfab.ClientModels.UpdateUserDataRequest = new com.playfab.ClientModels.UpdateUserDataRequest();


Transferred from the Adobe Open Source Subversion Repository

Revision: 1098
Author:   jimurphy@adobe.com
Date:     2008-04-03T21:50:39.896200Z

Log Message:
-----------
Merge 3.0.x -- 362:394, 427:429, 603:608, 644:645, 651:663, 672:676, 755:756, 763:766, 785:790, 812:814, 854:861, 862:866, 866:933,971:1009, 1050:1056 --> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/DefaultDataDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VRule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncRequest.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/IList.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/rpc/src/mx/messaging/channels/StreamingConnectionHandler.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IRepeaterClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/VideoError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/HTTPRequestMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/Locale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/Responder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/errors/MessageSerializationError.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/SOAPMessage.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IBrowserManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ComponentDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/FaultEvent.as</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/framework/src/mx/collections/IViewCursor.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/framework/src/mx/effects/Tween.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/menuClasses/IMenuItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageResponder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/Preloader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ILayoutManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Spacer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/Fault.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/XMLListCollection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectTargetFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/SliderEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AsyncToken.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/resources/ResourceManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/ScrollEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/videoClasses/CuePointManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/NumericStepperEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/BrowserManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/events/ChannelFaultEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/CursorBookmark.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/IXMLEncoder.as</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/events/WSDLLoadEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/LoadEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/collections/ListCollectionView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/FlexClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/SubscriptionInfo.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/DescribeTypeCache.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/logging/LogLogger.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/FocusManager.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/build_framework.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/events/HeaderEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/preloaders/DownloadProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/treeClasses/ITreeDataDescriptor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/remoting/RemoteObject.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>

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

--- frameworks/projects/mx/src/mx/controls/TextArea.as
+++ frameworks/projects/mx/src/mx/controls/TextArea.as
@@ -2105,6 +2105,9 @@
      *  which updates the value immediately.
      *
      *  @param lineIndex The zero-based index of the line for which to get the metrics.
+     *
+     *  @return The object that contains information about the text position
+     *  and measurements for the specified line of text in the control.
      *
      *  @see flash.text.TextField
      *  @see flash.text.TextLineMetrics


Transferred from the Adobe Open Source Subversion Repository

Revision: 10673
Author:   clucier@adobe.com
Date:     2009-09-29T12:49:26.433660Z

Log Message:
-----------
Added logic to ensure mx:Button keeps its CSS state up to date (as such pseudo-selectors will now function correctly).

QE notes: None
Doc notes: None
Bugs: SDK-22634
Reviewer: Glenn
Tests run: Checkin
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>

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

--- frameworks/projects/mx/src/mx/controls/Button.as
+++ frameworks/projects/mx/src/mx/controls/Button.as
@@ -38,7 +38,6 @@
 import mx.core.IFontContextComponent;
 import mx.core.IInvalidating;
 import mx.core.IProgrammaticSkin;
-import mx.core.IRectangularBorder;
 import mx.core.IStateClient;
 import mx.core.IUIComponent;
 import mx.core.IUITextField;
@@ -1331,6 +1330,11 @@
     /**
      *  @private
      */
+    mx_internal var phaseChanged:Boolean = false;
+
+    /**
+     *  @private
+     */
     mx_internal function get phase():String
     {
         return _phase;
@@ -1342,8 +1346,10 @@
     mx_internal function set phase(value:String):void
     {
         _phase = value;
+        phaseChanged = true;

         invalidateSize();
+        invalidateProperties();
         invalidateDisplayList();
     }

@@ -1605,6 +1611,16 @@
             if (!toggle)
                 selected = false;
             toggleChanged = false;
+        }
+
+        if (phaseChanged)
+        {
+            // Ensure all potential pseudo-selectors are reevaluated if
+            // necessary.
+            var prevState:String = _currentButtonState;
+            if (prevState != getCurrentButtonState())
+                stateChanged(prevState, _currentButtonState, false);
+            phaseChanged = false;
         }
     }

@@ -1700,7 +1716,7 @@
             changeSkins();
             emphasizedChanged = false;
         }
-
+
         // Set each skin's size to the layout size of this Button.
         var n:int = skins.length;
         for (var i:int = 0; i < n; i++)
@@ -1789,6 +1805,16 @@
         // If we don't have a skin, show focus around the icon.
         super.adjustFocusRect(!currentSkin ? DisplayObject(currentIcon) : this);
     }
+
+    /**
+     *  @private
+     *  The state to be used when matching CSS pseudo-selectors. This override
+     *  returns the current button state.
+     */
+    override protected function get currentCSSState():String
+    {
+        return getCurrentButtonState();
+    }

     //--------------------------------------------------------------------------
     //
@@ -1804,34 +1830,21 @@
     mx_internal function viewSkin():void
     {
         // Determine which skin to display, based on whether this
-        // Button is enabled or disabled, whether it is
+        // button is enabled or disabled, whether it is
         // selected or unselected, and how it is currently interacting
         // with the mouse (i.e., the up/over/down state).
         var tempSkinName:String;
-        var stateName:String;
-
+
         if (!enabled)
-        {
             tempSkinName = selected ? selectedDisabledSkinName : disabledSkinName;
-            stateName = selected ? "selectedDisabled" : "disabled";
-        }
         else if (phase == ButtonPhase.UP)
-        {
             tempSkinName = selected ? selectedUpSkinName : upSkinName;
-            stateName = selected ? "selectedUp" : "up";
-        }
         else if (phase == ButtonPhase.OVER)
-        {
             tempSkinName = selected ? selectedOverSkinName : overSkinName;
-            stateName = selected ? "selectedOver" : "over";
-        }
         else if (phase == ButtonPhase.DOWN)
-        {
             tempSkinName = selected ? selectedDownSkinName : downSkinName;
-            stateName = selected ? "selectedDown" : "down";
-        }

-        viewSkinForPhase(tempSkinName, stateName);
+        viewSkinForPhase(tempSkinName, getCurrentButtonState());
     }

     /**
@@ -2099,19 +2112,8 @@
         currentIcon = newIcon;

         if (defaultIconUsesStates && currentIcon is IStateClient)
-        {
-            var stateName:String = "";
-
-            if (!enabled)
-                stateName = selected ? "selectedDisabled" : "disabled";
-            else if (phase == ButtonPhase.UP)
-                stateName = selected ? "selectedUp" : "up";
-            else if (phase == ButtonPhase.OVER)
-                stateName = selected ? "selectedOver" : "over";
-            else if (phase == ButtonPhase.DOWN)
-                stateName = selected ? "selectedDown" : "down";
-
-            IStateClient(currentIcon).currentState = stateName;
+        {
+            IStateClient(currentIcon).currentState = getCurrentButtonState();
             if (currentIcon is IInvalidating)
             	IInvalidating(currentIcon).validateNow();
         }
@@ -2123,6 +2125,34 @@
         return newIcon;
     }

+    /**
+     *  @private
+     *  Storage for the most recent button state.
+     */
+    protected var _currentButtonState:String;
+
+    /**
+     *  @private
+     *  Computes the current button state based on whether this button is
+     *  enabled or disabled, whether it is selected or unselected, and how it
+     *  is currently interacting with the mouse (i.e. the up/over/down state).
+     */
+    mx_internal function getCurrentButtonState():String
+    {
+        _currentButtonState = "";
+
+        if (!enabled)
+            _currentButtonState = selected ? "selectedDisabled" : "disabled";
+        else if (phase == ButtonPhase.UP)
+            _currentButtonState = selected ? "selectedUp" : "up";
+        else if (phase == ButtonPhase.OVER)
+            _currentButtonState = selected ? "selectedOver" : "over";
+        else if (phase == ButtonPhase.DOWN)
+            _currentButtonState = selected ? "selectedDown" : "down";
+
+        return _currentButtonState;
+    }
+
    /**
      *  @private
      *  Controls the layout of the icon and the label within the button.


eliminate circle at end of attack visualization just makes things like infections harder to see IMHO

--- src/battlecode/client/viewer/render/DrawRobot.as
+++ src/battlecode/client/viewer/render/DrawRobot.as
@@ -368,7 +368,6 @@
             this.graphics.lineStyle(2, getAttackColor());
             this.graphics.moveTo(0, 0);
             this.graphics.lineTo(targetOffsetX - drawX, targetOffsetY - drawY);
-            this.graphics.drawCircle(targetOffsetX - drawX, targetOffsetY - drawY, getImageSize() / 2 * .6);
         }

         private function drawMovement():void {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19401
Author:   mhorn@adobe.com
Date:     2010-12-15T20:50:38.178104Z

Log Message:
-----------
Temporary ASDoc updates for bug fix SDK-28907

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/scrollClasses/ScrollBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/LinkBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/NumericStepper.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/controls/Button.as</path>

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

--- frameworks/projects/mx/src/mx/controls/MenuBar.as
+++ frameworks/projects/mx/src/mx/controls/MenuBar.as
@@ -153,8 +153,10 @@
 /**
  *  The background skin of the MenuBar control.
  *
- *  @default mx.skins.halo.MenuBarBackgroundSkin
- *
+ *
The default skin class is based on the theme. For example, with the Halo theme,
+ *  the default skin class is mx.skins.halo.MenuBarBackgroundSkin. For the Spark theme, the default skin
+ *  class is mx.skins.spark.ButtonSkin.

+ *
  *  @langversion 3.0
  *  @playerversion Flash 9
  *  @playerversion AIR 1.1
@@ -165,7 +167,9 @@
 /**
  *  The default skin for a MenuBar item.
  *
- *  @default mx.skins.halo.ActivatorSkin
+ *
The default skin class is based on the theme. For example, with the Halo theme,
+ *  the default skin class is mx.skins.halo.ActivatorSkin. For the Spark theme, the default skin
+ *  class is mx.skins.spark.MenuItemSkin.

  *
  *  @langversion 3.0
  *  @playerversion Flash 9
@@ -177,7 +181,9 @@
 /**
  *  The skin when a MenuBar item is not selected.
  *
- *  @default mx.skins.halo.ActivatorSkin
+ *
The default skin class is based on the theme. For example, with the Halo theme,
+ *  the default skin class is mx.skins.halo.ActivatorSkin. For the Spark theme, the default skin
+ *  class is mx.skins.spark.MenuItemSkin.

  *
  *  @langversion 3.0
  *  @playerversion Flash 9
@@ -189,7 +195,9 @@
 /**
  *  The skin when focus is over a MenuBar item.
  *
- *  @default mx.skins.halo.ActivatorSkin
+ *
The default skin class is based on the theme. For example, with the Halo theme,
+ *  the default skin class is mx.skins.halo.ActivatorSkin. For the Spark theme, the default skin
+ *  class is mx.skins.spark.MenuItemSkin.

  *
  *  @langversion 3.0
  *  @playerversion Flash 9
@@ -201,7 +209,9 @@
 /**
  *  The skin when a MenuBar item is selected.
  *
- *  @default mx.skins.halo.ActivatorSkin
+ *
The default skin class is based on the theme. For example, with the Halo theme,
+ *  the default skin class is mx.skins.halo.ActivatorSkin. For the Spark theme, the default skin
+ *  class is mx.skins.spark.MenuItemSkin.

  *
  *  @langversion 3.0
  *  @playerversion Flash 9


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 10561
Author:   cframpto@adobe.com
Date:     2009-09-24T01:26:50.541480Z

Log Message:
-----------
Halo ComboBox control did not look very good when using TLFTextField because the spark TextInput obscured the underlying button.  The TextInput border and background needed to be turned off.

Rename ITextInput.showBorder(visible) to ITextInput.showBorderAndBackground(visible).  PARB approved.

Remove TLFTextField from SparkClasses.  UITLFTextField will pull it in.

QE notes:
Doc notes:
Bugs: SDK-23242
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/controls/TLFTextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ITextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>

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

--- frameworks/projects/spark/src/SparkClasses.as
+++ frameworks/projects/spark/src/SparkClasses.as
@@ -25,7 +25,6 @@
  */
 import mx.controls.dataGridClasses.TLFDataGridItemRenderer; TLFDataGridItemRenderer;
 import mx.controls.TLFTextInput; TLFTextInput;
-import mx.core.TLFTextField; TLFTextField;
 import mx.core.UITLFTextField; UITLFTextField;
 import spark.core.SpriteVisualElement; SpriteVisualElement;
 import spark.skins.spark.ApplicationSkin; ApplicationSkin;


build

build

--- src/com/kemsky/impl/Stream.as
+++ src/com/kemsky/impl/Stream.as
@@ -816,7 +816,7 @@

         public function toString():String
         {
-            return "Stream[" + source.join(",") + "]";
+            return "Stream{" + source.join(",") + "}";
         }
     }
 }


Setting a new dataProvider to List now resets the selectedIndex and selectedItem

--- src/org/openPyro/controls/listClasses/ListBase.as
+++ src/org/openPyro/controls/listClasses/ListBase.as
@@ -81,8 +81,11 @@
 			/*
 			 * Reset the scroll positions
 			 */
-			verticalScrollPosition = 0
-			horizontalScrollPosition = 0
+			verticalScrollPosition = 0;
+			horizontalScrollPosition = 0;
+			_selectedIndex = -1;
+			_selectedItem = null;
+
 			if(_dataProviderCollection){
 				_dataProviderCollection.removeEventListener(CollectionEvent.COLLECTION_CHANGED, onSourceCollectionChanged);
 			}


Transferred from the Adobe Open Source Subversion Repository

Revision: 10802
Author:   aharui@adobe.com
Date:     2009-10-02T05:19:47.028874Z

Log Message:
-----------
I don't think Glenn meant to cut these lines.

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ControlBar.as

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

--- frameworks/projects/mx/src/mx/containers/ControlBar.as
+++ frameworks/projects/mx/src/mx/containers/ControlBar.as
@@ -137,7 +137,11 @@
     public function ControlBar()
     {
         super();
-    }
+
+        // ControlBar defaults to direction="horizontal", but can be changed
+        // later if desired
+        direction = BoxDirection.HORIZONTAL;
+     }

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


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

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

 package mx.rpc.wsdl
 {


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

--- frameworks/projects/rpc/src/mx/rpc/xml/TypeIterator.as
+++ frameworks/projects/rpc/src/mx/rpc/xml/TypeIterator.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 11181
Author:   smgilson@adobe.com
Date:     2009-10-27T15:58:59.190040Z

Log Message:
-----------
ASDoc updates for Spark List D&D

QE notes: -
Doc notes: -
Bugs: -
Reviewer: -
Tests run: - checkintests
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/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListItemDragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/DropLocation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ListItemDragProxy.as</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -59,6 +59,8 @@

 /**
  *  The alpha of the border for this component.
+ *
+ *  @default 1.0
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -69,6 +71,8 @@

 /**
  *  The color of the border for this component.
+ *
+ *   @default 0#CCCCCC
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -79,6 +83,8 @@

 /**
  *  Controls the visibility of the border for this component.
+ *
+ *  @default true
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -110,20 +116,19 @@
 [Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
- *  The class to create instance of for the drag proxy during drag
+ *  The class to create instance of for the drag indicator during drag
  *  and drop operations initiated by the List.
- *
  *  Must be of type IFlexDisplayObject.
  *
- *  If the class implements the ILayoutManagerClient interface,
- *  then the instance will be validated by the DragManager.
+ *
If the class implements the ILayoutManagerClient interface,
+ *  then the instance will be validated by the DragManager.

  *
- *  If the class implements the IVisualElement interface,
+ *
If the class implements the IVisualElement interface,
  *  then the instance's owner property will be set to the List
- *  that initiates the drag.
+ *  that initiates the drag.

  *
- *  The AIR DragManager takes a snapshot of the instance, while
- *  the non-AIR DragManager uses the instance directly.
+ *
The AIR DragManager takes a snapshot of the instance, while
+ *  the non-AIR DragManager uses the instance directly.

  *
  *  @default spark.components.supportClasses.ListItemDragProxy
  *
@@ -199,13 +204,20 @@
  *  <s:List
  *    Properties
  *    allowMultipleSelection="false"
+ *    dragEnabled="false"
+ *    dragMoveEnabled="false"
+ *    dropEnabled="false"
  *    selectedIndices="null"
  *    selectedItems="null"
  *    useVirtualLayout="true"
  *
  *    Styles
  *    alternatingItemColors="undefined"
+ *    borderAlpha="1.0"
+ *    borderColor="0#CCCCCC"
+ *    borderVisible="true"
  *    contentBackgroundColor="0xFFFFFF"
+ *    dragIndicator="ListItemDragProxy"
  *    rollOverColor="0xCEDBEF"
  *    selectionColor="0xA8C6EE"
  *    symbolColor="0x000000"
@@ -311,9 +323,15 @@
     [SkinPart(required="false", type="flash.display.DisplayObject")]

     /**
-     *  A skin part that defines a drop indicator. The drop indicator is resized
-     *  and positioned by the layout to outline the insert location when dragging
-     *  over the List.
+     *  A skin part that defines the appearance of the drop indicator.
+     *  The drop indicator is resized and positioned by the layout
+     *  to outline the insert location when dragging over the List.
+     *
+     *
By default, the drop indicator for a Spark control is a solid line
+     *  that spans the width of the control.
+     *  Create a custom drop indicator by creating a custom skin class for the drop target.
+     *  In your skin class, create a skin part named dropIndicator,
+     *  in the <fx:Declarations> area of the skin class

      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -410,9 +428,9 @@
     //----------------------------------

     /**
-	 *  @private
-	 */
-	private var _allowMultipleSelection:Boolean = false;
+     *  @private
+     */
+    private var _allowMultipleSelection:Boolean = false;

     /**
      *  If true multiple selections is enabled.
@@ -614,19 +632,19 @@
      */
     private var _selectedIndices:Vector.<int>;

-	/**
-     *  @private
-     */
-	private var _proposedSelectedIndices:Vector.<int> = new Vector.<int>();
-
-	/**
-     *  @private
-     */
-	private var multipleSelectionChanged:Boolean;
+    /**
+     *  @private
+     */
+    private var _proposedSelectedIndices:Vector.<int> = new Vector.<int>();
+
+    /**
+     *  @private
+     */
+    private var multipleSelectionChanged:Boolean;

     [Bindable("change")]

-	/**
+    /**
      *  A Vector of ints representing the indices of the currently selected
      *  item or items.
      *  If multiple selection is disabled by setting
@@ -1136,6 +1154,7 @@
     //--------------------------------------------------------------------------

     /**
+     *  @private
      *  The default handler for the dragStart event.
      *
      *  @param event The DragEvent object.
@@ -1172,6 +1191,7 @@
     }

     /**
+     *  @private
      *  Handles DragEvent.DRAG_COMPLETE events.  This method
      *  removes the items from the data provider.
      *
@@ -1279,6 +1299,7 @@
     }

     /**
+     *  @private
      *  Handles MouseEvent.MOUSE_DOWN events from any of the
      *  item renderers. This method handles the updating and commitment
      *  of selection as well as remembers the mouse down point and
@@ -1361,6 +1382,7 @@
     }

     /**
+     *  @private
      *  Handles MouseEvent.MOUSE_MOVE events from any mouse
      *  targets contained in the list including the renderers.  This method
      *  watches for a gesture that constitutes the beginning of a
@@ -1415,8 +1437,8 @@
             selectedIndices = calculateSelectedIndicesInterval(mouseDownIndex, pendingSelectionShiftKey, pendingSelectionCtrlKey);
         }

-		// Always clean up the flag, even if currently dragging.
-		pendingSelectionOnMouseUp = false;
+        // Always clean up the flag, even if currently dragging.
+        pendingSelectionOnMouseUp = false;

         mouseDownPoint = null;
         mouseDownIndex = -1;
@@ -1427,6 +1449,7 @@
     }

     /**
+     *  @private
      *  Handles MouseEvent.MOUSE_DOWN events from any mouse
      *  targets contained in the list including the renderers. This method
      *  finds the renderer that was pressed and prepares to receive
@@ -1461,6 +1484,7 @@
     }

     /**
+     *  @private
      *  Handles DragEvent.DRAG_ENTER events.  This method
      *  determines if the DragSource object contains valid elements and uses
      *  the DragManager.showDropFeedback() method to set up the
@@ -1509,6 +1533,7 @@
     }

     /**
+     *  @private
      *  Handles DragEvent.DRAG_OVER events. This method
      *  determines if the DragSource object contains valid elements and uses
      *  the showDropFeedback() method to set up the UI feedback
@@ -1558,6 +1583,7 @@
     }

     /**
+     *  @private
      *  Handles DragEvent.DRAG_EXIT events. This method hides
      *  the UI feedback by calling the hideDropFeedback() method
      *  and also hides the drop indicator by calling the layout's
@@ -1590,6 +1616,7 @@
     }

     /**
+     *  @private
      *  Handles DragEvent.DRAG_DROP events. This method  hides
      *  the drop feedback by calling the hideDropFeedback() method.
      *


added missing proxy functions

added missing proxy functions

Change-Id: I540ab257a2bcbe19287a0ce6abfaedab1713d9ab

--- WeaveCore/src/weave/utils/OrderedHashMap.as
+++ WeaveCore/src/weave/utils/OrderedHashMap.as
@@ -30,6 +30,16 @@
 		protected var names:Array = [];
 		protected var values:Array = [];

+		override flash_proxy function callProperty(name:*, ...parameters):*
+		{
+			var i:int = names.indexOf(String(name));
+			var value:Function = values[i];
+			return value.apply(this, parameters);
+		}
+		override flash_proxy function hasProperty(name:*):Boolean
+		{
+			return names.indexOf(String(name)) >= 0;
+		}
 		override flash_proxy function getProperty(name:*):*
 		{
 			var i:int = names.indexOf(String(name));


now reporting error when url variables are incorrectly specified.

--- WeaveUI/src/weave/application/VisApplication.as
+++ WeaveUI/src/weave/application/VisApplication.as
@@ -57,6 +57,7 @@
 	import mx.managers.ToolTipManager;
 	import mx.rpc.events.FaultEvent;
 	import mx.rpc.events.ResultEvent;
+	import mx.utils.URLUtil;

 	import spark.components.Group;

@@ -434,20 +435,24 @@
 			// check address bar for any variables not found in FlashVars
 			try
 			{
-				var urlParams:URLVariables = new URLVariables(JavaScript.exec("return window.location.search.substring(1);")); // text after '?'
-				for (var key:String in urlParams)
+				var paramsStr:String = JavaScript.exec("return window.location.search.substring(1);"); // text after '?'
+				var paramsObj:Object = URLUtil.stringToObject(paramsStr, '&');
+				for (var key:String in paramsObj)
 					if (!_flashVars.hasOwnProperty(key)) // flashvars take precedence over url params
-						_flashVars[key] = urlParams[key];
+						_flashVars[key] = paramsObj[key];

 				// backwards compatibility with old param name
 				const DEPRECATED_FILE_PARAM_NAME:String = 'defaults';
-				if (!_flashVars.hasOwnProperty(CONFIG_FILE_FLASH_VAR_NAME) && urlParams.hasOwnProperty(DEPRECATED_FILE_PARAM_NAME))
-				{
-					_flashVars[CONFIG_FILE_FLASH_VAR_NAME] = urlParams[DEPRECATED_FILE_PARAM_NAME];
+				if (!_flashVars.hasOwnProperty(CONFIG_FILE_FLASH_VAR_NAME) && paramsObj.hasOwnProperty(DEPRECATED_FILE_PARAM_NAME))
+				{
+					_flashVars[CONFIG_FILE_FLASH_VAR_NAME] = paramsObj[DEPRECATED_FILE_PARAM_NAME];
 					_usingDeprecatedFlashVar = true;
 				}
 			}
-			catch(e:Error) { }
+			catch(e:Error)
+			{
+				reportError(e);
+			}
 		}
 		private static const CONFIG_FILE_FLASH_VAR_NAME:String = 'file';
 		private static const DEFAULT_CONFIG_FILE_NAME:String = 'defaults.xml';


fix GeometrySanitizer.splitBuffers() to work on Vector.<uint> instead of a ByteArray of shorts to allow indices > 65535

--- src/aerys/minko/render/geometry/GeometrySanitizer.as
+++ src/aerys/minko/render/geometry/GeometrySanitizer.as
@@ -16,8 +16,11 @@
 	 */
 	public final class GeometrySanitizer
 	{
-		public static const INDEX_LIMIT		: uint = 524270;
-		public static const VERTEX_LIMIT	: uint = 65535;
+//		public static const INDEX_LIMIT		: uint = 524270;
+//		public static const VERTEX_LIMIT	: uint = 65535;
+
+		public static const INDEX_LIMIT		: uint = 5242;
+		public static const VERTEX_LIMIT	: uint = 6553;

 		public static function isValid(indexData		: ByteArray,
 									   vertexData		: ByteArray,
@@ -47,27 +50,35 @@
 		 * @param dwordsPerVertex
 		 */
 		public static function splitBuffers(inVertices		: ByteArray,
-											inIndices		: ByteArray,
+											inIndices		: Vector.<uint>,
 											outVertices		: Vector.<ByteArray>,
 											outIndices		: Vector.<ByteArray>,
 											bytesPerVertex	: uint = 12) : void
 		{
 			var inVerticesStartPosition	: uint	= inVertices.position;
 			var numVertices				: uint	= inVertices.bytesAvailable / bytesPerVertex;
-			var inIndicesStartPosition	: uint	= inIndices.position;
-			var numIndices				: uint	= inIndices.bytesAvailable >>> 1;
+			var numIndices				: int	= inIndices.length;

 			if (numIndices < INDEX_LIMIT && numVertices < VERTEX_LIMIT)
 			{
+				var indices : ByteArray = new ByteArray();
+
+				indices.endian = Endian.LITTLE_ENDIAN;
+				for (var i : uint = 0; i < numIndices; ++i)
+					indices.writeShort(inIndices[i]);
+				indices.position = 0;
+
 				outVertices.push(inVertices);
-				outIndices.push(inIndices);
+				outIndices.push(indices);

 				return;
 			}

-			while (inIndices.bytesAvailable)
-			{
-				var indexDataLength		: uint				= inIndices.bytesAvailable >> 1;
+			var totalUsedIndices : int = 0;
+
+			while (numIndices > 0)
+			{
+				var indexDataLength		: uint				= numIndices;

 				// new buffers
 				var partialVertexData	: ByteArray			= new ByteArray();
@@ -103,8 +114,7 @@
 					neededVerticesCount = 0;
 					for (localVertexId = 0; localVertexId < 3; ++localVertexId)
 					{
-						inIndices.position = (usedIndicesCount + localVertexId) << 2;
-						oldVertexIds[localVertexId]	= inIndices.readUnsignedShort();
+						oldVertexIds[localVertexId]	= inIndices[uint(totalUsedIndices + usedIndicesCount + localVertexId)];

 						var tmp : Object = usedVerticesDic[oldVertexIds[localVertexId]];

@@ -121,7 +131,6 @@
 					// it fills, let insert the triangle
 					for (localVertexId = 0; localVertexId < 3; ++localVertexId)
 					{
-
 						if (newVertexNeeded[localVertexId])
 						{
 							// copy current vertex into the new array
@@ -145,15 +154,17 @@
 					usedIndicesCount += 3;
 				}

+				totalUsedIndices += usedIndicesCount;
+				numIndices -= usedIndicesCount;
+
 				partialVertexData.position = 0;
 				outVertices.push(partialVertexData);

 				partialIndexData.position = 0;
 				outIndices.push(partialIndexData);
-
-				inVertices.position = inVerticesStartPosition;
-				inIndices.position = inIndicesStartPosition;
-			}
+			}
+
+			inVertices.position = inVerticesStartPosition;
 		}

 		/**
@@ -282,7 +293,7 @@
 			{
 				var index : uint = indexData.readUnsignedShort();

-				indexData.position -= 4;
+				indexData.position -= 2;
 				indexData.writeShort(oldVertexIdToNewVertexId[index]);
 			}
 			indexData.position = indexDataStartPosition;


Transferred from the Adobe Open Source Subversion Repository

Revision: 21594
Author:   deeptika@adobe.com
Date:     2011-07-18T11:39:38.158141Z

Log Message:
-----------
Changing the style setting mechanism in charts (moving to defaults.css) to fix memory leak in charts.
QE notes:
Doc notes:
Bugs: FLEXDMV-2626 (Views with charts not getting GC-ed)
Reviewer:
Tests run: Mustella test suite for charts - cyclone tested by QE
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/charts.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/chartClasses/CartesianChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/chartClasses/ChartBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/AreaSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/BubbleChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/chartClasses/PolarChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/ColumnChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/charts-4.X.0.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/GridLines.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/PieSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/PlotSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/BarChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/CandlestickSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/AreaChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/HLOCSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/AxisRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/LineSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/PieChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/BubbleSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/PlotChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/ColumnSeries.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/CandlestickChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/charts-3.0.0.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/HLOCChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/LineChart.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/charts/src/mx/charts/series/BarSeries.as</path>

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

--- frameworks/projects/charts/src/mx/charts/chartClasses/PolarChart.as
+++ frameworks/projects/charts/src/mx/charts/chartClasses/PolarChart.as
@@ -22,12 +22,13 @@
 import mx.charts.LinearAxis;
 import mx.charts.events.ChartItemEvent;
 import mx.charts.styles.HaloDefaults;
+import mx.core.IFlexModuleFactory;
 import mx.core.IUIComponent;
 import mx.core.mx_internal;
 import mx.graphics.SolidColor;
+import mx.graphics.SolidColorStroke;
 import mx.graphics.Stroke;
 import mx.styles.CSSStyleDeclaration;
-import mx.core.IFlexModuleFactory;

 use namespace mx_internal;

@@ -201,18 +202,11 @@
     private function initStyles():Boolean
     {
         HaloDefaults.init(styleManager);
-
-        var polarChartStyle:CSSStyleDeclaration =
-            HaloDefaults.createSelector("mx.charts.chartClasses.PolarChart", styleManager);
-
-        polarChartStyle.defaultFactory = function():void
-        {
-            this.dataTipRenderer = DataTip;
-            this.fill = new SolidColor(0xFFFFFF, 0);
-            this.calloutStroke = new Stroke(0x888888,2);
-            this.fontSize = 10;
-        }
-
+
+		var polarChartStyle:CSSStyleDeclaration = styleManager.getStyleDeclaration("mx.charts.chartClasses.PolarChart");
+		polarChartStyle.setStyle("fill", new SolidColor(0xFFFFFF, 0));
+		polarChartStyle.setStyle("calloutStroke", new SolidColorStroke(0x888888,2))
+
         return true;
     }


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

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

 package mx.charts.chartClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 5220
Author:   chaase@adobe.com
Date:     2009-03-10T15:55:06.496289Z

Log Message:
-----------
New Transform effects to handle correctly doing Move, Rotate, and Scale operations simultaneously. Also, added keyframe capabilities to new effects system (necessary for the transform effects, shouldn't affect operation of other effects). Fixed various issues with effects/transition infrastructure as necessary. Added transform utility functions to UIComponent, AdvancedLayoutFeatures, and GraphicElement.

QE Notes: This will break existing new effects tests due to changes in core Animation and AnimationEvent classes, QE is disabling them for now and will add them back in as changes are made.
Doc Notes: None
Bugs:
Reviewer: Ely (transform utilities) and Jason (the rest)
tests: checkintests, Mustella tests/Effects, tests/ListDataEffects

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/TransformOffsets.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/KeyFrame.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/PropertyChanges.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate3D.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/effectClasses</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateColorInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxRotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxMoveInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/effectClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/AnimationEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate3D.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/AnimationProperty.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove3D.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/spark/src/spark/effects/animation/MotionPath.as
+++ frameworks/projects/spark/src/spark/effects/animation/MotionPath.as
@@ -0,0 +1,205 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.effects
+{
+import mx.core.mx_internal;
+import mx.effects.interpolation.IEaser;
+import mx.effects.interpolation.IInterpolator;
+import mx.effects.interpolation.NumberInterpolator;
+import mx.effects.interpolation.Sine;
+
+use namespace mx_internal;
+
+[DefaultProperty("keyframes")]
+
+/**
+ * This class holds information on a property to be animated
+ * and the values that the property should animate between.
+ *
+ *
The 'path' of values that the property will take on during
+ * the animation is specified as a set of keyframes, each of which
+ * specifies the value at a particular time during the animation.
+ * Values in between keyframes are calculated by interpolating
+ * between the values of the bounding keyframes.

+ *
+ * @see KeyFrame
+ */
+public class MotionPath
+{
+    include "../../mx/core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     * Constructor.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function MotionPath(property:String = null)
+    {
+        this.property = property;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Properties
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     * The name of the property to be animated.
+     */
+    public var property:String;
+
+    /**
+     * The interpolator determines how in-between values in an animation
+     * are calculated. By default, MotionPath assumes that the values are
+     * of type Number and can calculate in-between Number values automatically.
+     * If MotionPath is given keyframes with non-Number values, or if the
+     * desired behavior should use a different approach to interpolation
+     * (such as per-channel color interpolation), then an interpolator
+     * should be supplied.
+     */
+    public var interpolator:IInterpolator = NumberInterpolator.getInstance();
+
+    [Inspectable(category="General", arrayType="spark.effects.KeyFrame")]
+    /**
+     * A sequence of KeyFrame objects that represent the time/value pairs
+     * that the property should take on during the animation. Each successive
+     * pair of keyframes controls the animation during the time interval
+     * between them, with the optional easer and valueBy
+     * properties of the later keyframe used to help determine the behavior
+     * during that interval.
+     *
+     *
Animations will always start at time 0 and will last for a duration
+     * equal to the time value in the final keyframe. If no keyframe at time 0
+     * is provided, that keyframe will be implicit, using the value of the
+     * target property at the time the animation begins. Because keyframes
+     * explicitly define the times involved in an animation, the duration for
+     * an effect using keyframes will be set according to the maximum time
+     * of the final keyframe of all MotionPaths in the effect.
+     * For example, if an effect has keyframes
+     * at times 0, 500, 1000, and 2000, then the effective duration of that
+     * effect will be 2000, regardless of any duration value set on the
+     * effect itself. Because the final keyframe determines the duration, there
+     * must always be a final keyframe in any MotionPath. That is,
+     * it is implicit that the time in the final keyframe is the
+     * duration of the MotionPath.

+     *
+     *
Any keyframe may leave its value undefined (either unset, set to
+     * null, or set to NaN), in which case the
+     * value will be determined dynamically when the animation starts.
+     * Any such undefined value will be determined as follows: (1) if it
+     * is the first keyframe, it will be calculated from the next keyframe
+     * if that keyframe has both a value and valueBy,
+     * as the difference of those values, otherwise it will get the
+     * current value of the property on the target, (2) if it is the final
+     * keyframe and the animation is running in a transition, it will
+     * use the value in the state being transitioned to, (3) otherwise,
+     * any keyframe will calculate its unset value by using the previous
+     * keyframe's value, adding the current keyframe's valueBy
+     * to it, if valueBy is set.

+     *
+     * @see KeyFrame
+     */
+    public var keyframes:Array;
+
+
+    /**
+     * Returns a copy of this MotionPath object, including copies
+     * of each keyframe
+     */
+    public function clone():MotionPath
+    {
+        var mp:MotionPath = new MotionPath(property);
+        mp.interpolator = interpolator;
+        mp.keyframes = [];
+        for (var i:int = 0; i < keyframes.length; ++i)
+            mp.keyframes[i] = keyframes[i].clone();
+
+        return mp;
+    }
+
+    /**
+     * @private
+     *
+     * Calculates the timeFraction values for
+     * each KeyFrame in a MotionPath KeyFrame sequence.
+     * To calculate these values, the time on each KeyFrame
+     * is divided by the supplied duration parameter.
+     *
+     * @param duration the duration of the animation that the
+     * keyframes should be scaled against.
+     */
+    mx_internal function scaleKeyframes(duration:Number):void
+    {
+        var n:int = keyframes.length;
+        for (var i:int; i < n; ++i)
+        {
+            var kf:KeyFrame = keyframes[i];
+            // TODO (chaase): Must be some way to allow callers
+            // to supply timeFraction, but currently we clobber it
+            // with this operation. But if we choose to clobber it
+            // only if it's not set already, then it only works the
+            // first time through, since an Effect will retain its
+            // MotionPaty, which retains its KeyFrames, etc.
+            kf.mx_internal::timeFraction = kf.time / duration;
+        }
+    }
+
+    /**
+     * Calculates and returns an interpolated value, given the elapsed
+     * time fraction. The function determines the keyframe interval
+     * that the fraction falls within and then interpolates within
+     * that interval between the values of the bounding keyframes on that
+     * interval.
+     */
+    public function getValue(fraction:Number):Object
+    {
+        var n:int = keyframes.length;
+        if (n == 2)
+        {
+            // The common case where we are just animating from/to, as in the
+            // case of an AnimationProperty
+            var easedF:Number = (keyframes[1].easer) ?
+                keyframes[1].easer.ease(fraction) :
+                fraction;
+            return interpolator.interpolate(easedF, keyframes[0].value,
+                keyframes[1].value);
+        }
+        var prevT:Number = 0;
+        var prevValue:Object = keyframes[0].value;
+        for (var i:int = 1; i < n; ++i)
+        {
+            var kf:KeyFrame = keyframes[i];
+            if (fraction >= prevT && fraction < kf.timeFraction)
+            {
+                var t:Number = (fraction - prevT) / (kf.timeFraction - prevT);
+                var easedT:Number = (kf.easer) ? kf.easer.ease(t) : t;
+                return interpolator.interpolate(easedT, prevValue, kf.value);
+            }
+            prevT = kf.timeFraction;
+            prevValue = kf.value;
+        }
+        // Must be at the end of the animation
+        return keyframes[n-1].value;
+    }
+
+}
+}