Transferred from the Adobe Open Source Subversion Repository

Revision: 19316
Author:   smgilson@adobe.com
Date:     2010-12-13T19:12:21.336750Z

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

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewReturnObject.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorAction.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorApplicationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewReturnObject.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewReturnObject.as
@@ -13,16 +13,17 @@
 {
 /**
  *  The ViewReturnObject class encapsulates the return value of a view
- *  when it is popped off a navigation stack.  The object contains a reference
- *  to the returned object as well as the context in which the popped view was
- *  created.  The context is an arbitrary object that is passed as part of the
+ *  when it is popped off a navigation stack.
+ *  The ViewReturnObject object contains a reference to the
+ *  returned object, and the context in which the popped view was created.
+ *  The context is an arbitrary object that is passed to the
  *  ViewNavigator.pushView() method.
  *
  *  @see spark.components.View
  *  @see spark.components.ViewNavigator#pushView
  *
  *  @langversion 3.0
- *  @playerversion Flash 10.1
+ *  @playerversion Flash 10
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
@@ -37,18 +38,19 @@
     /**
      *  Constructor.
      *
-     *  @param object The returned object
-     *  @param context The context in which the owner was created
+     *  @param object The returned object.
+     *
+     *  @param context The context in which the owner was created.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 10.1
+     *  @playerversion Flash 10
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
     public function ViewReturnObject(object:Object = null, context:Object = null)
     {
-    	super();
-
+        super();
+
         this.object = object;
         this.context = context;
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 17078
Author:   hmuller@adobe.com
Date:     2010-07-27T22:05:44.533951Z

Log Message:
-----------
Added DefaultGridItemRenderer to SparkClasses.as and removed the "..." truncation support from DefaultGridItemRenderer.

QE notes: changes apply to Spark DataGrid only
Doc notes:
Bugs:
Reviewer: Kevin
Tests run: none
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridItemRenderer.as</path>

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

--- frameworks/projects/spark/src/SparkClasses.as
+++ frameworks/projects/spark/src/SparkClasses.as
@@ -47,6 +47,7 @@
 import spark.skins.spark.DataGridSkin; DataGridSkin;
 import spark.skins.spark.DefaultButtonSkin; DefaultButtonSkin;
 import spark.skins.spark.DefaultComplexItemRenderer; DefaultComplexItemRenderer;
+import spark.skins.spark.DefaultGridItemRenderer; DefaultGridItemRenderer;
 import spark.skins.spark.DefaultItemRenderer; DefaultItemRenderer;
 import spark.skins.spark.DropDownListButtonSkin; DropDownListButtonSkin;
 import spark.skins.spark.DropDownListSkin; DropDownListSkin;


Transferred from the Adobe Open Source Subversion Repository

Revision: 9715
Author:   aharui@adobe.com
Date:     2009-08-27T21:20:28.280781Z

Log Message:
-----------
Introduce tabFocusEnabled to IFocusManagerComponent.  This replaces tabEnabled as the way to remove a component from the tabbing loop.  tabEnabled should be set to true for any component that can receive focus, and tabFocusEnabled determines whether the FocusManager will actually give it focus.  If tabEnabled=false on a non-TextField, the player will sometimes momentarily remove focus and dispatch a focusOut when the component has focus and is later clicked on.  This is now quite common with TLF-based text components so we are forced to make this change.

QE Notes: tests using tabEnabled must now use tabFocusEnabled
Doc Notes: needs documentation
Bugs: SDK-22731
Reviewer: Gordon
API Change: Yes
Is noteworthy for integration: Yes
tests: checkintests cyclone

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.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/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/IFocusManagerComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/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/events/FlexEvent.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/managers/FocusManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Image.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.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/SWFLoader.as</path>

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

--- frameworks/projects/mx/src/mx/containers/accordionClasses/AccordionHeader.as
+++ frameworks/projects/mx/src/mx/containers/accordionClasses/AccordionHeader.as
@@ -85,6 +85,7 @@
 		toggleChanged = false;
 		mouseFocusEnabled = false;
 		tabEnabled = false;
+		tabFocusEnabled = false;
 	}

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


FragmentLoader : report LOADING_COMPLETED on VOD playlist when requested PTS is above max PTS

when level switch-down occurs after the loading of last fragment,
playback complete was not fired appropriately, leading to flashls staying stuck on buffering state at the end of the playback.

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

--- src/org/mangui/hls/loader/FragmentLoader.as
+++ src/org/mangui/hls/loader/FragmentLoader.as
@@ -8,7 +8,7 @@
     import flash.utils.ByteArray;
     import flash.utils.Timer;
     import flash.utils.getTimer;
-
+
     import org.mangui.hls.HLS;
     import org.mangui.hls.HLSSettings;
     import org.mangui.hls.constant.HLSLoaderTypes;
@@ -234,6 +234,7 @@
                         _switchLevel = true;

                         // check if we received playlist for choosen level. if live playlist, ensure that new playlist has been refreshed
+                        // to avoid loading outdated fragments
                         if ((_levels[level].fragments.length == 0) || (_hls.type == HLSTypes.LIVE && _levelLastLoaded != level)) {
                             // playlist not yet received
                             CONFIG::LOGGING {
@@ -811,11 +812,17 @@
                     last_seqnum--;
                     if (last_seqnum == Number.POSITIVE_INFINITY) {
                         /* requested PTS above max PTS of this level:
-                         * this case could happen when switching level at the edge of live playlist,
+                         * this case could happen when loading is completed
+                         * or when switching level at the edge of live playlist,
                          * in case playlist of new level is outdated
-                         * return 1 to retry loading later.
                          */
-                        return LOADING_WAITING_LEVEL_UPDATE;
+                        if (_hls.type == HLSTypes.VOD) {
+                            // if VOD playlist, loading is completed
+                            return LOADING_COMPLETED;
+                        } else {
+                            // if live playlist, loading is pending on manifest update
+                            return LOADING_WAITING_LEVEL_UPDATE;
+                        }
                     } else if (last_seqnum < -1) {
                         // if we are here, it means that we have no PTS info for this continuity index, we need to do some PTS probing to find the right seqnum
                         /* we need to perform PTS analysis on fragments from same continuity range


Add a merge function to the geometry class

--- src/aerys/minko/render/geometry/Geometry.as
+++ src/aerys/minko/render/geometry/Geometry.as
@@ -694,5 +694,25 @@
 			return geometries;
 		}

+		public function merge(geometry : Geometry, usage : uint = StreamUsage.STATIC) : Geometry
+		{
+			_vertexStreams = new <IVertexStream>[VertexStream.concat(
+				new <IVertexStream>[
+						geometry.getVertexStream(),
+						this.getVertexStream()
+				],
+				usage
+			)];
+			_indexStream = geometry.indexStream.clone().concat(
+					this.indexStream,
+					0,
+					0,
+					geometry.getVertexStream().length
+				);
+
+			updateBoundingVolumes();
+
+			return this;
+		}
 	}
 }


I'm not sure what to do with this class. It would be useful for ezgames,
but the functionality is handled automatically in whirled.
Let's avoid confusion by leaving this out of the asdocs..

git-svn-id: a3e1eb16dde062992de22c830ed8045c8013209a@555 c613c5cb-e716-0410-b11b-feb51c14d237

--- src/as/com/threerings/ezgame/PlayersDisplay.as
+++ src/as/com/threerings/ezgame/PlayersDisplay.as
@@ -38,6 +38,8 @@
  *
  * You may use this, with any modifications you desire, in your game. Feel free to copy/modify or
  * extend this class.
+ *
+ * @private
  */
 public class PlayersDisplay extends Sprite
 {


fix DataBindings.getProperty() to throw an error when attempting to read a property that does not exist

--- src/aerys/minko/type/binding/DataBindings.as
+++ src/aerys/minko/type/binding/DataBindings.as
@@ -182,6 +182,9 @@

 		public function getProperty(bindingName : String) : *
 		{
+			if (_bindingNames.indexOf(bindingName) < 0)
+				throw new Error('The property \'' + bindingName + '\' does not exist.');
+
 			return _bindingNameToValue[bindingName];
 		}


Added automatic texture reloading with TextureLoader.loadClass and TextureLoader.load on context loss

--- src/aerys/minko/type/loader/TextureLoader.as
+++ src/aerys/minko/type/loader/TextureLoader.as
@@ -12,6 +12,7 @@
 	import flash.net.URLLoaderDataFormat;
 	import flash.net.URLRequest;
 	import flash.utils.ByteArray;
+	import flash.utils.Dictionary;
 	import flash.utils.getQualifiedClassName;

 	import aerys.minko.render.resource.texture.TextureResource;
@@ -29,6 +30,9 @@

 		protected var _textureResource	: TextureResource;

+		private static var _textureResourceToClass		: Dictionary = new Dictionary();
+		private static var _textureResourceToRequest	: Dictionary = new Dictionary();
+
 		public function get progress() : Signal
 		{
 			return _progress;
@@ -186,34 +190,58 @@
 			}
 		}

-		public static function loadClass(classObject 		: Class,
-										 enableMipMapping 	: Boolean = true) : TextureResource
-		{
-			var textureLoader : TextureLoader = new TextureLoader(enableMipMapping);
+		public static function loadClass(classObject 			: Class,
+										 enableMipMapping 		: Boolean = true,
+										 textureResource		: TextureResource = null) : TextureResource
+		{
+			var textureLoader : TextureLoader = new TextureLoader(enableMipMapping, textureResource);

 			textureLoader.loadClass(classObject);

+			if (!textureLoader.textureResource.contextLost.hasCallback(classTexturecontextLostHandler))
+			{
+				_textureResourceToClass[textureLoader.textureResource] = classObject;
+				textureLoader.textureResource.contextLost.add(classTexturecontextLostHandler);
+			}
+
 			return textureLoader.textureResource;
 		}

 		public static function load(request				: URLRequest,
-									enableMipMapping 	: Boolean = true) : TextureResource
-		{
-			var textureLoader : TextureLoader = new TextureLoader(enableMipMapping);
+									enableMipMapping 	: Boolean = true,
+									textureResource		: TextureResource = null) : TextureResource
+		{
+			var textureLoader : TextureLoader = new TextureLoader(enableMipMapping, textureResource);

 			textureLoader.load(request);

+			if (!textureLoader.textureResource.contextLost.hasCallback(urlRequestTexturecontextLostHandler))
+			{
+				_textureResourceToRequest[textureLoader.textureResource] = request;
+				textureLoader.textureResource.contextLost.add(urlRequestTexturecontextLostHandler)
+			}
+
 			return textureLoader.textureResource;
 		}

 		public static function loadBytes(bytes				: ByteArray,
-										 enableMipMapping 	: Boolean = true) : TextureResource
-		{
-			var textureLoader : TextureLoader = new TextureLoader(enableMipMapping);
+										 enableMipMapping 	: Boolean = true,
+										 textureResource	: TextureResource = null) : TextureResource
+		{
+			var textureLoader : TextureLoader = new TextureLoader(enableMipMapping, textureResource);

 			textureLoader.loadBytes(bytes);

 			return textureLoader.textureResource;
+		}
+
+		private static function classTexturecontextLostHandler(textureResource : TextureResource) : void
+		{
+			TextureLoader.loadClass(_textureResourceToClass[textureResource], textureResource.mipMapping, textureResource);
+		}
+		private static function urlRequestTexturecontextLostHandler(textureResource : TextureResource) : void
+		{
+			TextureLoader.load(_textureResourceToRequest[textureResource], textureResource.mipMapping, textureResource);
 		}
 	}
 }


A reasonable alpha-level video displayer.
When you mouse-over it, the controls appear, which are currently only
a pause/play button. When it reaches the end, it autorewinds and pauses.
Things:
- We may want all videos to start paused. However, since we're not using
 a streaming media server, there's no way to show the first frame without
 loading the video unless we screenshot it on the server and then include
 a secondary media ident, which we don't do. So: as long as the user has
 to load the FLV, we may as well play it and not make it just look like
 an image.
- We'll probably want to adapt this into a standalone video displayer that
 can be used to view FLVs using our UI from inside a web page.

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

--- src/as/com/threerings/util/VideoDisplayer.as
+++ src/as/com/threerings/util/VideoDisplayer.as
@@ -21,21 +21,33 @@
 {
     /** A value event dispatched when the size of the video is known.
      * Value: [ width, height ]. */
-    public static const SIZE_KNOWN :String = "SIZE_KNOWN";
+    public static const SIZE_KNOWN :String = "videoDisplayerSizeKnown";

     /** A value event sent when there's an error loading the video.
      * Value: original error event. */
-    public static const VIDEO_ERROR :String = "VIDEO_ERROR";
-
+    public static const VIDEO_ERROR :String = "videoDisplayerError";
+
+    /**
+     * Create a video displayer.
+     */
     public function VideoDisplayer ()
     {
         _vid = new Video();
         addChild(_vid);

-        addEventListener(MouseEvent.CLICK, handleClick);
+        addEventListener(MouseEvent.ROLL_OVER, handleRollOver);
+        addEventListener(MouseEvent.ROLL_OUT, handleRollOut);
+
         _videoChecker.addEventListener(TimerEvent.TIMER, handleVideoCheck);
-    }
-
+
+        _pauser = new Sprite();
+        _pauser.addEventListener(MouseEvent.CLICK, handleClick);
+        redrawPauser();
+    }
+
+    /**
+     * Start playing a video!
+     */
     public function setup (url :String) :void
     {
         _netCon = new NetConnection();
@@ -47,15 +59,22 @@
         _netCon.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError);

         _netCon.connect(null);
-        trace("Not waiting, just using!");
         _netStream = new NetStream(_netCon);
-        _netStream.client = this;
-        //_netStream.client = new Callbacker(this);
+        // pass in refs to some of our protected methods
+        _netStream.client = {
+            onMetaData: metaDataReceived
+        };
+        _netStream.addEventListener(NetStatusEvent.NET_STATUS, handleStreamNetStatus);
+
         _vid.attachNetStream(_netStream);
         _videoChecker.start();
         _netStream.play(url);
-    }
-
+        _paused = false;
+    }
+
+    /**
+     * Stop playing our video.
+     */
     public function shutdown () :void
     {
         _videoChecker.reset();
@@ -63,6 +82,7 @@

         if (_netStream != null) {
             _netStream.close();
+            _netStream.removeEventListener(NetStatusEvent.NET_STATUS, handleStreamNetStatus);
             _netStream = null;
         }
         if (_netCon != null) {
@@ -90,15 +110,71 @@
         // set up the width/height
         _vid.width = _vid.videoWidth;
         _vid.height = _vid.videoHeight;
+        redrawPauser();

         // tell any interested parties
         dispatchEvent(new ValueEvent(SIZE_KNOWN, [ _vid.videoWidth, _vid.videoHeight ]));
     }

+    protected function handleRollOver (event :MouseEvent) :void
+    {
+        addChild(_pauser);
+    }
+
+    protected function handleRollOut (event :MouseEvent) :void
+    {
+        removeChild(_pauser);
+    }
+
     protected function handleClick (event :MouseEvent) :void
     {
-        trace("Click!");
-        _netStream.togglePause();
+        if (_paused) {
+            _netStream.resume();
+            _paused = false;
+
+        } else {
+            _netStream.pause();
+            _paused = true;
+        }
+        redrawPauser();
+    }
+
+    /**
+     * Draw the pauser sprite, update it's location.
+     * This will become something artistic, etc.
+     */
+    protected function redrawPauser () :void
+    {
+        with (_pauser.graphics) {
+            clear();
+            // draw a nice circle
+            beginFill(0x333333);
+            drawCircle(0, 0, 20);
+            endFill();
+            lineStyle(2, 0);
+            drawCircle(0, 0, 20);
+
+            if (_paused) {
+                lineStyle(0, 0, 0);
+                beginFill(0x00FF00);
+                moveTo(-4, -10);
+                lineTo(4, 0);
+                lineTo(-4, 10);
+                lineTo(-4, -10);
+                endFill();
+
+            } else {
+                lineStyle(2, 0x00FF00);
+                moveTo(-4, -10);
+                lineTo(-4, 10);
+                moveTo(4, -10);
+                lineTo(4, 10);
+            }
+        }
+
+        // and update the location
+        _pauser.x = _vid.width/2;
+        _pauser.y = _vid.height/2;
     }

     protected function handleNetStatus (event :NetStatusEvent) :void
@@ -112,7 +188,8 @@
         // else info.level == "status"
         switch (info.code) {
         case "NetConnection.Connect.Success":
-            trace("Connected!");
+        case "NetConnection.Connect.Closed":
+            // these status events we ignore
             break;

         default:
@@ -121,6 +198,16 @@
         }
     }

+    protected function handleStreamNetStatus (event :NetStatusEvent) :void
+    {
+        if (event.info.code == "NetStream.Play.Stop") {
+            _netStream.seek(0);
+            _netStream.pause();
+            _paused = true;
+            redrawPauser();
+        }
+    }
+
     protected function handleAsyncError (event :AsyncErrorEvent) :void
     {
         trace("AsyncError: " + event);
@@ -139,30 +226,34 @@
         redispatchError(event);
     }

+    /**
+     * Redispatch some error we received to our listeners.
+     */
     protected function redispatchError (event :Event) :void
     {
         dispatchEvent(new ValueEvent(VIDEO_ERROR, event));
     }

-    public function callbackCalled (name :String, args :Array) :*
-    {
-        trace("Callback: " + name + ", args: " + args);
-        return undefined;
-    }
-
-    public function onMetaData (obj :Object) :void
-    {
-        trace("Got metadata..");
+    /**
+     * Called when metadata (if any) is found in the video stream.
+     */
+    protected function metaDataReceived (obj :Object) :void
+    {
+        trace("Got video metadata:");
         for (var n :String in obj) {
-            trace("name " + n + " -> " + obj[n]);
-        }
-    }
-
+            trace("    " + n + ": " + obj[n]);
+        }
+    }
+
     protected var _vid :Video;

+    protected var _paused :Boolean = false;
+
     protected var _netCon :NetConnection;

     protected var _netStream :NetStream;
+
+    protected var _pauser :Sprite;

     /** Checks the video every 100ms to see if the dimensions are now know.
      * Yes, this is how to do it. We could trigger on ENTER_FRAME, but then
@@ -171,55 +262,3 @@
     protected var _videoChecker :Timer = new Timer(100);
 }
 }
-
-import flash.utils.Proxy;
-
-import flash.utils.flash_proxy;
-
-import com.threerings.util.VideoDisplayer;
-
-use namespace flash_proxy;
-
-/**
- */
-internal class Callbacker extends Proxy
-{
-    public function Callbacker (displayer :VideoDisplayer)
-    {
-        _displayer = displayer;
-
-        _props
-    }
-
-    override flash_proxy function hasProperty (name :*) :Boolean
-    {
-        return (_props[name] !== undefined);
-    }
-
-    override flash_proxy function getProperty (name :*) :*
-    {
-        trace("Damn thing asked about '" + name + "'.");
-        return _props[name];
-    }
-
-    override flash_proxy function setProperty (name :*, value :*) :void
-    {
-        trace("Damn thing tried to set '" + name + "' to '" + value + "'.");
-        _props[name] = value;
-    }
-
-    override flash_proxy function deleteProperty (name :*) :Boolean
-    {
-        trace("Damn thing tried to delete '" + name + "'.");
-        return (delete _props[name]);
-    }
-
-    override flash_proxy function callProperty (name :*, ... args) :*
-    {
-        return _displayer.callbackCalled(name, args);
-    }
-
-    protected var _props :Object = {};
-
-    protected var _displayer :VideoDisplayer;
-}


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

--- frameworks/projects/advancedgrids/src/mx/olap/IOLAPAttributeLevel.as
+++ frameworks/projects/advancedgrids/src/mx/olap/IOLAPAttributeLevel.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 18432
Author:   dloverin@adobe.com
Date:     2010-11-03T20:02:02.380580Z

Log Message:
-----------
Initial check-in for RSL Sharing Among Modules Feature

QE notes: testable but not PARB'd
Doc notes: None.
Bugs: SDK-27917
Reviewer: Alex
Tests run: cylone server, checkintests
Is noteworthy for integration: No.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/CrossDomainRSLItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/compiler/config/ConfigurationException_en.properties</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ApplicationDomainTarget.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/configuration_en.properties</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/compiler/config/ConfigurationException.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/IFlexModuleFactory.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/modules/compiler/src/java/flex2/compiler/common/RuntimeSharedLibrarySettingsConfiguration.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/RSLData.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/FlexModuleFactory.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/LoaderUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/RSLEvent.as</path>

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

--- frameworks/projects/framework/src/mx/core/ApplicationDomainTarget.as
+++ frameworks/projects/framework/src/mx/core/ApplicationDomainTarget.as
@@ -0,0 +1,86 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2010 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.core
+{
+
+[ExcludeClass]
+
+/**
+ *  Values for the supported kinds of application domain targets. Each
+ *  target specifies a relative application domain that is resolved at
+ *  runtime.
+ *
+ *  @see mx.core.RSLData
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 4.5
+ */
+public final class ApplicationDomainTarget
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  The default behavior for RSL loading is to load an RSL as high in
+     *  the parent module factory chain as possible. In order to load an RSL
+     *  into a parent module factory, that module factory must have been
+     *  compiled with that RSL specified in the compiler options. If no parent module
+     *  factories were compiled with that RSL , then the RSL will be loaded in
+     *  the application domain of the module factory loading the RSL.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 4.5
+     */
+    public static const DEFAULT:String = "default";
+
+    /**
+     *  The application domain of the current module factory.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 4.5
+     */
+    public static const CURRENT:String = "current";
+
+    /**
+     *  The application domain of the parent module factory.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 4.5
+     */
+    public static const PARENT:String = "parent";
+
+    /**
+     *  The application domain of the top-level module factory.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 4.5
+     */
+    public static const TOP_LEVEL:String = "top-level";
+
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 17101
Author:   rfrishbe@adobe.com
Date:     2010-07-28T18:31:06.934256Z

Log Message:
-----------
Cleaning up lots of code, fixing some bugs, tweaking the API for List/Scroller, and tweaking the kinetics for Scroller.

Major API changes are:

1) Got rid of scrollAxis on IViewport.  We now just use horizontalScrollPolicy/verticalScrollPolicy.
2) No more overlay for horizontalScrollPolicy/verticalScrollPolicy.  Instead, we just key off of inputMode="touch" to determine this
3) spark.events.TouchScrollEvent moved to mx.events.TouchScrollEvent
4) Added new API to help with testing: mx.utils.GetTimerUtil.mx_internal::getTimerFunction

We now use the distance scrolled as well as the velocity of that scroll to determine how far to throw the list

QE notes: Added new API for testing purposes
Doc notes: None
Bugs: SDK-27031, SDK-27021
Reviewer: None - will review with mobile list stuff later (very soon in fact)
Tests run: checkintests, mustella Scroller, List, and ListDND
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/GetTimerUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TouchScrollingEasing.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/events/TouchScrollEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/IViewport.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/ScrollPolicy.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/events/TouchScrollEvent.as" copyfrom-rev="17005" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/TouchScrollEvent.as</path>

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

--- frameworks/projects/framework/src/mx/events/TouchInteractionEvent.as
+++ frameworks/projects/framework/src/mx/events/TouchInteractionEvent.as
@@ -1,29 +1,289 @@
-package spark.events
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2010 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.events
 {
 import flash.display.DisplayObject;
 import flash.events.Event;
 import flash.geom.Point;

+/**
+ *  Represents event objects that are involved with touch scrolling.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
 public class TouchScrollEvent extends Event
 {

+    /**
+     *  The TouchScrollEvent.TOUCH_SCROLL_STARTING constant defines the value of the
+     *  type property of the event object for a touchScrollStarting event.
+     *
+     *
The properties of the event object have the following values:

+     *

+     *
Property	Value

+     *
bubbles	true

+     *
cancelable	true

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
scrollingObject	The object that owns this particular
+     *       scroll gesture

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *

+     *
+     *  @eventType touchScrollStarting
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public static const TOUCH_SCROLL_STARTING:String = "touchScrollStarting";
+
+    /**
+     *  The TouchScrollEvent.TOUCH_SCROLL_START constant defines the value of the
+     *  type property of the event object for a touchScrollStart event.
+     *
+     *
The properties of the event object have the following values:

+     *

+     *
Property	Value

+     *
bubbles	true

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
scrollingObject	The object that owns this particular
+     *       scroll gesture

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *

+     *
+     *  @eventType touchScrollStart
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public static const TOUCH_SCROLL_START:String = "touchScrollStart";
+
+    /**
+     *  The TouchScrollEvent.TOUCH_SCROLL_DRAG constant defines the value of the
+     *  type property of the event object for a touchScrollDrag event.
+     *
+     *
The properties of the event object have the following values:

+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
dragX	The number of pixels dragged in the x-axis since the
+     *       gesture has started

+     *
dragY	The number of pixels dragged in the y-axis since the
+     *       gesture has started

+     *
scrollingObject	The object that owns this particular
+     *       scroll gesture

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *

+     *
+     *  @eventType touchScrollDrag
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public static const TOUCH_SCROLL_DRAG:String = "touchScrollDrag";
+
+    /**
+     *  The TouchScrollEvent.TOUCH_SCROLL_THROW constant defines the value of the
+     *  type property of the event object for a touchScrollThrow event.
+     *
+     *
The properties of the event object have the following values:

+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
scrollingObject	The object that owns this particular
+     *       scroll gesture

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *
velocityX	The velocity (pixels/msec) the user threw the list
+     *       in the x-axis

+     *
velocityY	The velocity (pixels/msec) the user threw the list
+     *       in the y-axis

+     *

+     *
+     *  @eventType touchScrollThrow
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public static const TOUCH_SCROLL_THROW:String = "touchScrollThrow";
+
+    // FIXME (rfrishbe): Make this public and document it or make it internal
     public static const TOUCH_SCROLL_THROW_ANIMATION_END:String = "touchScrollThrowAnimationEnd";
+
+    /**
+     *  The TouchScrollEvent.TOUCH_SCROLL_END constant defines the value of the
+     *  type property of the event object for a touchScrollEnd event.
+     *
+     *
The properties of the event object have the following values:

+     *

+     *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
scrollingObject	The object that owns this particular
+     *       scroll gesture

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+     *

+     *
+     *  @eventType touchScrollStart
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public static const TOUCH_SCROLL_END:String = "touchScrollEnd";

+
+    /**
+     *  Constructor.
+     *
+     *  @param type The event type; indicates the action that caused the event.
+     *
+     *  @param bubbles Specifies whether the event can bubble
+     *  up the display list hierarchy.
+     *
+     *  @param cancelable Specifies whether the behavior
+     *  associated with the event can be prevented.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public function TouchScrollEvent(type:String, bubbles:Boolean = false,
-                              cancelable:Boolean = false)
+                                     cancelable:Boolean = false)
     {
         super(type, bubbles, cancelable);
     }

+    //----------------------------------
+    //  dragX
+    //----------------------------------
+
+    /**
+     *  The number of pixels dragged in the x-axis since the
+     *  gesture has started
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public var dragX:Number;
+
+    //----------------------------------
+    //  dragY
+    //----------------------------------
+
+    /**
+     *  The number of pixels dragged in the y-axis since the
+     *  gesture has started
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public var dragY:Number;
-    public var throwVelocity:Point;
+
+    //----------------------------------
+    //  scrollingObject
+    //----------------------------------
+
+    /**
+     *  The object that owns this particular
+     *  scroll gesture
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
     public var scrollingObject:DisplayObject;
+
+    //----------------------------------
+    //  velocityX
+    //----------------------------------
+
+    /**
+     *  The velocity (pixels/msec) the user threw the list
+     *  in the x-axis
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public var velocityX:Number;
+
+    //----------------------------------
+    //  velocityY
+    //----------------------------------
+
+    /**
+     *  The velocity (pixels/msec) the user threw the list
+     *  in the y-axis
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public var velocityY:Number;

     /**
      *  @private
@@ -34,7 +294,8 @@

         clonedEvent.dragX = dragX;
         clonedEvent.dragY = dragY;
-        clonedEvent.throwVelocity = throwVelocity;
+        clonedEvent.velocityX = velocityX;
+        clonedEvent.velocityY = velocityY;
         clonedEvent.scrollingObject = scrollingObject;

         return clonedEvent;


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

--- frameworks/projects/mx/src/mx/containers/utilityClasses/BoxLayout.as
+++ frameworks/projects/mx/src/mx/containers/utilityClasses/BoxLayout.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.containers.utilityClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 11951
Author:   hhillen@paciellogroup.com
Date:     2009-11-18T20:35:52.215971Z

Log Message:
-----------
Accessibility implementation support for the spark ToggleButton, DropDownListBase and ComboBox components.
QE notes: none
Doc notes: none
Bugs: n/a
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ToggleButtonAccImpl.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/DropDownList.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/DropDownListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ToggleButtonBase.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/DropDownListAccImpl.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ComboBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonAccImpl.as</path>

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

--- frameworks/projects/spark/src/spark/accessibility/ComboBoxAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/ComboBoxAccImpl.as
@@ -0,0 +1,251 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.accessibility
+{
+    import flash.accessibility.Accessibility;
+    import flash.events.Event;
+    import flash.events.FocusEvent;
+
+    import mx.core.UIComponent;
+    import mx.core.mx_internal;
+
+    import spark.components.ComboBox;
+    import spark.events.IndexChangeEvent;
+
+    use namespace mx_internal;
+
+    /**
+     *  ComboBoxAccImpl is a subclass of AccessibilityImplementation
+     *  which implements accessibility for the ComboBox class.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public class ComboBoxAccImpl extends DropDownListBaseAccImpl
+    {
+        include "../core/Version.as";
+
+        //--------------------------------------------------------------------------
+        //
+        //  Class constants
+        //
+        //--------------------------------------------------------------------------
+        /**
+         *  @private
+         */
+        private static const EVENT_OBJECT_FOCUS:uint = 0x8005;
+
+        /**
+         *  @private
+         */
+        private static const EVENT_OBJECT_VALUECHANGE:uint = 0x800e;
+
+        /**
+         *  @private
+         */
+        private static const EVENT_SYSTEM_STATECHANGE:uint = 0x800a;
+
+        /**
+         *  @private
+         */
+        private static const ROLE_SYSTEM_TEXT:uint = 0x2a;
+
+        //--------------------------------------------------------------------------
+        //
+        //  Class methods
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  Enables accessibility in the ComboBox class.
+         *
+         *
This method is called by application startup code
+         *  that is autogenerated by the MXML compiler.
+         *  Afterwards, when instances of ComboBox are initialized,
+         *  their accessibilityImplementation property
+         *  will be set to an instance of this class.

+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 4
+         */
+        public static function enableAccessibility():void
+        {
+            ComboBox.createAccessibilityImplementation =
+                createAccessibilityImplementation;
+        }
+
+        /**
+         *  @private
+         *  Creates a ComboBox's AccessibilityImplementation object.
+         *  This method is called from UIComponent's
+         *  initializeAccessibility() method.
+         */
+        mx_internal static function createAccessibilityImplementation(
+            component:UIComponent):void
+        {
+            component.accessibilityImplementation =
+                new ComboBoxAccImpl(component);
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Constructor
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  Constructor.
+         *
+         *  @param master The UIComponent instance that this AccImpl instance
+         *  is making accessible.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 4
+         */
+        public function ComboBoxAccImpl(master:UIComponent)
+        {
+            super(master);
+
+            ComboBox(master).textInput.addEventListener(Event.CHANGE,
+                textInputChangeHandler);
+        }
+
+        /**
+         *  @private
+         */
+        private function textInputChangeHandler(event:Event):void
+        {
+            Accessibility.sendEvent(master, 0, EVENT_OBJECT_VALUECHANGE);
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Overridden properties: AccImpl
+        //
+        //--------------------------------------------------------------------------
+
+        //----------------------------------
+        //  eventsToHandle
+        //----------------------------------
+
+        /**
+         *  @private
+         *  Array of events that we should listen for from the master component.
+         */
+        override protected function get eventsToHandle():Array
+        {
+            return super.eventsToHandle.concat([FocusEvent.FOCUS_IN]);
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Overridden methods: AccessibilityImplementation
+        //
+        //--------------------------------------------------------------------------
+        /**
+
+        /**
+         *  @private
+         *  IAccessible method for returning the value of the ComboBox
+         *  (which would be the text of the item selected
+         *  or the text entered in textInput).
+         *  @param childID uint
+         *
+         *  @return Value String
+         */
+        override public function get_accValue(childID:uint):String
+        {
+            var comboBox:ComboBox = ComboBox(master);
+            if (childID == 0)
+                return comboBox.selectedIndex == -1 ?
+                    comboBox.textInput.text :comboBox.selectedItem;
+            return null;
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Overridden methods: AccImpl
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  @private
+         *  Method for returning the name of the ListItem/ComboBox
+         *  which is spoken out by the screen reader.
+         *
+         *  @param childID uint
+         *
+         *  @return Name String
+         */
+        override protected function getName(childID:uint):String
+        {
+            if (childID == 0)
+                return "";
+            var comboBox:ComboBox = ComboBox(master);
+            if (childID < 0 || childID > comboBox.dataProvider.length)
+                return "";
+            else
+                return comboBox.dataProvider.getItemAt(childID - 1).toString();
+
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Overridden event handlers: AccImpl
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         *  @private
+         *  Override the generic event handler.
+         *  All AccImpl must implement this
+         *  to listen for events from its master component.
+         */
+        override protected function eventHandler(event:Event):void
+        {
+            switch (event.type)
+            {
+                case "IndexChangeEvent":
+                {
+                    var tweaked_event:Event = event.clone();
+                    IndexChangeEvent(tweaked_event).oldIndex += 1;
+                    IndexChangeEvent(tweaked_event).newIndex += 1;
+                    super.eventHandler(tweaked_event);
+                    break;
+                }
+                case "open":
+                {
+                    Accessibility.sendEvent(master, 0, EVENT_SYSTEM_STATECHANGE);
+                    break;
+                }
+                case "focusIn":
+                {
+                    Accessibility.sendEvent(master, 0, EVENT_OBJECT_FOCUS);
+                    break;
+                }
+                default:
+                {
+                    super.eventHandler(event);
+                }
+            }
+        }
+
+
+    }
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 6609
Author:   gruehle@adobe.com
Date:     2009-05-04T22:47:31.285324Z

Log Message:
-----------
Add theme attribute to theme-specific style metadata.

Example of a halo-specific style:
[Style(name="cornerRadius", type="Number", format="Length", inherit="no", theme="halo")]

Example of a spark-specific style:
[Style(name="baseColor", type="uint", format="Color", inherit="yes", theme="spark")]

Style metadata without a theme attribute is theme-agnostic, and works with either spark or halo.

Bugs: SDK-20606

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ProgressBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/FillStyles.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/flex4/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/NumericStepper.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/flex4/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SkinStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/BorderStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.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/styles/metadata/BarColorStyle.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/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/IconColorStyles.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/scrollClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/metadata/SelectedFillColorsStyle.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ScrollControlBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableContainer.as
@@ -85,7 +85,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="alternatingItemColors", type="Array", arrayType="uint", format="Color", inherit="yes")]
+[Style(name="alternatingItemColors", type="Array", arrayType="uint", format="Color", inherit="yes", theme="spark")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#contentBackgroundColor
@@ -95,7 +95,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes")]
+[Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#focusColor
@@ -105,7 +105,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="focusColor", type="uint", format="Color", inherit="yes")]
+[Style(name="focusColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
  * @copy spark.components.supportClasses.GroupBase#rollOverColor
@@ -115,7 +115,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="rollOverColor", type="uint", format="Color", inherit="yes")]
+[Style(name="rollOverColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#symbolColor
@@ -125,7 +125,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="symbolColor", type="uint", format="Color", inherit="yes")]
+[Style(name="symbolColor", type="uint", format="Color", inherit="yes", theme="spark")]

 [IconFile("SkinnableContainer.png")]


Transferred from the Adobe Open Source Subversion Repository

Revision: 4958
Author:   rfrishbe@adobe.com
Date:     2009-02-13T23:07:46.243121Z

Log Message:
-----------
Change the initialization sequence of FxComponent and Group.  Basically now children (including the skin) should get created at createChildren() time and follow the correct lifecycle pattern.  Unfortunately, this change got mingled in with all my PARB changes, so I'm submitting a bunch of PARB changes for Group, DataGroup, FxContainer, and FxDataContainer, outlined below:

1.     New event classes/names for Group/FxContainer and DataGroup ("elementAdd" and "elementRemove" event of type ElementExistenceEvent for Group/FxContainer and "rendererAdd" and "rendererRemove" event of type RendererExistenceEvent for DataGroup). It was just one event class of ItemExistenceChangedEvent before.
2.     LayoutBase.clipContent->clipAndEnableScrolling (same with IViewport.clipContent and GroupBase.clipContent)
3.     GroupBase.getLayoutELementAt()->getElementAt()
4.     GroupBase.numLayoutElements -> numElements.
5.     LayoutBase.virtualLayout -> useVirtualLayout
6.     ScrollUnit constants are now changed to be uints instead of typed as ScrollUnit.  This means the signature for getHorizontalScrollPositionDelta(unit:ScrollUnit):Number has changed to getHorizontalScrollPositionDelta(scrollUnit:uint):Number (and ditto for getVerticalScrollPositionDelta())
7.  DataGroup.getRendererForItemAt() -> getElementAt()
8.  DataGroup.getItemIndexForRenderer() -> getElementIndex()

Other changes:
 - Change IVisualElement interface so that it's smaller now.  It also extends ILayoutElement now.  The properties removed from IVisualElement are: rotation, rotationX, rotationY, rotationZ, transformX, transformY, offsets, x, y, z, scaleX, scaleY, scaleZ, explicitWidth, explicitMinWidth, explicitMaxWidth, explicitHeight, explicitMinHeight, explicitMaxHeight)
-  Fix in DataGroup so we don’t remove/add elements if we’re gonna do it later anyways.  I also need to do some other work in here around cleaning up of renderers.
- AddItems fix around handling IVisualElementContainers more effeciently
- get mxmlContent now returns a copy of the Array rather than the one we're using internally
- Had to update mustella since there was special case logic for dealing with getLayoutElementAt().  I added this logic for getElementAt(), which replaces that method.

QE Notes: Thanks for changing all the tests and working on the cyclone
Doc Notes: Made some ASDoc changes to some core classes to move the comments into the interfaces.  I did update the comments a bit as well.
Bugs: SDK-18115, SDK-19004
Reviewer: Jason, Glenn, Hans for initialization sequence change and Hans for all PARB changes
tests: checkintests, all mustella tests

Modified Paths:
--------------
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ItemExistenceChangedEvent.as" copyfrom-rev="4812" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ElementExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/layouts/WheelLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/IViewport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/RendererExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ItemExistenceChangedEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/ScrollUnit.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/states/AddItems.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/mustella/mustella.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxContainer.as</path>

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

--- frameworks/projects/spark/src/spark/events/RendererExistenceEvent.as
+++ frameworks/projects/spark/src/spark/events/RendererExistenceEvent.as
@@ -0,0 +1,176 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.events
+{
+
+import flash.events.Event;
+
+import mx.core.IVisualElement;
+
+/**
+ *  Represents events that are dispatched when a renderer of a DataGroup
+ *  is added or removed.
+ */
+public class RendererExistenceEvent extends Event
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  The RendererExistenceEvent.Renderer_ADD constant
+	 *  defines the value of the type property of the event
+	 *  object for an rendererAdd event.
+	 *
+     *
The properties of the event object have the following values:

+	 *

+	 *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
data	The data object that the renderer
+     *       is visualizing.

+     *
index	The dataProvider index for the
+     *       renderer that was added.

+	 *
renderer	Contains a reference
+     *         to the renderer that was added

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+	 *

+	 *
+     *  @eventType rendererAdd
+	 */
+	public static const RENDERER_ADD:String = "rendererAdd";
+
+	/**
+	 *  The RendererExistenceEvent.RENDERER_REMOVE constant
+	 *  defines the value of the type property of the event
+	 *  object for an rendererRemove event.
+	 *
+     *
The properties of the event object have the following values:

+	 *

+	 *
Property	Value

+     *
bubbles	false

+     *
cancelable	false

+     *
currentTarget	The Object that defines the
+     *       event listener that handles the event. For example, if you use
+     *       myButton.addEventListener() to register an event listener,
+     *       myButton is the value of the currentTarget.

+     *
data	The data object that the renderer
+     *       was visualizing.

+     *
index	The dataProvider index for the
+     *       renderer that is being removed.

+	 *
renderer	Contains a reference
+     *        to the renderer that is about to be removed.

+     *
target	The Object that dispatched the event;
+     *       it is not always the Object listening for the event.
+     *       Use the currentTarget property to always access the
+     *       Object listening for the event.

+	 *

+	 *
+     *  @eventType rendererRemove
+	 */
+	public static const RENDERER_REMOVE:String = "rendererRemove";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @param type The event type; indicates the action that caused the event.
+	 *
+	 *  @param bubbles Specifies whether the event can bubble up the display list hierarchy.
+	 *
+	 *  @param cancelable Specifies whether the behavior associated with the event can be prevented.
+	 *
+	 *  @param renderer Reference to the renderer that was added or removed.
+	 *
+	 *  @param index The index in the dataprovider where the renderer was added or removed
+     *
+     *  @param data The data object that the renderer is visualizing
+	 */
+	public function RendererExistenceEvent(
+								type:String, bubbles:Boolean = false,
+								cancelable:Boolean = false,
+								renderer:IVisualElement = null,
+								index:int = -1, data:Object = null)
+	{
+		super(type, bubbles, cancelable);
+
+		this.renderer = renderer;
+		this.index = index;
+		this.data = data;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Properties
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+    //  data
+    //----------------------------------
+
+    /**
+     *  The data object that the renderer is visualizing
+     */
+    public var data:Object;
+
+    //----------------------------------
+    //  index
+    //----------------------------------
+
+    /**
+     *  The index where the renderer was added or removed
+     */
+    public var index:int;
+
+	//----------------------------------
+	//  renderer
+	//----------------------------------
+
+	/**
+	 *  Reference to the render that was added or removed.
+	 */
+	public var renderer:IVisualElement;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: Event
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+    override public function clone():Event
+    {
+        return new RendererExistenceEvent(type, bubbles, cancelable,
+                                         renderer, index);
+    }
+}
+
+}


change from error to ignore.. i think i need to handle chunked footer

--- src/org/httpclient/io/HttpResponseBuffer.as
+++ src/org/httpclient/io/HttpResponseBuffer.as
@@ -68,7 +68,8 @@
      * @param bytes Data
      */
     public function writeBytes(bytes:ByteArray):void {
-      if (_isPayloadDone) throw new IllegalOperationError("Response is finished; can't accept more bytes");
+      //if (_isPayloadDone) throw new IllegalOperationError("Response is finished; can't accept more bytes");
+      if (_isPayloadDone) return; // TODO: Figure out why on some TLS chunked encoding this happens (oh maybe chunked encoding footer?)

       // If we don't have the full header yet
       if (!_responseHeader) {


avoid false detection of TS streams probe for AAC and MP3 ES first, then TS fix https://github.com/mangui/flashls/issues/29

--- src/org/mangui/hls/stream/FragmentLoader.as
+++ src/org/mangui/hls/stream/FragmentLoader.as
@@ -416,13 +416,7 @@
             CONFIG::LOGGING {
             Log.debug("probe fragment type");
             }
-            if (TSDemuxer.probe(data) == true) {
-                CONFIG::LOGGING {
-                Log.debug("MPEG2-TS found");
-                }
-                _video_tags_expected = true;
-                return new TSDemuxer(_fragParsingAudioSelectionHandler, _fragParsingProgressHandler, _fragParsingCompleteHandler, _switchlevel || _hasDiscontinuity);
-            } else if (AACDemuxer.probe(data) == true) {
+						if (AACDemuxer.probe(data) == true) {
                 CONFIG::LOGGING {
                 Log.debug("AAC ES found");
                 }
@@ -434,6 +428,12 @@
                 }
                 _video_tags_expected = false;
                 return new MP3Demuxer(_fragParsingAudioSelectionHandler, _fragParsingProgressHandler, _fragParsingCompleteHandler);
+            } else if (TSDemuxer.probe(data) == true) {
+                CONFIG::LOGGING {
+                Log.debug("MPEG2-TS found");
+                }
+                _video_tags_expected = true;
+                return new TSDemuxer(_fragParsingAudioSelectionHandler, _fragParsingProgressHandler, _fragParsingCompleteHandler, _switchlevel || _hasDiscontinuity);
             } else {
                 CONFIG::LOGGING {
                 Log.debug("probe fails");


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

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

 package mx.controls.videoClasses
 {


added sort changing listener... to implement

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/ListPresenter.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/ListPresenter.as
@@ -34,6 +34,7 @@
 	import org.openforis.collect.ui.view.ListView;

 	import spark.components.gridClasses.GridColumn;
+	import spark.events.GridSortEvent;
 	import spark.formatters.DateTimeFormatter;

@@ -57,6 +58,9 @@
 		 * It starts from 1
 		 */
 		private var currentPage:int;
+
+		private var currentOrderByFieldName:String;
+
 		/**
 		 * Max number of records that can be loaded for a single page.
 		 */
@@ -72,6 +76,8 @@
 			eventDispatcher.addEventListener(UIEvent.LOAD_RECORD_SUMMARIES, loadRecordSummariesHandler);

 			this._view.newRecordButton.addEventListener(MouseEvent.CLICK, newRecordButtonClickHandler);
+
+			this._view.dataGrid.addEventListener(GridSortEvent.SORT_CHANGING, dataGridSortChangingHandler);
 			//this._view.paginationBar.previousPageButton.addEventListener(MouseEvent.CLICK, previousPageClickHandler);
 			//this._view.paginationBar.nextPageButton.addEventListener(MouseEvent.CLICK, nextPageClickHandler);
 			//this._view.paginationBar.goToPageButton.addEventListener(MouseEvent.CLICK, goToPageClickHandler);
@@ -156,5 +162,8 @@
 			loadRecordSummariesCurrentPage();
 		}

+		protected function dataGridSortChangingHandler(event:GridSortEvent):void {
+			var newSortFields:Array = event.newSortFields;
+		}
 	}
 }


qnd: change duration to milliseconds

qnd: change duration to milliseconds

git-svn-id: 3f608e5a9a704dd448217c0a64c508e7f145cfa1@91935 6b8eccd3-e8c5-4e7d-8186-e12b5326b719

--- plugins/akamaiMediaAnalyticsPlugin/src/com/kaltura/kdpfl/plugin/akamaiMediaAnalyticsMediator.as
+++ plugins/akamaiMediaAnalyticsPlugin/src/com/kaltura/kdpfl/plugin/akamaiMediaAnalyticsMediator.as
@@ -55,7 +55,7 @@
 					{
 						var mediaEntry:KalturaMediaEntry = entry as KalturaMediaEntry;

-						AnalyticsPluginLoader.setData("contentLength", mediaEntry.duration);
+						AnalyticsPluginLoader.setData("contentLength", mediaEntry.msDuration);
 						var contentType:String;
 						switch (mediaEntry.mediaType)
 						{


Revert "Adjusted low water threshold to more realistic value."

--- HLSPlugin/src/com/kaltura/hls/m2ts/M2TSFileHandler.as
+++ HLSPlugin/src/com/kaltura/hls/m2ts/M2TSFileHandler.as
@@ -363,7 +363,7 @@
 				}

-				if(timestamp < flvLowWater - 750 && !alwaysPass)
+				if(timestamp < flvLowWater - 100 && !alwaysPass)
 				{
 					trace("SKIPPING TOO LOW FLV TS @ " + timestamp);
 					return;


SessionStateLog no longer modifies triggerDelay after undo/redo.

Change-Id: Ief77364ba17df1a390f354a74dfb48ae6dae3b73

--- WeaveCore/src/weave/core/SessionStateLog.as
+++ WeaveCore/src/weave/core/SessionStateLog.as
@@ -190,6 +190,8 @@
 				{
 					item = new LogEntry(_nextId++, backwardDiff, forwardDiff, _triggerDelay);
 					// overwrite first redo entry because grouped callbacks may have behaved differently
+					// keep previous triggerDelay
+					item.triggerDelay = (_redoHistory[0] as LogEntry).triggerDelay;
 					_redoHistory[0] = item;
 				}
 				else
@@ -198,6 +200,8 @@
 					if (_redoActive)
 					{
 						// overwrite last undo entry because grouped callbacks may have behaved differently
+						// keep previous triggerDelay
+						item.triggerDelay = (_undoHistory[_undoHistory.length - 1] as LogEntry).triggerDelay;
 						_undoHistory[_undoHistory.length - 1] = item;
 					}
 					else


Added debugging code

Added debugging code

Change-Id: I0aa24f3a5fcb304a72dd0ea06c1ad7f868af9930

--- WeaveData/src/weave/services/AMF3Servlet.as
+++ WeaveData/src/weave/services/AMF3Servlet.as
@@ -24,6 +24,7 @@
 	import mx.rpc.AsyncToken;

 	import weave.api.reportError;
+	import weave.compiler.Compiler;

 	/**
 	 * This is an extension of Servlet that deserializes AMF3 result objects and handles special cases where an ErrorMessage is returned.
@@ -31,7 +32,9 @@
 	 * @author adufilie
 	 */
 	public class AMF3Servlet extends Servlet
-	{
+	{
+		public static var debug:Boolean = false;
+
 		/**
 		 * @param servletURL The URL of the servlet (everything before the question mark in a URL request).
 		 * @param methodParamName This is the name of the URL parameter that specifies the method to be called on the servlet.
@@ -53,6 +56,9 @@
 		 */
 		override public function invokeAsyncMethod(methodName:String, methodParameters:Object = null):AsyncToken
 		{
+			if (debug)
+				trace('RPC', methodName, Compiler.stringify(methodParameters));
+
 			var pt:ProxyAsyncToken = new ProxyAsyncToken(super.invokeAsyncMethod, arguments, readCompressedObject);
 			pt.invoke();
 			return pt;


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

--- frameworks/projects/automation/src/mx/automation/delegates/containers/ViewStackAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/containers/ViewStackAutomationImpl.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Add documentation

Add documentation

--- actionscript/src/com/freshplanet/ane/AirMediaPlayer/AirMediaPlayer.as
+++ actionscript/src/com/freshplanet/ane/AirMediaPlayer/AirMediaPlayer.as
@@ -69,7 +69,8 @@

 		/**
-		*
+		* Load a music stream url
+        * @param url:String
 		*/
 		public function loadUrl(url:String):void
 		{
@@ -77,7 +78,9 @@
 		}

 		/**
-		*
+		* Start playing the stream.
+        * If the playback has been paused before, it will continue from this point.
+        * @param startTime:int the start time in milliseconds
 		*/
 		public function play(startTime:int=0):void
 		{
@@ -85,7 +88,7 @@
 		}

 		/**
-		*
+		* Pause the playback
 		*/
 		public function pause():void
 		{
@@ -93,7 +96,8 @@
 		}

 		/**
-		*
+		* Close the stream and release.
+        * Note that loadUrl() has to be called again before replaying if close has been called.
 		*/
 		public function close():void
 		{


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

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

 package mx.skins.halo
 {


Added support for AMF3Servlet methods returning tables of data.

--- WeaveData/src/weave/data/DataSources/CSVDataSource.as
+++ WeaveData/src/weave/data/DataSources/CSVDataSource.as
@@ -23,27 +23,30 @@
 	import flash.net.URLRequest;
 	import flash.utils.Dictionary;

+	import mx.rpc.AsyncToken;
 	import mx.rpc.events.FaultEvent;
 	import mx.rpc.events.ResultEvent;
 	import mx.utils.ObjectUtil;

 	import weave.api.WeaveAPI;
-	import weave.api.core.ICallbackCollection;
 	import weave.api.core.ILinkableHashMap;
 	import weave.api.data.ColumnMetadata;
 	import weave.api.data.DataTypes;
 	import weave.api.data.IAttributeColumn;
 	import weave.api.data.IColumnReference;
 	import weave.api.data.IQualifiedKey;
+	import weave.api.detectLinkableObjectChange;
+	import weave.api.disposeObjects;
 	import weave.api.getCallbackCollection;
 	import weave.api.getLinkableOwner;
+	import weave.api.getSessionState;
 	import weave.api.newDisposableChild;
 	import weave.api.newLinkableChild;
 	import weave.api.registerLinkableChild;
 	import weave.api.reportError;
-	import weave.core.ErrorManager;
 	import weave.core.LinkableString;
 	import weave.core.LinkableVariable;
+	import weave.core.UntypedLinkableVariable;
 	import weave.data.AttributeColumns.NumberColumn;
 	import weave.data.AttributeColumns.ProxyColumn;
 	import weave.data.AttributeColumns.ReferencedColumn;
@@ -51,9 +54,10 @@
 	import weave.data.CSVParser;
 	import weave.data.ColumnReferences.HierarchyColumnReference;
 	import weave.data.QKeyManager;
+	import weave.services.AMF3Servlet;
+	import weave.services.addAsyncResponder;
 	import weave.utils.ColumnUtils;
 	import weave.utils.HierarchyUtils;
-	import weave.utils.VectorUtils;

 	/**
 	 *
@@ -64,22 +68,6 @@
 	{
 		public function CSVDataSource()
 		{
-			url.addImmediateCallback(this, handleURLChange);
-		}
-
-		/**
-		 * Called when url session state changes
-		 */
-		private function handleURLChange():void
-		{
-			if (url.value == '')
-				url.value = null;
-			if (url.value != null)
-			{
-				// if url is specified, do not use csvDataString
-				csvData.setSessionState(null);
-				WeaveAPI.URLRequestUtils.getURL(this, new URLRequest(url.value), handleCSVDownload, handleCSVDownloadError, url.value, URLLoaderDataFormat.TEXT);
-			}
 		}

 		private const asyncParser:CSVParser = registerLinkableChild(this, new CSVParser(true), handleCSVParser);
@@ -244,10 +232,85 @@
 		}

 		/**
+		 * Session state of servletParams must be an object with two properties: 'method' and 'params'
+		 * If this is set, it assumes that url.value points to a Weave AMF3Servlet and the servlet method returns a table of data.
+		 */
+		public const servletParams:UntypedLinkableVariable = registerLinkableChild(this, new UntypedLinkableVariable(null, verifyServletParams));
+		public static const SERVLETPARAMS_PROPERTY_METHOD:String = 'method';
+		public static const SERVLETPARAMS_PROPERTY_PARAMS:String = 'params';
+		private var _servlet:AMF3Servlet = null;
+		private function verifyServletParams(value:Object):Boolean
+		{
+			return value != null
+				&& value.hasOwnProperty(SERVLETPARAMS_PROPERTY_METHOD)
+				&& value.hasOwnProperty(SERVLETPARAMS_PROPERTY_PARAMS);
+		}
+
+		/**
+		 * Called when url session state changes
+		 */
+		private function handleURLChange():void
+		{
+			var urlChanged:Boolean = detectLinkableObjectChange(handleURLChange, url);
+			var servletParamsChanged:Boolean = detectLinkableObjectChange(handleURLChange, servletParams);
+			if (urlChanged || servletParamsChanged)
+			{
+				if (url.value == '')
+					url.value = null;
+				if (url.value != null)
+				{
+					// if url is specified, do not use csvDataString
+					csvData.setSessionState(null);
+					if (servletParams.value)
+					{
+						if (urlChanged)
+						{
+							disposeObjects(_servlet);
+							_servlet = registerLinkableChild(this, new AMF3Servlet(url.value));
+						}
+						var token:AsyncToken = _servlet.invokeAsyncMethod(
+							servletParams.value[SERVLETPARAMS_PROPERTY_METHOD],
+							servletParams.value[SERVLETPARAMS_PROPERTY_PARAMS]
+						);
+						addAsyncResponder(token, handleServletResponse, handleServletError, getSessionState(this));
+					}
+					else
+					{
+						disposeObjects(_servlet);
+						_servlet = null;
+						WeaveAPI.URLRequestUtils.getURL(this, new URLRequest(url.value), handleCSVDownload, handleCSVDownloadError, url.value, URLLoaderDataFormat.TEXT);
+					}
+				}
+			}
+		}
+
+		private function handleServletResponse(event:ResultEvent, sessionState:Object):void
+		{
+			if (WeaveAPI.SessionManager.computeDiff(sessionState, getSessionState(this)))
+				return;
+			var data:Array = event.result as Array;
+			if (!data || (data.length && !(data[0] is Array)))
+			{
+				reportError('Result from servlet is not a two-dimensional Array');
+				return;
+			}
+			parsedRows = data;
+			getCallbackCollection(this).triggerCallbacks();
+		}
+		private function handleServletError(event:FaultEvent, sessionState:Object):void
+		{
+			if (WeaveAPI.SessionManager.computeDiff(sessionState, getSessionState(this)))
+				return;
+			reportError(event);
+		}
+
+		/**
 		 * This gets called when callbacks are triggered.
 		 */
 		override protected function initialize():void
 		{
+			handleURLChange();
+
 			if (_attributeHierarchy.value == null && parsedRows)
 			{
 				// loop through column names, adding indicators to hierarchy


added useNoSort option

added useNoSort option

--- WeaveUI/src/weave/ui/CustomDataGrid/CustomDataGrid.as
+++ WeaveUI/src/weave/ui/CustomDataGrid/CustomDataGrid.as
@@ -96,11 +96,17 @@
 			return c ? super.columnWordWrap(c) : false;
 		}

+		/**
+		 * Set this to true to use an internal ISort implementation that does not sort.
+		 * Use this option if you plan to sort externally but still want the column headers to indicate the sorting direction.
+		 */
+		public var useNoSort:Boolean = false;
+
 		private function headerReleaseHandler(event:DataGridEvent):void
 		{
 			var c:DataGridColumn = columns[event.columnIndex];
-			if (c.sortable && !(collection.sort is CustomSort))
-				collection.sort = new CustomSort(collection.sort);
+			if (c.sortable && !(collection.sort is (useNoSort ? NoSort : CustomSort)))
+				collection.sort = useNoSort ? new NoSort() : new CustomSort(collection.sort);
 		}

 		public function drawItemForced(item:Object,
@@ -273,3 +279,42 @@
 		}
 	}
 }
+
+import mx.collections.ISort;
+import mx.collections.ISortField;
+
+/**
+ * Does no sorting whatsoever.
+ */
+internal class NoSort implements ISort
+{
+	private var _fields:Array = [];
+	public function get fields():Array
+	{
+		return _fields;
+	}
+	public 	function set fields(value:Array):void
+	{
+		_fields = value;
+	}
+	public function reverse():void
+	{
+		for each (var sortField:ISortField in _fields)
+			sortField.reverse();
+	}
+
+	private var _unique:Boolean = false;
+	public function get unique():Boolean { return _unique; }
+	public function set unique(value:Boolean):void { _unique = value; }
+
+	private var _compareFunction:Function;
+	public function get compareFunction():Function { return _compareFunction; }
+	public function set compareFunction(value:Function):void { _compareFunction = value;}
+
+	public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
+	{
+		return -1;
+	}
+	public function propertyAffectsSort(property:String):Boolean { return false; }
+	public function sort(items:Array):void { }
+}


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

--- frameworks/projects/rpc/src/mx/messaging/channels/SecureStreamingAMFChannel.as
+++ frameworks/projects/rpc/src/mx/messaging/channels/SecureStreamingAMFChannel.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 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.
 //
 ////////////////////////////////////////////////////////////////////////////////