Transferred from the Adobe Open Source Subversion Repository

Revision: 3733
Author:   dsubrama@adobe.com
Date:     2008-10-17T23:32:38.140528Z

Log Message:
-----------
Better scrolling and selection synchronization in List. Its not perfect, but better then what we had - though not where Halo List is. This is feature work to be done post-MAX.

Reviewer: Glenn
Checkintests: Pass
QA: Yes
Bug: SDK-17355

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

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -19,7 +19,6 @@
 import mx.components.baseClasses.FxListBase;
 import mx.core.ClassFactory;
 import mx.events.ItemExistenceChangedEvent;
-import mx.layout.BasicLayout;
 import mx.layout.HorizontalLayout;
 import mx.layout.VerticalLayout;
 import mx.skins.spark.FxDefaultItemRenderer;
@@ -62,7 +61,7 @@

         //Add a keyDown event listener so we can adjust
         //selection accordingly.
-        addEventListener(KeyboardEvent.KEY_DOWN, list_keyDownHandler);
+        addEventListener(KeyboardEvent.KEY_DOWN, list_keyDownHandler, true);
     }

     //--------------------------------------------------------------------------
@@ -443,44 +442,83 @@

     /**
      *  @private
+     *  Build in basic keyboard navigation support in List.
+     *  TODO: Deepa - add overrideable methods to control
+     *  keyboard navigation across components and layout.
      */
     private function list_keyDownHandler(event:KeyboardEvent):void
     {
+    	var nextInView:Number;
     	switch (event.keyCode)
         {
             case Keyboard.UP:
             {
             	if (layout is VerticalLayout)
+            	{
+            		nextInView = VerticalLayout(layout).inView(selectedIndex-1);
+            		//The next item is already in full or partial view - don't scroll, just select it.
+            		if ((nextInView == 1) || (nextInView < 0))
+            			event.stopPropagation();
+            		//The last item was selected and partially in view, don't increment selection
+            		if (nextInView == 0 && (VerticalLayout(layout).firstIndexInView == selectedIndex))
+            			return;
+            		//Adjust selection
             		if (selectedIndex > 0)
             			selectedIndex--;
+            	}
             	break;
             }
             case Keyboard.DOWN:
             {
             	if (layout is VerticalLayout)
+            	{
+            		nextInView = VerticalLayout(layout).inView(selectedIndex+1);
+            		//The next item is already in full or partial view - don't scroll
+            		if ((nextInView == 1) || (nextInView < 0))
+            			event.stopPropagation();
+            		//The last item was selected and partially in view, don't increment selection
+            		if (nextInView == 0 && (VerticalLayout(layout).lastIndexInView == selectedIndex))
+            			return;
+            		//Adjust selection
+    				if (selectedIndex < (dataProvider.length - 1))
+    					selectedIndex++;
+            	}
+                break;
+            }
+            case Keyboard.LEFT:
+            {
+            	if (layout is HorizontalLayout)
+            	{
+            		nextInView = HorizontalLayout(layout).inView(selectedIndex-1);
+            		//The next item is already in full or partial view - don't scroll
+            		if ((nextInView == 1) || (nextInView < 0))
+            			event.stopPropagation();
+            		//The last item was selected and partially in view, don't increment selection
+            		if (nextInView == 0 && (HorizontalLayout(layout).firstIndexInView == selectedIndex))
+            			return;
+            		//Adjust selection
+            		if (selectedIndex > 0)
+            			selectedIndex--;
+            	}
+            	break;
+            }
+            case Keyboard.RIGHT:
+            {
+            	if (layout is HorizontalLayout)
+            	{
+            		nextInView = HorizontalLayout(layout).inView(selectedIndex+1);
+            		//The next item is already in full or partial view - don't scroll
+            		if ((nextInView == 1) || (nextInView < 0))
+            			event.stopPropagation();
+            		//The last item was selected and partially in view, don't increment selection
+            		if (nextInView == 0 && (HorizontalLayout(layout).lastIndexInView == selectedIndex))
+            			return;
+            		//Adjust selection
             		if (selectedIndex < (dataProvider.length - 1))
             			selectedIndex++;
-                break;
-            }
-            case Keyboard.LEFT:
-            {
-            	if (layout is HorizontalLayout)
-            		if (selectedIndex > 0)
-            			selectedIndex--;
+            	}
             	break;
-            }
-            case Keyboard.RIGHT:
-            {
-            	if (layout is HorizontalLayout)
-            		if (selectedIndex < (dataProvider.length - 1))
-            			selectedIndex++;
-            	break;
-            }
-            default:
-            {
-            	//make sure keyDown handlers set in tag are clled
-                event.stopPropagation();
-            }
+            }
         }
     }


Changed target.scene to ancestor.scene.

Changed target.scene to ancestor.scene.

--- src/aerys/minko/scene/controller/EnterFrameController.as
+++ src/aerys/minko/scene/controller/EnterFrameController.as
@@ -62,7 +62,7 @@
 		private function addedHandler(target	: ISceneNode,
 									  ancestor	: Group) : void
 		{
-			var scene : Scene = target.scene;
+			var scene : Scene = ancestor.scene;

 			if (!scene)
 				return ;


layouts need to be IBeadLayout

layouts need to be IBeadLayout

--- frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/NonVirtualVerticalLayout.as
+++ frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/NonVirtualVerticalLayout.as
@@ -19,7 +19,7 @@
 package org.apache.flex.html.beads.layouts
 {

-	import org.apache.flex.core.IBead;
+	import org.apache.flex.core.IBeadLayout;
 	import org.apache.flex.core.ILayoutParent;
     import org.apache.flex.core.IParentIUIBase;
 	import org.apache.flex.core.IStrand;
@@ -39,7 +39,7 @@
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	public class NonVirtualVerticalLayout implements IBead
+	public class NonVirtualVerticalLayout implements IBeadLayout
 	{
         /**
          *  Constructor.


Sending non-standard ports with Host header.  Resolves issue #9

--- AS3WebSocket/src/com/worlize/websocket/WebSocket.as
+++ AS3WebSocket/src/com/worlize/websocket/WebSocket.as
@@ -680,9 +680,14 @@
 		private function sendHandshake():void {
 			serverHandshakeResponse = "";

+			var hostValue:String = host;
+			if ((_secure && _port !== 443) || (!_secure && _port !== 80)) {
+				hostValue += (":" + _port.toString());
+			}
+
 			var text:String = "";
 			text += "GET " + resource + " HTTP/1.1\r\n";
-			text += "Host: " + host + "\r\n";
+			text += "Host: " + hostValue + "\r\n";
 			text += "Upgrade: websocket\r\n";
 			text += "Connection: Upgrade\r\n";
 			text += "Sec-WebSocket-Key: " + base64nonce + "\r\n";


minor refactor

minor refactor

--- src/aerys/minko/render/geometry/stream/VertexStream.as
+++ src/aerys/minko/render/geometry/stream/VertexStream.as
@@ -152,12 +152,12 @@
 		{
 			checkReadUsage(this);

-			var size	: uint	= format.numBytesPerVertex >>> 2;
-			var i		: uint	= 0;
-
-			_minimum = new Vector.<Number>(size, true);
-			_maximum = new Vector.<Number>(size, true);
-			for (i = 0; i < size; ++i)
+			var numFloatsPerVertex	: uint	= format.numBytesPerVertex >>> 2;
+			var i					: uint	= 0;
+
+			_minimum = new Vector.<Number>(numFloatsPerVertex, true);
+			_maximum = new Vector.<Number>(numFloatsPerVertex, true);
+			for (i = 0; i < numFloatsPerVertex; ++i)
 			{
 				_minimum[i] = Number.MAX_VALUE;
 				_maximum[i] = -Number.MAX_VALUE;
@@ -167,9 +167,9 @@
 			var numFloats			: uint		= _data.bytesAvailable >>> 2;

 			_data.position = 0;
-			for (i = 0; i < numFloats; i += size)
-			{
-				for (var j : uint = 0; j < size; ++j)
+			for (i = 0; i < numFloats; i += numFloatsPerVertex)
+			{
+				for (var j : uint = 0; j < numFloatsPerVertex; ++j)
 				{
 					var value : Number = _data.readFloat();


added more debug info

added more debug info

--- WeaveCore/src/weave/core/ProgressIndicator.as
+++ WeaveCore/src/weave/core/ProgressIndicator.as
@@ -26,10 +26,6 @@
 	import weave.api.getCallbackCollection;
 	import weave.compiler.StandardLib;

-	/**
-	 * This is an implementation of IProgressIndicator.
-	 * @author adufilie
-	 */
 	public class ProgressIndicator implements IProgressIndicator
 	{
 		public static var debug:Boolean = false;
@@ -182,7 +178,7 @@
 			{
 				var stackTrace:String = _stackTrace[i]; // check this when debugging
 				var description:String = _description[i];
-				trace(description, stackTrace);
+				trace(debugId(i), description, stackTrace);
 			}
 		}
 	}


improved speed of getDefinition()

improved speed of getDefinition()

--- WeaveJS/src/weavejs/core/ClassRegistryImpl.as
+++ WeaveJS/src/weavejs/core/ClassRegistryImpl.as
@@ -109,37 +109,41 @@
 		 */
 		public function getDefinition(name:String):*
 		{
-			if (!name)
-				return undefined;
-
-			var def:* = JS.global;
+			// check cache
+			var def:* = map_name_class.get(name);
+			if (def || !name)
+				return def;
+
+			// try following names from global scope
 			var names:Array = name.split('.');
+			def = JS.global;
 			for each (var key:String in names)
 			{
-				if (def !== undefined)
-					def = def[key];
-				else
+				if (!def)
 					break;
-			}
-			if (def)
-				return def;
-
-			if (names.length == 1)
+				def = def[key];
+			}
+
+			// check default packages
+			if (!def && names.length == 1)
 			{
 				for each (var pkg:String in defaultPackages)
 				{
 					def = getDefinition(pkg + '.' + name);
 					if (def)
-						return def;
+						break;
 				}
 			}

-			def = map_name_class.get(name);
+			// try short name
+			if (!def && name.indexOf("::") > 0)
+				def = getDefinition(name.split('::').pop());
+
+			// save in cache
 			if (def)
-				return def;
-
-			if (name.indexOf("::") > 0)
-				return getDefinition(name.split('::').pop());
+				map_name_class.set(name, def);
+
+			return def;
 		}

 		/**


don't run this part unless there are enough children

--- frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
+++ frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as
@@ -218,60 +218,129 @@
                 horizontalMargins[i] = { marginLeft: ml, marginRight: mr, halign: halign };
             }

-            for (i = n - 1; i > flexChildIndex; i--)
-			{
-				child = contentView.getElementAt(i) as IUIBase;
-				margin = ValuesManager.valuesImpl.getValue(child, "margin");
-				if (margin is Array)
-				{
-					if (margin.length == 1)
-						marginLeft = marginTop = marginRight = marginBottom = margin[0];
-					else if (margin.length <= 3)
-					{
-						marginLeft = marginRight = margin[1];
-						marginTop = marginBottom = margin[0];
-					}
-					else if (margin.length == 4)
-					{
-						marginLeft = margin[3];
-						marginBottom = margin[2];
-						marginRight = margin[1];
-						marginTop = margin[0];
-					}
-				}
-				else if (margin == null)
-				{
-					marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left");
-					marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top");
-					marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right");
-					marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom");
-				}
-				else
-				{
-					marginLeft = marginTop = marginBottom = marginRight = margin;
-				}
-				mt = Number(marginTop);
-				if (isNaN(mt))
-					mt = 0;
-				mb = Number(marginBottom);
-				if (isNaN(mb))
-					mb = 0;
-				if (marginLeft == "auto")
-					ml = 0;
-				else
-				{
-					ml = Number(marginLeft);
-					if (isNaN(ml))
-						ml = 0;
-				}
-				if (marginRight == "auto")
-					mr = 0;
-				else
-				{
-					mr = Number(marginRight);
-					if (isNaN(mr))
-						mr = 0;
-				}
+            if (n > 0 && n > flexChildIndex)
+            {
+                for (i = n - 1; i > flexChildIndex; i--)
+    			{
+    				child = contentView.getElementAt(i) as IUIBase;
+    				margin = ValuesManager.valuesImpl.getValue(child, "margin");
+    				if (margin is Array)
+    				{
+    					if (margin.length == 1)
+    						marginLeft = marginTop = marginRight = marginBottom = margin[0];
+    					else if (margin.length <= 3)
+    					{
+    						marginLeft = marginRight = margin[1];
+    						marginTop = marginBottom = margin[0];
+    					}
+    					else if (margin.length == 4)
+    					{
+    						marginLeft = margin[3];
+    						marginBottom = margin[2];
+    						marginRight = margin[1];
+    						marginTop = margin[0];
+    					}
+    				}
+    				else if (margin == null)
+    				{
+    					marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left");
+    					marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top");
+    					marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right");
+    					marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom");
+    				}
+    				else
+    				{
+    					marginLeft = marginTop = marginBottom = marginRight = margin;
+    				}
+    				mt = Number(marginTop);
+    				if (isNaN(mt))
+    					mt = 0;
+    				mb = Number(marginBottom);
+    				if (isNaN(mb))
+    					mb = 0;
+    				if (marginLeft == "auto")
+    					ml = 0;
+    				else
+    				{
+    					ml = Number(marginLeft);
+    					if (isNaN(ml))
+    						ml = 0;
+    				}
+    				if (marginRight == "auto")
+    					mr = 0;
+    				else
+    				{
+    					mr = Number(marginRight);
+    					if (isNaN(mr))
+    						mr = 0;
+    				}
+                    child.x = ml;
+                    if (child is ILayoutChild)
+                    {
+                        ilc = child as ILayoutChild;
+                        if (!isNaN(ilc.percentWidth))
+                            ilc.setWidth(contentView.width * ilc.percentWidth / 100, true);
+                    }
+                    maxWidth = Math.max(maxWidth, ml + child.width + mr);
+                    child.y = hh - child.height - mb;
+    				hh -= child.height + mt + mb;
+    				lastmt = mt;
+                    halign = ValuesManager.valuesImpl.getValue(child, "horizontal-align");
+                    horizontalMargins[i] = { marginLeft: ml, marginRight: mr, halign: halign };
+    			}
+
+                child = contentView.getElementAt(flexChildIndex) as IUIBase;
+                margin = ValuesManager.valuesImpl.getValue(child, "margin");
+                if (margin is Array)
+                {
+                    if (margin.length == 1)
+                        marginLeft = marginTop = marginRight = marginBottom = margin[0];
+                    else if (margin.length <= 3)
+                    {
+                        marginLeft = marginRight = margin[1];
+                        marginTop = marginBottom = margin[0];
+                    }
+                    else if (margin.length == 4)
+                    {
+                        marginLeft = margin[3];
+                        marginBottom = margin[2];
+                        marginRight = margin[1];
+                        marginTop = margin[0];
+                    }
+                }
+                else if (margin == null)
+                {
+                    marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left");
+                    marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top");
+                    marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right");
+                    marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom");
+                }
+                else
+                {
+                    marginLeft = marginTop = marginBottom = marginRight = margin;
+                }
+                mt = Number(marginTop);
+                if (isNaN(mt))
+                    mt = 0;
+                mb = Number(marginBottom);
+                if (isNaN(mb))
+                    mb = 0;
+                if (marginLeft == "auto")
+                    ml = 0;
+                else
+                {
+                    ml = Number(marginLeft);
+                    if (isNaN(ml))
+                        ml = 0;
+                }
+                if (marginRight == "auto")
+                    mr = 0;
+                else
+                {
+                    mr = Number(marginRight);
+                    if (isNaN(mr))
+                        mr = 0;
+                }
                 child.x = ml;
                 if (child is ILayoutChild)
                 {
@@ -280,78 +349,12 @@
                         ilc.setWidth(contentView.width * ilc.percentWidth / 100, true);
                 }
                 maxWidth = Math.max(maxWidth, ml + child.width + mr);
-                child.y = hh - child.height - mb;
-				hh -= child.height + mt + mb;
-				lastmt = mt;
+                child.y = yy + mt;
+                child.height = hh - yy - mb;
                 halign = ValuesManager.valuesImpl.getValue(child, "horizontal-align");
-                horizontalMargins[i] = { marginLeft: ml, marginRight: mr, halign: halign };
-			}
+                horizontalMargins[flexChildIndex] = { marginLeft: ml, marginRight: mr, halign: halign };
+            }

-            child = contentView.getElementAt(flexChildIndex) as IUIBase;
-            margin = ValuesManager.valuesImpl.getValue(child, "margin");
-            if (margin is Array)
-            {
-                if (margin.length == 1)
-                    marginLeft = marginTop = marginRight = marginBottom = margin[0];
-                else if (margin.length <= 3)
-                {
-                    marginLeft = marginRight = margin[1];
-                    marginTop = marginBottom = margin[0];
-                }
-                else if (margin.length == 4)
-                {
-                    marginLeft = margin[3];
-                    marginBottom = margin[2];
-                    marginRight = margin[1];
-                    marginTop = margin[0];
-                }
-            }
-            else if (margin == null)
-            {
-                marginLeft = ValuesManager.valuesImpl.getValue(child, "margin-left");
-                marginTop = ValuesManager.valuesImpl.getValue(child, "margin-top");
-                marginRight = ValuesManager.valuesImpl.getValue(child, "margin-right");
-                marginBottom = ValuesManager.valuesImpl.getValue(child, "margin-bottom");
-            }
-            else
-            {
-                marginLeft = marginTop = marginBottom = marginRight = margin;
-            }
-            mt = Number(marginTop);
-            if (isNaN(mt))
-                mt = 0;
-            mb = Number(marginBottom);
-            if (isNaN(mb))
-                mb = 0;
-            if (marginLeft == "auto")
-                ml = 0;
-            else
-            {
-                ml = Number(marginLeft);
-                if (isNaN(ml))
-                    ml = 0;
-            }
-            if (marginRight == "auto")
-                mr = 0;
-            else
-            {
-                mr = Number(marginRight);
-                if (isNaN(mr))
-                    mr = 0;
-            }
-            child.x = ml;
-            if (child is ILayoutChild)
-            {
-                ilc = child as ILayoutChild;
-                if (!isNaN(ilc.percentWidth))
-                    ilc.setWidth(contentView.width * ilc.percentWidth / 100, true);
-            }
-            maxWidth = Math.max(maxWidth, ml + child.width + mr);
-            child.y = yy + mt;
-            child.height = hh - yy - mb;
-            halign = ValuesManager.valuesImpl.getValue(child, "horizontal-align");
-            horizontalMargins[flexChildIndex] = { marginLeft: ml, marginRight: mr, halign: halign };
-
             for (i = 0; i < n; i++)
 			{
 				var obj:Object = horizontalMargins[0]


Update to complete the testFailNotStrictlyEqualsFails test.

--- FlexUnit4Test/src/org/flexunit/cases/AssertCase.as
+++ FlexUnit4Test/src/org/flexunit/cases/AssertCase.as
@@ -148,18 +148,16 @@
 			var o:Object = new Object();
 			Assert.failNotStrictlyEquals( "Assert strictly equals fail", o, o );
 		}
-//TODO:: This test is not complete. Errors in my build prevented completion.
+
 		[Test(description="Ensure that the failNotStrictlyEquals function fails when two non-strictly equal values are provided")]
 		public function testFailNotStrictlyEqualsFails():void {
 			var failed:Boolean = false;
-/*
 			try {
 				Assert.failNotStrictlyEquals( "Assert strictly equals fail", 5, "5" );
 			} catch ( error:AssertionFailedError ) {
 				failed = true;
-				Assert.assertEquals( "expected true but was false", error.message );
-			}
-*/
+				Assert.assertEquals( "Assert strictly equals fail - expected:<5> but was:<5>", error.message );
+			}
 			if ( !failed ) {
 				Assert.fail( "Assert strictly equals didn't fail" );
 			}


Transferred from the Adobe Open Source Subversion Repository

Revision: 12469
Author:   jimurphy@adobe.com
Date:     2009-12-03T22:04:16.560316Z

Log Message:
-----------
fix offsets for FB.  Convert line ending from lf to crlf in svn for the proects directory only.  When checking project files in, be sure to save you files this way.  Another update to make sure happens is set the svn properties svn:eol-style = native and svn:mime-type = text/plain (these have been updated on theses files as well)

QE notes: make sure the proper class is selected
Doc notes: no
Bugs: http://bugs.adobe.com/jira/browse/SDK-24498
Reviewer:
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
133 paths were modified

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

--- frameworks/projects/airframework/src/mx/controls/fileSystemClasses/FileSystemDataGridNameColumnRenderer.as
+++ frameworks/projects/airframework/src/mx/controls/fileSystemClasses/FileSystemDataGridNameColumnRenderer.as
@@ -379,4 +379,4 @@
         }
     }
 }
-}+}


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

--- frameworks/projects/automation_spark/src/spark/automation/delegates/SparkRichEditableTextAutomationHelper.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/SparkRichEditableTextAutomationHelper.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.automation.delegates
 {


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

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkComboBoxAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkComboBoxAutomationImpl.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  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.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

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

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkNavigatorContentAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkNavigatorContentAutomationImpl.as
@@ -0,0 +1,76 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.automation.delegates.components
+{
+	import flash.display.DisplayObject;
+
+	import mx.automation.Automation;
+	import mx.core.mx_internal;
+
+	import spark.components.NavigatorContent;
+
+
+	use namespace mx_internal;
+
+	[Mixin]
+
+	/**
+	 *
+	 *  Defines methods and properties required to perform instrumentation for the
+	 *  NavigatorContent control.
+	 *
+	 *  @see spark.components.NavigatorContent
+	 *
+	 */
+	public class SparkNavigatorContentAutomationImpl extends SparkSkinnableContainerAutomationImpl
+	{
+		include "../../../core/Version.as";
+
+		//--------------------------------------------------------------------------
+		//
+		//  Class methods
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Registers the delegate class for a component class with automation manager.
+		 *
+		 *  @param root The SystemManger of the application.
+		 */
+		public static function init(root:DisplayObject):void
+		{
+			Automation.registerDelegateClass(spark.components.NavigatorContent, SparkNavigatorContentAutomationImpl);
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Constructor
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Constructor.
+		 * @param obj NavigatorContent object to be automated.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 4
+		 */
+		public function SparkNavigatorContentAutomationImpl(obj:spark.components.NavigatorContent)
+		{
+			super(obj);
+		}
+
+
+	}
+}


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

--- frameworks/projects/automation_air/src/mx/automation/delegates/controls/fileSystemClasses/FileSystemDataGridNameColumnRendererAutomationImpl.as
+++ frameworks/projects/automation_air/src/mx/automation/delegates/controls/fileSystemClasses/FileSystemDataGridNameColumnRendererAutomationImpl.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.automation.delegates.controls.fileSystemClasses
 {


Backdrop didn't behave properly with repeatX or repeatY set to false.

--- net/flashpunk/graphics/Backdrop.as
+++ net/flashpunk/graphics/Backdrop.as
@@ -26,7 +26,7 @@
 			_repeatY = repeatY;
 			_textWidth = _texture.width;
 			_textHeight = _texture.height;
-			super(FP.width + _textWidth * uint(repeatX), FP.height + _textHeight * uint(repeatY));
+			super(FP.width * uint(repeatX) + _textWidth, FP.height * uint(repeatY) + _textHeight);
 			FP.rect.x = FP.rect.y = 0;
 			FP.rect.width = _width;
 			FP.rect.height = _height;


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 11942
Author:   dloverin@adobe.com
Date:     2009-11-18T17:33:13.065717Z

Log Message:
-----------
StyleManager fixes.

Stop using the styleManager property in a constructor.
framework/src/mx/containers/DividedBox.as
framework/src/mx/containers/Form.as
framework/src/mx/controls/ButtonBar.as

Cache inheriting styles. Also made static arrays in StyleManagerImpl per-instance.
framework/src/mx/events/FlexChangeEvent.as
framework/src/mx/styles/StyleManagerImpl.as

Remove static StyleManager methods that were new to Flex 4 (qualifiedTypeSelectors property, getStyleDeclarations(), hasAdvancedSelectors(), hasPseudoCondition()).
framework/src/mx/styles/StyleManager.as

Update copyright.
framework/src/mx/styles/CSSMergedStyleDeclaration.as

QE notes: None.
Doc notes: None.
Bugs: SDK-24215
Reviewer: Alex
Tests run: checkintests, containers/DividedBox, containers/form, components/ButtonBar, Managers/StyleManager, PerModuleStyleManager
Is noteworthy for integration: yes - StyleManager performance improvement

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSMergedStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Form.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexChangeEvent.as</path>

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

--- frameworks/projects/mx/src/mx/controls/ButtonBar.as
+++ frameworks/projects/mx/src/mx/controls/ButtonBar.as
@@ -25,12 +25,15 @@
 import mx.core.EdgeMetrics;
 import mx.core.FlexVersion;
 import mx.core.IFlexDisplayObject;
+import mx.core.IFlexModuleFactory;
 import mx.core.IUIComponent;
 import mx.core.mx_internal;
 import mx.events.ChildExistenceChangedEvent;
 import mx.events.ItemClickEvent;
 import mx.managers.IFocusManagerComponent;
+import mx.styles.CSSSelector;
 import mx.styles.CSSStyleDeclaration;
+import mx.styles.IStyleManager2;

 use namespace mx_internal;

@@ -350,23 +353,6 @@

         addEventListener(ChildExistenceChangedEvent.CHILD_REMOVE,
                          childRemoveHandler);
-
-        if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_0)
-        {
-            var typeSelector:CSSStyleDeclaration =
-                styleManager.getStyleDeclaration("mx.controls.ButtonBar");
-
-            if (typeSelector)
-            {
-                if (typeSelector.getStyle("borderSkin") === undefined)
-                {
-                    var globalSelector:CSSStyleDeclaration =
-                        styleManager.getStyleDeclaration("global");
-                    typeSelector.setStyle("borderSkin",
-                        globalSelector.getStyle("borderSkin"));
-                }
-            }
-        }
     }

     //--------------------------------------------------------------------------
@@ -459,6 +445,13 @@
      */
     private var directionChanged:Boolean = false;

+    /**
+     *  @private
+     *  Flag indicating whether styles in the the module factory override
+     *  have been set.
+     */
+    private var moduleFactoryOverrideStylesSet:Boolean = false;
+
     //--------------------------------------------------------------------------
     //
     //  Overridden properties
@@ -498,6 +491,46 @@
         super.direction = value;
     }

+    /**
+     *  @private
+     */
+    override public function set moduleFactory(moduleFactory:IFlexModuleFactory):void
+    {
+        super.moduleFactory = moduleFactory;
+
+        if (moduleFactoryOverrideStylesSet)
+            return;
+
+        moduleFactoryOverrideStylesSet = true;
+
+        if (FlexVersion.compatibilityVersion >= FlexVersion.VERSION_4_0)
+        {
+            var typeSelector:CSSStyleDeclaration = styleManager.getMergedStyleDeclaration("mx.controls.ButtonBar");
+
+            if (typeSelector)
+            {
+                var borderSkin:* =
+                    styleManager.getMergedStyleDeclaration("global").getStyle("borderSkin");
+
+                if (typeSelector.getStyle("borderSkin") !== borderSkin)
+                {
+                    // Setting a merged style is not supported so get a local style.
+                    typeSelector = styleManager.getStyleDeclaration("mx.controls.ButtonBar");
+
+                    // Our style manager may not have a local definition of the
+                    // button bar style so add a local one so we can modify it.
+                    if (!typeSelector)
+                    {
+                        var selector:CSSSelector = new CSSSelector("mx.controls.ButtonBar", null, null);
+                        typeSelector = new CSSStyleDeclaration(selector, styleManager);
+                    }
+
+                    typeSelector.setStyle("borderSkin", borderSkin);
+                }
+            }
+        }
+    }
+
     //----------------------------------
     //  viewMetrics
     //----------------------------------


Escaping injected script tag URI with JSON.stringify

--- src/org/openvv/OVVAsset.as
+++ src/org/openvv/OVVAsset.as
@@ -536,7 +536,7 @@
 				var injectTag:String =
 					'function () {' +
 					'var tag = document.createElement("script");' +
-					'tag.src = "' + tagUrl + '";' +
+					'tag.src = ' + JSON.stringify(tagUrl) + ';' +
 					'tag.type="text/javascript";' +
 					'document.getElementsByTagName("body")[0].appendChild(tag); }';
 				ExternalInterface.call( injectTag );


Replacing mutual recursion with iteration.

It could be too easy to blow the stack with a large result set.

--- driver/src/main/flex/org/postgresql/febe/MessageBroker.as
+++ driver/src/main/flex/org/postgresql/febe/MessageBroker.as
@@ -1,11 +1,11 @@
 package org.postgresql.febe {

+    import flash.events.Event;
     import flash.events.EventDispatcher;
-    import flash.events.ProgressEvent;
-
+
     import mx.logging.ILogger;
     import mx.logging.Log;
-
+
     import org.postgresql.febe.message.AuthenticationRequest;
     import org.postgresql.febe.message.BackendKeyData;
     import org.postgresql.febe.message.Bind;
@@ -21,6 +21,7 @@
     import org.postgresql.febe.message.NoData;
     import org.postgresql.febe.message.NoticeResponse;
     import org.postgresql.febe.message.ParameterStatus;
+    import org.postgresql.febe.message.ParseComplete;
     import org.postgresql.febe.message.PasswordMessage;
     import org.postgresql.febe.message.Query;
     import org.postgresql.febe.message.ReadyForQuery;
@@ -37,11 +38,6 @@
         private static const LOGGER:ILogger = Log.getLogger("org.postgresql.febe.MessageBroker");

         public static const backendMessageTypes:Object = {
-            /*
-                Note that authentication messages are *not* in this
-                map since they all share a single message type and
-                so must be treated distinctly
-            */
             'R': AuthenticationRequest,
             'K': BackendKeyData,
             'B': Bind,
@@ -52,6 +48,7 @@
             'n': NoData,
             'N': NoticeResponse,
             'S': ParameterStatus,
+            '1': ParseComplete,
             'Z': ReadyForQuery,
             'T': RowDescription
         }
@@ -63,12 +60,6 @@

         private var _dispatcher:EventDispatcher;

-        // Dummy references to ensure these are compiled in; we should be able to remove
-        // these once Pegasus exposes functionality that actually uses all these
-        private static const FEMessages:Array = [
-            CancelRequest, Describe, Flush, PasswordMessage, Query, StartupMessage, Sync, Terminate
-        ];
-
         public function MessageBroker(stream:IDataStream) {
             _dataStream = stream;
             _dataStream.addEventListener(SocketDataStream.DATA_AVAILABLE, handleSocketData);
@@ -79,40 +70,29 @@
             _dispatcher = new EventDispatcher();
         }

-        private function handleSocketData(e:ProgressEvent):void {
-            if (_nextMessageLen != -1 && _dataStream.bytesAvailable >= _nextMessageLen) {
-                readNextPayload();
-            } else if (_nextMessageLen == -1 && _dataStream.bytesAvailable >= 5) {
-                readNextHeader();
-            }
-        }
-
-        private function readNextHeader():void {
-            _nextMessageType = _dataStream.readByte();
-            // FEBE encodes the message length as including the size
-            // of the length field itself. This does not work well for
-            // our purposes--we subtract the size of the length field.
-            _nextMessageLen = _dataStream.readInt() - 4;
-            if (_dataStream.bytesAvailable >= _nextMessageLen) {
-                readNextPayload();
-            }
-        }
-
-        private function readNextPayload():void {
-            // TODO: We should not have to copy the message to its own array: we
-            // should wrap the stream in something that sets a 'dummy' limit to
-            // the number of bytes this particular message can read.
-            var messageBytes:ByteDataStream = new ByteDataStream();
-            _dataStream.readBytes(messageBytes, 0, _nextMessageLen);
-
-            var nextMessage:IBEMessage = new backendMessageTypes[String.fromCharCode(_nextMessageType)]();
-            nextMessage.read(messageBytes);
-            dispatch(nextMessage);
-            _nextMessageType = -1;
-            _nextMessageLen = -1;
-            if (_dataStream.bytesAvailable >= 5) {
-                readNextHeader();
-            }
+        private function handleSocketData(e:Event):void {
+        	while ((_nextMessageLen == -1 && _dataStream.bytesAvailable >= 5) ||
+        	       (_nextMessageLen != -1 && _dataStream.bytesAvailable >= _nextMessageLen)) {
+                if (_nextMessageLen == -1) {
+                	_nextMessageType = _dataStream.readByte();
+                    // FEBE encodes the message length as including the size
+                    // of the length field itself. This does not work well for
+                    // our purposes--we subtract the size of the length field.
+                	_nextMessageLen = _dataStream.readInt() - 4;
+                } else {
+		            // TODO: We should not have to copy the message to its own array: we
+		            // should wrap the stream in something that sets a 'dummy' limit to
+		            // the number of bytes this particular message can read.
+		            var messageBytes:ByteDataStream = new ByteDataStream();
+		            _dataStream.readBytes(messageBytes, 0, _nextMessageLen);
+
+		            var nextMessage:IBEMessage = new backendMessageTypes[String.fromCharCode(_nextMessageType)]();
+		            nextMessage.read(messageBytes);
+		            dispatch(nextMessage);
+		            _nextMessageType = -1;
+		            _nextMessageLen = -1;
+                }
+	        }
         }

         public function send(message:IFEMessage):void {


added testForClass_shouldHaveCorrectDeclaringTypesOnAccessors test

--- test/src/as3reflect/TypeTest.as
+++ test/src/as3reflect/TypeTest.as
@@ -23,6 +23,7 @@

 	import as3reflect.testclasses.ComplexClass;
 	import as3reflect.testclasses.PublicClass;
+	import as3reflect.testclasses.PublicSubClass;

 	import flash.utils.describeType;

@@ -71,44 +72,62 @@
 			var errorConstant:Field = type.getField("ERROR");
 			assertEquals(LogEventLevel.ERROR, errorConstant.getValue());
 		}
+
+		public function testForClass_shouldHaveCorrectDeclaringTypesOnAccessors():void {
+			var type:Type = Type.forClass(PublicSubClass);
+			for each (var accessor:Accessor in type.accessors) {
+				// acc4 is defined in PublicSubClass
+				// prototype is defined in Class
+				// all other accessors are defined in PublicClass
+				if (accessor.name == "acc4") {
+					assertEquals("PublicSubClass", accessor.declaringType.name);
+				}
+				else if (accessor.name == "prototype") {
+					assertEquals("Class", accessor.declaringType.name);
+				}
+				else {
+					assertEquals("PublicClass", accessor.declaringType.name);
+				}
+			}
+		}

 		public function testNoArgumentConstructorClass():void {
-		  var type:Type = Type.forClass(PublicClass);
-		  var constructor:Constructor = type.constructor;
-		  assertNotNull(constructor);
-		  assertNotNull(constructor.declaringType);
-		  assertEquals(constructor.declaringType.clazz, PublicClass);
-		  assertEquals(constructor.parameters.length, 0);
+		var type:Type = Type.forClass(PublicClass);
+		var constructor:Constructor = type.constructor;
+		assertNotNull(constructor);
+		assertNotNull(constructor.declaringType);
+		assertEquals(constructor.declaringType.clazz, PublicClass);
+		assertEquals(constructor.parameters.length, 0);
 		}

 		public function testWithArgumentConstructorClass():void {

-		  var type:Type = Type.forClass(ComplexClass);
+		var type:Type = Type.forClass(ComplexClass);

-		  var constructor:Constructor= type.constructor;
-		  assertNotNull(constructor);
-		  assertNotNull(constructor.declaringType);
-		  assertEquals(constructor.declaringType.clazz, ComplexClass);
-		  assertEquals(constructor.parameters.length, 3);
+		var constructor:Constructor= type.constructor;
+		assertNotNull(constructor);
+		assertNotNull(constructor.declaringType);
+		assertEquals(constructor.declaringType.clazz, ComplexClass);
+		assertEquals(constructor.parameters.length, 3);

-		  var firstParameter:Parameter = constructor.parameters[0];
+		var firstParameter:Parameter = constructor.parameters[0];

-		  assertFalse(firstParameter.isOptional);
-		  assertEquals(1, firstParameter.index);
-		  assertEquals(String, firstParameter.type.clazz);
-
-		  var secondParameter:Parameter = constructor.parameters[1];
+		assertFalse(firstParameter.isOptional);
+		assertEquals(1, firstParameter.index);
+		assertEquals(String, firstParameter.type.clazz);
+
+		var secondParameter:Parameter = constructor.parameters[1];

-		  assertFalse(secondParameter.isOptional);
-		  assertEquals(2, secondParameter.index);
-		  assertEquals(Number, secondParameter.type.clazz);
-
-
-		  var thirdParameter:Parameter = constructor.parameters[2];
+		assertFalse(secondParameter.isOptional);
+		assertEquals(2, secondParameter.index);
+		assertEquals(Number, secondParameter.type.clazz);
+
+
+		var thirdParameter:Parameter = constructor.parameters[2];

-		  assertTrue(thirdParameter.isOptional);
-		  assertEquals(3, thirdParameter.index);
-		  assertEquals(Array, thirdParameter.type.clazz);
+		assertTrue(thirdParameter.isOptional);
+		assertEquals(3, thirdParameter.index);
+		assertEquals(Array, thirdParameter.type.clazz);
 		}

 	}


Transferred from the Adobe Open Source Subversion Repository

Revision: 1280
Author:   jimurphy@adobe.com
Date:     2008-04-18T00:47:49.350652Z

Log Message:
-----------
merge 3.0.x[1266:1266] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/SimpleXMLDecoder.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/rpc/src/mx/messaging/config/ConfigMap.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/Operation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MultiTopicProducer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/QualifiedResourceManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/Producer.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/utils/ObjectProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/soap/mxml/Operation.as</path>

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

--- frameworks/projects/rpc/src/mx/rpc/soap/mxml/Operation.as
+++ frameworks/projects/rpc/src/mx/rpc/soap/mxml/Operation.as
@@ -47,7 +47,14 @@
     //
     //--------------------------------------------------------------------------

-    public function Operation(webService:mx.rpc.soap.WebService = null, name:String = null)
+     /**
+      * Creates a new Operation.
+      *
+      * @param webService The web service upon which this Operation is invoked.
+      *
+      * @param name The name of this Operation.
+      */
+   public function Operation(webService:mx.rpc.soap.WebService = null, name:String = null)
     {
         super(webService, name);

@@ -145,11 +152,7 @@
     }

     /**
-     * Execute the method.  Any arguments passed in will be passed along as part of the method call.  If there are
-     * no arguments passed the arguments array will be used as the source of parameters.
-     *
-     * @return the call object that can be used as part of the asynchronous completion token pattern, the same
-     *         object will be available in the result/fault events.
+     * @private
      */
     override public function send(... args:Array):AsyncToken
     {


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 22561
Author:   smgilson@adobe.com
Date:     2011-09-14T19:12:37.612519Z

Log Message:
-----------
Minor ASDoc 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/4.y/frameworks/projects/framework/src/mx/events/RSLEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mx/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/events/ModuleEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/advancedgrids/src/mx/events/AdvancedDataGridEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/events/EventListenerRequest.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>

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

--- frameworks/projects/mx/src/mx/controls/DataGrid.as
+++ frameworks/projects/mx/src/mx/controls/DataGrid.as
@@ -117,6 +117,11 @@
  *  Dispatched when the item editor has just been instantiated.
  *
  *  @eventType mx.events.DataGridEvent.ITEM_EDITOR_CREATE
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 [Event(name="itemEditorCreate", type="mx.events.DataGridEvent")]


Transferred from the Adobe Open Source Subversion Repository

Revision: 30
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-18T22:32:51.846161Z

Log Message:
-----------
Perforce Change 191363 by aharui@aharui-pc2 on 2007/12/18 15:29:23 OffscreenRowAndColumn bugs relating to scrolling and drag/drop. Bugs: SDK-13976, SDK-13977, SDK-13980 QA: Doc:

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>

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

--- frameworks/projects/mx/src/mx/controls/DataGrid.as
+++ frameworks/projects/mx/src/mx/controls/DataGrid.as
@@ -342,6 +342,7 @@
 [Exclude(name="iconField", kind="property")]
 [Exclude(name="iconFunction", kind="property")]
 [Exclude(name="labelField", kind="property")]
+[Exclude(name="offscreenExtraRowsOrColumns", kind="property")]
 [Exclude(name="showDataTips", kind="property")]
 [Exclude(name="cornerRadius", kind="style")]

@@ -1984,8 +1985,6 @@
         if (rowCount > 1 && displayingPartialRow())
             rowCount--;

-        rowCount -= (offscreenExtraRowsTop + offscreenExtraRowsBottom);
-
         // offset, when added to rowCount, is the index of the dataProvider
         // item for that row.  IOW, row 10 in listItems is showing dataProvider
         // item 10 + verticalScrollPosition - lockedRowCount;
@@ -2011,6 +2010,8 @@
             if (adjustVerticalScrollPositionDownward(Math.max(rowCount, 1)))
                 return;
         }
+
+        rowCount -= (offscreenExtraRowsTop + offscreenExtraRowsBottom);

         var collectionHasRows:Boolean = collection && collection.length > 0;

@@ -2074,7 +2075,7 @@
         var paddingBottom:Number = getStyle("paddingBottom");

         h = rowInfo[rowCount - 1].y + rowInfo[rowCount - 1].height;
-        h = listContent.heightExcludingOffsets - h;
+        h = listContent.heightExcludingOffsets - listContent.topOffset - h;

         // back up one
         var numRows:int = 0;


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

--- frameworks/projects/rpc/src/mx/rpc/AsyncRequest.as
+++ frameworks/projects/rpc/src/mx/rpc/AsyncRequest.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


There are many ways I could rant about this, but I'm going to try to keep it short and
informative (and clean ><)...

While testing the ability to go straight to someone in a game from My Whirled, I was getting
decoding streaming problems (but only sometimes) when fetching the game data.  After many hours
of looking for the problem and swearing up and down that it was nothing but consistent, malicious
bitrot, I've tracked it down to this.

In Underwhirled Drift (which is the game I was testing this on), I have a couple of property arrays
that get set when the game is first started up with this:

    _control.set(PLAYER_STATE, new Array(numPlayers));

This allows me to fill in the proper indices at a later time in random order.  This was working
fine for multi-player games, and after what I've discovered here, I think I can get away with
something simpler, but that can wait for later.

When this was getting encoded, the expected effect would be to encode a TypedArray with a null
in each spot that is defined in the source array (numPlayers long).  In fact, it was creating an
empty, zero length TypedArray.  I'm not sure why - but that was confusing the system somewhere
along the line so that when that set of bytes was read back from the server on another client
(for instance, when fetching the EZGameObject when trying to join an in-progress game).  Of course,
zero-length TypedArrays should go over the wire just fine, so I'm not entirely convinced that I've
tracked down the entire problem (or if that is in fact the issue, then it needs to be addressed).

The diffs here will cause the encoding and decoding to correctly pull nulls out of the array, and
put them in the TypedArray.  The moral of this story is to watch out for this construct:

    for each (var obj :Object in arr) {
    }

...it may not always be doing what you would rightfully expect...

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

--- src/as/com/threerings/util/ObjectMarshaller.as
+++ src/as/com/threerings/util/ObjectMarshaller.as
@@ -58,8 +58,8 @@
         if (encodeArrayElements && obj is Array) {
             var src :Array = (obj as Array);
             var dest :TypedArray = TypedArray.create(ByteArray);
-            for each (var o :Object in src) {
-                dest.push(encode(o, false));
+            for (var ii :int = 0; ii < src.length; ii++) {
+                dest.push(encode(src[ii], false));
             }
             return dest;
         }
@@ -93,8 +93,8 @@
         if (encoded is TypedArray) {
             var src :TypedArray = (encoded as TypedArray);
             var dest :Array = [];
-            for each (var b :ByteArray in src) {
-                dest.push(decode(b));
+            for (var ii :int = 0; ii < src.length; ii++) {
+                dest.push(decode(src[ii] as ByteArray));
             }
             return dest;
         }


Docs are now compiling with asdoc from Flex SDK 4.6.0.23201B.

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

--- src/org/igniterealtime/xiff/conference/Room.as
+++ src/org/igniterealtime/xiff/conference/Room.as
@@ -601,7 +601,7 @@
 		 * true to this method to begin the configuration process.	When
 		 * The configuration is complete, the room will be unlocked for others to join.
 		 * Listen for the RoomEvent.CONFIGURE_ROOM event to handle and
-		 * either return or cancel the configuration of the room.
+		 * either return or cancel the configuration of the room.

 		 *
 		 * @param	createReserved Set to true if you wish to create and configure a reserved room
 		 * @param	joinPresenceExtensions An array of additional extensions to send with the initial presence to the room.


XMPP spec states that the #admin schema should be used for affiliation changes.
Unfortunately to this date, Openfire does not match spec and requires the #owner schema.
Because of this, if granting privileges fails on the first attempt using the #admin schema, we try again using the #owner schema.
http://xmpp.org/extensions/xep-0045.html#schemas-admin

Because IQ's support error callbacks, the error handlers in the response callbacks were never called.
Added proper error and response callbacks to all IQ calls in Room.

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

--- src/org/igniterealtime/xiff/conference/Room.as
+++ src/org/igniterealtime/xiff/conference/Room.as
@@ -25,7 +25,7 @@
 package org.igniterealtime.xiff.conference
 {
 	import flash.events.Event;
-
+
 	import org.igniterealtime.xiff.collections.ArrayCollection;
 	import org.igniterealtime.xiff.core.*;
 	import org.igniterealtime.xiff.data.*;
@@ -203,7 +203,7 @@
 	 * @eventType org.igniterealtime.xiff.events.RoomEvent.DECLINED
 	 */
 	[Event( name="declined",type="org.igniterealtime.xiff.events.RoomEvent" )]
-
+
 	/**
 	 * Manages incoming and outgoing data from a conference room as part of multi-user conferencing (XEP-0045).
 	 * You will need an instance of this class for each room that the user joins.
@@ -249,6 +249,9 @@
 		// Used to store nicknames in pending status, awaiting change approval from server
 		private var pendingNickname:String;

+		private var affiliationExtension:MUCBaseExtension;
+		private var affiliationArgs:Array = [];
+
 		/**
 		 *
 		 * @param	aConnection  A XMPPConnection instance that is providing the primary server connection
@@ -260,6 +263,7 @@
 			{
 				connection = aConnection;
 			}
+			affiliationExtension = new MUCAdminExtension();
 		}

 		private static function RoomStaticConstructor():Boolean
@@ -296,10 +300,8 @@
 		 */
 		public function ban( jids:Array ):void
 		{
-			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET );
+			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET, null, ban_response, ban_error );
 			var adminExt:MUCAdminExtension = new MUCAdminExtension();
-
-			iq.callback = finish_admin;

 			for each ( var banJID:UnescapedJID in jids )
 			{
@@ -365,7 +367,7 @@
 		 */
 		public function configure( fieldmap:Object ):void
 		{
-			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET );
+			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET, null, configure_response, configure_error );
 			var ownerExt:MUCOwnerExtension = new MUCOwnerExtension();
 			var form:FormExtension;

@@ -381,10 +383,9 @@
 			}
 			form.type = FormExtension.TYPE_SUBMIT;
 			ownerExt.addExtension( form );
-
-			iq.callback = finish_configure;
+
 			iq.addExtension( ownerExt );
-
+
 			_connection.send( iq );
 		}

@@ -473,12 +474,18 @@
 		}

 		/**
-		 * Grants permissions on a room one or more JIDs by setting the
-		 * affiliation of a user based * on their JID.
+		 * Grants permissions on a room to one or more JIDs by setting the
+		 * affiliation of a user based on their JID.
+		 *
+		 *
XMPP spec states that the #admin schema should be used for affiliation changes.
+		 * Unfortunately to this date, Openfire does not match spec and requires the #owner schema.
+		 * Because of this, if granting privileges fails on the first attempt using the #admin schema,
+		 * we try again using the #owner schema.
+		 * @see http://xmpp.org/extensions/xep-0045.html#schemas-admin

 		 *
 		 *
If the JID currenly has an existing affiliation, then the existing
 		 * affiliation will be replaced with the one passed. If the process could not be
-		 * completed, the room will dispatch the event RoomEvent.ADMIN_ERROR.
+		 * completed, the room will dispatch the event RoomEvent.ADMIN_ERROR.

 		 *
 		 * @param	affiliation Use one of the
 		 * following affiliations: Room.AFFILIATION_MEMBER,
@@ -490,17 +497,16 @@
 		 */
 		public function grant( affiliation:String, jids:Array ):void
 		{
-			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET );
-			var adminExt:MUCAdminExtension = new MUCAdminExtension();
-
-			iq.callback = finish_grant;
+			affiliationArgs = arguments;
+
+			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_SET, null, grant_response, grant_error );

 			for each ( var jid:UnescapedJID in jids )
 			{
-				adminExt.addItem( affiliation, null, null, jid.escaped, null, null );
-			}
-
-			iq.addExtension( adminExt );
+				affiliationExtension.addItem( affiliation, null, null, jid.escaped, null, null );
+			}
+
+			iq.addExtension( affiliationExtension as IExtension );
 			_connection.send( iq );
 		}

@@ -626,7 +632,7 @@

 			var joinPresence:Presence = new Presence( userJID.escaped );
 			joinPresence.addExtension( mucExtension );
-
+
 			if ( joinPresenceExtensions != null )
 			{
 				for each ( var joinExt:*in joinPresenceExtensions )
@@ -692,10 +698,8 @@
 		 */
 		public function requestAffiliations( affiliation:String ):void
 		{
-			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_GET );
+			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_GET, null, requestAffiliations_response, requestAffiliations_error );
 			var adminExt:MUCAdminExtension = new MUCAdminExtension();
-
-			iq.callback = finish_requestAffiliates;

 			adminExt.addItem( affiliation );

@@ -717,10 +721,9 @@
 		 */
 		public function requestConfiguration():void
 		{
-			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_GET );
+			var iq:IQ = new IQ( roomJID.escaped, IQ.TYPE_GET, null, requestConfiguration_response, requestConfiguration_error );
 			var ownerExt:MUCOwnerExtension = new MUCOwnerExtension();

-			iq.callback = finish_requestConfiguration;
 			iq.addExtension( ownerExt );

 			_connection.send( iq );
@@ -818,99 +821,100 @@
 		}

 		/**
-		 * The default handler for admin IQ messages.
-		 * Dispatches the adminError event if anything went wrong.
-		 */
-		private function finish_admin( iq:IQ ):void
-		{
-			if ( iq.type == IQ.TYPE_ERROR )
-			{
-				var event:RoomEvent = new RoomEvent( RoomEvent.ADMIN_ERROR );
-				event.errorCondition = iq.errorCondition;
-				event.errorMessage = iq.errorMessage;
-				event.errorType = iq.errorType;
-				event.errorCode = iq.errorCode;
-				dispatchEvent( event );
-			}
-		}
-
-		/**
-		 * IQ callback when configuration is complete.
-		 */
-		private function finish_configure( iq:IQ ):void
-		{
-			if( iq.type == IQ.TYPE_ERROR )
-			{
-				finish_admin( iq );
-				return;
-			}
-
+		 * @private
+		 *
+		 * The default error handler for admin IQ messages.
+		 * Dispatches the adminError event.
+		 */
+		private function admin_error( iq:IQ ):void
+		{
+			var event:RoomEvent = new RoomEvent( RoomEvent.ADMIN_ERROR );
+			event.errorCondition = iq.errorCondition;
+			event.errorMessage = iq.errorMessage;
+			event.errorType = iq.errorType;
+			event.errorCode = iq.errorCode;
+			dispatchEvent( event );
+		}
+
+		/**
+		 * @private
+		 *
+		 * The default response handler for admin IQ messages.
+		 */
+		private function admin_response( iq:IQ ):void
+		{
+		}
+
+		/**
+		 * @private
+		 */
+		private function ban_error( iq:IQ ):void
+		{
+			admin_error( iq );
+		}
+
+		/**
+		 * @private
+		 */
+		private function ban_response( iq:IQ ):void
+		{
+		}
+
+		/**
+		 * @private
+		 */
+		private function configure_error( iq:IQ ):void
+		{
+			admin_error( iq );
+		}
+
+		/**
+		 * @private
+		 */
+		private function configure_response( iq:IQ ):void
+		{
 			var event:RoomEvent = new RoomEvent( RoomEvent.CONFIGURE_ROOM_COMPLETE );
 			dispatchEvent( event );
 		}

 		/**
-		 * IQ callback when grant is complete.
-		 */
-		private function finish_grant( iq:IQ ):void
-		{
-			if( iq.type == IQ.TYPE_ERROR )
-			{
-				finish_admin( iq );
-				return;
-			}
-
+		 * @private
+		 */
+		private function grant_error( iq:IQ ):void
+		{
+			if( affiliationExtension is MUCAdminExtension && affiliationArgs.length > 0 )
+			{
+				affiliationExtension = new MUCOwnerExtension();
+				grant.apply( null, affiliationArgs );
+			}
+			else
+			{
+				affiliationArgs = [];
+
+				admin_error( iq );
+			}
+		}
+
+		/**
+		 * @private
+		 */
+		private function grant_response( iq:IQ ):void
+		{
+			affiliationArgs = [];
+
 			var event:RoomEvent = new RoomEvent( RoomEvent.AFFILIATION_CHANGE_COMPLETE );
 			dispatchEvent( event );
 		}

 		/**
-		 * IQ callback when affiliate request is complete.
-		 */
-		private function finish_requestAffiliates( iq:IQ ):void
-		{
-			finish_admin( iq );
-			if ( iq.type == IQ.TYPE_RESULT )
-			{
-				var adminExt:MUCAdminExtension = iq.getAllExtensionsByNS( MUCAdminExtension.NS )[ 0 ];
-				var items:Array = adminExt.getAllItems();
-				// trace("Affiliates: " + items);
-				var event:RoomEvent = new RoomEvent( RoomEvent.AFFILIATIONS );
-				event.data = items;
-				dispatchEvent( event );
-			}
-		}
-
-		/**
-		 * IQ callback when form is ready.
-		 */
-		private function finish_requestConfiguration( iq:IQ ):void
-		{
-			if ( iq.type == IQ.TYPE_ERROR )
-			{
-				finish_admin( iq );
-				return;
-			}
-
-			var ownerExt:MUCOwnerExtension = iq.getAllExtensionsByNS( MUCOwnerExtension.NS )[ 0 ];
-			var form:FormExtension = ownerExt.getAllExtensionsByNS( FormExtension.NS )[ 0 ];
-
-			if ( form.type == FormExtension.TYPE_REQUEST )
-			{
-				var event:RoomEvent = new RoomEvent( RoomEvent.CONFIGURE_ROOM );
-				event.data = form;
-				dispatchEvent( event );
-			}
-		}
-
-		/**
+		 * @private
 		 *
 		 * @param	eventObj
 		 */
 		private function handleEvent( eventObj:Object ):void
 		{
 			var userExt:MUCUserExtension;
-
+
 			switch ( eventObj.type )
 			{
 				case "message":
@@ -1090,6 +1094,55 @@
 		}

 		/**
+		 * @private
+		 */
+		private function requestAffiliations_error( iq:IQ ):void
+		{
+			admin_error( iq );
+		}
+
+		/**
+		 * @private
+		 */
+		private function requestAffiliations_response( iq:IQ ):void
+		{
+			if ( iq.type == IQ.TYPE_RESULT )
+			{
+				var adminExt:MUCAdminExtension = iq.getAllExtensionsByNS( MUCAdminExtension.NS )[ 0 ];
+				var items:Array = adminExt.getAllItems();
+				// trace("Affiliates: " + items);
+				var event:RoomEvent = new RoomEvent( RoomEvent.AFFILIATIONS );
+				event.data = items;
+				dispatchEvent( event );
+			}
+		}
+
+		/**
+		 * @private
+		 */
+		private function requestConfiguration_error( iq:IQ ):void
+		{
+			admin_error( iq );
+		}
+
+		/**
+		 * @private
+		 */
+		private function requestConfiguration_response( iq:IQ ):void
+		{
+			var ownerExt:MUCOwnerExtension = iq.getAllExtensionsByNS( MUCOwnerExtension.NS )[ 0 ];
+			var form:FormExtension = ownerExt.getAllExtensionsByNS( FormExtension.NS )[ 0 ];
+
+			if ( form.type == FormExtension.TYPE_REQUEST )
+			{
+				var event:RoomEvent = new RoomEvent( RoomEvent.CONFIGURE_ROOM );
+				event.data = form;
+				dispatchEvent( event );
+			}
+		}
+
+		/**
+		 * @private
 		 *
 		 * @param	state
 		 */
@@ -1099,7 +1152,9 @@
 			dispatchEvent( new Event( "activeStateUpdated" ));
 		}

-		/*
+		/**
+		 * @private
+		 *
 		 * Room owner (creation/configuration/destruction) methods
 		 * @see	http://xmpp.org/extensions/xep-0045.html#createroom
 		 */
@@ -1132,6 +1187,8 @@
 		}

 		/**
+		 * @private
+		 *
 		 * If we receive a presence about ourselves, it means
 		 * a) we've joined the room; tell everyone, then proceed as usual
 		 * b) we're being told we left, which we handle in the caller
@@ -1180,7 +1237,7 @@
 								roomEvent.data = aPresence;
 								dispatchEvent( roomEvent );
 								return;
-
+
 							case 307:
 								roomEvent = new RoomEvent( RoomEvent.USER_KICKED );
 								roomEvent.nickname = userNickname;
@@ -1201,7 +1258,7 @@
 					occupant.affiliation = item.affiliation;
 					occupant.role = item.role;
 					occupant.show = aPresence.show;
-
+
 					// Notify listeners that a user's presence has been updated
 					roomEvent = new RoomEvent( RoomEvent.USER_PRESENCE_CHANGE );
 					roomEvent.nickname = userNickname;


flashlsFlowPlayer.swf: fix seek bar not being updated when replaying a video

--- src/org/mangui/flowplayer/HLSStreamProvider.as
+++ src/org/mangui/flowplayer/HLSStreamProvider.as
@@ -112,7 +112,7 @@
             // _seekable = true;
             // }
             _hls.stream.play();
-            _clip.dispatch(ClipEventType.SEEK);
+            _clip.dispatch(ClipEventType.SEEK,0);
             if (_pauseAfterStart) {
                 pause(new ClipEvent(ClipEventType.PAUSE));
             }


report available bitrates to flowplayer commented for now, just to give some hints related to #124

--- src/org/mangui/flowplayer/HLSStreamProvider.as
+++ src/org/mangui/flowplayer/HLSStreamProvider.as
@@ -104,6 +104,23 @@
             _isManifestLoaded = true;
             _clip.duration = _duration;
             _clip.stopLiveOnPause = false;
+            /*
+            var nbLevel = event.levels.length;
+            if (nbLevel > 1) {
+            var bitrates : Array = new Array();
+            for (var i : int = 0; i < nbLevel; i++) {
+            var info : Object = new Object();
+            var level : Level = event.levels[i];
+            info.bitrate = level.bitrate;
+            info.url = level.url;
+            info.width = level.width;
+            info.height = level.height;
+            info.isDefault = (i == _hls.startlevel);
+            bitrates.push(info);
+            }
+            _clip.setCustomProperty("bitrates", bitrates);
+            }
+             */
             _clip.dispatch(ClipEventType.METADATA);
             _seekable = true;
             // if (_hls.type == HLSTypes.LIVE) {


Added getAlphaMask() method to Atlas class.

--- src/engine/tetragon/data/atlas/Atlas.as
+++ src/engine/tetragon/data/atlas/Atlas.as
@@ -210,6 +210,20 @@

 		/**
+		 * Returns the alpha mask for a specific subtexture, if available, otherwise
+		 * it returns null.
+		 *
+		 * @param id ID of the subtexture.
+		 * @return A black and white BitmapData or null.
+		 */
+		public function getAlphaMask(id:String):BitmapData
+		{
+			if (!_alphaMasks) return null;
+			return _alphaMasks[id];
+		}
+
+
+		/**
 		 * Returns the region rectangle for a specific sprite.
 		 *
 		 * @param id


Transferred from the Adobe Open Source Subversion Repository

Revision: 1570
Author:   jimurphy@adobe.com
Date:     2008-05-06T17:43:41.713917Z

Log Message:
-----------
Merge 3.0.x revision [1569] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TitleWindow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.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/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/FormItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>

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

--- frameworks/projects/mx/src/mx/containers/TitleWindow.as
+++ frameworks/projects/mx/src/mx/containers/TitleWindow.as
@@ -42,28 +42,28 @@
 /**
  *  The close button disabled skin.
  *
- *  @default CloseButtonDisabled
+ *  The default value is the "CloseButtonDisabled" symbol in the Assets.swf file.
  */
 [Style(name="closeButtonDisabledSkin", type="Class", inherit="no")]

 /**
  *  The close button down skin.
  *
- *  @default CloseButtonDown
+ *  The default value is the "CloseButtonDown" symbol in the Assets.swf file.
  */
 [Style(name="closeButtonDownSkin", type="Class", inherit="no")]

 /**
  *  The close button over skin.
  *
- *  @default CloseButtonOver
+ *  The default value is the "CloseButtonOver" symbol in the Assets.swf file.
  */
 [Style(name="closeButtonOverSkin", type="Class", inherit="no")]

 /**
  *  The close button up skin.
  *
- *  @default CloseButtonUp
+ *  The default value is the "CloseButtonUp" symbol in the Assets.swf file.
  */
 [Style(name="closeButtonUpSkin", type="Class", inherit="no")]

@@ -135,10 +135,13 @@
  *  <mx:TitleWindow
  *   Properties
  *   showCloseButton="false|true"
- *   closeButtonDisabledSkin="CloseButtonDisabled"
- *   closeButtonDownSkin="CloseButtonDown"
- *   closeButtonOverSkin="CloseButtonOver"
- *   closeButtonUpSkin="CloseButtonUp"
+ *
+ *   Styles
+ *   closeButtonDisabledSkin="'CloseButtonDisabled' symbol in Assets.swf"
+ *   closeButtonDownSkin="'CloseButtonDown' symbol in Assets.swf"
+ *   closeButtonOverSkin="'CloseButtonOver' symbol in Assets.swf"
+ *   closeButtonUpSkin="'CloseButtonUp' symbol in Assets.swf"
+ *
  *   Events
  *   close="No default"
  *   >


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/mx/src/mx/effects/AddChildAction.as
+++ frameworks/projects/mx/src/mx/effects/AddChildAction.as
@@ -22,6 +22,8 @@
 //--------------------------------------

 [Exclude(name="duration", kind="property")]
+
+[Alternative(replacement="spark.effects.AddAction", since="4.0")]

 /**
  *  The AddChildAction class defines an action effect that corresponds


Transferred from the Adobe Open Source Subversion Repository

Revision: 4075
Author:   gosmith@adobe.com
Date:     2008-11-11T22:15:03.236222Z

Log Message:
-----------
TextBox now supports the 'direction', 'lineThrough', 'textDecoration', and 'tabStops' styles, and the "start" and "end" values of the 'textAlign' style.

The default value of 'textAlign' for Gumbo components is now "start" rather than "left". This is currently done in the type selectors for TextGraphicElement and TextView rather than in the 'global' selector, to avoid changing the default for Halo components.

QE Notes: New functionality to test.
Doc Notes: None
Bugs: Part of SDK-18014
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/styles/metadata/AdvancedCharacterFormatTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/styles/metadata/BasicParagraphFormatTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/TextBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/styles/metadata/AdvancedParagraphFormatTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/styles/metadata/BasicCharacterFormatTextStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses/TextBlockComposer.as</path>

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

--- frameworks/projects/spark/src/spark/components/Label.as
+++ frameworks/projects/spark/src/spark/components/Label.as
@@ -17,6 +17,7 @@
 import flash.text.engine.ElementFormat;
 import flash.text.engine.FontDescription;
 import flash.text.engine.Kerning;
+import flash.text.engine.TabStop;

 import mx.graphics.graphicsClasses.TextBlockComposer;
 import mx.graphics.graphicsClasses.TextGraphicElement;
@@ -215,13 +216,17 @@
         bounds.width = width;
         bounds.height = height;

+        textBlockComposer.direction = getStyle("direction");
         textBlockComposer.lineBreak = getStyle("lineBreak");
         textBlockComposer.lineHeight = getStyle("lineHeight");
+        textBlockComposer.lineThrough = getStyle("lineThrough");
         textBlockComposer.paddingBottom = getStyle("paddingBottom");
         textBlockComposer.paddingLeft = getStyle("paddingLeft");
         textBlockComposer.paddingRight = getStyle("paddingRight");
         textBlockComposer.paddingTop = getStyle("paddingTop");
+        setTabStops(textBlockComposer);
         textBlockComposer.textAlign = getStyle("textAlign");
+        textBlockComposer.textDecoration = getStyle("textDecoration");
         textBlockComposer.verticalAlign = getStyle("verticalAlign");

         textBlockComposer.composeText(text, elementFormat);
@@ -268,6 +273,35 @@
         if (!isNaN(value))
             elementFormat.trackingRight = value;
     }
+
+    /**
+     *  @private
+     */
+    private function setTabStops(textBlockComposer:TextBlockComposer):void
+    {
+        var value:* = getStyle("tabStops");
+        var tabStops:Vector.<TabStop>;
+
+        if (value is Vector.<TabStop>)
+        {
+            tabStops = value;
+        }
+        else if (value is Array)
+        {
+            var n:int = value.length;
+            tabStops = new Vector.<TabStop>(n);
+            for (var i:int = 0; i < n; i++)
+            {
+                tabStops[i] = value[i];
+            }
+        }
+        else
+        {
+            tabStops = new Vector.<TabStop>();
+        }
+
+        textBlockComposer.tabStops = tabStops;
+    }
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 10467
Author:   gruehle@adobe.com
Date:     2009-09-21T19:57:44.869335Z

Log Message:
-----------
Re-commit 10435. Broken tests have been excluded.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ApplicationBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/SkinnableContainerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/BorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Border.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/BorderStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/SkinnableDataContainerSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/Panel.as
+++ frameworks/projects/spark/src/spark/components/Panel.as
@@ -19,31 +19,6 @@
 import spark.layouts.supportClasses.LayoutBase;

 use namespace mx_internal;
-
-/**
- *  Alpha level of the background for this component.
- *  Valid values range from 0.0 to 1.0.
- *
- *  @default 1.0
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 1.5
- *  @productversion Flex 4
- */
-[Style(name="backgroundAlpha", type="Number", inherit="no", theme="spark")]
-
-/**
- *  Background color of a component.
- *
- *  @default 0xFFFFFF
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 1.5
- *  @productversion Flex 4
- */
-[Style(name="backgroundColor", type="uint", format="Color", inherit="no", theme="spark")]

 /**
  *  The alpha of the border for this component.


Transferred from the Adobe Open Source Subversion Repository

Revision: 11095
Author:   eitan@ascender.com
Date:     2009-10-22T23:34:03.596935Z

Log Message:
-----------
Added changes in spark components to use AccImpl.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TextArea.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/components/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBar.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/supportClasses/ListBase.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/components/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/CheckBox.as</path>

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

--- frameworks/projects/spark/src/spark/components/Panel.as
+++ frameworks/projects/spark/src/spark/components/Panel.as
@@ -71,6 +71,8 @@
 [Style(name="dropShadowVisible", type="Boolean", inherit="no", theme="spark")]

 [IconFile("Panel.png")]
+
+[AccessibilityClass(implementation="spark.accessibility.PanelAccImpl")]

 /**
  *  The Panel class defines a container that includes a title bar,
@@ -126,6 +128,12 @@

     /**
      *  @private
+     *  Placeholder for mixin by PanelAccImpl.
+     */
+    mx_internal static var createAccessibilityImplementation:Function;
+
+    /**
+     *  @private
      */
     mx_internal static const VISIBLE_PROPERTY_FLAG:uint = 1 << 2;

@@ -483,6 +491,16 @@

         return state;
     }
+
+    /**
+     *  @private
+     */
+    override protected function initializeAccessibility():void
+    {
+        if (Panel.createAccessibilityImplementation != null)
+            Panel.createAccessibilityImplementation(this);
+    }
+
 }

 }


fixed null pointer error

fixed null pointer error

--- WeaveData/src/weave/data/KeySets/FilteredKeySet.as
+++ WeaveData/src/weave/data/KeySets/FilteredKeySet.as
@@ -240,7 +240,7 @@

 			for (; _i < _asyncInput.length; ++_i)
 			{
-				if (getTimer() > stopTime)
+				if (getTimer() > stopTime || !_asyncFilter)
 					return _i / _asyncInput.length;

 				var key:IQualifiedKey = _asyncInput[_i] as IQualifiedKey;


Hash: added apply(), inline comments, refactored to support keys that collide with Hash properties

--- vendor/ras3r/ras3r/Hash.as
+++ vendor/ras3r/ras3r/Hash.as
@@ -1,55 +1,108 @@
 package ras3r
 {
 	import ras3r.utils.*;
+	import flash.utils.flash_proxy;
+	use namespace flash_proxy;

 	dynamic public class Hash extends ObjectProxy
 	{
+		private var hash:Object = {};
+
+		/**
+		*	hash.length => uint
+		*	hash.size => uint
+		*	Returns the number of key-value pairs in the hash.
+		**/
 		public function get length () :uint
 		{
 			var i:uint = 0;
-			for (var key:String in this)
+			for (var key:String in hash)
 			{
 				i++;
 			}
 			return i;
 		}

+		public function get size () :uint
+		{
+			return length;
+		}
+
+		/**
+		*	hash.values => array
+		*	Returns a new array populated with the values from hsh.
+		**/
 		public function get values () :Array
 		{
 			var v:Array = [];
-			for (var key:String in this)
+			for (var key:String in hash)
 			{
-				v.push(this[key]);
+				v.push(getProperty(key));
 			}
 			return v;
 		}

-
-		public function Hash (value:Object = null)
+		/**
+		*	new Hash()
+		*	new Hash(object)
+		*	Creates a new hash, optionally populated with the
+		*	contents of object.
+		**/
+		public function Hash (object:Object = null)
 		{
-			super();
-			if (value) update(value);
+			super(hash);
+			if (object) update(object);
 		}

-		public function merge (hash:Object) :Hash
+		/**
+		*	hash.apply(object) => object
+		*	Adds the contents of hash to object, overwriting object's
+		*	entries with duplicate keys with those from hash.
+		**/
+		public function apply (object:Object) :Object
 		{
-			return (new Hash(this).update(hash));
+			for (var key:String in hash)
+			{
+				object[key] = getProperty(key);
+			}
+			return object;
 		}

-		// equivalent to ruby's Hash#delete
-		// 'delete' is a reserved operator in AS
+		/**
+		*	hash.merge(object) => a_new_hash
+		* 	Returns a new hash containing the contents of object
+		*	and the contents of hash, overwriting entries in hash
+		*	with duplicate keys with those from object.
+		**/
+		public function merge (object:Object) :Hash
+		{
+			return (new Hash(hash).update(object));
+		}
+
+		/**
+		*	hash.remove(key) => value
+		*	Deletes and returns a key-value pair from hash whose key
+		*	is equal to key. If the key is not found, returns null.
+		*	Equivalent to ruby's Hash#delete.
+		*	'delete' is a reserved operator in AS3.
+		**/
 		public function remove (key:String) :*
 		{
-			var value:* = this[key];
-			delete this[key];
+			var value:* = getProperty(key);
+			deleteProperty(key);
 			return value;
 		}

-		public function update (hash:Object) :Hash
+		/**
+		*	hash.update(object) => hash
+		*	Adds the contents of object to hash, overwriting
+		*	entries with duplicate keys with those from object.
+		**/
+		public function update (object:Object) :Hash
 		{
-			for (var key:String in hash)
+			for (var key:String in object)
 			{
-				this[key] = hash[key];
+				setProperty(key, object[key]);
 			}
 			return this;
 		}


Error messages display keyframe number as Flash CS displays them (first frame displayed as frame 1, rather than 0)

--- exporter/src/main/as/flump/xfl/XflKeyframe.as
+++ exporter/src/main/as/flump/xfl/XflKeyframe.as
@@ -19,7 +19,7 @@

         const kf :KeyframeMold = new KeyframeMold();
         kf.index = XmlUtil.getIntAttr(xml, "index");
-        const location :String = baseLocation + ":" + kf.index;
+        const location :String = baseLocation + ":" + (kf.index + 1);
         kf.duration = XmlUtil.getNumberAttr(xml, "duration", 1);
         kf.label = XmlUtil.getStringAttr(xml, "name", null);
         kf.ease = XmlUtil.getNumberAttr(xml, "acceleration", 0) / 100;


disconnect() dispatches Event.CLOSE to call onClose

--- src/com/axis/mjpegclient/Handle.as
+++ src/com/axis/mjpegclient/Handle.as
@@ -70,27 +70,7 @@
     }

     public function disconnect():void {
-      Logger.log('MJPEGClient: disconnecting from', urlParsed.host + ':' + urlParsed.port);
-
-      // The close event on the socket is often not called so do all cleanup
-      // immediately.
-      if (this.bcTimer) {
-        this.bcTimer.stop();
-        this.bcTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, bcTimerHandler);
-        this.bcTimer = null;
-      }
-
-      this.buffer = null;
-
-      try {
-        // Security error is thrown if this line is excluded
-        socket.close();
-      } catch (error:*) {}
-
-      if (!this.closeTiggered) {
-        dispatchEvent(new Event(Handle.CLOSED));
-        this.closeTiggered = true;
-      }
+      dispatchEvent(new Event(Event.CLOSE));
     }

     public function connect():void {