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

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


fixed bug where admin console would not return to login screen when it received an authentication exception

--- WeaveAdmin/src/weave/services/WeaveAdminService.as
+++ WeaveAdmin/src/weave/services/WeaveAdminService.as
@@ -267,12 +267,10 @@
 		private function generateQuery(service:AMF3Servlet, methodName:String, parameters:Array, queued:Boolean, returnType:Class):AsyncToken
 		{
 			var query:ProxyAsyncToken = new ProxyAsyncToken(service.invokeAsyncMethod, [methodName, parameters]);
-
+			addAsyncResponder(query, null, interceptFault, query);
+
 			if (queued)
-			{
-				addAsyncResponder(query, null, interceptFault, query);
 				queue.addToQueue(query);
-			}

 			hookCaptureHandler(query);


Transferred from the Adobe Open Source Subversion Repository

Revision: 13009
Author:   jimurphy@adobe.com
Date:     2009-12-16T22:08:32.299812Z

Log Message:
-----------
merge 3.x revs 12937-12938,12961 -> trunk

checkintests:pass

Modified Paths:
--------------
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/UIComponentAccProps.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>

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

--- frameworks/projects/framework/src/mx/accessibility/UIComponentAccProps.as
+++ frameworks/projects/framework/src/mx/accessibility/UIComponentAccProps.as
@@ -134,6 +134,7 @@
                 name = formName + name;

             if (master.toolTip && master.toolTip.length != 0)
+                if (!component.accessibilityProperties || (component.accessibilityProperties && !component.accessibilityProperties.name))
             {
                 oldToolTip = " " + master.toolTip;
                 name += oldToolTip;
@@ -249,11 +250,14 @@

                 if (master.toolTip && master.toolTip.length != 0)
                 {
-                    if (!name)
-                        name = "";
-
-                    oldToolTip = " " + master.toolTip;
-                    name += oldToolTip;
+                    if (!master.accessibilityProperties || (master.accessibilityProperties && !master.accessibilityProperties.name))
+                    {
+                        if (!name)
+                            name = "";
+
+                        oldToolTip = " " + master.toolTip;
+                        name += oldToolTip;
+                    }
                 }

                 Accessibility.updateProperties();


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/framework/src/mx/accessibility/UIComponentAccProps.as
+++ frameworks/projects/framework/src/mx/accessibility/UIComponentAccProps.as
@@ -0,0 +1,347 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.accessibility
+{
+
+import flash.accessibility.Accessibility;
+import flash.accessibility.AccessibilityProperties;
+import flash.display.DisplayObjectContainer;
+import flash.events.Event;
+import mx.containers.Form;
+import mx.containers.FormHeading;
+import mx.containers.FormItem;
+import mx.controls.FormItemLabel;
+import mx.controls.Label;
+import mx.controls.scrollClasses.ScrollBar;
+import mx.core.Application;
+import mx.core.Container;
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+
+use namespace mx_internal;
+
+/**
+ *  The UIComponentAccImpl class is the accessibility class for UIComponent.
+ *  It is used to provide accessibility to FormView, ToolTip & Error ToolTip.
+ *
+ *  @helpid 3030
+ *  @tiptext This is the UIComponent Accessibility Class.
+ *  @review
+ */
+public class UIComponentAccImpl extends AccessibilityProperties
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class initialization
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Static variable triggering the hookAccessibility() method.
+	 *  This is used for initializing UIComponentAccImpl class to hook its
+	 *  createAccessibilityImplementation() method to UIComponent class
+	 *  before it gets called from UIComponent.initialize().
+	 */
+	private static var accessibilityHooked:Boolean = hookAccessibility();
+
+	/**
+	 *  @private
+	 *  Static Method for swapping the
+	 *  createAccessibilityImplementation method of UIComponent with
+	 *  the UIComponentAccImpl class.
+	 */
+	private static function hookAccessibility():Boolean
+	{
+		UIComponent.createAccessibilityImplementation =
+			createAccessibilityImplementation;
+
+		return true;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Method for creating the Accessibility class.
+	 *  This method is called from UIComponent.
+	 *  @review
+	 */
+	mx_internal static function createAccessibilityImplementation(
+											component:UIComponent):void
+	{
+		component.accessibilityProperties =
+			new UIComponentAccImpl(component);
+	}
+
+	/**
+	 *  Method call for enabling accessibility for a component.
+	 *  This method is required for the compiler to activate
+	 *  the accessibility classes for a component.
+	 */
+	public static function enableAccessibility():void
+	{
+	}
+
+	/**
+	 *  Method for supporting Form Accessibility.
+	 *  @review
+	 */
+	public static function getFormName(component:UIComponent):String
+	{
+		var formName:String = "";
+
+		// Return nothing if we are a container
+		if (component is Container)
+			return formName;
+
+		// keeping this DisplayObjectContainer since parent returns
+		// that as root is not a UIComponent.
+		var par:DisplayObjectContainer = component.parent;
+		// continue looking up the parent chain
+		// until root (or application) or FormItem is found.
+		while (par && !(par is FormItem) &&
+			   !(par is Application) && par != component.root)
+		{
+			par = par.parent;
+		}
+
+		if (par && par is FormItem)
+			formName = updateFormItemString(FormItem(par));
+
+		return formName;
+	}
+
+	/**
+	 *  @private
+	 *  Method for supporting Form Accessibility.
+	 */
+	private static function updateFormItemString(formItem:FormItem):String
+	{
+		var formName:String = "";
+
+		const itemLabel:Label = formItem.itemLabel;
+		const accProp:AccessibilityProperties = (itemLabel ? itemLabel.accessibilityProperties : null);
+		if (accProp && accProp.silent)
+			return accProp.name;
+
+		var form:UIComponent = UIComponent(formItem.parent);
+
+		// If we are located within a Form, then look for the first FormHeading
+		// that is a sibling that is above us in the parent's child hierarchy
+		if (form is Form)
+		{
+			var formItemIndex:int = form.getChildIndex(formItem);
+			for (var i:int = formItemIndex; i >= 0; i--)
+			{
+				var child:UIComponent = UIComponent(form.getChildAt(i));
+				if (child is FormHeading)
+				{
+					formName = FormHeading(child).label + " ";
+					break;
+				}
+			}
+		}
+
+		// Add in text if we are a required field
+		if (formItem.required)
+			formName += "Required Field ";
+
+		// Add in the label from the formItem
+		if (formItem.label != "")
+			formName += formItem.label + " ";
+
+		if (accProp && !accProp.silent)
+		{
+			accProp.silent = true;
+			accProp.name = formName;
+		}
+
+		return formName;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @param master The UIComponent instance that this AccImpl instance
+	 *  is making accessible.
+	 */
+	public function UIComponentAccImpl(component:UIComponent)
+	{
+		super();
+
+		master = component;
+
+		if (component.accessibilityProperties)
+		{
+			silent = component.accessibilityProperties.silent;
+
+			forceSimple = component.accessibilityProperties.forceSimple;
+
+			noAutoLabeling = component.accessibilityProperties.noAutoLabeling;
+
+			if (component.accessibilityProperties.name)
+				name = component.accessibilityProperties.name;
+
+			if (component.accessibilityProperties.description)
+				description = component.accessibilityProperties.description;
+
+			if (component.accessibilityProperties.shortcut)
+				shortcut = component.accessibilityProperties.shortcut;
+		}
+
+		if (master is ScrollBar)
+		{
+			silent = true;
+		}
+		else if (master is FormItemLabel)
+		{
+			name = getFormName(master);
+			silent = true;
+		}
+		else
+		{
+			var formName:String = getFormName(master);
+
+			if (formName && formName.length != 0)
+				name = formName + name;
+
+			if (master.toolTip && master.toolTip.length != 0)
+			{
+				oldToolTip = " " + master.toolTip;
+				name += oldToolTip;
+			}
+
+			if (master.errorString && master.errorString.length != 0)
+			{
+				oldErrorString = " " + master.errorString;
+				name += oldErrorString;
+			}
+
+			master.addEventListener("toolTipChanged", eventHandler);
+			master.addEventListener("errorStringChanged", eventHandler);
+		}
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Variables
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private var oldToolTip:String;
+
+	/**
+	 *  @private
+	 */
+	private var oldErrorString:String;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  master
+	//----------------------------------
+
+	/**
+	 *  A reference to the UIComponent itself.
+	 */
+	protected var master:UIComponent;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Event handlers
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Generic event handler.
+	 *  All UIComponentAccImpl subclasses must implement this
+	 *  to listen for events from its master component.
+	 */
+	protected function eventHandler(event:Event):void
+	{
+		var pos:int;
+		switch (event.type)
+		{
+			case "errorStringChanged":
+			{
+				if (name && name.length != 0 && oldErrorString)
+				{
+					pos = name.indexOf(oldErrorString);
+					if (pos != -1)
+					{
+						name = name.substring(0, pos) +
+							   name.substring(pos + oldErrorString.length);
+					}
+					oldErrorString = null;
+				}
+
+				if (master.errorString && master.errorString.length != 0)
+				{
+					if (!name)
+						name = "";
+
+					oldErrorString = " " + master.errorString;
+					name += oldErrorString;
+				}
+
+				Accessibility.updateProperties();
+			}
+
+			case "toolTipChanged":
+			{
+				if (name && name.length != 0 && oldToolTip)
+				{
+					pos = name.indexOf(oldToolTip);
+					if (pos != -1)
+					{
+						name = name.substring(0, pos) +
+							   name.substring(pos + oldToolTip.length);
+					}
+					oldToolTip = null;
+				}
+
+				if (master.toolTip && master.toolTip.length != 0)
+				{
+					if (!name)
+						name = "";
+
+					oldToolTip = " " + master.toolTip;
+					name += oldToolTip;
+				}
+
+				Accessibility.updateProperties();
+			}
+		}
+	}
+}
+
+}


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

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

 package mx.logging.errors
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 5161
Author:   cframpto@adobe.com
Date:     2009-03-04T14:20:59.384387Z

Log Message:
-----------
Fallout from optimizing the number of times text has to be composed for TextBox/TextGraphic.

If the text has certain styles, such as textAlign that is not left-aligned or verticalAlign that is not top-aligned, the text must be recomposed when the size changes so that it's moved to the proper place within the new boundaries.

QE Notes: tests that passed: TextGraphic, layout3D, Button, Radiobutton, checkin tests
Doc Notes:
Bugs: SDK-19666
Reviewers: will be Gordon on his return

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -530,49 +530,68 @@

         var compose:Boolean = false;
         var forceClip:Boolean = false;
-
-        if (mx_internal::stylesChanged ||
-           isNaN(mx_internal::bounds.height) ||
-           (unscaledHeight > mx_internal::bounds.height &&
-           mx_internal::isOverset))
+
+        // If the styles changed or composition hasn't been done, then compose.
+        if (mx_internal::stylesChanged || isNaN(mx_internal::bounds.height))
         {
-            // Style changed, composition hasn't been done or it has been done
-            // but more height is needed and it's possible there is more text
-            // to compose since it didn't all fit before.
             compose = true;
         }
-        else if (mx_internal::lineBreakToFit)
+        else if (unscaledHeight != mx_internal::bounds.height)
         {
-            // toFit line breaks so compose if width isn't the same.
-            if (unscaledWidth != mx_internal::bounds.width)
-                compose = true;
-        }
-        else
-        {
-            // explicit line breaks so compose only if more width is needed and
-            // there is more text to compose.
-            if (unscaledWidth > mx_internal::bounds.width &&
+            // Height changed.
+            if (unscaledHeight > mx_internal::bounds.height &&
                 mx_internal::isOverset)
             {
+                // More height is needed and it's possible there is more text
+                // since it didn't all fit before.
                 compose = true;
-            }
+            }
+            else if (composeOnHeightChange())
+            {
+                // Height changed and the styles require a recompose so the
+                // text is positioned correctly for the new size.
+                compose = true;
+            }
+            else
+            {
+                // Don't need to recompose but need to clip since the text is
+                // a different shape than what was composed.
+                forceClip = true;
+            }
         }
-
+
+        // Width changed.
+        if (!compose && unscaledWidth != mx_internal::bounds.width)
+        {
+            if (mx_internal::lineBreakToFit || composeOnWidthChange())
+            {
+                // Width changed and toFit line breaks or the styles
+                // require a recompose if the width changes.
+                compose = true;
+            }
+            else if (unscaledWidth > mx_internal::bounds.width &&
+                     mx_internal::isOverset)
+            {
+                // Explicit line breaks so compose only if more width is needed
+                // and there is more text to compose.
+                compose = true;
+            }
+            else
+            {
+                // Don't need to recompose but need to clip since the text is
+                // a different shape than what was composed.
+                forceClip = true;
+            }
+        }
+
         if (compose)
-        {
-            // Compose and clip based on value of isOverset.
             composeTextLines(unscaledWidth, unscaledHeight);
-        }
-        else if (unscaledHeight != mx_internal::bounds.height ||
-                 unscaledWidth != mx_internal::bounds.width)
-        {
-            // Don't need to recompose but need to clip since the text is
-            // a different shape than what was composed.
-            forceClip = true;
-        }
+
+        // Only force the clip if compose wasn't just done.
+        forceClip = !compose && forceClip;

         //trace("udl", "compose", compose, "clip", mx_internal::isOverset || forceClip);
-
+
         mx_internal::clip(unscaledWidth, unscaledHeight, forceClip);
     }

@@ -796,6 +815,24 @@
     {
     }

+    /**
+     *  @private
+     *  TODO This should be mx_internal, but that causes a compiler error.
+     */
+    protected function composeOnHeightChange():Boolean
+    {
+        return false;
+    }
+
+    /**
+     *  @private
+     *  TODO This should be mx_internal, but that causes a compiler error.
+     */
+    protected function composeOnWidthChange():Boolean
+    {
+        return false;
+    }
+
     /**
      *  @private
      *  TODO This should be mx_internal, but that causes a compiler error.


Pass a callbackId instead of a function name

--- src/Player.as
+++ src/Player.as
@@ -16,6 +16,8 @@

   [SWF(backgroundColor="0x000000")]
   public class Player extends Sprite {
+
+    private var callbackId: String;

     private var posterUrl: String;
     private var videoUrl: String;
@@ -55,13 +57,21 @@

       loadVideo();

-      if (allow(loaderInfo.parameters.onReady)) {
-        ExternalInterface.call(loaderInfo.parameters.onReady);
+      if (allow(loaderInfo.parameters.callbackId)) {
+        callbackId = loaderInfo.parameters.callbackId;
+      }
+
+      if (callbackId) {
+        ExternalInterface.call(callback("onReady"));
       }
     }

-    private function allow(fnName: String): Boolean {
-      return /^[a-z0-9_]+$/i.test(fnName);
+    private function callback(name: String): String {
+      return ["divinePlayer", name, callbackId].join("_");
+    }
+
+    private function allow(callbackId: String): Boolean {
+      return /^[0-9]+$/i.test(callbackId);
     }

     private function play(): void {
@@ -162,9 +172,8 @@
     }

     private function throwError(code: int, description: String): void {
-      var onError: String = loaderInfo.parameters.onError;
-      if (allow(onError)) {
-        ExternalInterface.call(onError, code, description);
+      if (callbackId) {
+        ExternalInterface.call(callback("onError"), code, description);
       }
     }


bug fix

bug fix

--- src/Player.as
+++ src/Player.as
@@ -209,18 +209,19 @@
     public function play(param:* = null):void {
       this.streamHasAudio = false;
       this.streamHasVideo = false;
+
+      if(param is String){
+        urlParsed = url.parse(String(param));
+      }else{
+        urlParsed = url.parse(param.url);
+        urlParsed.connect = param.url;
+        urlParsed.streamName = param.streamName;
+      }
+
       if (client) {
         /* Stop the client, and 'onStopped' will start the new stream. */
         client.stop();
         return;
-      }
-
-      if(param is Object){
-        urlParsed = url.parse(param.url);
-        urlParsed.connect = param.url;
-        urlParsed.streamName = param.streamName;
-      }else{
-        urlParsed = url.parse(String(param));
       }

       start();


Always show chrome while pointer is over it.

--- skin-src/goplayer/AbstractStandardSkin.as
+++ skin-src/goplayer/AbstractStandardSkin.as
@@ -13,6 +13,7 @@
       = new BufferingIndicator

     private var chromeFader : Fader
+    private var hoveringChrome : Boolean = false

     private var volumeSliderFillMaxHeight : Number
     private var volumeSliderFillMinY : Number
@@ -80,6 +81,9 @@
       if (bufferingIndicator.visible)
         bufferingIndicator.ratio = bufferFillRatio
     }
+
+    override protected function get showChrome() : Boolean
+    { return super.showChrome || hoveringChrome }

     private function get volumeSliderMouseVolume() : Number
     {
@@ -116,7 +120,15 @@
       onmousedown(volumeSlider, handleVolumeSliderMouseDown)
       onrollover(muteButton, handleVolumeButtonRollOver)
       onrollover(unmuteButton, handleVolumeButtonRollOver)
-    }
+      onrollover(chrome, handleChromeRollOver)
+      onrollout(chrome, handleChromeRollOut)
+    }
+
+    private function handleChromeRollOver() : void
+    { hoveringChrome = true, update() }
+
+    private function handleChromeRollOut() : void
+    { hoveringChrome = false, update() }

     private function handlePlayButtonClicked() : void
     { backend.handleUserPlay() }


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

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

 package mx.charts.renderers
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/mx/src/mx/effects/effectClasses/WipeUpInstance.as
+++ frameworks/projects/mx/src/mx/effects/effectClasses/WipeUpInstance.as
@@ -0,0 +1,96 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.effects.effectClasses
+{
+
+import mx.controls.SWFLoader;
+
+/**
+ *  The WipeUpInstance class implements the instance class
+ *  for the WipeUp effect.
+ *  Flex creates an instance of this class when it plays a WipeUp effect;
+ *  you do not create one yourself.
+ *
+ *  @see mx.effects.WipeUp
+ */
+public class WipeUpInstance extends MaskEffectInstance
+{
+    include "../../core/Version.as";
+
+ 	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @param target The Object to animate with this effect.
+	 */
+	public function WipeUpInstance(target:Object)
+	{
+		super(target);
+	}
+
+ 	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override protected function initMaskEffect():void
+	{
+		super.initMaskEffect();
+
+		var targetHeight:Number = target is SWFLoader && target.content ?
+								  SWFLoader(target).contentHeight :
+								  targetVisualBounds.height / Math.abs(target.scaleY);
+
+		if (target.rotation != 0)
+		{
+			// The target.width and target.height are expressed in terms of
+			// rotated coordinates, but we need to get the object's height
+			// in terms of unrotated coordinates.
+
+			var angle:Number = target.rotation * Math.PI / 180;
+			targetHeight = Math.abs(targetVisualBounds.width * Math.sin(angle) +
+						   		    targetVisualBounds.height * Math.cos(angle));
+		}
+
+		if (showTarget)
+		{
+			xFrom = targetVisualBounds.x;
+			yFrom = targetHeight + targetVisualBounds.y;
+			xTo = targetVisualBounds.x;
+			// Line up bottoms of the mask and target
+			yTo = effectMask.height <= targetHeight ?
+				  targetVisualBounds.y :
+				  targetHeight - effectMask.height + targetVisualBounds.y;
+		}
+		else
+		{
+			xFrom = targetVisualBounds.x;
+			// Line up bottoms of the mask and target
+			yFrom = effectMask.height <= targetHeight ?
+					targetHeight - effectMask.height  + targetVisualBounds.y:
+					targetVisualBounds.y;
+			xTo = targetVisualBounds.x;
+			yTo = -effectMask.height + targetVisualBounds.y;
+		}
+	}
+}
+
+}


- Allow the override dispatcher to be specified in our factory convenience method.
- Style changes.

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

--- src/as/com/threerings/flex/CommandMenu.as
+++ src/as/com/threerings/flex/CommandMenu.as
@@ -83,14 +83,18 @@
      * Factory method to create a command menu.
      *
      * @param items an array of menu items.
-     */
-    public static function createMenu (items :Array) :CommandMenu
+     * @param dispatcher an override event dispatcher to use for command events, rather than
+     * our parent.
+     */
+    public static function createMenu (
+        items :Array, dispatcher :IEventDispatcher = null) :CommandMenu
     {
         var menu :CommandMenu = new CommandMenu();
         menu.owner = DisplayObjectContainer(Application.application);
         menu.tabEnabled = false;
         menu.showRoot = true;
-        Menu.popUpMenu(menu, null, items);
+        menu.setDispatcher(dispatcher);
+        Menu.popUpMenu(menu, null, items); // does not actually pop up, but needed.
         return menu;
     }

@@ -105,8 +109,8 @@
     }

     /**
-     * Configures the event dispatcher to be used when dispatching this menu's events. By default
-     * they will be dispatched on the stage.
+     * Configures the event dispatcher to be used when dispatching this menu's command events.
+     * Normally they will be dispatched on our parent (usually the SystemManager or something).
      */
     public function setDispatcher (dispatcher :IEventDispatcher) :void
     {
@@ -116,8 +120,8 @@
     /**
      * Actually pop up the menu. This can be used instead of show().
      */
-    public function popUp (trigger :DisplayObject, popUpwards :Boolean = false,
-                           popLeftwards :Boolean = false) :void
+    public function popUp (
+        trigger :DisplayObject, popUpwards :Boolean = false, popLeftwards :Boolean = false) :void
     {
         _upping = popUpwards;
         _lefting = popLeftwards;
@@ -129,8 +133,8 @@
     /**
      * Shows the menu at the specified mouse coordinates.
      */
-    public function popUpAt (mx :int, my :int, popUpwards :Boolean = false,
-                             popLeftwards :Boolean = false) :void
+    public function popUpAt (
+        mx :int, my :int, popUpwards :Boolean = false, popLeftwards :Boolean = false) :void
     {
         _upping = popUpwards;
         _lefting = popLeftwards;


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

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

 package mx.controls.advancedDataGridClasses
 {


Transferred from the Adobe Open Source Subversion Repository

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

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


Fixed RTE issue when change columns at run time. If you changed from a grid with a larger number of columns to one with a smaller number the headerInfo was being cached. This could cause an RTE.

--- frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGrid.as
+++ frameworks/projects/advancedgrids/src/mx/controls/AdvancedDataGrid.as
@@ -2221,12 +2221,12 @@
      */
     override protected function createHeaders(left:Number, top:Number):void
     {
-        if(!columnGrouping)
+        if (!columnGrouping)
         {
             var creatingHeaders:Boolean = false;
-            if(horizontalScrollPolicy != ScrollPolicy.OFF && getOptimumColumns()!= visibleColumns)
-            {
-                if(!headerItems[0] || !headerItems[0][0] || (top < headerItems[0][0].y + headerItems[0][0].height))
+            if (horizontalScrollPolicy != ScrollPolicy.OFF && getOptimumColumns()!= visibleColumns)
+            {
+                if (!headerItems[0] || !headerItems[0][0] || (top < headerItems[0][0].y + headerItems[0][0].height))
                     creatingHeaders = true;
             }

@@ -2813,7 +2813,7 @@
         // based on the dataProvider. Thus setting of columns by dataProvider
         // falls in the same cycle of commitProperties and if moved above will
         // not get picked unless a second call to commitProperties come
-        if(groupedColumnsChanged)
+        if (groupedColumnsChanged)
         {
             columnGrouping = true;
             columnsChanged = false;
@@ -2833,19 +2833,23 @@

             super.columns = getLeafColumns(_groupedColumns.slice(0));
         }
-        else if(columnsChanged)
+        else if (columnsChanged)
         {
             columnGrouping = false;
             columnsChanged = false;

             removeOldHeaders();
+
+			columnsToInfo = new Dictionary();
+			headerInfos = initializeHeaderInfo(_columnsValue);
+
+			headerInfoInitialized = true;

             super.columns = _columnsValue;
         }

         if (displayItemsExpandedChanged)
         {
-            displayItemsExpandedChanged = false;
             // if displayItemsExpanded is set to true, then expand all the items.
             if (displayItemsExpanded)
                 expandAll();
@@ -3324,15 +3328,15 @@

     /**
      *  @private
-     *  Initialized the headerInfos structure w.r.t to the groupedColumns
+     *  Initialized the headerInfos structure w.r.t to the columns
      *  configuration
      */
-    override protected function initializeHeaderInfo(groupedColumns:Array):Array
-    {
-        if(!columnGrouping)
-            return super.initializeHeaderInfo(groupedColumns);
+    override protected function initializeHeaderInfo(columns:Array):Array
+    {
+        if (!columnGrouping)
+            return super.initializeHeaderInfo(columns);
         else
-            return initializeGroupedHeaderInfo(groupedColumns, null,0,null);
+            return initializeGroupedHeaderInfo(columns, null,0,null);
     }

     /**
@@ -3340,7 +3344,7 @@
      */
     override protected function createDisplayableColumns():void
     {
-        if(!columnGrouping)
+        if (!columnGrouping)
         {
             super.createDisplayableColumns();
         }
@@ -3364,7 +3368,7 @@
      */
     override protected function updateVisibleHeaders():Array
     {
-        if(!columnGrouping)
+        if (!columnGrouping)
             return super.updateVisibleHeaders();
         else
             return updateVisibleHeaderInfos(headerInfos).infos;


Transferred from the Adobe Open Source Subversion Repository

Revision: 4726
Author:   gosmith@adobe.com
Date:     2009-01-29T02:47:59.868818Z

Log Message:
-----------
Accessibility changes to the MSAA name of several components, as requested by Freedom Scientific. These changes make Flex controls behave more like standard Windows controls.

In Accordion and TabBar, the name is now just what is displayed, without " Tab" or " Tab, Active" appended.

In ComboBox, List, and Tree, the name of each item is now just what it displays, without, for example, "2 of 7" appended.

Removed an artificial limit of 100000 items in List and Menu.

A Slider with an MXML id no longer returns that id as its name; no other component does this and id's are certainly no intended to be spoken.

Removed the getName() method of ComboBase, which isn't used.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Jason

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ColorPickerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AlertAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccordionHeaderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBaseAccImpl.as</path>

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

--- frameworks/projects/mx/src/mx/accessibility/AccordionHeaderAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/AccordionHeaderAccImpl.as
@@ -211,18 +211,13 @@
 	{
 		var tab:Button = Button(master);

-		var parentAccordion:Accordion = Accordion(master.parent);
-
-		if (childID > 0)
+		if (childID > 0)
+		{
+			var parentAccordion:Accordion = Accordion(master.parent);
 			tab = parentAccordion.getHeaderAt(parentAccordion.focusedIndex);
-
-		var name:String = tab.label + " Tab";
-
-		//if (tab.selected) // until 125587 is fixed.
-		if (tab == parentAccordion.getHeaderAt(parentAccordion.selectedIndex))
-			name += ", Active";
-
-		return name;
+		}
+
+		return tab.label;
 	}

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 10633
Author:   dloverin@adobe.com
Date:     2009-09-28T13:24:30.559033Z

Log Message:
-----------
Use styleManager instance instead of StyleManager singleton (framework and compiler generated code)

Modified compiler generated style code for the FlexInit class. The style related changes are only available with the -keep option. AST generation is coming later.

Only the framework project is changed here. The other projects are will be changed soon.

QE notes: None.
Doc notes: None.
Bugs:
Reviewer: Alex and Paul
Tests run: checkintests, all Mustella tests(no new failures)
Is noteworthy for integration: no.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ButtonBarButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/HaloBorder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/accordionClasses/AccordionHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/CanvasLayout.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/controls/DateChooser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/dragClasses/DragProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/configuration_en.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/common/CompilerConfiguration.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressIndeterminateSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DateChooserMonthArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/SliderThumbSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/DragManagerImpl.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/skins/halo/ScrollThumbSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridColumn.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleModule.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Form.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager2.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/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<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/controls/Label.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/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/TitleBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/NumericStepperDownSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/PopUpButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/ProgrammaticSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/TabSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/textClasses/TextRange.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/LayoutContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/AccordionHeaderSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/CheckBoxIcon.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/NumericStepperUpSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/RadioButtonIcon.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/states/SetStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ComboBoxArrowSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeaderBase.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/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/MenuBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ProgressBarSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/BusyCursor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/SliderTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.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/modules/compiler/src/java/flex2/compiler/css/StyleModule.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/ScrollTrackSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/skins/halo/DataGridHeaderBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/CursorManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/ModuleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SetStyleActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.vm</path>

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

--- frameworks/projects/mx/src/mx/skins/halo/ProgressIndeterminateSkin.as
+++ frameworks/projects/mx/src/mx/skins/halo/ProgressIndeterminateSkin.as
@@ -93,7 +93,7 @@

 		// User-defined styles
 		var barColorStyle:* = getStyle("barColor");
-		var barColor:uint = StyleManager.isValidStyleValue(barColorStyle) ?
+		var barColor:uint = styleManager.isValidStyleValue(barColorStyle) ?
 							barColorStyle :
 							getStyle("themeColor");


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXDecoder.as
+++ frameworks/projects/rpc/src/mx/messaging/channels/amfx/AMFXDecoder.as
@@ -0,0 +1,605 @@
+/*************************************************************************
+ *
+ * ADOBE CONFIDENTIAL
+ * __________________
+ *
+ *  [2002] - [2007] Adobe Systems Incorporated
+ *  All Rights Reserved.
+ *
+ * NOTICE:  All information contained herein is, and remains
+ * the property of Adobe Systems Incorporated and its suppliers,
+ * if any.  The intellectual and technical concepts contained
+ * herein are proprietary to Adobe Systems Incorporated
+ * and its suppliers and may be covered by U.S. and Foreign Patents,
+ * patents in process, and are protected by trade secret or copyright law.
+ * Dissemination of this information or reproduction of this material
+ * is strictly forbidden unless prior written permission is obtained
+ * from Adobe Systems Incorporated.
+ */
+package mx.messaging.channels.amfx
+{
+
+import flash.net.getClassByAlias;
+import flash.utils.ByteArray;
+import flash.utils.getDefinitionByName;
+import flash.utils.IExternalizable;
+
+import mx.logging.Log;
+import mx.messaging.errors.ChannelError;
+import mx.resources.IResourceManager;
+import mx.resources.ResourceManager;
+import mx.utils.HexDecoder;
+
+[ResourceBundle("messaging")]
+
+[ExcludeClass]
+/**
+ * Decodes an AMFX packet into an ActionScript Object graph.
+ * Headers and the result body are accessed from the returned
+ * AMFXResult.
+ * @private
+ */
+public class AMFXDecoder
+{
+    //--------------------------------------------------------------------------
+    //
+    // Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    public function AMFXDecoder()
+    {
+        super();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Class variables
+    //
+    //--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the resourceManager getter.
+	 *  This gets initialized on first access,
+	 *  not at static initialization time, in order to ensure
+	 *  that the Singleton registry has already been initialized.
+	 */
+	private static var _resourceManager:IResourceManager;
+
+	/**
+	 *  @private
+     *  A reference to the object which manages
+     *  all of the application's localized resources.
+     *  This is a singleton instance which implements
+     *  the IResourceManager interface.
+	 */
+	private static function get resourceManager():IResourceManager
+	{
+		if (!_resourceManager)
+			_resourceManager = ResourceManager.getInstance();
+
+		return _resourceManager;
+	}
+
+    //--------------------------------------------------------------------------
+    //
+    // Public Methods
+    //
+    //--------------------------------------------------------------------------
+
+    public function decode(xml:XML):AMFXResult
+    {
+        if (xml)
+        {
+            var context:AMFXContext = new AMFXContext();
+            context.log = Log.getLogger("mx.messaging.channels.amfx.AMFXDecoder");
+            return decodePacket(xml, context);
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Static Methods
+    //
+    //--------------------------------------------------------------------------
+
+    private static function decodePacket(xml:XML, context:AMFXContext):AMFXResult
+    {
+        var result:AMFXResult = new AMFXResult();
+
+        var message:String;
+
+		var name:String = xml.localName();
+        if (name == "amfx")
+        {
+            var v:String = xml.attribute("ver").toString();
+            var version:uint = uint(v);
+
+            if (supportedVersion(version))
+            {
+                var h:XMLList = xml.child("header");
+                if (h)
+                {
+                    result.headers = decodeHeaders(h, context);
+                }
+
+                var body:XML = xml.body[0];
+
+                if (body)
+                {
+                    result.result = decodeBody(body, context);
+                }
+                else
+                {
+					message = resourceManager.getString(
+						"messaging", "noAMFXBody");
+                    throw new ChannelError(message);
+                }
+            }
+            else
+            {
+				message = resourceManager.getString(
+					"messaging", "unsupportedAMFXVersion", [ version ]);
+                throw new ChannelError(message);
+            }
+        }
+        else
+        {
+			message = resourceManager.getString(
+				"messaging", "noAMFXNode")
+            throw new ChannelError(message);
+        }
+
+        return result;
+    }
+
+    private static function decodeHeaders(xmlList:XMLList, context:AMFXContext):Array
+    {
+        var headers:Array = [];
+
+        for (var i:uint = 0; i < xmlList.length(); i++)
+        {
+            var h:XML = xmlList[i];
+            var name:String = h.attribute("name").toString();
+
+            var header:AMFXHeader = new AMFXHeader();
+            header.name = name;
+
+            var temp:String = h.attribute("mustUnderstand").toString();
+            header.mustUnderstand = (temp == "true");
+
+            var children:XMLList = h.children();
+            if (children.length() > 0)
+            {
+                header.content = decodeValue(children[0], context);
+            }
+            else
+            {
+                header.content = null;
+            }
+
+            headers[i] = header;
+        }
+
+        return headers;
+    }
+
+    private static function decodeBody(xml:XML, context:AMFXContext):Object
+    {
+        var result:Object;
+        var children:XMLList = xml.children();
+
+        if (children.length() == 1)
+        {
+            result = decodeValue(children[0], context);
+        }
+        else if (children.length() > 1)
+        {
+            result = [];
+            for (var i:uint = 0; i < children.length(); i++)
+            {
+                result[i] = decodeValue(children[i], context);
+            }
+        }
+
+        return result;
+    }
+
+    public static function decodeValue(xml:XML, context:AMFXContext):Object
+    {
+        var result:Object;
+        var name:String = xml.localName();
+
+        if (name == "string")
+        {
+            result = decodeString(xml, context);
+        }
+        else if (name == "true")
+        {
+            result = true;
+        }
+        else if (name == "false")
+        {
+            result = false;
+        }
+        else if (name == "array")
+        {
+            result = decodeArray(xml, context);
+        }
+        else if (name == "object")
+        {
+            result = decodeObject(xml, context);
+        }
+        else if (name == "ref")
+        {
+            result = decodeRef(xml, context);
+        }
+        else if (name == "double")
+        {
+            var n:String = xml.text().toString();
+            result = Number(n);
+        }
+        else if (name == "int")
+        {
+            var i:String = xml.text().toString();
+            result = int(i);
+        }
+        else if (name == "null")
+        {
+            result = null;
+        }
+        else if (name == "date")
+        {
+            result = decodeDate(xml, context);
+        }
+        else if (name == "xml")
+        {
+            var x:String = xml.text().toString();
+            // If we had CDATA, restore any escaped close CDATA "]]>" tokens
+            if (hasEscapedCloseCDATA(xml))
+            {
+                x = x.replace(REGEX_CLOSE_CDATA, "]]>");
+            }
+
+            result = new XML(x);
+        }
+        else if (name == "bytearray")
+        {
+            result = decodeByteArray(xml);
+        }
+        else if (name == "undefined")
+        {
+            result = undefined;
+        }
+
+        return result;
+    }
+
+    private static function decodeArray(xml:XML, context:AMFXContext):Array
+    {
+        var array:Array = [];
+
+        // Remember Array
+        context.addObject(array);
+
+        var entries:XMLList = xml.*;
+        if (entries)
+        {
+            for (var i:uint = 0; i < entries.length(); i++)
+            {
+                var x:XML = entries[i];
+                var prop:Object;
+                if (x.localName() == "item")
+                {
+                    var propName:String = x.attribute("name").toString();
+                    prop = decodeValue(x.*[0], context);
+                    array[propName] = prop;
+                }
+                else
+                {
+                    prop = decodeValue(x, context);
+                    array.push(prop);
+                }
+            }
+        }
+
+        return array;
+    }
+
+    private static function decodeByteArray(xml:XML):ByteArray
+    {
+        var str:String = xml.text().toString();
+
+        var decoder:HexDecoder = new HexDecoder();
+        decoder.decode(str);
+        return decoder.drain();
+    }
+
+    private static function decodeDate(xml:XML, context:AMFXContext):Date
+    {
+        var d:String = xml.text().toString();
+        var time:Number = new Number(d);
+        var result:Date = new Date();
+        result.setTime(time);
+
+        // Remember Date object
+        context.addObject(result);
+
+        return result;
+    }
+
+    private static function decodeObject(xml:XML, context:AMFXContext):Object
+    {
+        var result:Object;
+        var className:String = xml.attribute("type").toString();
+
+        if (className)
+        {
+            try
+            {
+                var classType:Class = null;
+                try
+                {
+                    classType = getClassByAlias(className);
+                }
+                catch(e1:Error)
+                {
+                    if (!classType)
+                        classType = getDefinitionByName(className) as Class;
+                }
+
+                result = new classType();
+            }
+            catch(e:Error)
+            {
+                if (context.log)
+                    context.log.warn("Error instantiating class: {0}. Reverting to anonymous Object.", className);
+
+                result = {};
+            }
+        }
+        else
+        {
+            className = "Object";
+            result = {};
+        }
+
+        // Remember Object
+        context.addObject(result);
+
+        var entries:XMLList = xml.*;
+
+        if (entries && entries.length() > 0)
+        {
+            var traits:Object;
+            var tx:XML = entries[0];
+			var message:String;
+
+            if (tx.localName() == "traits")
+            {
+                traits = decodeTraits(tx, className, context);
+                delete entries[0];
+            }
+
+            if (!traits)
+            {
+				message = resourceManager.getString(
+					"messaging", "AMFXTraitsNotFirst")
+                throw new ChannelError(message);
+            }
+
+            if (traits.externalizable)
+            {
+                if (result is IExternalizable)
+                {
+                    var ext:IExternalizable = IExternalizable(result);
+                    tx = entries[0];
+                    if (tx.localName() == "bytearray")
+                    {
+                        var ba:ByteArray = decodeByteArray(tx);
+
+                        try
+                        {
+                            ext.readExternal(ba);
+                        }
+                        catch(e:Error)
+                        {
+							message = resourceManager.getString(
+								"messaging", "errorReadingIExternalizable",
+								[ (e.message+e.getStackTrace()) ]);
+                            throw new ChannelError(message);
+                        }
+                    }
+                }
+                else
+                {
+					message = resourceManager.getString(
+						"messaging", "notImplementingIExternalizable",
+						[ className ]);
+                    throw new ChannelError(message);
+                }
+            }
+            else
+            {
+                for (var i:uint = 0; i < entries.length(); i++)
+                {
+                    var propName:String = traits.properties[i];
+                    var propValue:* = decodeValue(entries[i], context);
+
+                    try
+                    {
+                        result[propName] = propValue;
+                    }
+                    catch(e2:Error)
+                    {
+                        if (context.log != null)
+                            context.log.warn("Cannot set property '{0}' on type '{1}'.", propName, className);
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
+    private static function decodeRef(xml:XML, context:AMFXContext):Object
+    {
+        var result:*;
+
+		var message:String;
+
+        var idAttr:String = xml.attribute("id").toString();
+        if (idAttr)
+        {
+            var ref:int = parseInt(idAttr);
+
+            if (!isNaN(ref))
+            {
+                result = context.getObject(ref);
+            }
+
+            if (result === undefined)
+            {
+				message = resourceManager.getString(
+					"messaging", "unknownReference", [ idAttr ]);
+                throw new ChannelError(message);
+            }
+        }
+        else
+        {
+			message = resourceManager.getString(
+				"messaging", "referenceMissingId");
+            throw new ChannelError(message);
+        }
+
+        return result;
+    }
+
+    private static function decodeString(xml:XML, context:AMFXContext, isTrait:Boolean = false):String
+    {
+        var str:String;
+
+        var refAttr:String = xml.attribute("id").toString();
+        if (refAttr)
+        {
+            var ref:uint = uint(refAttr);
+            if (!isNaN(ref))
+            {
+                str = context.getString(ref);
+            }
+
+            if (!str)
+            {
+				var message:String = resourceManager.getString(
+					"messaging", "unknownStringReference", [ refAttr ]);
+                throw new ChannelError(message);
+            }
+        }
+        else
+        {
+            str = xml.text().toString();
+
+            // If we had CDATA, restore any escaped close CDATA "]]>" tokens
+            // Note that trait names won't have CDATA sections... so no need to check them
+            if (!isTrait && hasEscapedCloseCDATA(xml))
+            {
+                str = str.replace(REGEX_CLOSE_CDATA, "]]>");
+            }
+
+            //Remember string
+            context.addString(str);
+        }
+
+        return str;
+    }
+
+    private static function decodeTraits(xml:XML, className:String, context:AMFXContext):Object
+    {
+        var traits:Object;
+
+        var refAttr:String = xml.attribute("id").toString();
+        if (refAttr)
+        {
+            var ref:uint = uint(refAttr);
+            if (!isNaN(ref))
+            {
+                traits = context.getTraitInfo(ref);
+            }
+
+            if (!traits)
+            {
+				var message:String = resourceManager.getString(
+					"messaging", "unknownTraitReference", [ refAttr ]);
+                throw new ChannelError(message);
+            }
+        }
+        else
+        {
+            traits = {};
+            traits.name = className;
+            traits.alias = className;
+            traits.properties = [];
+            traits.externalizable = false;
+
+            var ext:String = xml.attribute("externalizable").toString();
+            if (ext == "true")
+            {
+                traits.externalizable = true;
+            }
+
+            var nodes:XMLList = xml.*;
+            if (nodes)
+            {
+                for (var i:uint = 0; i < nodes.length(); i++)
+                {
+                    traits.properties[i] = decodeString(nodes[i], context, true);
+                }
+            }
+
+            //Remember traits
+            context.addTraitInfo(traits);
+        }
+
+        return traits;
+    }
+
+    private static function hasEscapedCloseCDATA(xml:XML):Boolean
+    {
+        var s:String = xml.toXMLString();
+
+        if (s.indexOf("]]>") != -1)
+        {
+            return s.indexOf("]]>") != -1;
+        }
+        else
+        {
+            return false;
+        }
+    }
+
+    private static function supportedVersion(ver:uint):Boolean
+    {
+        for (var i:uint = 0; i < SUPPORTED_VERSIONS.length; i++)
+        {
+            if (ver == SUPPORTED_VERSIONS[i])
+                return true;
+        }
+
+        return false;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Static Constants
+    //
+    //--------------------------------------------------------------------------
+
+    private static const SUPPORTED_VERSIONS:Array = [3];
+    private static const REGEX_CLOSE_CDATA:RegExp = new RegExp("]]>", "g");
+}
+
+}


HLSNetStream: change EndOfStream detection logic

it happens that in some conditions, NetStream will stop moving play-head although bufferlength is bigger than 0.1s ...
the EOS detection logic is assuming that stream is EOS if
playbackState is PLAYING
AND last fragment has been loaded, either because we reached end of VOD or because live loading stalled ...
AND NetStream is less than 0.1s

End Of Stream is now triggered by the following conditions:
playbackState is PLAYING
AND last fragment has been loaded, either because we reached end of VOD or because live loading stalled ...
AND NetStream is almost empty(less than 2s ... this is just for safety ...)
AND StreamBuffer is empty(it means that last fragment tags have been appended in NetStream)
AND playhead is not moving anymore (NetStream.time not changing overtime)

related to https://github.com/mangui/flashls/issues/413

--- src/org/mangui/hls/stream/HLSNetStream.as
+++ src/org/mangui/hls/stream/HLSNetStream.as
@@ -63,13 +63,15 @@
         private var _skippedDuration : Number;
         /** watched duration **/
         private var _watchedDuration : Number;
+        /** last NetStream.time, used to check if playback is over **/
+        private var _lastNetStreamTime : Number;

         /** Create the buffer. **/
         public function HLSNetStream(connection : NetConnection, hls : HLS, streamBuffer : StreamBuffer) : void {
             super(connection);
             super.bufferTime = 0.1;
             _hls = hls;
-            _skippedDuration = _watchedDuration = 0;
+            _skippedDuration = _watchedDuration = _lastNetStreamTime = 0;
             _bufferThresholdController = new BufferThresholdController(hls);
             _streamBuffer = streamBuffer;
             _playbackState = HLSPlayStates.IDLE;
@@ -133,17 +135,29 @@
                 reachedEnd : Boolean = _streamBuffer.reachedEnd,
                 liveLoadingStalled : Boolean = _streamBuffer.liveLoadingStalled;
             // Log.info("netstream/total:" + super.bufferLength + "/" + this.bufferLength);
-            // Set playback state. no need to check buffer status if seeking
+
             if (_seekState != HLSSeekStates.SEEKING) {
-                // check low buffer condition
-                if (buffer <= 0.1) {
-                    if (reachedEnd || liveLoadingStalled) {
-                        // Last tag done? Then append sequence end.
+                if (_playbackState == HLSPlayStates.PLAYING) {
+                  /* check if play head reached end of stream.
+                        this happens when
+                            playstate is PLAYING
+                        AND last fragment has been loaded,
+                            either because we reached end of VOD or because live loading stalled ...
+                        AND NetStream is almost empty(less than 2s ... this is just for safety ...)
+                        AND StreamBuffer is empty(it means that last fragment tags have been appended in NetStream)
+                        AND playhead is not moving anymore (NetStream.time not changing overtime)
+                    */
+                    if((reachedEnd || liveLoadingStalled) &&
+                       bufferLength <= 2 &&
+                       _streamBuffer.bufferLength == 0 &&
+                       _lastNetStreamTime &&
+                       super.time == _lastNetStreamTime) {
+                        // playhead is not moving anymore ... append sequence end.
                         super.appendBytesAction(NetStreamAppendBytesAction.END_SEQUENCE);
                         super.appendBytes(new ByteArray());
-                        // reach end of playlist + playback complete (as buffer is empty).
-                        // stop timer, report event and switch to IDLE mode.
+                        // have we reached end of playlist ?
                         if(reachedEnd) {
+                            // stop timer, report event and switch to IDLE mode.
                             _timer.stop();
                             CONFIG::LOGGING {
                                 Log.debug("reached end of VOD playlist, notify playback complete");
@@ -152,7 +166,7 @@
                             _setPlaybackState(HLSPlayStates.IDLE);
                             _setSeekState(HLSSeekStates.IDLE);
                         } else {
-                            // flush buffer and restart playback in case live loading stalled
+                            // live loading stalled : flush buffer and restart playback
                             CONFIG::LOGGING {
                                 Log.warn("loading stalled: restart playback");
                             }
@@ -162,10 +176,11 @@
                             seek(-1);
                         }
                         return;
-                    } else {
-                        // buffer <= 0.1 and not EOS, pause playback
+                    } else if (buffer <= 0.1) {
+                        // playing and buffer <= 0.1 and not EOS, pause playback
                         super.pause();
                     }
+                    _lastNetStreamTime = super.time;
                 }
                 // if buffer len is below lowBufferLength, get into buffering state
                 if (!reachedEnd && !liveLoadingStalled && buffer < _bufferThresholdController.lowBufferLength) {
@@ -437,7 +452,7 @@
                 Log.info("HLSNetStream:close");
             }
             super.close();
-            _watchedDuration = _skippedDuration = 0;
+            _watchedDuration = _skippedDuration = _lastNetStreamTime = 0;
             _streamBuffer.stop();
             _timer.stop();
             _setPlaybackState(HLSPlayStates.IDLE);


Move file actions to separate button set.

--- test/src/FRESteamWorksTest.as
+++ test/src/FRESteamWorksTest.as
@@ -46,6 +46,7 @@

 		private var _container:Sprite;
 		private var _buttonContainer:Sprite;
+		private var _fileContainer:Sprite;
 		private var _enumerateContainer:Sprite;
 		private var _overlayContainer:Sprite;
 		private var _leaderboardsContainer:Sprite;
@@ -63,6 +64,7 @@
 			addChild(_container);

 			_buttonContainer = new Sprite();
+			_fileContainer = new Sprite();
 			_enumerateContainer = new Sprite();
 			_overlayContainer = new Sprite();
 			_leaderboardsContainer = new Sprite();
@@ -71,12 +73,9 @@
 			addButton("Check stats/achievements", checkAchievements, _buttonContainer);
 			addButton("Toggle achievement", toggleAchievement, _buttonContainer);
 			addButton("Toggle cloud enabled", toggleCloudEnabled, _buttonContainer);
-			addButton("Toggle file", toggleFile, _buttonContainer);
-			addButton("Publish file", publishFile, _buttonContainer);
-			addButton("Delete published file", deletePublishedFile, _buttonContainer);
 			addButton("Toggle fullscreen", toggleFullscreen, _buttonContainer);
-			addButton("Update file", updateFile, _buttonContainer);
 			addButton("Invalid API call", invalidCall, _buttonContainer);
+			addButton("File actions", null, _buttonContainer, _fileContainer);
 			addButton("Enumerate workshop", null, _buttonContainer, _enumerateContainer);
 			addButton("Show overlay", null, _buttonContainer, _overlayContainer);
 			addButton("Query leaderboard", null, _buttonContainer, _leaderboardsContainer);
@@ -88,6 +87,12 @@
 			addButton("All published files (vote)", enumerateWorkshopFiles, _enumerateContainer);
 			addButton("By Action (played)", enumeratePlayedFiles, _enumerateContainer);
 			addButton("By Action (completed)", enumerateCompletedFiles, _enumerateContainer);
+
+			addButton("Back", null, _fileContainer);
+			addButton("Toggle file", toggleFile, _fileContainer);
+			addButton("Publish file", publishFile, _fileContainer);
+			addButton("Delete published file", deletePublishedFile, _fileContainer);
+			addButton("Update file", updateFile, _fileContainer);

 			addButton("Back", null, _overlayContainer);
 			addButton("Show friends overlay", activateOverlay, _overlayContainer);


measure height after layout

measure height after layout

--- frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
+++ frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/FlexibleFirstChildHorizontalLayout.as
@@ -209,7 +209,6 @@
 						mr = 0;
 				}
 				child.y = mt + padding.top;
-				maxHeight = Math.max(maxHeight, mt + child.height + mb);
 				if (i == 0)
                 {
                     child.x = ml + padding.left;
@@ -217,6 +216,7 @@
                 }
 				else
                     child.x = xx - child.width - mr;
+                maxHeight = Math.max(maxHeight, mt + child.height + mb);
 				xx -= child.width + mr + ml;
 				lastmr = mr;
 				var valign:Object = ValuesManager.valuesImpl.getValue(child, "vertical-align");


viewport must now created using its constructor and can be moved with x/y properties

--- src/aerys/minko/stage/Viewport.as
+++ src/aerys/minko/stage/Viewport.as
@@ -20,6 +20,8 @@
 	import flash.display3D.Context3D;
 	import flash.display3D.Context3DRenderMode;
 	import flash.events.Event;
+	import flash.events.FullScreenEvent;
+	import flash.geom.Point;
 	import flash.geom.Rectangle;
 	import flash.utils.Dictionary;
 	import flash.utils.getTimer;
@@ -35,8 +37,11 @@
 	{
 		use namespace minko;

+		private static const ZERO2		: Point						= new Point();
+
 		private var _width				: Number					= 0.;
 		private var _height				: Number					= 0.;
+		private var _autoResize			: Boolean					= false;

 		private var _version			: uint						= 0;

@@ -58,6 +63,18 @@
 		public function get version() : uint
 		{
 			return _version;
+		}
+
+		override public function set x(value : Number) : void
+		{
+			super.x = value;
+			updateRectangle();
+		}
+
+		override public function set y(value : Number) : void
+		{
+			super.y = value;
+			updateRectangle();
 		}

 		/**
@@ -187,46 +204,23 @@
 		 * @param width The width of the viewport.
 		 * @param height The height of the viewport.
 		 */
-		public function Viewport(width			: Number,
-								   height		: Number,
-								   antiAliasing	: int	= 0,
-								   rendererType	: Class = null)
+		public function Viewport(width			: uint		= 0,
+								 height			: uint		= 0,
+								 autoResize		: Boolean	= false,
+								 antiAliasing	: int		= 0,
+								 rendererType	: Class 	= null)
 		{
 			this.width = width;
 			this.height = height;

+			_autoResize = autoResize;
 			_aa = antiAliasing;
 			_rendererClass = rendererType || DirectRenderer;
-		}
-
-		/**
-		 * Create a new Viewport3D object and setup the stage accordingly.
-		 *
-		 *

-		 *
The resulting Viewport3D object will have the dimensions of the stage.

-		 *
The resulting Viewport3D object listens to the Event.RESIZE event of the stage
-		 * in order to update its dimensions.

-		 *
The stage "scaleMode" property is set to StageScaleMode.NO_SCALE.

-		 *
The stage "align" property is set to StageAlign.TOP_LEFT.

-		 *

-		 *
-		 * @param stage
-		 * @param antiAliasing
-		 * @return
-		 *
-		 */
-		public static function setupOnStage(stage : Stage, antiAliasing : int = 0) : Viewport
-		{
-			var vp : Viewport = new Viewport(stage.stageWidth,
-											 stage.stageHeight,
-											 antiAliasing);
-
-			vp.setupOnStage(stage);
-
-			return vp;
-		}
-
-		private function setupOnStage(stage : Stage, autoResize : Boolean = true) : void
+
+			addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
+		}
+
+		private function addedToStageHandler(event : Event) : void
 		{
 			stage.addChild(this);
 			stage.scaleMode = StageScaleMode.NO_SCALE;
@@ -234,11 +228,13 @@
 			stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, contextCreatedHandler);
 			stage.stage3Ds[0].requestContext3D(Context3DRenderMode.AUTO);

-			if (autoResize)
+			if (_autoResize)
+			{
 				stage.addEventListener(Event.RESIZE, stageResizeHandler);
-
-			width = stage.stageWidth;
-			height = stage.stageHeight;
+
+				width = stage.stageWidth;
+				height = stage.stageHeight;
+			}

 			showLogo();
 		}
@@ -265,13 +261,23 @@
 		{
 			if (_context)
 			{
-				stage.stage3Ds[0].viewPort = new Rectangle(x, y, _width, _height);
+				updateRectangle();
 				_context.configureBackBuffer(_width, _height, _aa, true);

 				_renderer = new DirectRenderer(this, _context);

 				_wdExtracterQuery = new WorldDataExtracterVisitor();
 				_renderingQuery = new RenderingVisitor(_renderer);
+			}
+		}
+
+		private function updateRectangle() : void
+		{
+			if (_context)
+			{
+				var origin : Point = localToGlobal(ZERO2);
+
+				stage.stage3Ds[0].viewPort = new Rectangle(origin.x, origin.y, _width, _height);
 			}
 		}

@@ -317,8 +323,8 @@
 			}

 			showLogo();
-		}
-
+		}
+
 		public function showLogo() : void
 		{
 			var logo : Sprite = Minko.logo;
@@ -326,7 +332,7 @@
 			addChild(logo);

 			logo.x = 5;
-			logo.y = stage.stageHeight - logo.height - 5;
+			logo.y = _height - logo.height - 5;
 		}
 	}
 }


Can't see 'STARTOVER' tab selector

Can't see 'STARTOVER' tab selector

--- flexEditor/src/org/arisgames/editor/view/GameDetailsEditorView.as
+++ flexEditor/src/org/arisgames/editor/view/GameDetailsEditorView.as
@@ -716,7 +716,7 @@
 			{
 				var tab:TabBarItem = new TabBarItem(obj.result.data[x].tab, obj.result.data[x].tab_index, true, "");
 				if(tab.index == 0){ tab.append = "_DIM"; tab.enabled = false;}
-				if(tab.type != "PICKGAME") this.tabList.addItem(tab); //Don't allow changing of gamepicker
+				if(tab.type != "PICKGAME" && tab.type != "STARTOVER") this.tabList.addItem(tab); //Don't allow changing of gamepicker
 			}
 			this.tabList.refresh();
 		}


Infinite Buffer Bandage Updates: - Added a check that would attempt to reduce the quality level if the   video has been buffering for too long

--- HLSPlugin/src/org/osmf/net/httpstreaming/HLSHTTPNetStream.as
+++ HLSPlugin/src/org/osmf/net/httpstreaming/HLSHTTPNetStream.as
@@ -755,11 +755,29 @@
 						case HTTPStreamingState.WAIT:
 							// if we are getting dry then go back into
 							// active play mode and get more bytes
-							// from the stream provider
+							// from the stream provider
 							if (!_waitForDRM && (this.bufferLength < _desiredBufferTime_Min || checkIfExtraBufferingNeeded()))
 							{
 								setState(HTTPStreamingState.PLAY);
 							}
+
+							// Reset a timer every time this code is reached. If this code is NOT reached for a significant amount of time, it means
+							// we are attempting to stream a quality level that is too high for the current bandwidth, and should switch to the lowest
+							// quality, as a precaution.
+							if (!streamTooSlowTimer)
+							{
+								// If the timer doesn't yet exist, create it, setting the delay to twice the maximum desired buffer time
+								streamTooSlowTimer = new Timer(_desiredBufferTime_Max * 2000);
+
+								streamTooSlowTimer.addEventListener(TimerEvent.TIMER, function(timerEvent:TimerEvent = null):void {
+									// If this event is hit, set the quality level to the lowest available quality level
+									trace("Warning: Buffer Time of " + _desiredBufferTime_Max * 2 + " seconds exceeded. Switching to quality 0");
+									changeQualityLevelTo((_resource as HLSStreamingResource).manifest.streams[0].uri);
+								});
+							}
+							streamTooSlowTimer.reset();
+							streamTooSlowTimer.start();
+
 							break;

 						case HTTPStreamingState.SEEK:
@@ -909,7 +927,7 @@
 										recoveryStateNum = URLErrorRecoveryStates.IDLE;
 										recoveryDelayTimer.reset();
 									}
-
+
 									if (_waitForDRM)
 									{
 										setState(HTTPStreamingState.WAIT);
@@ -2121,6 +2139,8 @@
 			private var recoveryDelayTimer:Timer = new Timer(0); // timer that will be set to the required delay of reload attempts in the case of a URL error
 			private var gotBytes:Boolean = false;// If we got bytes- marks a stream that we should attempt to recover

+			private var streamTooSlowTimer:Timer;
+
 			public static var currentStream:HLSManifestStream;// this is the manifest we are currently using. Used to determine how much to seek forward after a URL error
 			public static var indexHandler:HLSIndexHandler;// a reference to the active index handler. Used to update the quality list after a change.
 			public static var recognizeBadStreamTime:Number = 20;// this is how long in seconds we will attempt to recover after a URL error before we give up completely


Fix timestamp sign respect in HLSHTTPNetStream.

--- HLSPlugin/src/org/osmf/net/httpstreaming/HLSHTTPNetStream.as
+++ HLSPlugin/src/org/osmf/net/httpstreaming/HLSHTTPNetStream.as
@@ -1874,6 +1874,8 @@
 				_enhancedSeekTarget = _seekTarget;
 			}

+			var realTimestamp:int = tag.timestamp as int;
+
 			// Apply bump if present.
 			if(indexHandler && indexHandler.bumpedTime
 				&& (_enhancedSeekTarget > indexHandler.bumpedSeek
@@ -1900,11 +1902,11 @@
 			if(indexHandler)
 				indexHandler.bumpedTime = false;

-			var currentTime:Number = (tag.timestamp / 1000.0) + _fileTimeAdjustment;
+			var currentTime:Number = (realTimestamp / 1000.0) + _fileTimeAdjustment;

 			CONFIG::LOGGING
 			{
-				logger.debug("Saw tag @ " + tag.timestamp + " currentTime=" + currentTime + " _seekTime=" + _seekTime + " _enhancedSeekTarget="+ _enhancedSeekTarget);
+				logger.debug("Saw tag @ " + realTimestamp + " currentTime=" + currentTime + " _seekTime=" + _seekTime + " _enhancedSeekTarget="+ _enhancedSeekTarget);
 			}

 			// Fix for http://bugs.adobe.com/jira/browse/FM-1544


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

--- frameworks/projects/framework/src/mx/core/IAssetLayoutFeatures.as
+++ frameworks/projects/framework/src/mx/core/IAssetLayoutFeatures.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-2008 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.
 //
 ////////////////////////////////////////////////////////////////////////////////
 package mx.core


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

--- frameworks/projects/framework/src/mx/graphics/SolidColorStroke.as
+++ frameworks/projects/framework/src/mx/graphics/SolidColorStroke.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2004-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.graphics
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 4849
Author:   jimurphy@adobe.com
Date:     2009-02-05T15:00:22.254099Z

Log Message:
-----------
Merged 3.x revisions 4842,4847 -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractProducer.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/wsdl/WSDL.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/AbstractOperation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/xml/XMLDecoder.as</path>
<path kind="file" copyfrom-path="/flex/sdk/branches/3.x/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPMultiService.as" copyfrom-rev="4847" action="A">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/http/mxml/HTTPMultiService.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/rpc/wsdl/WSDLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/MessageAgent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as</path>

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

--- frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
+++ frameworks/projects/framework/src/mx/managers/PopUpManagerImpl.as
@@ -957,13 +957,17 @@
             if (blurAmount)
             {
                 // Ensure we blur the appropriate top level document.
-                // Get the application document of the sandbox root.
-                // Use a request to get the document so APIs may change
-                // between Flex versions.
-                var sbRootApp:Object;   // sbRoot.application;
-
-                if (sm != sbRoot)
+                if (DisplayObject(sm).parent is Stage)
                 {
+                    // Checking this case first allows WindowedSystemManagers be the blur target.
+                    o.blurTarget = sm.document;
+                }
+                else if (sm != sbRoot)
+                {
+                    // Get the application document of the sandbox root.
+                    // Use a request to get the document so APIs may change
+                    // between Flex versions.
+                    var sbRootApp:Object;
                     var applicationRequest:InterManagerRequest = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST,
                                                                        false, false,
                                                                        "application",


Transferred from the Adobe Open Source Subversion Repository

Revision: 12370
Author:   smgilson@adobe.com
Date:     2009-12-02T16:48:37.124467Z

Log Message:
-----------
Fix for doc bug FLEXDOCS-1150

Added a few new examples and default sizes to Spark components

QE notes: -
Doc notes: -
Bugs: -
Reviewer: -
Tests run: - FLEXDOCS-1150
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/SkinnableContainerExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/VScrollBarExample.mxml</path>
<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/TabBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Group.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/asdoc/en_US/spark/components/examples/BorderContainerExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/HGroup.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/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/HScrollBarExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/TileGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/MyBorderSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/BorderContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VGroup.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/SkinnableDataContainerExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/formatters/DateFormatter.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/components/examples/ApplicationContainerExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NavigatorContent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DataGroup.as</path>

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

--- frameworks/projects/spark/src/spark/components/BorderContainer.as
+++ frameworks/projects/spark/src/spark/components/BorderContainer.as
@@ -165,12 +165,12 @@
  *  If you do not want rounded corners, set the joints property of
  *  the stroke to JointStyle.MITER.

  *
- *
The BorderContainer control has the following default characteristics:

+ *
The BorderContainer container has the following default characteristics:

  *

  *
Characteristic	Description

- *
Default size	112 pixels by 112 pixels

- *
Minimum size	0 pixels

- *
Maximum size	No limit

+ *
Default size	112 pixels wide by 112 pixels high

+ *
Minimum size	112 pixels wide by 112 pixels high

+ *
Maximum size	10000 pixels wide and 10000 pixels high

  *
Default skin class	spark.skins.spark.BorderContainerSkin

  *

  *
@@ -199,7 +199,7 @@
  *

  *
  *  @see spark.skins.spark.BorderContainerSkin
- *  @includeExample examples/BorderExample.mxml
+ *  @includeExample examples/BorderContainerExample.mxml
  *
  *  @langversion 3.0
  *  @playerversion Flash 10