Transferred from the Adobe Open Source Subversion Repository

Revision: 6122
Author:   chaase@adobe.com
Date:     2009-04-10T14:30:17.762458Z

Log Message:
-----------
Various refactorings/renamings/changes from effects PARB review.

QE Notes: mx/effects and spark/effects currently broken (and disabled) due to these API changes. Matt is fixing.
Doc Notes: None
Bugs:
Reviewer: Hans
tests: checkintests, mustella tests/ListDataEffects

Modified Paths:
--------------
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOut.as" copyfrom-rev="5944" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/CompositeEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EaseInOut.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/EasingFraction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Power.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/EffectEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/TweenEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/FadeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Animate.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/RepeatBehavior.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/NumberArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/IEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/Animate3DInstance.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimationProperty.as" copyfrom-rev="5944" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/SimpleMotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateColorInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateShaderTransitionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateFilterInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/Rotate3DInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/AnimationEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/ArrayInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/IEffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/RotateInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/IAnimationTarget.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/ResizeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/MotionPath.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimationProperty.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/MoveInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate.as</path>

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

--- frameworks/projects/spark/src/spark/effects/interpolation/MultiValueInterpolator.as
+++ frameworks/projects/spark/src/spark/effects/interpolation/MultiValueInterpolator.as
@@ -47,9 +47,10 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    public function ArrayInterpolator(value:IInterpolator = null)
+    public function ArrayInterpolator(elementInterpolator:IInterpolator = null)
     {
-        elementInterpolator = value;
+        if (elementInterpolator != null)
+            this.elementInterpolator = elementInterpolator;
     }

     /**
@@ -60,11 +61,14 @@
                                     ResourceManager.getInstance();

     // The internal per-element interpolator
-    private var _elementInterpolator:IInterpolator;
+    private var _elementInterpolator:IInterpolator = NumberInterpolator.getInstance();
     /**
      * The internal interpolator that ArrayInterpolator uses for
-     * each element of the input arrays
-     *
+     * each element of the input arrays. A value of null will
+     * result in the use of NumberInterpolator.
+     *
+     * @default NumberInterpolator.getInstance()
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5


ps: Support for TMZ - CR-54203 (include player id as the first argument in the banner callback)

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

--- plugins/tremorPlugin/src/com/kaltura/kdpfl/plugin/component/TremorMediator.as
+++ plugins/tremorPlugin/src/com/kaltura/kdpfl/plugin/component/TremorMediator.as
@@ -12,9 +12,9 @@
 	import com.tremormedia.acudeo.events.ControlsEvent;
 	import com.tremormedia.acudeo.page.Page;
 	import com.tremormedia.acudeo.player.Player;
-
+
 	import fl.core.UIComponent;
-
+
 	import flash.display.DisplayObject;
 	import flash.display.Loader;
 	import flash.display.MovieClip;
@@ -25,7 +25,7 @@
 	import flash.geom.Rectangle;
 	import flash.net.URLRequest;
 	import flash.net.navigateToURL;
-
+
 	import org.puremvc.as3.interfaces.INotification;
 	import org.puremvc.as3.interfaces.IProxy;

@@ -38,31 +38,33 @@
 		public static const POST:String = "postroll";
 		public static const FETCH_PARAMS:String = "fetchParams";
 		public static const NEW_ENTRY:String = "newEntry";
-
-		//count the number of days that were passed from the relevant date
+
+		//count the number of days that were passed from the relevant date
 		public var createdAtOffset:Number=0;
 		public var updatedAtOffset:Number=0;
 		public var startedAtOffset:Number=0;
-
-
-
+
+
+
 		public var params:Object;
 		public var dispatcher:EventDispatcher = new EventDispatcher();

 		// internal companion ad
 		private var _clickUrl:String;
 		private var _loader:Loader;
+		//flash object id to be used with companion ads
+		private var _kdpObjectId:String;
 		public var hideInternalCompanion:Boolean;
 		public var internalCompanionX:Number;
 		public var internalCompanionY:Number;
-
-
-		/**
-		 * flag for showing/not showing countdown text
+
+
+		/**
+		 * flag for showing/not showing countdown text
 		 */
 		public var displayAdCountdown:String
 		/**
-		 * Text for showing when video ad is running
+		 * Text for showing when video ad is running
 		 */
 		public var adCountdownDisplayText:String
 		/**
@@ -77,104 +79,104 @@
 		public var traces:String = "";

 		/**
-		 * current ad context.
-		 * possible values are preroll / midroll / postroll.
+		 * current ad context.
+		 * possible values are preroll / midroll / postroll.
 		 */
 		private var _adContext:String = TremorMediator.MID;

 		/**
-		 * Tremor's hell-ish ad manager
-		 */
+		 * Tremor's hell-ish ad manager
+		 */
 		private var _adManager:IAdManager;
-
-		/**
-		 * title of current media entry
-		 */
+
+		/**
+		 * title of current media entry
+		 */
 		private var _entryTitle:String = "";
-
-		/**
-		 * id of current media entry
-		 */
+
+		/**
+		 * id of current media entry
+		 */
 		private var _entryId:String = "";
-
-		/**
-		 * url of current media entry
-		 */
+
+		/**
+		 * url of current media entry
+		 */
 		private var _entryUrl:String = "";
-
-		/**
-		 * current player volium
-		 */
+
+		/**
+		 * current player volium
+		 */
 		private var _currentVolume:Number = 100;
-
+
 		/**
 		 * indicates the video had started playing and asked for prerolls
-		 */
+		 */
 		private var _requestAd:Boolean;
-
-		/**
-		 * indicates ads program is loaded
-		 */
+
+		/**
+		 * indicates ads program is loaded
+		 */
 		private var _programLoaded:Boolean = false;
-
-		/**
-		 * init manager once only.
-		 */
+
+		/**
+		 * init manager once only.
+		 */
 		private var _managerInit:Boolean = false;
-
-		/**
-		 * since the new enableGui mechanism in KDP counts calls to
-		 * enable/disable gui, use this to not call too many of any of them.
+
+		/**
+		 * since the new enableGui mechanism in KDP counts calls to
+		 * enable/disable gui, use this to not call too many of any of them.
 		 */
 		private var _controlsEnabled:Boolean = true;

 		/**
 		 * tremor send startAd for midrolls twice. we'll only dispatch one of them.
-		 * hopefully.
+		 * hopefully.
 		 */
 		private var _midrollStatFlag:Boolean = false;
-
-
+
+
 		/**
 		 * This flag is to mark when a mid roll was played
 		 */
 		private var paused:Boolean = false;
-
-
+
+
 		private var bypassAds:Boolean = false;
 		/**
-		 * Holder for internal companion ads
+		 * Holder for internal companion ads
 		 */
 		private var companionHolder:UIComponent;
 		/**
-		 * Maximum days for this ad to be live
-		 */
+		 * Maximum days for this ad to be live
+		 */
 		public var maxAgeForAds:Number = 0;
 		/**
-		 * The creationDate of this entry
-		 */
+		 * The creationDate of this entry
+		 */
 		public var creationDate:Number = 0;
 		/**
 		 * Constructor.
 		 * @param viewComponent
 		 * @param prog	Tremor program id
-		 * @param tracesVolume
-		 *
+		 * @param tracesVolume
+		 *
 		 */
 		public function TremorMediator(viewComponent:Object = null, prog:String = "", tracesVolume:String = "FATAL",companionHolder:UIComponent=null) {
-			trace("TremorMediator V1");
+			trace("TremorMediator V1");
 			super(viewComponent);
 			if (prog != "")
 				progId = prog;
 			traces = tracesVolume;
 			this.companionHolder = companionHolder;
 			_adManager = (viewComponent as Tremor).ad_manager;
-
-		}
-
-
-		/**
-		 * initialize the ad manager
+
+		}
+
+
+		/**
+		 * initialize the ad manager
 		 */
 		private function initAdManager():void {

@@ -183,18 +185,29 @@
 			player.videoRegion = new Rectangle(0, 0, 300, 300);
 			player.volume = 100;

-
+
 			player.displayAdCountdown = displayAdCountdown;
 			player.adCountdownDisplayText = adCountdownDisplayText ;
-
+
 			var page:Page = new Page();
 			var flashvars:Object = facade.retrieveProxy("configProxy");
 			page.url = flashvars.vo.flashvars.referer;

+			//the try is in case we dont have external interface
+			try
+			{
+				_kdpObjectId = ExternalInterface.objectID;
+			}
+			catch(error:Error)
+			{
+				trace("Failed getting the objectId");
+			}
+
+
 			_adManager.init({player: player, page: page, debug:"FATAL"});

 			_adManager.setVolume(100);
-
+
 			_adManager.addEventListener(AcudeoEvent.PROGRAM_LOADED, onAdManagerProgramLoaded);
 			_adManager.addEventListener(AdEvent.DISPLAY_BANNERS, onDisplayBanners);
 			_adManager.addEventListener(AcudeoEvent.START_CONTENT, onStartContent);
@@ -203,13 +216,13 @@
 			_adManager.addEventListener(ControlsEvent.STATE_CHANGED, onControlsStateChange);
 			_adManager.addEventListener(AcudeoEvent.ADS_COMPLETE, onAdsComplete);
 			_adManager.addEventListener(AcudeoEvent.ERROR, onAdsError);
-
+
 			_adManager.addEventListener(AdEvent.END, onAdsEvent);
 			_adManager.addEventListener(AdEvent.OVERLAYCLICK, onAdsEvent);
 			_adManager.addEventListener(AdEvent.OVERLAYSHOWN, onAdsEvent);
 			_adManager.addEventListener(AdEvent.VIDEOSTART, onAdsEvent);
 			_adManager.addEventListener(AdEvent.CLICK, onAdsEvent);
-
+
 			_adManager.addEventListener(AdEvent.HIDE_BANNERS, onHideBanner);

 			_adManager.load({
@@ -224,13 +237,18 @@
 			try
 			{
 				if (ExternalInterface.available)
-					ExternalInterface.call("hideCompanionBanners");
+				{
+					if(_kdpObjectId)
+						ExternalInterface.call("hideCompanionBanners" , _kdpObjectId);
+					else
+						ExternalInterface.call("hideCompanionBanners");
+				}
 			} catch (e:Error)
 			{
 				trace("ExternalInterface error");
 			}
 		}
-
+
 		private function onAdsEvent(event:AdEvent):void {
 			switch (event.type) {
 				case AdEvent.OVERLAYSHOWN:
@@ -271,30 +289,30 @@
 							trace("failed to unload internal companion ad");
 						}
 					}
-					break;
-			}
-		}
-
-
-
+					break;
+			}
+		}
+
+
+
 		/**
 		 * assumably this is caused by adManager load timeout (Tremor left a default value
 		 * of 4 seconds, which is hardly ever enough).

 		 * however, the error event doesn't hold any information of the error type..

-		 * in this case, we end ads process.
+		 * in this case, we end ads process.
 		 * @param evt
-		 */
+		 */
 		private function onAdsError(evt:Event=null):void {
-			bypassAds = true;
+			bypassAds = true;
 			enableControls();
 			var sp:SequenceProxy = facade.retrieveProxy(SequenceProxy.NAME) as SequenceProxy;
 			if(sp.vo.isInSequence)
 			{
-				sendNotification(NotificationType.SEQUENCE_ITEM_PLAY_END);
+				sendNotification(NotificationType.SEQUENCE_ITEM_PLAY_END);
 				trace("AdManager onAdsError0 Releasing sequence");
 			}
 		}
-
+

 		private function onAdManagerProgramLoaded(evt:Event):void {
 			_programLoaded = true; //race condition
@@ -306,7 +324,7 @@
 			else {
 				_adManager.openSlate();
 				enableControls();
-
+
 			}
 		}

@@ -336,9 +354,9 @@
 		}

-		private function onAdVideoProgress(evt:Event):void
+		private function onAdVideoProgress(evt:Event):void
 		{
-
+
 		}

@@ -347,28 +365,33 @@
 		 * @param event
 		 * */
 		private function onDisplayBanners(event:Object):void {
-			// external companion ads
-			try
+			// external companion ads
+			try
 			{
 				if (ExternalInterface.available)
-					ExternalInterface.call("displayCompanionBanners", event.ad.banners,
-										   {playerIndex: event.data.player.playerIndex});
+				{
+					if(_kdpObjectId)
+						ExternalInterface.call("displayCompanionBanners", event.ad.banners,{playerIndex: event.data.player.playerIndex} , _kdpObjectId );
+					else
+						ExternalInterface.call("displayCompanionBanners", event.ad.banners,{playerIndex: event.data.player.playerIndex});
+
+				}
 			} catch (e:Error)
 			{
 				trace("ExternalInterface error");
 			}
 			//internal companion ads
-
+
 			if(!event.ad.banners[0].imageUrl)
 			{
 				return;
 			}
 			if(!companionHolder)
 			{
-
+
 				return;
 			}
-
+
 			var bannerHolder_mc:MovieClip = new MovieClip();
 			bannerHolder_mc.x=internalCompanionX;
 			bannerHolder_mc.y=internalCompanionY;
@@ -381,9 +404,9 @@
 			bannerHolder_mc.addEventListener(MouseEvent.CLICK,  onBannerHolderClick);
 			bannerHolder_mc.addChild(_loader);
 			companionHolder.addChild(bannerHolder_mc);
-
-		}
-
+
+		}
+
 		private function onBannerHolderClick(event:Object):void {
 			var request:URLRequest = new URLRequest(_clickUrl);
 			navigateToURL(request,"_blank");
@@ -396,22 +419,22 @@
 		public function forceStart():void {
 			var destinationDate:Date = new Date();
 			destinationDate.setDate(destinationDate.getDate() - maxAgeForAds);
-
-
-
+
+
+
 			//calculate all 3 dates:
 			var nd:Date = new Date ();
 			nd.setTime(creationDate*1000);

-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
 			if( int(destinationDate.time/1000) <= creationDate  || maxAgeForAds==0)
 			{
 				var sequenceManager:IProxy = facade.retrieveProxy("sequenceProxy");
@@ -468,7 +491,7 @@
 				case preSequenceNotificationStartName:
 					if(bypassAds)
 					{
-						onAdsError();
+						onAdsError();
 						break;
 					}
 					var newEntryId:String = (facade.retrieveProxy(MediaProxy.NAME) as MediaProxy).vo.entry.id;
@@ -484,7 +507,7 @@
 					postAds();
 					clearMediaData();
 					break;
-
+
 				case NotificationType.LAYOUT_READY:
 					if (!_managerInit) {
 						initAdManager();
@@ -493,25 +516,25 @@
 				case NotificationType.MEDIA_READY:
 					var entry:Object = ((facade.retrieveProxy(MediaProxy.NAME) as MediaProxy).vo.entry);
 					creationDate = entry["createdAt"];
-
+
 					var today:Date = new Date();
 					var cd:Date = new Date ();
 					cd.setTime(creationDate*1000);
 					createdAtOffset = int((today.time-cd.time)/(24*60*60*1000));
-
+
 					var ud:Date = new Date ();
 					ud.setTime(entry["updatedAt"]*1000);
 					updatedAtOffset = int((today.time-ud.time)/(24*60*60*1000));
-
+
 					if(entry.hasOwnProperty('startDate') && entry["startDate"] > 0)
 					{
 						var sd:Date = new Date ();
 						sd.setTime(entry["startDate"]*1000);
 						startedAtOffset = int((today.time-sd.time) / (24*60*60*1000));
 					}
-
+
 					dispatcher.dispatchEvent(new Event(NEW_ENTRY));
-
+
 				break;
 			}
 		}
@@ -519,15 +542,15 @@

 		/**
 		 * delete all data concerning the current entry, so when
-		 * the next entry loads we'll ask for new info
+		 * the next entry loads we'll ask for new info
 		 */
 		private function clearMediaData():void {
 			_entryTitle = null;
 			_entryId = null;
 			_entryUrl = null;
 		}
-
-
+
+
 		private function retrieveMediaData():void {
 			var mp:Object = facade.retrieveProxy("mediaProxy");
 			_entryTitle = mp.vo.entry.name;
@@ -573,7 +596,7 @@

 		/////////////////////////////////////////////////////////
-		// TREMOR FUNCTIONS API
+		// TREMOR FUNCTIONS API
 		/////////////////////////////////////////////////////////

 		/**
@@ -582,7 +605,7 @@
 		 * @param event
 		 */
 		private function onStartContent(event:Object):void {
-			/* switch the context to MID. if there's no midroll and the next ad
+			/* switch the context to MID. if there's no midroll and the next ad
 			* will be a postroll, postAds() will change the context to match. */
 			_adContext = TremorMediator.MID;
 			enableControls();
@@ -623,7 +646,7 @@

 		//////////////////////////////////////////////////////////////////////////////////////
 		//Player properties changed
-		/////////////////////////////////////////////////////////////////////////////////////
+		/////////////////////////////////////////////////////////////////////////////////////
 		/**
 		 * Update the tremor component on playhead changes.
 		 * @param currentPosition playhead current position


Transferred from the Adobe Open Source Subversion Repository

Revision: 11995
Author:   doug.lee@ssbbartgroup.com
Date:     2009-11-19T18:50:30.831767Z

Log Message:
-----------
Updated all AccImpls that use MSAA constants (except TextLayout) to
use the new AccConst references instead of hard-coding hex numbers and
local copies of the constants.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ColorPickerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/LabelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextInputAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ComboBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TabBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/accessibility/WindowedApplicationAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SpinnerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/TextBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/PanelAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SliderAccImpl.as</path>
<path kind="file" action="M">/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/accessibility/RichEditableTextAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/CheckBoxAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AlertAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/AccordionHeaderAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/ButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DateFieldAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/NumericStepperAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/SkinnableTextBaseAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ListBaseAccImpl.as</path>
<path kind="file" action="M">/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/accessibility/TitleWindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/LinkButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuBarAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/RadioButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/ToggleButtonAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TreeAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/accessibility/WindowAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/DateChooserAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/VideoPlayerAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/MenuAccImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/accessibility/TitleWindowAccImpl.as</path>

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

--- frameworks/projects/spark/src/spark/accessibility/NumericStepperAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/NumericStepperAccImpl.as
@@ -16,6 +16,7 @@
 import flash.events.FocusEvent;
 import flash.events.Event;

+import mx.accessibility.AccConst;
 import mx.core.UIComponent;
 import mx.core.mx_internal;

@@ -37,21 +38,6 @@
 {
     include "../core/Version.as";

-    /**
-     *  @private
-     */
-    private static const ROLE_SYSTEM_PUSHBUTTON:uint = 0x2B;
-
-    /**
-     *  @private
-     */
-    private static const ROLE_SYSTEM_TEXT:uint = 0x2A;
-
-    /**
-     *  @private
-     */
-    private static const EVENT_OBJECT_FOCUS:uint = 0x8005;
-
     //--------------------------------------------------------------------------
     //
     //  Class methods
@@ -112,7 +98,7 @@
     {
         super(master);

-        role = ROLE_SYSTEM_TEXT;
+        role = AccConst.ROLE_SYSTEM_TEXT;

         NumericStepper(master).textDisplay.addEventListener(Event.CHANGE,
             eventHandler);
@@ -127,7 +113,7 @@
      */
     private function focusInHandler(event:Event):void
     {
-        Accessibility.sendEvent(master, 0, EVENT_OBJECT_FOCUS);
+        Accessibility.sendEvent(master, 0, AccConst.EVENT_OBJECT_FOCUS);
     }
 }


Change 20081217-maxcarlson-5 by maxcarlson@Bank.lan on 2008-12-17 05:41:47 PST
    in /Users/maxcarlson/openlaszlo/trunk-clean
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: UPDATED: Fix runtime exception fired at end of mp3 playback in swf9

Bugs Fixed: LPP-7496 - swf9 mp3 player causing exception when end of file is reached

Technical Reviewer: promanik
QA Reviewer: jcrowley
Doc Reviewer: (pending)

Details: Avoid dereferencing null soundChannel object in both places this time.  Funny, I only saw the exception in fdb - not in the debug player!  Reset this.frame = this.totalframes after sending the lastframe resource event.

Tests: See LPP-7496

git-svn-id: d62bde4b5aa582fdf07c8d403e53e0399a7ed285@12149 fa20e4f9-1d0a-0410-b5f3-dc9c16b8b17c

--- WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
+++ WEB-INF/lps/lfc/kernel/swf9/LzSprite.as
@@ -533,7 +533,7 @@

           this.playing = this.owner.playing = false;
           this.removeEventListener(Event.ENTER_FRAME, soundFrameHandler);
-          this.soundChannel.stop();
+          if (this.soundChannel) this.soundChannel.stop();
           this.soundChannel = null;

           return frame;


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

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

--- frameworks/projects/framework/src/mx/collections/SortField.as
+++ frameworks/projects/framework/src/mx/collections/SortField.as
@@ -71,6 +71,11 @@
  *  numeric="null"
  *  />
  *

+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class SortField extends EventDispatcher
 {
@@ -94,6 +99,11 @@
      *              descending order.
      *  @param numeric Tells the comparitor whether to compare sort items as
      *              numbers, instead of alphabetically.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function SortField(name:String = null,
                               caseInsensitive:Boolean = false,
@@ -145,6 +155,11 @@
      *  Specifies whether the sort for this field should be case insensitive.
      *
      *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get caseInsensitive():Boolean
     {
@@ -200,6 +215,11 @@
      *  Specify your own function only if you need a need a custom comparison algorithm.
      *  This is normally only the case if a calculated field is used in a display.

      *
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get compareFunction():Function
     {
@@ -223,6 +243,11 @@

     /**
      * True if this SortField uses a custom comparitor function.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     mx_internal function get usingCustomCompareFunction():Boolean
     {
@@ -255,6 +280,11 @@
      *  order.
      *
      *
 The default value is false (ascending).

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get descending():Boolean
     {
@@ -290,6 +320,11 @@
      *  The name of the field to be sorted.
      *
      *  @default null
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get name():String
     {
@@ -330,6 +365,11 @@
 	 *  proceeds based on that introspection
      *
      *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function get numeric():Object
     {
@@ -357,6 +397,11 @@
     /**
     * Build up the options argument that could be used to Array.sortOn.
     * Return -1 if this SortField shouldn't be used in the method.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 9
+    *  @playerversion AIR 1.1
+    *  @productversion Flex 3
     */
     mx_internal function getArraySortOnOptions():int
     {
@@ -458,6 +503,11 @@
      *
Note: an ICollectionView does not automatically update when the
      * SortFields are modified; call its refresh() method to
      * update the view.

+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     public function reverse():void
     {
@@ -570,6 +620,11 @@

     /**
      * Pull the numbers from the objects and call the implementation.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function numericCompare(a:Object, b:Object):int
     {
@@ -596,6 +651,11 @@

     /**
      * Pull the date objects from the values and compare them.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function dateCompare(a:Object, b:Object):int
     {
@@ -622,6 +682,11 @@

     /**
      * Pull the strings from the objects and call the implementation.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function stringCompare(a:Object, b:Object):int
     {
@@ -650,6 +715,11 @@
      * Pull the values out fo the XML object, then compare
      * using the string or numeric comparator depending
      * on the numeric flag.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
      */
     private function xmlCompare(a:Object, b:Object):int
     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 3821
Author:   smgilson@adobe.com
Date:     2008-10-22T18:14:02.834405Z

Log Message:
-----------
Fix ASDoc comments where there were two ASDoc comments in a row

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IDisplayObjectInterface.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IDisplayObjectContainerInterface.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ISpriteInterface.as</path>

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

--- frameworks/projects/framework/src/mx/core/ISpriteInterface.as
+++ frameworks/projects/framework/src/mx/core/ISpriteInterface.as
@@ -9,7 +9,7 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-/**
+/*
  *  The ISprite interface defines the basic set of APIs
  *  for web version of flash.display.Sprite
  */


Transferred from the Adobe Open Source Subversion Repository

Revision: 17703
Author:   dthakkar@adobe.com
Date:     2010-09-14T21:06:11.351066Z

Log Message:
-----------
Added errorText property for spark formatters and included some bug fixes.

QE notes: This changelist has some behavior changes for spark formatters and will cause some failures to existing spark formatter mustell test cases. Globalization QE team knows about this and will update test cases after this submission.
Doc notes:
Bugs: SDK-27420,SDK-27449,SDK-26939,SDK-27240,SDK-27340,SDK-27341,SDK-26937,SDK-27038,SDK-26969,SDK-26970,SDK-26971,SDK-27036,SDK-27491,SDK-27037,SDK-26968,SDK-27450
Reviewer: Gordon, Craig, Dipti
Tests run: Checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/CollatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/NumberFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/supportClasses/NumberBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/CurrencyFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/formatters/DateTimeFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/NumberFormatterTestScript.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/CurrencyFormatterTestScript.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/formatters/Formatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/NumberFormatterTests.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/scripts/DateTimeFormatterTestScript.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/CurrencyFormatterTests.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/tests/basicTests/spark/views/DateTimeFormatterTests.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/supportClasses/GlobalizationBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/formatters/IFormatter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/globalization/LastOperationStatus.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/datavisualization/src/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as</path>

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

--- frameworks/projects/framework/src/mx/formatters/IFormatter.as
+++ frameworks/projects/framework/src/mx/formatters/IFormatter.as
@@ -15,42 +15,17 @@
 /**
  *  This interface specifies the method that a formatter object must implement
  *  to allow it to be used as the formatter property for UI controls such as
- *  the AdvancedDataGridColumn.
+ *  the AdvancedDataGridColumn.
  *
  *  @see mx.controls.advancedDataGridClasses#formatter
  *
  *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 1.5
+ *  @playerversion Flash 10.1
+ *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
 */
 public interface IFormatter
 {
-    //--------------------------------------------------------------------------
-    //
-    //  Properties
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    //  error
-    //----------------------------------
-
-    /**
-     *  Description saved by the formatter when an error occurs.
-     *  For the possible values of this property,
-     *  see the description of each formatter.
-     *
Classes that implement this interface must set this value
-     *  in the format() method.

-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
-     *  @productversion Flex 3
-     */
-    // TODO Do we need to include this in the interface?
-    //public var error:String;
-
     //--------------------------------------------------------------------------
     //
     //  Methods
@@ -58,7 +33,7 @@
     //--------------------------------------------------------------------------

     /**
-     *  Formats a value and returns a String
+     *  Formats a value and returns a String
      *  containing the new, formatted, value.
      *
      *  @param value Value to be formatted.
@@ -66,8 +41,8 @@
      *  @return The formatted string.
      *
      *  @langversion 3.0
-     *  @playerversion Flash 9
-     *  @playerversion AIR 1.1
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
     function format(value:Object):String;


Transferred from the Adobe Open Source Subversion Repository

Revision: 18338
Author:   aharui@adobe.com
Date:     2010-10-27T20:22:21.535520Z

Log Message:
-----------
FocusManager isEnabledAndVisible should not take into account the top-level window's visibility.  It is just meant to test if a child is visible if the top-level window was visible

QE notes: none
Doc notes: none
Bugs: SDK-27818
Reviewer: Corey
Tests run: checkintests mustella full run
Is noteworthy for integration: no

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/FocusManager.as

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

--- frameworks/projects/framework/src/mx/managers/FocusManager.as
+++ frameworks/projects/framework/src/mx/managers/FocusManager.as
@@ -990,7 +990,7 @@

     private function isEnabledAndVisible(o:DisplayObject):Boolean
     {
-        var formParent:DisplayObjectContainer = DisplayObject(form).parent;
+        var formParent:DisplayObjectContainer = DisplayObjectContainer(form);

         while (o != formParent)
         {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

--- frameworks/projects/mx/src/mx/skins/halo/ComboBoxArrowSkin.as
+++ frameworks/projects/mx/src/mx/skins/halo/ComboBoxArrowSkin.as
@@ -0,0 +1,349 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2004-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.skins.halo
+{
+
+import flash.display.GradientType;
+import flash.display.Graphics;
+import mx.skins.Border;
+import mx.styles.StyleManager;
+import mx.utils.ColorUtil;
+
+/**
+ *  The skin for all the states of the button in a ComboBox.
+ */
+public class ComboBoxArrowSkin extends Border
+{
+	include "../../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class variables
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private static var cache:Object = {};
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Several colors used for drawing are calculated from the base colors
+	 *  of the component (themeColor, borderColor and fillColors).
+	 *  Since these calculations can be a bit expensive,
+	 *  we calculate once per color set and cache the results.
+	 */
+	private static function calcDerivedStyles(themeColor:uint, borderColor:uint,
+									  fillColor0:uint, fillColor1:uint):Object
+	{
+		var key:String = HaloColors.getCacheKey(themeColor, borderColor,
+												fillColor0, fillColor1);
+
+		if (!cache[key])
+		{
+			var o:Object = cache[key] = {};
+
+			// Cross-component styles.
+			HaloColors.addHaloColors(o, themeColor, fillColor0, fillColor1);
+		}
+
+		return cache[key];
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 */
+	public function ComboBoxArrowSkin()
+	{
+		super();
+	}
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+	//  measuredWidth
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function get measuredWidth():Number
+    {
+        return 22;
+    }
+
+    //----------------------------------
+	//  measuredHeight
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    override public function get measuredHeight():Number
+    {
+        return 22;
+    }
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override protected function updateDisplayList(w:Number, h:Number):void
+	{
+		super.updateDisplayList(w, h);
+
+		// User-defined styles.
+		var arrowColor:uint = getStyle("iconColor");
+		var borderColor:uint = getStyle("borderColor");
+		var cornerRadius:Number = getStyle("cornerRadius");
+		var dropdownBorderColor:Number = getStyle("dropdownBorderColor");
+		var fillAlphas:Array = getStyle("fillAlphas");
+		var fillColors:Array = getStyle("fillColors");
+		StyleManager.getColorNames(fillColors);
+		var highlightAlphas:Array = getStyle("highlightAlphas");
+		var themeColor:uint = getStyle("themeColor");
+
+		// The dropdownBorderColor is currently only used
+		// when displaying an error state.
+		if (!isNaN(dropdownBorderColor))
+			borderColor = dropdownBorderColor;
+
+		// Derivative Styles
+		var derStyles:Object = calcDerivedStyles(themeColor, borderColor,
+												 fillColors[0], fillColors[1]);
+
+		var borderColorDrk1:Number =
+			ColorUtil.adjustBrightness2(borderColor, -50);
+
+		var themeColorDrk1:Number =
+			ColorUtil.adjustBrightness2(themeColor, -25);
+
+		var cornerRadius1:Number = Math.max(cornerRadius - 1, 0);
+		var cr:Object = { tl: 0, tr: cornerRadius, bl: 0, br: cornerRadius };
+		var cr1:Object = { tl: 0, tr: cornerRadius1, bl: 0, br: cornerRadius1 };
+
+		var arrowOnly:Boolean = true;
+
+		// If our name doesn't include "editable", we are drawing the non-edit
+		// skin which spans the entire control
+		if (name.indexOf("editable") < 0)
+		{
+			arrowOnly = false;
+			cr.tl = cr.bl = cornerRadius;
+			cr1.tl = cr1.bl = cornerRadius1;
+		}
+
+		var g:Graphics = graphics;
+
+		g.clear();
+
+		// Draw the border and fill.
+		switch (name)
+		{
+			case "upSkin":
+			case "editableUpSkin":
+			{
+   				var upFillColors:Array = [ fillColors[0], fillColors[1] ];
+   				var upFillAlphas:Array = [ fillAlphas[0], fillAlphas[1] ];
+
+				// border
+				drawRoundRect(
+					0, 0, w, h, cr,
+					[ borderColor, borderColorDrk1 ], 1,
+					verticalGradientMatrix(0, 0, w, h),
+					GradientType.LINEAR, null,
+					{ x: 1, y: 1, w: w - 2, h: h - 2, r: cr1 });
+
+				// button fill
+				drawRoundRect(
+					1, 1, w - 2, h - 2, cr1,
+					upFillColors, upFillAlphas,
+					verticalGradientMatrix(1, 1, w - 2, h - 2));
+
+				// top highlight
+				drawRoundRect(
+					1, 1, w - 2, (h - 2) / 2,
+					{ tl: cornerRadius1, tr: cornerRadius1, bl: 0, br: 0 },
+					[ 0xFFFFFF, 0xFFFFFF ], highlightAlphas,
+					verticalGradientMatrix(1, 1, w - 2, (h - 2) / 2));
+
+				if (!arrowOnly)
+				{
+					// line
+					drawRoundRect(
+						w - 22, 4, 1, h - 8, 0,
+						borderColor, 1);
+					drawRoundRect(
+						w - 21, 4, 1, h - 8, 0,
+						0xFFFFFF, 0.2);
+				}
+
+				break;
+			}
+
+			case "overSkin":
+			case "editableOverSkin":
+			{
+				var overFillColors:Array;
+				if (fillColors.length > 2)
+					overFillColors = [ fillColors[2], fillColors[3] ];
+				else
+					overFillColors = [ fillColors[0], fillColors[1] ];
+
+				var overFillAlphas:Array;
+				if (fillAlphas.length > 2)
+					overFillAlphas = [ fillAlphas[2], fillAlphas[3] ];
+  				else
+					overFillAlphas = [ fillAlphas[0], fillAlphas[1] ];
+
+				// border
+				drawRoundRect(
+					0, 0, w, h, cr,
+					[ themeColor, themeColorDrk1 ], 1,
+					verticalGradientMatrix(0, 0, w, h),
+					GradientType.LINEAR, null,
+					{ x: 1, y: 1, w: w - 2, h: h - 2, r: cr1 });
+
+				// button fill
+				drawRoundRect(
+					1, 1, w - 2, h - 2, cr1,
+					overFillColors, overFillAlphas,
+					verticalGradientMatrix(1, 1, w - 2, h - 2));
+
+				// top highlight
+				drawRoundRect(
+					1, 1, w - 2, (h - 2) / 2,
+					{ tl: cornerRadius1, tr: cornerRadius1, bl: 0, br: 0 },
+					[ 0xFFFFFF, 0xFFFFFF ], highlightAlphas,
+					verticalGradientMatrix(0, 0, w - 2, (h - 2) / 2));
+
+
+				if (!arrowOnly)
+				{
+					// line
+					drawRoundRect(
+						w - 22, 4, 1, h - 8, 0,
+						derStyles.themeColDrk2,1);
+					drawRoundRect(
+						w - 21, 4, 1, h - 8, 0,
+						0xFFFFFF, 0.2);
+				}
+
+				break;
+			}
+
+			case "downSkin":
+			case "editableDownSkin":
+			{
+				// border
+				drawRoundRect(
+					0, 0, w, h, cr,
+					[ themeColor, themeColorDrk1 ], 1,
+					verticalGradientMatrix(0, 0, w, h));
+
+				// button fill
+				drawRoundRect(
+					1, 1, w - 2, h - 2, cr1,
+					[ derStyles.fillColorPress1, derStyles.fillColorPress2 ], 1,
+					verticalGradientMatrix(1, 1, w - 2, h - 2));
+
+				// top highlight
+				drawRoundRect(
+					1, 1, w - 2, (h - 2) / 2,
+					{ tl: cornerRadius1, tr: cornerRadius1, bl: 0, br: 0 },
+					[ 0xFFFFFF, 0xFFFFFF ], highlightAlphas,
+					verticalGradientMatrix(1, 1, w - 2, (h - 2) / 2));
+
+				if (!arrowOnly)
+				{
+					// line
+					drawRoundRect(
+						w - 22, 4, 1, h - 8, 0,
+						themeColorDrk1, 1);
+					drawRoundRect(
+						w - 21, 4, 1, h - 8, 0,
+						0xFFFFFF, 0.2);
+				}
+
+				break;
+			}
+
+			case "disabledSkin":
+			case "editableDisabledSkin":
+			{
+   				var disFillColors:Array = [ fillColors[0], fillColors[1] ];
+
+				var disFillAlphas:Array = [ Math.max(0, fillAlphas[0] - 0.15),
+											Math.max(0, fillAlphas[1] - 0.15) ];
+
+				// border
+				drawRoundRect(
+					0, 0, w, h, cr,
+					[ borderColor, borderColorDrk1 ], 0.5,
+					verticalGradientMatrix(0, 0, w, h ),
+					GradientType.LINEAR, null,
+					{ x: 1, y: 1, w: w - 2, h: h - 2, r: cr1 });
+
+
+				// button fill
+				drawRoundRect(
+					1, 1, w - 2, h - 2, cr1,
+					disFillColors, disFillAlphas,
+					verticalGradientMatrix(0, 0, w - 2, h - 2));
+
+				if (!arrowOnly)
+				{
+					// line
+					drawRoundRect(
+						w - 22, 4, 1, h - 8, 0,
+						0x999999, 0.5);
+				}
+
+				arrowColor = getStyle("disabledIconColor");
+
+				break;
+			}
+		}
+
+		// Draw the triangle.
+		g.beginFill(arrowColor);
+		g.moveTo(w - 11.5, h / 2 + 3);
+		g.lineTo(w - 15, h / 2 - 2);
+		g.lineTo(w - 8, h / 2 - 2);
+		g.lineTo(w - 11.5, h / 2 + 3);
+		g.endFill();
+	}
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 9399
Author:   aharui@adobe.com
Date:     2009-08-19T20:39:10.836192Z

Log Message:
-----------
Check in prototypes of ControlBars in Panel and Application, Spark Containers in Halo Navigators, Halo ViewStack in Spark ButtonBar.  APIs should match spec but are subject to change from PARB.  Skins are subject to tweaking after XD review

QE Notes: The following tests will fail and need updating:
gumbo/containers/Panel/Properties/Panel_Properties_position Panel_Properties_rotate
apollo/spark/components/Window/properties/window_properties_titleIcon_tests titleIcon_test8

Doc Notes: None
Bugs: None
Reviewer: Darrell, Glenn, Ryan
API Change: No
Is noteworthy for integration: No
tests: checkintests mustella/gumbo/components/Application, gumbo/components/ButtonBar, gumbo/containers/Panel, apollo/gumbo/spark/Window, containers/ViewStack, containers/Accordion,

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/builder/ComponentBuilder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/SparkChromeWindowedApplicationSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NavigatorChild.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/IDeferredContentOwner.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/spark/src/spark/components/Application.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/NavBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler_en.properties</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/INavigatable.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/PanelSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/INavigatorContent.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/wireframe/src/spark/skins/wireframe/PanelSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IDeferredContentOwner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ApplicationSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/Application.as
+++ frameworks/projects/spark/src/spark/components/Application.as
@@ -33,7 +33,9 @@
 import mx.managers.ISystemManager;
 import mx.styles.CSSStyleDeclaration;
 import mx.styles.StyleManager;
+import mx.utils.BitFlagUtil;
 import mx.utils.LoaderUtil;
+import spark.layouts.supportClasses.LayoutBase;

 use namespace mx_internal;

@@ -142,6 +144,22 @@

     //--------------------------------------------------------------------------
     //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private static const CONTROLS_PROPERTY_FLAG:uint = 1 << 0;
+
+    /**
+     *  @private
+     */
+    private static const LAYOUT_PROPERTY_FLAG:uint = 1 << 1;
+
+    //--------------------------------------------------------------------------
+    //
     //  Class properties
     //
     //--------------------------------------------------------------------------
@@ -308,6 +326,102 @@
             sm.stage.colorCorrection = value;
     }

+    /**
+     *  @private
+     *  Several properties are proxied to controlGroup.  However, when controlGroup
+     *  is not around, we need to store values set on SkinnableContainer.  This object
+     *  stores those values.  If controlGroup is around, the values are stored
+     *  on the controlGroup directly.  However, we need to know what values
+     *  have been set by the developer on the SkinnableContainer (versus set on
+     *  the controlGroup or defaults of the controlGroup) as those are values
+     *  we want to carry around if the controlGroup changes (via a new skin).
+     *  In order to store this info effeciently, controlGroupProperties becomes
+     *  a uint to store a series of BitFlags.  These bits represent whether a
+     *  property has been explicitely set on this SkinnableContainer.  When the
+     *  controlGroup is not around, controlGroupProperties is a typeless
+     *  object to store these proxied properties.  When controlGroup is around,
+     *  controlGroupProperties stores booleans as to whether these properties
+     *  have been explicitely set or not.
+     */
+    private var controlGroupProperties:Object = {};
+
+    //----------------------------------
+    //  controlGroup
+    //----------------------------------
+
+    [SkinPart(required="false")]
+
+    /**
+     *  The skin part that defines the appearance of the
+     *  control bar in the container.
+     *
+     *  @see spark.skins.spark.PanelSkin
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public var controlGroup:Group;
+
+    //----------------------------------
+    //  controls
+    //----------------------------------
+
+    [ArrayElementType("mx.core.IVisualElement")]
+
+    /**
+     *  The set of items that become the content of
+     *  the controlGroup
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function set controls(value:Array):void
+    {
+        if (controlGroup)
+        {
+            controlGroup.mxmlContent = value;
+            controlGroupProperties = BitFlagUtil.update(controlGroupProperties as uint,
+                                                        CONTROLS_PROPERTY_FLAG, true);
+        }
+        else
+            controlGroupProperties.controls = value;
+    }
+
+    //----------------------------------
+    //  controlLayout
+    //----------------------------------
+
+    /**
+     *  An optional Layout assigned to the control bar.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get controlLayout():LayoutBase
+    {
+        return (controlGroup)
+            ? controlGroup.layout
+            : controlGroupProperties.layout;
+    }
+
+    public function set controlLayout(value:LayoutBase):void
+    {
+        if (controlGroup)
+        {
+            controlGroup.layout = value;
+            controlGroupProperties = BitFlagUtil.update(controlGroupProperties as uint,
+                                                        LAYOUT_PROPERTY_FLAG, true);
+        }
+        else
+            controlGroupProperties.layout = value;
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Compile-time pseudo-properties
@@ -738,6 +852,67 @@
         }
     }

+    /**
+     *  @private
+     */
+    override protected function partAdded(partName:String, instance:Object):void
+    {
+        super.partAdded(partName, instance);
+
+        if (instance == controlGroup)
+        {
+            // copy proxied values from controlGroupProperties (if set) to contentGroup
+            var newControlGroupProperties:uint = 0;
+
+            if (controlGroupProperties.controls !== undefined)
+            {
+                controlGroup.mxmlContent = controlGroupProperties.controls;
+                newControlGroupProperties = BitFlagUtil.update(newControlGroupProperties,
+                                                               CONTROLS_PROPERTY_FLAG, true);
+            }
+
+            if (controlGroupProperties.layout !== undefined)
+            {
+                controlGroup.layout = controlGroupProperties.layout;
+                newControlGroupProperties = BitFlagUtil.update(newControlGroupProperties,
+                                                               LAYOUT_PROPERTY_FLAG, true);
+            }
+
+            controlGroupProperties = newControlGroupProperties;
+        }
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    override protected function partRemoved(partName:String, instance:Object):void
+    {
+        super.partRemoved(partName, instance);
+
+        if (instance == controlGroup)
+        {
+            // copy proxied values from contentGroup (if explicitely set) to contentGroupProperties
+
+            var newControlGroupProperties:Object = {};
+
+            if (BitFlagUtil.isSet(controlGroupProperties as uint, CONTROLS_PROPERTY_FLAG))
+                newControlGroupProperties.controls = controlGroup.getMXMLContent();
+
+            if (BitFlagUtil.isSet(controlGroupProperties as uint, LAYOUT_PROPERTY_FLAG))
+                newControlGroupProperties.layout = controlGroup.layout;
+
+            controlGroupProperties = newControlGroupProperties;
+
+            controlGroup.mxmlContent = null;
+            controlGroup.layout = null;
+        }
+    }
+
     //----------------------------------
     //  unscaledHeight
     //----------------------------------


Transferred from the Adobe Open Source Subversion Repository

Revision: 7156
Author:   egeorgie@adobe.com
Date:     2009-05-20T21:43:02.892782Z

Log Message:
-----------
Fix bug http://bugs.adobe.com/jira/browse/SDK-20571 BasicLayout:fractional numbers for size,position of an element not rounded up

Fix: make sure that the measured sizes and the content sizes that are calculated by the layouts are rounded up to the nearest pixel.

QE Notes: Some mustella test may expectedly fail if they are dealing with groups with non-integer sized content (most common case - unconstrained Rect with 1 pixel stroke).

Doc Notes: None
Bugs: SDK-20571
Reviewer: Hans
tests: build, checkintests, mustella (gumbo layouts)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
@@ -1187,6 +1187,13 @@
             measureVirtual(layoutTarget);
         else
             measureReal(layoutTarget);
+
+        // Use Math.ceil() to make sure that if the content partially occupies
+        // the last pixel, we'll count it as if the whole pixel is occupied.
+        layoutTarget.measuredWidth = Math.ceil(layoutTarget.measuredWidth);
+        layoutTarget.measuredHeight = Math.ceil(layoutTarget.measuredHeight);
+        layoutTarget.measuredMinWidth = Math.ceil(layoutTarget.measuredMinWidth);
+        layoutTarget.measuredMinHeight = Math.ceil(layoutTarget.measuredMinHeight);
     }

     /**
@@ -1467,7 +1474,11 @@

         setRowCount(index - startIndex);
         setIndexInView(startIndex, endIndex);
-        layoutTarget.setContentSize(contentWidth + paddingLeft + paddingRight, llv.end(llv.length - 1) + paddingBottom);
+
+        // Make sure that if the content spans partially over a pixel to the right/bottom,
+        // the content size includes the whole pixel.
+        layoutTarget.setContentSize(Math.ceil(contentWidth + paddingLeft + paddingRight),
+                                    Math.ceil(llv.end(llv.length - 1) + paddingBottom));
     }

@@ -1570,7 +1581,11 @@

         setRowCount(visibleRows);
         setIndexInView(firstRowInView, lastRowInView);
-        layoutTarget.setContentSize(maxX + paddingRight, maxY + paddingBottom);
+
+        // Make sure that if the content spans partially over a pixel to the right/bottom,
+        // the content size includes the whole pixel.
+        layoutTarget.setContentSize(Math.ceil(maxX + paddingRight),
+                                    Math.ceil(maxY + paddingBottom));
     }

     /**
@@ -1677,7 +1692,8 @@
             setRowCount(0);
             setIndexInView(-1, -1);
             if (layoutTarget.numElements == 0)
-                layoutTarget.setContentSize(paddingLeft + paddingRight, paddingTop + paddingBottom);
+                layoutTarget.setContentSize(Math.ceil(paddingLeft + paddingRight),
+                                            Math.ceil(paddingTop + paddingBottom));
             return;
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 5825
Author:   hmuller@adobe.com
Date:     2009-03-31T22:02:45.612486Z

Log Message:
-----------
Bug fixes: virtualization, scrolling, layers.  These bug fixes were gating the virtualization implementation sign-off.

QE Notes:
Doc Notes:
Bugs: sdk-20141, sdk-19347, sdk-19984
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/VerticalLayout.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
@@ -909,11 +909,27 @@
         var eltCount:uint = layoutTarget.numElements;
         var measuredEltCount:int = (requestedRowCount != -1) ? requestedRowCount : eltCount;

+        if (measuredEltCount <= 0)
+        {
+            layoutTarget.measuredWidth = layoutTarget.measuredHeight = 0;
+            layoutTarget.measuredMinWidth = layoutTarget.measuredMinHeight = 0;
+            return;
+        }
+
         updateLLV(layoutTarget);
         if (variableRowHeight)
         {
-            var endIndex:int = Math.max(0, Math.min(measuredEltCount, eltCount) - 1);
-            layoutTarget.measuredHeight = llv.end(endIndex);
+            // Special case: fewer elements than requestedRowCount, so temporarily
+            // make llv.length == requestedRowCount.
+            var oldLength:int = -1;
+            if (measuredEltCount > llv.length)
+            {
+                oldLength = llv.length;
+                llv.length = measuredEltCount;
+            }
+            layoutTarget.measuredHeight = llv.end(measuredEltCount - 1);
+            if (oldLength != -1)
+                llv.length = oldLength;
         }
         else
         {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

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

--- frameworks/projects/advancedgrids/src/mx/collections/errors/ChildItemPendingError.as
+++ frameworks/projects/advancedgrids/src/mx/collections/errors/ChildItemPendingError.as
@@ -0,0 +1,66 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.collections.errors
+{
+
+/**
+ *  This error is thrown when retrieving a child item from a collection view
+ *  requires an asynchronous call. This error occurs when the data
+ *  is provided from a remote source and the data is not yet available locally.
+ *
+ *
If the receiver of this error needs notification when the requested item
+ *  becomes available (that is, when the asynchronous call completes), it must
+ *  use the addResponder() method and specify
+ *  an object that  supports the mx.rpc.IResponder
+ *  interface to respond when the item is available.
+ *  The mx.collections.ItemResponder class implements the
+ *  IResponder interface and supports a data property.

+ *
+ *  @see mx.collections.errors.ItemPendingError
+ *  @see mx.collections.ItemResponder
+ *  @see mx.rpc.IResponder
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class ChildItemPendingError extends ItemPendingError
+{
+    include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *
Called by the HierarchicalCollectionViewCursor when a request is made
+     *  for a child item that isn't local.

+     *
+     *  @param message A message providing information about the error cause.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function ChildItemPendingError(message:String)
+    {
+        super(message);
+    }
+}
+
+}


use host

use host

--- frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/LayoutChangeNotifier.as
+++ frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/LayoutChangeNotifier.as
@@ -19,6 +19,7 @@
 package org.apache.flex.html.beads.layouts
 {
 	import org.apache.flex.core.IBead;
+    import org.apache.flex.core.IBeadView;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
@@ -76,7 +77,7 @@
 			if (_value !== value)
             {
                 _value = value;
-                IEventDispatcher(_strand).dispatchEvent(new Event("layoutNeeded"));
+                IBeadView(_strand).host.dispatchEvent(new Event("layoutNeeded"));
             }
 		}


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

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableTextField.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.components.supportClasses
 {


Added a timeout to opening handshake

Added a timeout to opening handshake

--- flash/src/org/flashsocket/websocket/WebSocketClientHandler.as
+++ flash/src/org/flashsocket/websocket/WebSocketClientHandler.as
@@ -30,6 +30,8 @@
 	[Event(name = "close", type = "org.flashsocket.websocket.events.CloseEvent")]
 	[Event(name = "message", type = "org.flashsocket.websocket.events.MessageEvent")]
 	[Event(name = "exception", type = "org.flashsocket.websocket.events.ExceptionEvent")]
+	[Event(name = "readyStateChange", type = "org.flashsocket.websocket.events.ReadyStateEvent")]
+	[Event(name = "bufferEmpty", type = "flash.events.Event")]

 	public class WebSocketClientHandler extends EventDispatcher {
 		public static const WEBSOCKET_VERSION:String = "13";
@@ -65,6 +67,7 @@
 		private var _expectedChallengeResponse:String;
 		private var _fragment:WebSocketFrame;
 		private var _emptyBufferTimeout:int;
+		private var _openingHandshakeTimeout:int;
 		private var _closingHandshakeTimeout:int;

 		private var _secure:Boolean;
@@ -103,10 +106,10 @@
 			headers.push('Connection: Upgrade');
 			headers.push('Host: ' + _hostport);
 			headers.push('Origin: ' + _origin);
-			if (_cookie) {
+			if (_cookie.length) {
 				headers.push('Cookie: ' + _cookie);
 			}
-			if (_protocols) {
+			if (_protocols.length) {
 				headers.push('Sec-WebSocket-Protocol: ' + _protocols.join(", "));
 			}
 			headers.push('Sec-WebSocket-Key: ' + key);
@@ -116,6 +119,8 @@

 			_socket.writeUTFBytes(headers.join('\r\n'));
 			_socket.flush();
+
+			_openingHandshakeTimeout = setTimeout(closeConnection, 20000);
 		}

 		private function readHttpHeader(buffer:ByteArray):String {
@@ -570,6 +575,7 @@
 		private function closeConnection():void {
 			Debugger.log("closeConnection");

+			clearTimeout(_openingHandshakeTimeout);
 			clearTimeout(_closingHandshakeTimeout);

 			if (_socket.connected) {


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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.mobile
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 20267
Author:   smgilson@adobe.com
Date:     2011-02-10T16:21:16.560038Z

Log Message:
-----------
Add note to Application splashscreen properties about using the mobile swc.

Remove @playerversion Flash tags from Mobile content since it is AIR only

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/ContainerDestructionPolicy.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/BusyIndicator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewMenu.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ActionBarDefaultButtonAppearance.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/spark/src/spark/components/Application.as
+++ frameworks/projects/spark/src/spark/components/Application.as
@@ -715,6 +715,9 @@
      *  The spark.preloaders.SplashScreen class is the default preloader for Mobile Flex applications.
      *  This property cannot be set by ActionScript code; it must be set in MXML code.

      *
+     *
Note: You must add the frameworks\libs\mobile\mobilecomponents.swc to the
+     *  library path of the application to support the splash screen in a desktop application.

+     *
      *  @see spark.preloaders.SplashScreen
      *  @see #splashScreenScaleMode
      *  @see #splashScreenMinimumDisplayTime
@@ -774,6 +777,9 @@
      *  The spark.preloaders.SplashScreen class is the default preloader for Mobile Flex applications.
      *  This property cannot be set by ActionScript code; it must be set in MXML code.

      *
+     *
Note: You must add the frameworks\libs\mobile\mobilecomponents.swc to the
+     *  library path of the application to support the splash screen in a desktop application.

+     *
      *  @default "none"
      *  @see #splashScreenImage
      *  @see #splashScreenMinimumDisplayTime
@@ -797,6 +803,9 @@
      *  is set and the preloader property is set to spark.preloaders.SplashScreen.
      *  The spark.preloaders.SplashScreen class is the default preloader for Mobile Flex applications.
      *  This property cannot be set by ActionScript code; it must be set in MXML code.

+     *
+     *
Note: You must add the frameworks\libs\mobile\mobilecomponents.swc to the
+     *  library path of the application to support the splash screen in a desktop application.

      *
      *  @default 1000
      *


Transferred from the Adobe Open Source Subversion Repository

Revision: 7390
Author:   rfrishbe@adobe.com
Date:     2009-05-28T21:48:59.963797Z

Log Message:
-----------
Adding wireframe skins for VideoPlayer.

Also fixing up some other VideoPlayer bugs around fullscreen (going into normal mode wouldn't stop the timer to hide the controls correctly).  Fixed the pause() and stop() methods so that when we're not connected to a source to do nothing instead of RTEing.

Also updated the underlyign FLVPlayback control to the newest version.

Fixed some ASDoc issues in various files.

QE Notes: -
Doc Notes: -
Bugs: SDK-21435
Reviewer: Glenn
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerVolumeBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/VideoElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerFullScreenButtonSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerScrubBarThumbSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerScrubBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/WireframeClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/fl/video/DynamicStream.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerVolumeBarTrackSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerFullScreenFullScreenButtonSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerVolumeBarMuteButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/skins/default/VideoPlayerFullScreenFullScreenButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/fl/video/ComponentVersion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElementContainer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerScrubBarTrackSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerVolumeBarSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerVolumeBarThumbSkin.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerFullScreenButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/VideoPlayerPlayPauseButtonSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/VideoPlayer.as
+++ frameworks/projects/spark/src/spark/components/VideoPlayer.as
@@ -1647,7 +1647,7 @@
         // set the fullScreen variable back to false and remove this event listener
         fullScreen = false;
         stage.removeEventListener(FullScreenEvent.FULL_SCREEN, fullScreenEventHandler);
-        fullScreenHideControlTimer.reset();
+        fullScreenHideControlTimer.stop();
         fullScreenHideControlTimer = null;

         // remove the event listeners to hide the controls
@@ -1660,6 +1660,7 @@
         playerControls.visible = true;

         // reset it so we're re-included in the layout
+        // TODO (rfrishbe): run this by Evtim
         this.x = beforeFullScreenX;
         this.y = beforeFullScreenY;
         includeInLayout = true;


Transferred from the Adobe Open Source Subversion Repository

Revision: 7910
Author:   egeorgie@adobe.com
Date:     2009-06-17T01:41:55.138890Z

Log Message:
-----------
P-ARB changes:

* IGraphicElement sharedIndex -> DisplayObjectSharingMode
* ScrollUnit -> NavigationUnit
* LayoutBase.getDestinationIndex -> LayoutBase.getNavigationDestinationIndex, param order reversed!!!!
* mouseOpaque -> mouseEnabledWhereTransparent
* various other small renames and changes to non-public APIs

Doc Notes: None
Bugs: N/A
Reviewer: Deepa
tests: checkintests

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/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/GraphicElement.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/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexFXG2SWFTranscoder.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/InvalidatingSprite.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/IViewport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/supportClasses/TextGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/ScrollUnit.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/NavigationUnit.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/IGraphicElement.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/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VScrollBar.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/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/DisplayObjectSharingMode.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/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
@@ -20,7 +20,7 @@

 import spark.components.supportClasses.GroupBase;
 import spark.core.NavigationUnit;
-import spark.core.ScrollUnit;
+import spark.core.NavigationUnit;
 import spark.layouts.supportClasses.LayoutBase;
 import spark.layouts.supportClasses.LayoutElementHelper;
 import spark.layouts.supportClasses.LinearLayoutVector;
@@ -673,7 +673,7 @@
     /**
      * @private
      */
-    override public function clearCachedVirtualLayoutState():void
+    override public function clearVirtualLayoutCache():void
     {
         llv.clear();
     }
@@ -1212,7 +1212,7 @@
     /**
      *  @private
      */
-     override public function getDestinationIndex(navigationUnit:uint, currentIndex:int):int
+     override public function getNavigationDestinationIndex(currentIndex:int, navigationUnit:uint):int
      {
         if (!target || target.numElements < 1)
             return -1;
@@ -1266,7 +1266,7 @@
                     {
                         // currentIndex is visible, we can calculate where the scrollRect top
                         // would end up if we scroll by a page
-                        y = getVerticalScrollPositionDelta(ScrollUnit.PAGE_UP) + getScrollRect().top;
+                        y = getVerticalScrollPositionDelta(NavigationUnit.PAGE_UP) + getScrollRect().top;
                     }
                     else
                     {
@@ -1309,7 +1309,7 @@
                     {
                         // currentIndex is visible, we can calculate where the scrollRect bottom
                         // would end up if we scroll by a page
-                        y = getVerticalScrollPositionDelta(ScrollUnit.PAGE_DOWN) + getScrollRect().bottom;
+                        y = getVerticalScrollPositionDelta(NavigationUnit.PAGE_DOWN) + getScrollRect().bottom;
                     }
                     else
                     {
@@ -1334,7 +1334,7 @@
                 break;
             }

-            default: return super.getDestinationIndex(navigationUnit, currentIndex);
+            default: return super.getNavigationDestinationIndex(currentIndex, navigationUnit);
         }
         return Math.max(0, Math.min(maxIndex, newIndex));
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 17634
Author:   egeorgie@adobe.com
Date:     2010-09-09T18:16:16.842150Z

Log Message:
-----------
Fix SDK-27326 Changing layout and item renderer at the same time causes RTE in LinearLayoutVector

In this change:
- instantiate the LLV on demand, release when layout is reset

QE notes:  None
Doc notes: None
Bugs: SDK-27326
Reviewer: Hans
Tests run: full cyclone
Is noteworthy for integration: No

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

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

--- frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
@@ -122,7 +122,7 @@
      *  useVirtualLayout=true.   See updateLLV(), resetCachedVirtualLayoutState(),
      *  etc.
      */
-    private var llv:LinearLayoutVector = new LinearLayoutVector();
+    private var llv:LinearLayoutVector;

     //--------------------------------------------------------------------------
     //
@@ -185,17 +185,11 @@
     public function VerticalLayout():void
     {
         super();
-
+
         // Don't drag-scroll in the horizontal direction
         dragScrollRegionSizeHorizontal = 0;
-
-        // Virtualization defaults for cases
-        // where there are no items and no typical item.
-        // The llv defaults are the width/height of a Spark Button skin.
-        llv.defaultMinorSize = 71;
-        llv.defaultMajorSize = 22;
-    }
-
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Properties
@@ -237,7 +231,6 @@
             return;

         _gap = value;
-        llv.gap = value;
         invalidateTargetSizeAndDisplayList();
     }

@@ -835,7 +828,7 @@
      */
     override public function clearVirtualLayoutCache():void
     {
-        llv.clear();
+        llv = null;
     }

     /**
@@ -847,7 +840,7 @@
             return super.getElementBounds(index);

         var g:GroupBase = GroupBase(target);
-        if (!g || (index < 0) || (index >= g.numElements))
+        if (!g || (index < 0) || (index >= g.numElements) || !llv)
             return null;

         return llv.getBounds(index);
@@ -907,6 +900,8 @@
         var eltHeight:Number;
         if (useVirtualLayout)
         {
+            if (!llv)
+                return 0.0;
             eltY = llv.start(index);
             eltHeight = llv.getMajorSize(index);
         }
@@ -1031,6 +1026,12 @@
             setIndexInView(-1, -1);
             return;
         }
+
+        if (useVirtualLayout && !llv)
+        {
+            setIndexInView(-1, -1);
+            return;
+        }

         var i0:int;
         var i1:int;
@@ -1280,6 +1281,15 @@
      */
     private function updateLLV(layoutTarget:GroupBase):void
     {
+        if (!llv)
+        {
+            llv = new LinearLayoutVector();
+            // Virtualization defaults for cases
+            // where there are no items and no typical item.
+            // The llv defaults are the width/height of a Spark Button skin.
+            llv.defaultMinorSize = 71;
+            llv.defaultMajorSize = 22;
+        }
         var typicalElt:ILayoutElement = typicalLayoutElement;
         if (typicalElt)
         {
@@ -1299,7 +1309,7 @@
      */
      override public function elementAdded(index:int):void
      {
-         if ((index >= 0) && useVirtualLayout)
+         if (llv && (index >= 0) && useVirtualLayout)
             llv.insert(index);  // insert index parameter is uint
      }

@@ -1308,7 +1318,7 @@
      */
      override public function elementRemoved(index:int):void
      {
-        if ((index >= 0) && useVirtualLayout)
+        if (llv && (index >= 0) && useVirtualLayout)
             llv.remove(index);  // remove index parameter is uint
      }