Refactors context to use extension manager

--- src/org/robotlegs/v2/core/impl/Context.as
+++ src/org/robotlegs/v2/core/impl/Context.as
@@ -12,7 +12,6 @@
 	import flash.events.EventDispatcher;
 	import flash.events.IEventDispatcher;
 	import flash.system.ApplicationDomain;
-	import flash.utils.Dictionary;
 	import org.robotlegs.v2.core.api.IContext;
 	import org.robotlegs.v2.core.api.IContextConfig;
 	import org.robotlegs.v2.core.api.IContextExtension;
@@ -118,21 +117,19 @@

 		private const configClasses:Vector.<Class> = new Vector.<Class>;

-		private const extensionByClass:Dictionary = new Dictionary();
-
-		private const extensionClasses:Vector.<Class> = new Vector.<Class>;
+		private var extensionManager:ExtensionManager;

 		public function Context()
 		{
-			// This page intentionally left blank
+			extensionManager = new ExtensionManager(this);
 		}

 		public function destroy():void
 		{
 			logger.info('destroying context');
 			_destroyed && throwContextDestroyedError();
-			uninstallExtensions();
 			_destroyed = true;
+			extensionManager.destroy();
 		}

 		public function initialize():void
@@ -145,8 +142,7 @@
 			configureInjector();
 			mapInjections();
 			addContextToContextViewRegistry();
-			installExtensions();
-			initializeExtensions();
+			extensionManager.initialize();
 			initializeConfigs();
 			logger.info('context initialization complete');
 		}
@@ -155,18 +151,7 @@
 		{
 			logger.info('installing extension {0}', [extensionClass]);
 			_destroyed && throwContextDestroyedError();
-			if (extensionClasses.indexOf(extensionClass) != -1)
-				return this;
-
-			extensionClasses.push(extensionClass);
-
-			if (initialized)
-			{
-				const extension:IContextExtension = createExtension(extensionClass);
-				extension.install(this);
-				extension.initialize();
-			}
-
+			extensionManager.addExtension(extensionClass);
 			return this;
 		}

@@ -179,15 +164,7 @@
 		{
 			logger.info('uninstalling extension {0}', [extensionClass]);
 			_destroyed && throwContextDestroyedError();
-			const index:int = extensionClasses.indexOf(extensionClass);
-			if (index == -1)
-				return this;
-
-			extensionClasses.splice(index, 1);
-
-			const extension:IContextExtension = extensionByClass[extensionClass];
-			extension && extension.uninstall();
-
+			extensionManager.removeExtension(extensionClass);
 			return this;
 		}

@@ -230,13 +207,6 @@
 			logger.info('configuring injector');

 			_injector ||= createInjector();
-		}
-
-		private function createExtension(extensionClass:Class):IContextExtension
-		{
-			const extension:IContextExtension = injector.getInstance(extensionClass);
-			extensionByClass[extensionClass] = extension;
-			return extension;
 		}

 		private function createInjector():Injector
@@ -256,27 +226,6 @@
 			{
 				var config:IContextConfig = injector.getInstance(configClass);
 				config.configure(this);
-			}, this);
-		}
-
-		private function initializeExtensions():void
-		{
-			logger.info('initializing extensions');
-			extensionClasses.forEach(function(extensionClass:Class, ... rest):void
-			{
-				const extension:IContextExtension = extensionByClass[extensionClass]
-				extension.initialize();
-			}, this);
-		}
-
-		private function installExtensions():void
-		{
-			logger.info('installing extensions');
-
-			extensionClasses.forEach(function(extensionClass:Class, ... rest):void
-			{
-				const extension:IContextExtension = createExtension(extensionClass);
-				extension.install(this);
 			}, this);
 		}

@@ -303,17 +252,5 @@
 			logger.fatal(message);
 			throw new IllegalOperationError(message);
 		}
-
-		private function uninstallExtensions():void
-		{
-			logger.info('uninstalling extensions');
-			// uninstall in reverse order
-			var extensionClass:Class;
-			while (extensionClass = extensionClasses.pop())
-			{
-				const extension:IContextExtension = extensionByClass[extensionClass];
-				extension.uninstall();
-			}
-		}
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 6197
Author:   preilly@adobe.com
Date:     2009-04-22T18:38:17.547459Z

Log Message:
-----------
* Data binding optimization, which sets the Binding's source function
  to null and uses the source String to lookup the source value when
  the source is a public Document property or variable.  This should
  reduce compile time and runtime memory usage.

tests Passed: checkintests, mxunit databinding with and without AST gen

Needs QA: YES

Needs DOC: NO

API Change: NO

Reviewer: Pete F.

Code-level description of changes:

  frameworks/projects/framework/src/mx/binding/Binding.as

    Added srcString variable and param to constructor.

    Added defaultSrcFunc().

    Modified constructor to use defaultSrcFunc() when srcFunc is null.

  modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingFirstPassEvaluator.java

    Modified evaluate(Context, FunctionCommonNode) to use srcString,
    when srcFunc is null.

  modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java

    Added getSkeletonClass().

  modules/compiler/src/java/flex2/compiler/mxml/rep/BindingExpression.java

    Added getSourceAsProperty() and isSourcePublicProperty().

  modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm

    Modified emitBindingsSetup macro to output null for the srcFunc
    and output a srcString, when isSourcePublicProperty() is true.

  modules/compiler/src/java/flex2/compiler/mxml/ImplementationGenerator.java

    Modified generateBinding() to do the AST gen equivalent of the
    ClassDefLib.vm changes.

Modified Paths:
--------------
<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/modules/compiler/src/java/flex2/compiler/mxml/rep/BindingExpression.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Repeater.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/binding/Binding.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingFirstPassEvaluator.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/ImplementationGenerator.java</path>

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

--- frameworks/projects/mx/src/mx/core/Repeater.as
+++ frameworks/projects/mx/src/mx/core/Repeater.as
@@ -26,7 +26,6 @@
 import mx.events.CollectionEvent;
 import mx.events.CollectionEventKind;
 import mx.events.FlexEvent;
-import mx.events.PropertyChangeEvent;
 import mx.managers.ISystemManager;
 import mx.managers.SystemManager;
 import mx.automation.IAutomationObject;


DVR info now using correct times, fixes live edge seeking.

--- HLSPlugin/src/com/kaltura/hls/HLSIndexHandler.as
+++ HLSPlugin/src/com/kaltura/hls/HLSIndexHandler.as
@@ -740,26 +740,27 @@
 			trace("getFileForTime - " + time + " quality=" + quality);

 			var origQuality:int = quality;
-			quality = getWorkingQuality(quality);
+			quality = getWorkingQuality(quality);
+
 			var segments:Vector.<HLSManifestSegment> = getSegmentsForQuality( origQuality );
-
 			if(!checkAnySegmentKnowledge(segments))
 			{
 				if(!isBestEffortActive())
 				{
 					// We may also need to establish a timebase.
-					trace("Seeking without timebase; initiating request.")
+					trace("getFileForTime - Seeking without timebase; initiating request.");
 					return initiateBestEffortRequest(uint.MAX_VALUE, origQuality);
 				}
 				else
 				{
+					trace("getFileForTime - Waiting on knowledge!");
 					return new HTTPStreamRequest (HTTPStreamRequestKind.LIVE_STALL);
 				}
 			}

 			if(time < segments[0].startTime)
 			{
-				trace("::getFileForTime - SequenceSkip - time: " + time + " playlistStartTime: " + segments[0].startTime);
+				trace("getFileForTime - SequenceSkip - time: " + time + " playlistStartTime: " + segments[0].startTime);
 				time = segments[0].startTime;   /// TODO: HACK Alert!!! < this should likely be handled by DVRInfo (see dash plugin index handler)
 												/// No longer quite so sure this is a hack, but a requirement
 				++sequenceSkips;
@@ -772,19 +773,19 @@

 			if(seq == -1 && segments.length >= 2)
 			{
-				trace("Got out of bound timestamp. Trying to recover...");
+				trace("getFileForTime - Got out of bound timestamp. Trying to recover...");

 				var lastSeg:HLSManifestSegment = segments[Math.max(0, segments.length - 3)];

 				if(time < segments[0].startTime)
 				{
-					trace("Fell off oldest segment, going to start #" + segments[0].id)
+					trace("getFileForTime - Fell off oldest segment, going to start #" + segments[0].id)
 					seq = segments[0].id;
 					//bumpedTime = true;
 				}
 				else if(time > lastSeg.startTime)
 				{
-					trace("Fell off oldest segment, going to end #" + lastSeg.id)
+					trace("getFileForTime - Fell off oldest segment, going to end #" + lastSeg.id)
 					seq = lastSeg.id;
 					//bumpedTime = true;
 				}
@@ -798,18 +799,22 @@
 				fileHandler.segmentId = seq;
 				fileHandler.key = getKeyForIndex( seq );
 				fileHandler.segmentUri = curSegment.uri;
-				trace("Getting Segment[" + seq + "] StartTime: " + curSegment.startTime + " Continuity: " + curSegment.continuityEra + " URI: " + curSegment.uri);
+				trace("Getting Segment [" + seq + "] for StartTime: " + curSegment.startTime + " Continuity: " + curSegment.continuityEra + " URI: " + curSegment.uri);
 				return createHTTPStreamRequest( curSegment );
 			}
 			else
 			{
-				trace("Seeking to unknown location " + time + ", waiting.");
+				trace("getFileForTime - Seeking to unknown location " + time + ", waiting.");
 			}

 			// TODO: Handle live streaming lists by returning a stall.
 			if (!resource.manifest.streamEnds)
+			{
+				trace("getFileForTime - stalling.");
 				return new HTTPStreamRequest (HTTPStreamRequestKind.LIVE_STALL);
-
+			}
+
+			trace("getFileForTime - end of stream.s");
 			return new HTTPStreamRequest(HTTPStreamRequestKind.DONE);
 		}

@@ -984,18 +989,21 @@
 			if(!manifest)
 				return;

-			var segments:Vector.<HLSManifestSegment> = getSegmentsForQuality(lastQuality);
+			// Fetch active data.
 			var activeManifest:HLSManifestParser = getManifestForQuality(lastQuality);
+			var segments:Vector.<HLSManifestSegment> = activeManifest.segments;

 			if(segments.length > 0)
+			{
 				lastKnownPlaylistStartTime = segments[0].startTime;
-
-			var i:int = segments.length - 1;
-			if (i >= 0 && (activeManifest.allowCache || activeManifest.streamEnds))
-			{
+				var i:int = segments.length - 1;
+				if (i >= 0 && (activeManifest.allowCache || activeManifest.streamEnds))
+				{
 					accum = (segments[i].startTime + segments[i].duration) - lastKnownPlaylistStartTime;
-			}
-
+				}
+			}
+
+			// Push the metadata out.
 			var metadata:Object = new Object();
 			metadata.duration = accum;
 			var tag:FLVTagScriptDataObject = new FLVTagScriptDataObject();
@@ -1045,16 +1053,22 @@
 		private function dispatchDVRStreamInfo():void
 		{
 			var curManifest:HLSManifestParser = getManifestForQuality(lastQuality);
-			var segments:Vector.<HLSManifestSegment> = getSegmentsForQuality(lastQuality);
-			if (segments.length == 0) return; // No point, I think, in continuing
-
-			var firstSegment:HLSManifestSegment = segments[ 0 ];
-			var lastSegment:HLSManifestSegment = segments[segments.length - 1];
-
+			var segments:Vector.<HLSManifestSegment> = curManifest.segments;
+			if (segments.length == 0)
+			{
+				trace("Failed to dispatch DVR info, no segments!");
+				return;
+			}
+
+			updateSegmentTimes(segments);
+
+			var firstSegment:HLSManifestSegment = segments[0];
+			var lastSegment:HLSManifestSegment  = segments[segments.length - 1];
+
 			var dvrInfo:DVRInfo = new DVRInfo();
 			dvrInfo.offline = false;
 			dvrInfo.isRecording = !curManifest.streamEnds;  // TODO: verify that this is what we REALLY want to be doing
-			dvrInfo.startTime = firstSegment.startTime;
+			dvrInfo.startTime = firstSegment.startTime;
 			dvrInfo.beginOffset = firstSegment.startTime;
 			dvrInfo.endOffset = lastSegment.startTime + lastSegment.duration;
 			dvrInfo.curLength = dvrInfo.endOffset - dvrInfo.beginOffset;
@@ -1320,6 +1334,9 @@

 			// Try again.
 			stalled = false;
+
+			// Update DVR info in case we gained knowledge.
+			dispatchDVRStreamInfo();
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 5809
Author:   smgilson@adobe.com
Date:     2009-03-31T17:31:13.771321Z

Log Message:
-----------
Fix bad @copy tags in ASDoc comments

QE Notes: None
Doc Notes: None
Bugs: -

Modified Paths:
--------------
<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/airframework/src/mx/controls/FlexNativeMenu.as</path>

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

--- frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as
+++ frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as
@@ -1494,7 +1494,15 @@
     }

     /**
-     *  @copy flash.display.NativeMenu#display()
+     *  Pops up this menu at the specified location.
+     *
+     *  @param stage The Stage object on which to display this menu.
+     *
+     *  @param x The number of horizontal pixels, relative to the origin of stage,
+     *  at which to display this menu.
+     *
+     *  @param y The number of vertical pixels, relative to the origin of stage,
+     *  at which to display this menu.
      *
      *  @langversion 3.0
      *  @playerversion AIR 1.1


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

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

 package spark.accessibility
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 20292
Author:   smgilson@adobe.com
Date:     2011-02-11T16:53:14.813687Z

Log Message:
-----------
Minor ASDoc updates

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/styles/metadata/AdvancedNonInheritingTextStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -2534,8 +2534,8 @@
                 textChanged = false;
                 textFlowChanged = false;
                 contentChanged = false;
-				invalidateSize();
-				invalidateDisplayList();
+                invalidateSize();
+                invalidateDisplayList();
             }

             // If displayAsPassword changed, it only applies to the display,
@@ -3336,6 +3336,8 @@
          *
          *  @param activePosition A character position specifying
          *   the movable end of the selection.
+         *
+         *  @return A TextLayoutFormat object.
          *
          *  @langversion 3.0
          *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

Revision: 3916
Author:   gosmith@adobe.com
Date:     2008-10-27T22:45:53.541205Z

Log Message:
-----------
Renamed the getAttributes() and setAttributes() methods of TextView and FxTextArea to getSelectionFormat() and setSelectionFormat(), to match the spec.

Also, the contentWidth, contentHeight, horizontalScrollPosition, and verticalScrollPosition properties of TextView now implement binding using a PropertyChangeEvent, because this is what a Scroller expects. As part of this, I've moved the dispatchPropertyChangeEvent() utility method from GroupBase to UIComponent.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Hans

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxTextArea.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/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -302,7 +302,7 @@
      */
     private var _contentHeight:Number = 0;

-    [Bindable("contentSizeChanged")]
+    [Bindable("propertyChange")]

     /**
      *  Documentation is not currently available.
@@ -321,7 +321,7 @@
      */
     private var _contentWidth:Number = 0;

-    [Bindable("contentSizeChanged")]
+    [Bindable("propertyChange")]

     /**
      *  Documentation is not currently available.
@@ -387,7 +387,7 @@
      */
     private var horizontalScrollPositionChanged:Boolean = false;

-    [Bindable("scrollPositionChanged")]
+    [Bindable("propertyChange")]

     /**
      *  Documentation is not currently available.
@@ -589,7 +589,7 @@
      */
     private var verticalScrollPositionChanged:Boolean = false;

-    [Bindable("scrollPositionChanged")]
+    [Bindable("propertyChange")]

     /**
      *  Documentation is not currently available.
@@ -1102,13 +1102,13 @@
      *  that you want returned; if you don't, all attributes will be returned.
      *  If you don't specify a range, the selected range is used.
      *  For example, calling
-     *  getAttributes()
+     *  getSelectionFormat()
      *  might return ({ fontSize: 12, color: null })
      *  if the selection is uniformly 12-point but has multiple colors.
      *  The supported attributes are those in the
      *  ICharacterAttributes and IParagraphAttributes interfaces.
      */
-    public function getAttributes(names:Array = null):Object
+    public function getSelectionFormat(names:Array = null):Object
     {
         var selectionManager:ISelectionManager = textFlow.interactionManager;

@@ -1187,12 +1187,12 @@
      *  A value of null does not get applied.
      *  If you don't specify a range, the selected range is used.
      *  For example, calling
-     *  setAttributes({ fontSize: 12, color: 0xFF0000 })
+     *  setSelectionFormat({ fontSize: 12, color: 0xFF0000 })
      *  will set the fontSize and color of the selection.
      *  The supported attributes are those in the
      *  ICharacterFormat and IParagraphFormat interfaces.
      */
-    public function setAttributes(attributes:Object):void
+    public function setSelectionFormat(attributes:Object):void
     {
         var containerFormat:ContainerFormat;
         var paragraphFormat:ParagraphFormat;
@@ -1249,16 +1249,24 @@
         var containerController:IContainerController =
             textFlow.flowComposer.getControllerAt(0);

+        var oldContentWidth:Number = _contentWidth;
         var newContentWidth:Number = containerController.contentWidth;
+        if (newContentWidth != oldContentWidth)
+        {
+            _contentWidth = newContentWidth;
+
+            dispatchPropertyChangeEvent(
+                "contentWidth", oldContentWidth, newContentWidth);
+        }
+
+        var oldContentHeight:Number = _contentHeight;
         var newContentHeight:Number = containerController.contentHeight;
-
-        if (newContentWidth != _contentWidth ||
-            newContentHeight != _contentHeight)
-        {
-            _contentWidth = newContentWidth;
+        if (newContentHeight != oldContentHeight)
+        {
             _contentHeight = newContentHeight;
-
-            dispatchEvent(new Event("contentSizeChanged"));
+
+            dispatchPropertyChangeEvent(
+                "contentHeight", oldContentHeight, newContentHeight);
         }
     }

@@ -1272,18 +1280,26 @@
         var containerController:IContainerController =
             textFlow.flowComposer.getControllerAt(0);

+        var oldHorizontalScrollPosition:Number = _horizontalScrollPosition;
         var newHorizontalScrollPosition:Number =
             containerController.horizontalScrollPosition;
+        if (newHorizontalScrollPosition != oldHorizontalScrollPosition)
+        {
+            _horizontalScrollPosition = newHorizontalScrollPosition;
+
+            dispatchPropertyChangeEvent("horizontalScrollPosition",
+                oldHorizontalScrollPosition, newHorizontalScrollPosition);
+        }
+
+        var oldVerticalScrollPosition:Number = _verticalScrollPosition;
         var newVerticalScrollPosition:Number =
             containerController.verticalScrollPosition;
-
-        if (newHorizontalScrollPosition != _horizontalScrollPosition ||
-            newVerticalScrollPosition != _verticalScrollPosition)
-        {
-            _horizontalScrollPosition = newHorizontalScrollPosition;
+        if (newVerticalScrollPosition != oldVerticalScrollPosition)
+        {
             _verticalScrollPosition = newVerticalScrollPosition;
-
-            dispatchEvent(new Event("scrollPositionChanged"))
+
+            dispatchPropertyChangeEvent("verticalScrollPosition",
+                oldVerticalScrollPosition, newVerticalScrollPosition);
         }
     }


Added a flag to prevent automatic viewport scrolling in UIContainer

--- src/org/openPyro/core/UIContainer.as
+++ src/org/openPyro/core/UIContainer.as
@@ -523,7 +523,7 @@
 				})
 			});
 			_verticalScrollBar.addEventListener(PyroEvent.SIZE_VALIDATED, onVerticalScrollBarSizeValidated);
-			_verticalScrollBar.addEventListener(PyroEvent.UPDATE_COMPLETE, onVScrollBarUpdateComplete);
+			_verticalScrollBar.addEventListener(PyroEvent.CREATION_COMPLETE, onVScrollBarCreationComplete);
 			_verticalScrollBar.skin = IScrollableContainerSkin(_skin).verticalScrollBarSkin;
 			_verticalScrollBar.addEventListener(ScrollEvent.SCROLL, onVerticalScroll)
 			_verticalScrollBar.doOnAdded()
@@ -712,6 +712,19 @@
 		}

 		/**
+		 * The autoPositionViewport property determines whether the scrollRect
+		 * is applied immediately on updateDisplaylist or not. Certain controls
+		 * like Lists want to control the viewport positioning more explicitly.
+		 * For example, when an item is removed from the List or Tree, the default
+		 * setting of the autoPositionViewport will try to adjust the scroll to
+		 * the same percent value as before causing the list items to "jump". So
+		 * Lists turn this property to false and explicitly tell the viewport to
+		 * position only when its scrolled and not when items are added or removed
+		 *
+		 */
+		protected var autoPositionViewport:Boolean = true;
+
+		/**
 		 * Unlike UIControls, UIContainers do not apply a skin directly on
 		 * themselves but interpret the skin file and apply them to the
 		 * different children. So updateDisplayList here does not call
@@ -734,7 +747,7 @@
 				_horizontalScrollBar.y = this.height - _horizontalScrollBar.height-1;
 			}
 			super.updateDisplayList(unscaledWidth, unscaledHeight);
-			if(_clipContent){
+			if(_clipContent && autoPositionViewport){
 				this.setContentMask()
 			}
 		}
@@ -769,7 +782,7 @@
 		 * Event listener for the vertical scrollbar's
 		 * creation and validation event.
 		 */
-		protected function onVScrollBarUpdateComplete(event:PyroEvent):void
+		protected function onVScrollBarCreationComplete(event:PyroEvent):void
 		{
 			if(_horizontalScrollBar){
 				_horizontalScrollBar.y = _verticalScrollBar.height;
@@ -805,7 +818,7 @@
 				viewportHeight-=_horizontalScrollBar.height
 			}
 			if(_verticalScrollBar){
-				scrollY = _verticalScrollBar.value*(_contentHeight-viewportHeight);
+				scrollY = Math.max(0,_verticalScrollBar.value*(_contentHeight-viewportHeight));
 			}
 			if(_horizontalScrollBar){
 				scrollX = _horizontalScrollBar.value*(_contentWidth-viewportWidth);


370 Improved ArrayUtil

370 Improved ArrayUtil

Added handling for undefined and null values in functions involving uniqueness
Added equality functions, both ordered and unordered

--- raw/src/org/yellcorp/lib/core/ArrayUtil.as
+++ raw/src/org/yellcorp/lib/core/ArrayUtil.as
@@ -9,6 +9,13 @@
  */
 public class ArrayUtil
 {
+    // these private singletons are used to represent null or undefined
+    // values when using a Dictionary to eliminate duplicate elements.
+    // This is because null and undefined values are converted to Strings
+    // when attempting to use them as keys in a Dictionary.
+    private static var nullKey:Object = { };
+    private static var undefinedKey:Object = { };
+
     /**
      * Creates one array from multiple arrays by interleaving each member
      * from each array.
@@ -67,6 +74,7 @@

         return result;
     }
+

     /**
      * Array reduction, AKA a left fold.
@@ -121,6 +129,7 @@
         return acc;
     }

+
     /**
      * Given an object or array, and an array of indices or properties,
      * use the latter to index into the former.  Useful when calling
@@ -169,6 +178,7 @@
         return picked;
     }

+
     /**
      * Given an Array of objects, return the specified
      * property for each one.
@@ -191,13 +201,13 @@
     public static function mapToProperty(array:*, property:*):Array
     {
         var result:Array = [ ];
-
         for each (var member:* in array)
         {
             result.push(member[property]);
         }
         return result;
     }
+

     /**
      * Given an Array of objects, calls the specified method
@@ -221,12 +231,14 @@
      */
     public static function mapToMethod(array:*, methodName:String, methodArgs:* = null):Array
     {
-        var mapper:Function = function (m:*, i:int, a:*):*
-        {
-            return m[methodName].apply(m, methodArgs);
-        };
-        return array.map(mapper);
-    }
+        var result:Array = [ ];
+        for each (var member:* in array)
+        {
+            result.push(member[methodName].apply(member, methodArgs));
+        }
+        return result;
+    }
+

     /**
      * Calls a function for each member of an array, and returns how
@@ -272,6 +284,7 @@
         }
         return result;
     }
+

     /**
      * Calls a function for each member of an array, returning the index
@@ -367,6 +380,7 @@
         return -1;
     }

+
     /**
      * Calls a function for each member of an array, returning the first
      * member to return true.  If none return true, returns null.
@@ -429,6 +443,7 @@
         return index >= 0 ? array[index] : null;
     }

+
     /**
      * Returns a copy of an array with equal items removed.  Equality
      * checking is strict ===.
@@ -437,29 +452,106 @@
     {
         var result:Array = [ ];
         var member:*;
-        var dict:Dictionary = new Dictionary();
+        var memberKey:*;
+        var seen:Dictionary = new Dictionary(true);
         var i:int;

         for (i = 0; i < array.length; i++)
         {
             member = array[i];
-            if (member !== null && member !== undefined)
-            {
-                dict[member] = member;
-            }
-        }
-        for each (member in dict)
-        {
-            result.push(member);
-        }
-        dict = null;
+            memberKey = valueToKey(member);
+
+            if (!seen[memberKey])
+            {
+                result.push(member);
+                seen[memberKey] = member;
+            }
+        }
+        seen = null;
         return result;
     }

-    /**
-     * Helper function: Wraps a 1-argument function with a function
-     * signature suitable for passing to the 3-argument functional methods
-     * of Array.
+
+    /**
+     * Returns true if the elements in Array are strictly equal (===) to
+     * the elements in Array b, and appear in the same order.
+     */
+    public static function arraysEqual(a:*, b:*):Boolean
+    {
+        var len:int = a.length;
+
+        if (!a && !b)
+        {
+            return true;
+        }
+        else if (!a || !b)
+        {
+            return false;
+        }
+        else if (a.length !== b.length)
+        {
+            return false;
+        }
+        else
+        {
+            for (var i:int = 0; i < len; i++)
+            {
+                if (a[i] !== b[i])
+                {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+
+    /**
+     * Returns true if the elements in Array are strictly equal (===) to
+     * the elements in Array b. Order is not considered.
+     */
+    public static function arraysEqualUnordered(a:*, b:*):Boolean
+    {
+        var aCount:Dictionary;
+        var bCount:Dictionary;
+        var item:*;
+
+        if (!a && !b)
+        {
+            return true;
+        }
+        else if (!a || !b)
+        {
+            return false;
+        }
+        else if (a.length !== b.length)
+        {
+            return false;
+        }
+        else
+        {
+            aCount = countElements(a);
+            bCount = countElements(b);
+
+            for (item in a)
+            {
+                if (aCount[item] !== bCount[item])
+                {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+
+    /**
+     * Wraps a 1-argument function with a function signature suitable for
+     * passing to the 3-argument functional methods of Array.
+     *
+     * @param func  A function that accepts one argument, an array item.
+     * @return      A function that accepts three arguments, an array item,
+     *              an index, and an array.
      *
      * @see Array#every
      * @see Array#filter
@@ -467,13 +559,51 @@
      * @see Array#map
      * @see Array#some
      */
-    public static function simpleCallback(closure:Function):Function
+    public static function simpleCallback(func:Function):Function
     {
         function callback(item:*, index:int, array:*):*
         {
-            return closure(item);
+            return func(item);
         }
         return callback;
+    }
+
+
+    private static function countElements(a:*):Dictionary
+    {
+        var item:*;
+        var itemCount:Dictionary = new Dictionary(true);
+
+        for each (item in a)
+        {
+            item = valueToKey(item);
+            if (itemCount[item])
+            {
+                itemCount[item]++;
+            }
+            else
+            {
+                itemCount[item] = 1;
+            }
+        }
+        return itemCount;
+    }
+
+
+    private static function valueToKey(value:*):*
+    {
+        if (value === null)
+        {
+            return nullKey;
+        }
+        else if (value === undefined)
+        {
+            return undefinedKey;
+        }
+        else
+        {
+            return value;
+        }
     }
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19392
Author:   smgilson@adobe.com
Date:     2010-12-15T18:57:46.381068Z

Log Message:
-----------
SDoc updates

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

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigatorApplication.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigatorApplication.as
@@ -31,28 +31,83 @@
 [DefaultProperty("navigationStack")]

 /**
- *  ViewNavigatorApplication is an application class meant to provide a simple
+ *  The ViewNavigatorApplication class is an application class meant to provide a simple
  *  framework for applications that employ a view-based navigation model.
  *  When used, this class functions as the main entry point for the application
  *  and provides support for hardware device keys, orientation detection and
  *  application session persistence.
  *
- *
A view=based navigation model is characterized by a user interface
+ *
A view-based navigation model is characterized by a user interface
  *  where the end user navigates between a series of full screen views in
- *  response to user interaction.  This is a paradigm commonly used by
- *  mobile applications and is accomplished through the use of a built in
- *  ViewNavigator that lives in the application's skin.

+ *  response to user interaction.
+ *  This is a paradigm commonly used by mobile applications and is accomplished
+ *  through the use of a built in ViewNavigator container.

  *
- *
The firstView property can be used to define
- *  what View should be displayed first when the application is
- *  initialized.

+ *
Use the firstView property to specify
+ *  the View displayed first when the application is initialized.

  *
  *
Unlike Application, ViewNavigatorApplication is not meant to accept
- *  UIComponent objects as children.  Instead, all visual components should
- *  be children of the various views managed by the application.

+ *  UIComponent objects as children.
+ *  Instead, all visual components should be children of the
+ *  views managed by the application.

+ *
+ *
The ViewNavigatorApplication container has the following
+ *  default characteristics:

+ *

+ *

+ *           Characteristic
+ *           Description
+ *

+ *

+ *           Default size
+ *           100% high and 100% wide to take up all available screen space.
+ *

+ *

+ *           Child layout
+ *           Defined by the individual View containers
+ *               that make up the views of the application.
+ *

+ *

+ *           Scroll bars
+ *           None. If you do add scroll bars, users can scroll the entire application.
+ *              That includes the ActionBar and TabBar area of the application.
+ *              Because you typically do not want those areas of the view to scroll,
+ *              add scroll bars to the individual View containers of the application,
+ *              rather than to the application container itself.
+ *

+ *

+ *           Default skin class
+ *           spark.skins.mobile.ViewNavigatorApplicationSkin
+ *

+ *

+ *
+ *  @mxml
+ *
+ *
The <s:ViewNavigatorApplication> tag inherits all of the tag
+ *  attributes of its superclass and adds the following tag attributes:

+ *
+ *

+ *  <s:ViewNavigatorApplication
+ *    Properties
+ *    actionContent="null"
+ *    actionLayout="null"
+ *    firstView="null"
+ *    firstViewData="null"
+ *    navigationContent="null"
+ *    navigationLayout="null"
+ *    title=""
+ *    titleContent="null"
+ *    titleLayout="null"
+ *
+ *  />
+ *

+ *
+ *  @see spark.components.ViewNavigator
+ *  @see spark.components.View
+ *  @see spark.skins.mobile.ViewNavigatorApplicationSkin
  *
  *  @langversion 3.0
- *  @playerversion Flash 10.1
+ *  @playerversion Flash 10
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
@@ -202,9 +257,13 @@
     //----------------------------------

     /**
-     *  Provides access to the main navigator's actionBar
-     *  if one exists.  This property will only be valid after the
-     *  navigator has been added to the display list.
+     *  A reference to the view navigator's ActionBar control,
+     *  if one exists.
+     *  This property is only valid after the
+     *  view navigator has been added to the display list.
+     *
+     *  @see ActionBar
+     *  @see ViewNavigator
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -245,10 +304,7 @@
     private var _firstViewData:Object;

     /**
-     *  This is the initialization data to pass to the
-     *  first view when it is created.  This object will need to be set
-     *  before the first initialization pass for it to be considered
-     *  by the view navigator.
+     *  @copy ViewNavigator#firstViewData
      *
      *  @default null
      *
@@ -280,9 +336,9 @@
     private var _firstView:Class;

     /**
-     *  The class used to create the first view of the view navigator.
-     *  This property must be set before the first initialization pass
-     *  it to be considered by the application's navigator.
+     *  @copy ViewNavigator#firstView
+     *
+     *  @default null
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -314,14 +370,17 @@

     [ArrayElementType("mx.core.IVisualElement")]
     /**
-     *  The default array of visual elements that are used as the
-     *  ActionBar's actionContent when the current view does not
-     *  define one.
+     *  This property overrides the actionContent
+     *  property in the ActionBar control.
+     *
+     *  @copy ActionBar#actionContent
      *
      *  @default null
-     *
+     *
+     *  @see spark.components.ActionBar#actionContent
      *  @see spark.components.View#actionContent
      *  @see spark.components.ViewNavigator#actionContent
+     *  @see spark.skins.mobile.ActionBarSkin
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -356,11 +415,11 @@
     //----------------------------------

     /**
-     *  The default layout to apply to the ActionBar's action content
-     *  container when the current view does not define one.
+     *  @copy ActionBar#actionLayout
      *
      *  @default null
      *
+     *  @see spark.components.ActionBar#actionLayout
      *  @see spark.components.View#actionLayout
      *  @see spark.components.ViewNavigator#actionLayout
      *
@@ -398,14 +457,17 @@

     [ArrayElementType("mx.core.IVisualElement")]
     /**
-     *  The default array of visual elements that are used as the
-     *  ActionBar's navigation content when the current view doesn't
-     *  define any.
+     *  This property overrides the navigationContent
+     *  property in the ActionBar control.
+     *
+     *  @copy ActionBar#navigationContent
      *
      *  @default null
-     *
+     *
+     *  @see spark.components.ActionBar#navigationContent
      *  @see spark.components.View#navigationContent
      *  @see spark.components.ViewNavigator#navigationContent
+     *  @see spark.skins.mobile.ActionBarSkin
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -440,11 +502,11 @@
     //----------------------------------

     /**
-     *  The default layout for the ActionBar navigation content container
-     *  when the active view doesn't define one.
+     *  @copy ActionBar#navigationLayout
      *
      *  @default null
      *
+     *  @see spark.components.ActionBar#navigationLayout
      *  @see spark.components.View#navigationLayout
      *  @see spark.components.ViewNavigator#navigationLayout
      *
@@ -482,16 +544,19 @@

     [Bindable]
     /**
-     *  The default title that should be used by the ActionBar if the
-     *  active view doesn't provide one.
-     *
-     *  @default null
+     *  This property overrides the title
+     *  property in the ActionBar control.
+     *
+     *  @copy ActionBar#title
+     *
+     *  @default ""
      *
+     *  @see spark.components.ActionBar#title
      *  @see spark.components.View#title
      *  @see spark.components.ViewNavigator#title
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10.1
+     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
@@ -524,14 +589,17 @@

     [ArrayElementType("mx.core.IVisualElement")]
     /**
-     *  The default array of visual elements that are used as the
-     *  ActionBar's title content when the active view doesn't define
-     *  one.
+     *  This property overrides the titleContent
+     *  property in the ActionBar and ViewNavigatorApplication components.
+     *
+     *  @copy ActionBar#titleContent
      *
      *  @default null
-     *
+     *
+     *  @see spark.components.ActionBar#titleContent
      *  @see spark.components.View#titleContent
      *  @see spark.components.ViewNavigator#titleContent
+     *  @see spark.skins.mobile.ActionBarSkin
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -566,11 +634,11 @@
     //----------------------------------

     /**
-     *  The default layout for the ActionBar's title content container
-     *  when the active view doesn't define one.
+     *  @copy ActionBar#titleLayout
      *
      *  @default null
      *
+     *  @see spark.components.ActionBar#titleLayout
      *  @see spark.components.View#titleLayout
      *  @see spark.components.ViewNavigator#titleLayout
      *


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

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

 package mx.controls.advancedDataGridClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 14483
Author:   smgilson@adobe.com
Date:     2010-03-01T19:01:18.459430Z

Log Message:
-----------
merge 14456: Adding ASDoc version tags classes

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/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkRangeAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkRadioButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkPanelAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkButtonBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarAutomationImpl.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/automation/air/AirFunctionsHelper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkSkinnableContainerAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/events/SparkValueChangeAutomationEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkButtonBarBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkNavigatorContentAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkDataGroupAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkTrackBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/events/EventDetails.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/events/SparkListItemSelectEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTabBarAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkGroupAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSkinnableContainerBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/mediaClasses/SparkMuteButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/automation/air/AirDragManagerAutomationHandler.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/SOAPResult.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkTextBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTitleWindowAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTileGroupAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkToggleButtonAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkSpinnerAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccConst.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkLabelAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkBorderContainerAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkGroupBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkVideoPlayerAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkSkinnableComponentAutomationImpl.as</path>

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

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkButtonBarAutomationImpl.as
@@ -11,82 +11,81 @@

 package spark.automation.delegates.components
 {
-	import flash.display.DisplayObject;
-
-	import mx.automation.Automation;
-	import mx.core.mx_internal;
-
-	import spark.automation.delegates.components.supportClasses.SparkButtonBarBaseAutomationImpl;
-	import spark.components.ButtonBar;
-
-	use namespace mx_internal;
-
-	[Mixin]
-	/**
-	 *
-	 *  Defines methods and properties required to perform instrumentation for the
-	 *  ButtonBar control.
-	 *
-	 *  @see spark.components.ButtonBar
-	 *
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 1.1
-	 *  @productversion Flex 4
-	 */
-	public class SparkButtonBarAutomationImpl extends SparkButtonBarBaseAutomationImpl
-	{
-		include "../../../core/Version.as";
-
-		//--------------------------------------------------------------------------
-		//
-		//  Class methods
-		//
-		//--------------------------------------------------------------------------
-
-		/**
-		 *  Registers the delegate class for a component class with automation manager.
-		 *
-		 *  @param root The SystemManger of the application.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 9
-		 *  @playerversion AIR 1.1
-		 *  @productversion Flex 3
-		 */
-		public static function init(root:DisplayObject):void
-		{
-			Automation.registerDelegateClass(spark.components.ButtonBar, SparkButtonBarAutomationImpl);
-		}
-
-		//--------------------------------------------------------------------------
-		//
-		//  Constructor
-		//
-		//--------------------------------------------------------------------------
-
-		/**
-		 *  Constructor.
-		 * @param obj ButtonBar object to be automated.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 9
-		 *  @playerversion AIR 1.1
-		 *  @productversion Flex 3
-		 */
-		public function SparkButtonBarAutomationImpl(obj:spark.components.ButtonBar)
-		{
-			super(obj);
-		}
-
-		/**
-		 *  @private
-		 *  storage for the owner component
-		 */
-		protected function get sparkButtonBar():spark.components.ButtonBar
-		{
-			return uiComponent as spark.components.ButtonBar;
-		}
-	}
+    import flash.display.DisplayObject;
+
+    import mx.automation.Automation;
+    import mx.core.mx_internal;
+
+    import spark.automation.delegates.components.supportClasses.SparkButtonBarBaseAutomationImpl;
+    import spark.components.ButtonBar;
+
+    use namespace mx_internal;
+
+    [Mixin]
+    /**
+     *
+     *  Defines methods and properties required to perform instrumentation for the
+     *  ButtonBar control.
+     *
+     *  @see spark.components.ButtonBar
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public class SparkButtonBarAutomationImpl extends SparkButtonBarBaseAutomationImpl
+    {
+        include "../../../core/Version.as";
+
+        //--------------------------------------------------------------------------
+        //
+        //  Class methods
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  Registers the delegate class for a component class with automation manager.
+         *
+         *  @param root The SystemManger of the application.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 3
+         */
+        public static function init(root:DisplayObject):void
+        {
+            Automation.registerDelegateClass(spark.components.ButtonBar, SparkButtonBarAutomationImpl);
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Constructor
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  Constructor.
+         * @param obj ButtonBar object to be automated.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 3
+         */
+        public function SparkButtonBarAutomationImpl(obj:spark.components.ButtonBar)
+        {
+            super(obj);
+        }
+
+        /**
+         *  @private
+         *  storage for the owner component
+         */
+        protected function get sparkButtonBar():spark.components.ButtonBar
+        {
+            return uiComponent as spark.components.ButtonBar;
+        }
+    }
 }


Fixed issues in AsDoc comments

Fixed issues in AsDoc comments

--- src/asfac/src/com/thedevstop/asfac/AsFactory.as
+++ src/asfac/src/com/thedevstop/asfac/AsFactory.as
@@ -62,8 +62,8 @@
 		 * Registers a callback to be executed, the result of which is returned whenever the target type is requested
 		 * @param	callback the callback to execute
 		 * @param	type the type being requested
-		 * @param	asSingleton If true, only one instance will be created and returned on each request. If false (default), a new instance
-		 * is created and returned at each resolution request
+		 * @param	asSingleton If true, callback is only invoked once and the result is returned on each request. If false (default),
+		 * callback is invoked on each resolution request
 		 */
 		public function registerCallback(callback:Function, type:Class, asSingleton:Boolean=false):void
 		{
@@ -94,7 +94,7 @@
 		}

 		/**
-		 * Returns an instance for the target type, using prior registrations to fufill constructor parameters
+		 * Returns an instance for the target type, using prior registrations to fulfill constructor parameters
 		 * @param	type the type being requested
 		 * @return resolved instance
 		 */


Nice arrows for edge rendering

Nice arrows for edge rendering

--- src/renderers/ConceptEdgeRenderer.as
+++ src/renderers/ConceptEdgeRenderer.as
@@ -12,6 +12,31 @@

 	public class ConceptEdgeRenderer implements IEdgeRenderer
 	{
+		private function computeLinePoint(x0:int, y0:int, t:UIComponent, x:int, y:int): Point
+		{
+			var aspect:Number = Number(x0-x)/Number(y0-y);
+			var realX: int, realY: int;
+			var tx:int = t.x-5;
+			var ty:int = t.y-5;
+			var w:int = t.width + 10;
+			var h:int = t.height + 10;
+
+			if ((w / h) > Math.abs(aspect)) {
+				if (y > ty+h)
+					realY = ty + h;
+				else
+					realY = ty;
+				realX = (realY - y0)*(x-x0)/(y-y0)+x0;
+			} else {
+				if (x > tx+w)
+					realX = tx + w;
+				else
+					realX = tx;
+				realY = (realX - x0)*(y-y0)/(x-x0)+y0;
+			}
+			return new Point(realX, realY);
+		}
+
 		public function draw(g:Graphics, fromView:UIComponent, toView:UIComponent, fromX:int, fromY:int, toX:int, toY:int, graph:Graph):Boolean
 		{
 			var color: uint = 0x8888ff;
@@ -19,33 +44,40 @@
 			var thickness: int = 1;
 			var item1:Item = (fromView as Object).data;
 			var item2:Item = (toView as Object).data;
+			var linePoints:Array = [computeLinePoint(fromX, fromY, fromView, toX, toY),
+									computeLinePoint(toX, toY, toView, fromX, fromY)];
+
+			// check orientation
 			var fromId:String = graph.getLinkData(item1, item2).toString();
 			if (item1.id != fromId) {
-				var aux:int = fromX;
-				fromX = toX;
-				toX = aux;
-				aux = fromY;
-				fromY = toY;
-				toY = aux;
+				linePoints.reverse();
 			}
+			fromX = linePoints[0].x;
+			fromY = linePoints[0].y;
+			toX = linePoints[1].x;
+			toY = linePoints[1].y;
+
+			// compute arrow point coordinates
 			var m:Matrix = new Matrix;
-			var center:Point = new Point((fromX + toX)/2, (fromY + toY)/2);
+			//var target:Point = new Point((fromX + toX)/2, (fromY + toY)/2);
+			var target:Point = linePoints[1];
 			var pivot:Point = new Point(toX, toY);
-			pivot = pivot.subtract(center);
+			pivot = pivot.subtract(linePoints[0]);
 			pivot.normalize(10.0);
 			m.rotate(Math.PI*0.85);
-			var arrowPoint1:Point = m.transformPoint(pivot).add(center);
+			var arrowPoint1:Point = m.transformPoint(pivot).add(target);
 			m.rotate(Math.PI*0.3);
-			var arrowPoint2:Point = m.transformPoint(pivot).add(center);
+			var arrowPoint2:Point = m.transformPoint(pivot).add(target);

+			// draw line + arrow
 			g.lineStyle(thickness,color,alpha);
 			g.beginFill(color);
 			g.moveTo(fromX, fromY);
 			g.lineTo(toX, toY);
-			g.moveTo(center.x, center.y);
+			g.moveTo(target.x, target.y);
 			g.lineTo(arrowPoint1.x, arrowPoint1.y);
 			g.lineTo(arrowPoint2.x, arrowPoint2.y);
-			g.lineTo(center.x, center.y);
+			g.lineTo(target.x, target.y);
 			g.endFill();
 			return true;
 		}


Showing better message in case the server speaks old protocol.

--- flash-src/WebSocket.as
+++ flash-src/WebSocket.as
@@ -312,6 +312,18 @@
       onError("invalid Connection: " + header["Connection"]);
       return false;
     }
+    if (!header["Sec-WebSocket-Origin"]) {
+      if (header["WebSocket-Origin"]) {
+        onError(
+          "The WebSocket server speaks old WebSocket protocol, " +
+          "which is not supported by web-socket-js. " +
+          "It requires WebSocket protocol 76 or later. " +
+          "Try newer version of the server if available.");
+      } else {
+        onError("header Sec-WebSocket-Origin is missing");
+      }
+      return false;
+    }
     var resOrigin:String = header["Sec-WebSocket-Origin"].toLowerCase();
     if (resOrigin != origin) {
       onError("origin doesn't match: '" + resOrigin + "' != '" + origin + "'");


Ooops, stray null in there.

Ooops, stray null in there.

--- net/flashpunk/Entity.as
+++ net/flashpunk/Entity.as
@@ -371,7 +371,7 @@
 		 */
 		public function collideTypesInto(types:Object, x:Number, y:Number, array:Object):void
 		{
-			if (!_world) return null;
+			if (!_world) return;
 			for each (var type:String in types) collideInto(type, x, y, array);
 		}


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

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

 package mx.containers
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19635
Author:   aharui@adobe.com
Date:     2011-01-07T00:25:18.039632Z

Log Message:
-----------
revert the layout changes from svn 18635.  Management feels that there isn't enough time to thoroughly test the changes.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/layoutClasses/PriorityQueue.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Application.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/SkinnableContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/BitmapImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airspark/src/spark/components/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/IContainerInvalidating.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ILayoutManagerContainerClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TabbedViewNavigatorApplicationSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/IStyleManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/TextFieldGridItemRendererInclude.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mx/src/mx/core/Container.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/LayoutManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/mx/src/mx/core/Container.as
+++ frameworks/projects/mx/src/mx/core/Container.as
@@ -3972,10 +3972,6 @@
             child.dispatchEvent(new FlexEvent(FlexEvent.ADD));

         super.childAdded(child); // calls createChildren()
-
-        if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_5)
-            if (child is ILayoutElement)
-                validateEstimatedSizesOfChild(ILayoutElement(child));
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 6725
Author:   jimurphy@adobe.com
Date:     2009-05-07T20:18:13.398180Z

Log Message:
-----------
Merged beta1 revisions 6693,6702,6706-6707,6716,6720-6721 -> trunk

Modified Paths:
--------------
<path kind="file" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/swf/AbstractFXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexFXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/FXGParser.java</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/FXGTranscoder.java" copyfrom-rev="6707" action="A">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/FXGTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/build.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/fills/LinearGradientFillNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/DelegateNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexTextGraphicNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/util/FileResolver.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexSpanNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/strokes/RadialGradientStrokeNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/LibraryNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/filters/GradientGlowFilterNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/init/ValueInitializer.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/AbstractFXGNode.java</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/dom/FXGNode.java" copyfrom-rev="6707" action="R">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/dom/FXGNode.java</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/swf/FXG2SWFTranscoder.java" copyfrom-rev="6707" action="A">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/swf/FXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/media/FXGTranscoder.java</path>
<path kind="file" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/FXGDOMTraverser.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/util/FXGResourceResolverFactory.java" copyfrom-rev="6707" action="R">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/util/FXGResourceResolverFactory.java</path>
<path kind="file" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/FXGLogger.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/AbstractShapeNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/FilterNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/DefinitionNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/filters/GradientBevelFilterNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/fills/RadialGradientFillNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/fills/BitmapFillNode.java</path>
<path kind="dir" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/util" copyfrom-rev="6707" action="A">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/util</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexResourceResolver.java</path>
<path kind="file" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/ResourceResolverFactory.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/MaskPropertyNode.java</path>
<path kind="file" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/ResourceResolver.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/text/AbstractCharacterTextNode.java</path>
<path kind="file" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/FXGLoggerFactory.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/TransformNode.java</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/TextGraphicNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/sax/FXGSAXParser.java</path>
<path kind="file" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/swf/FXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/FillNode.java</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/util/FXGLoggerFactory.java" copyfrom-rev="6707" action="R">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/util/FXGLoggerFactory.java</path>
<path kind="file" action="D">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/FXGNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/MaskingNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/text/ParagraphNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/GroupNode.java</path>
<path kind="dir" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/dom" copyfrom-rev="6707" action="A">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/dom</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/util/FXGLogger.java" copyfrom-rev="6707" action="R">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/util/FXGLogger.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexParagraphNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/GroupDefinitionNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/StrokeNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/GraphicContentNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/strokes/LinearGradientStrokeNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/util/SystemLogger.java</path>
<path kind="file" action="M">/flex/sdk/trunk/build.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/GraphicNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/MaskableNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/sax/FXGSAXScanner.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/TextNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FXGCompiler.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/dom/text/SpanNode.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/beta1/modules/fxgutils/src/java/com/adobe/fxg/util/FXGResourceResolver.java" copyfrom-rev="6707" action="R">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/fxg/util/FXGResourceResolver.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/fxgutils/src/java/com/adobe/internal/fxg/util/AbstractLogger.java</path>

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

--- frameworks/projects/mx/src/mx/core/Container.as
+++ frameworks/projects/mx/src/mx/core/Container.as
@@ -2987,7 +2987,7 @@
         // contains the instance children if there are any; but if the
         // document defines any children, we have to use them instead.

-        if (isDocument && documentDescriptor && !processedDescriptors)
+        if (documentDescriptor && !processedDescriptors)
         {
             // NOTE: documentDescriptor.properties is a potentially
             // expensive function call, so do it only once.


add VertexStream.pushFloats(Vector.<Number>) and make sure VertexStream._minimum and VertexStream._maximum are not null after ini.

--- src/aerys/minko/render/geometry/stream/VertexStream.as
+++ src/aerys/minko/render/geometry/stream/VertexStream.as
@@ -118,6 +118,8 @@
 		{
 			_changed = new Signal('VertexStream.changed');
 			_boundsChanged = new Signal('VertexStream.boundsChanged');
+			_minimum = new <Number>[];
+			_maximum = new <Number>[];

 			_resource = new VertexBuffer3DResource(this);
 			_format = format || DEFAULT_FORMAT;
@@ -338,12 +340,12 @@

 			var boundsHaveChanged : Boolean = false;

-			if (value < _minimum[offset])
+			if (offset >= _minimum.length || value < _minimum[offset])
 			{
 				_minimum[offset] = value;
 				boundsHaveChanged = true;
 			}
-			else if (value > _maximum[offset])
+			else if (offset >= _maximum.length || value > _maximum[offset])
 			{
 				_maximum[offset] = value;
 				boundsHaveChanged = true;
@@ -389,6 +391,24 @@
 		{
 			_data.position = _data.bytesAvailable;
 			_data.writeFloat(value);
+			_data.position = 0;
+
+			if (!_locked)
+			{
+				_changed.execute(this);
+				_boundsChanged.execute(this);
+			}
+
+			return this;
+		}
+
+		public function pushFloats(values : Vector.<Number>) : VertexStream
+		{
+			var numFloats : uint = values.length;
+
+			_data.position = _data.bytesAvailable;
+			for (var i : uint = 0; i < numFloats; ++i)
+				_data.writeFloat(values[i]);
 			_data.position = 0;

 			if (!_locked)


removed deprecated AbstractController.ticked signal (issue #7 on github)

--- src/aerys/minko/scene/controller/AbstractController.as
+++ src/aerys/minko/scene/controller/AbstractController.as
@@ -37,27 +37,6 @@
 		public function get numTargets() : uint
 		{
 			return _targets.length;
-		}
-
-		/**
-		 * The signal executed when the "tick" method is called to update the controller.
-		 * If the controller's mode is Controller.SIGNAL, the "tick" method is never called
-		 * and this signal is never dispatched.
-		 *
-		 * Callback functions for this signal should accept the following arguments:
-		 *

-		 *
controller : AbstractController, the controller from which the signal is
-		 * being executed

-		 *
time : Number, the time - in milliseconds - spent until the Scene object
-		 * was created

-		 *
target : ISceneNode, the target of the controller

-		 *

-		 * @return
-		 *
-		 */
-		public function get ticked() : Signal
-		{
-			return _ticked;
 		}

 		/**


Pulled mask configuration into its own method.

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

--- src/as/com/threerings/util/MediaContainer.as
+++ src/as/com/threerings/util/MediaContainer.as
@@ -116,15 +116,9 @@
         info.addEventListener(ProgressEvent.PROGRESS, loadProgress);

         // create a mask to prevent the media from drawing out of bounds
-        if (maxContentWidth < int.MAX_VALUE  &&
+        if (maxContentWidth < int.MAX_VALUE &&
                 maxContentHeight < int.MAX_VALUE) {
-            var mask :Shape = new Shape();
-            mask.graphics.beginFill(0xFFFFFF);
-            mask.graphics.drawRect(0, 0, maxContentWidth, maxContentHeight);
-            mask.graphics.endFill();
-            // the mask must be added to the display list (which is wacky)
-            rawChildren.addChild(mask);
-            loader.mask = mask;
+            configureMask(maxContentWidth, maxContentHeight);
         }

         // start it loading, add it as a child
@@ -175,6 +169,12 @@
     public function shutdown (completely :Boolean = true) :void
     {
         try {
+            // remove the mask
+            if (_media != null && _media.mask != null) {
+                rawChildren.removeChild(_media.mask);
+                _media.mask = null;
+            }
+
             if (_media is Loader) {
                 var loader :Loader = (_media as Loader);
                 // remove any listeners
@@ -188,10 +188,6 @@
                 }
                 loader.unload();

-                // remove from hierarchy
-                if (loader.mask != null) {
-                    rawChildren.removeChild(loader.mask);
-                }
                 rawChildren.removeChild(loader);

             } else if (_media is VideoDisplay) {
@@ -415,6 +411,28 @@
     }

     /**
+     * Configure the mask for this object.
+     */
+    protected function configureMask (ww :int, hh :int) :void
+    {
+        var mask :Shape;
+        if (_media.mask != null) {
+            mask = (_media.mask as Shape);
+
+        } else {
+            mask = new Shape();
+            // the mask must be added to the display list (which is wacky)
+            rawChildren.addChild(mask);
+            _media.mask = mask;
+        }
+
+        mask.graphics.clear();
+        mask.graphics.beginFill(0xFFFFFF);
+        mask.graphics.drawRect(0, 0, ww, hh);
+        mask.graphics.endFill();
+    }
+
+    /**
      * Called during loading as we figure out how big the content we're
      * loading is.
      */


Transferred from the Adobe Open Source Subversion Repository

Revision: 14354
Author:   jimurphy@adobe.com
Date:     2010-02-23T15:05:48.761194Z

Log Message:
-----------
resetting the build number in version.as
The build automated process checked it in as 4.5.0.13964 when it should have been 4.5.0.0

QE notes: no
Doc notes: no
Bugs: https://bugs.adobe.com/jira/browse/SDK-25489
Reviewer: no
Tests run: ran version test included in the bug
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_flashflexkit/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_dmv/src/mx/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airspark/src/spark/core/Version.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Version.as</path>

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

--- frameworks/projects/rpc/src/mx/core/Version.as
+++ frameworks/projects/rpc/src/mx/core/Version.as
@@ -14,4 +14,4 @@
  *  @private
  *  Version string for this class.
  */
-mx_internal static const VERSION:String = "4.5.0.13964";
+mx_internal static const VERSION:String = "4.5.0.0";