Transferred from the Adobe Open Source Subversion Repository

Revision: 12832
Author:   jon.avila@ssbbartgroup.com
Date:     2009-12-11T03:09:49.270526Z

Log Message:
-----------
Updated to check for null subcomponents before using subcomponents as they may not be in skin or not in skin at current time.
QE notes: none
Doc notes: none
Bugs: n/a
Reviewer: Gordon
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/spark/src/spark/accessibility/VideoPlayerAccImpl.as

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

--- frameworks/projects/spark/src/spark/accessibility/VideoPlayerAccImpl.as
+++ frameworks/projects/spark/src/spark/accessibility/VideoPlayerAccImpl.as
@@ -218,32 +218,38 @@
         {
             case VIDEOPLAYER_PLAYPAUSEBUTTON:
             {
-                return videoPlayer.playPauseButton;
+                return videoPlayer.playPauseButton ?
+                       videoPlayer.playPauseButton : null;
             }

             case VIDEOPLAYER_SCRUBBAR:
             {
-                return videoPlayer.scrubBar;
+                return videoPlayer.scrubBar ?
+                       videoPlayer.scrubBar : null;
             }

             case VIDEOPLAYER_CURRENTTIMEDISPLAY:
             {
-                return videoPlayer.currentTimeDisplay;
+                return videoPlayer.currentTimeDisplay ?
+                       videoPlayer.currentTimeDisplay : null;
             }

             case VIDEOPLAYER_MUTEBUTTON:
             {
-                return videoPlayer.volumeBar;
+                return videoPlayer.volumeBar ?
+                       videoPlayer.volumeBar : null;
             }

             case VIDEOPLAYER_VOLUMEBAR:
             {
-                return videoPlayer.volumeBar.dropDown;
+                return (videoPlayer.volumeBar && videoPlayer.volumeBar.dropDown) ?
+                       videoPlayer.volumeBar.dropDown : null;
             }

             case VIDEOPLAYER_FULLSCREENBUTTON:
             {
-                return videoPlayer.fullScreenButton;
+                return videoPlayer.fullScreenButton ?
+                       videoPlayer.fullScreenButton : null;
             }
         }
 	}
@@ -350,25 +356,28 @@
             return accState;
         }

-        if (childID == VIDEOPLAYER_VOLUMEBAR &&
-        	!videoPlayer.volumeBar.isDropDownOpen)
+        if ((!videoPlayer.volumeBar) || (childID == VIDEOPLAYER_VOLUMEBAR &&
+        	!videoPlayer.volumeBar.isDropDownOpen))
         {
             accState |= AccConst.STATE_SYSTEM_UNAVAILABLE;
             return accState;
         }

-        if ((childID == VIDEOPLAYER_PLAYPAUSEBUTTON &&
-        	 !videoPlayer.playPauseButton.enabled) ||
-           (childID == VIDEOPLAYER_SCRUBBAR &&
-        	!videoPlayer.scrubBar.enabled) ||
+        if (((!videoPlayer.playPauseButton) ||
+           (childID == VIDEOPLAYER_PLAYPAUSEBUTTON &&
+           !videoPlayer.playPauseButton.enabled)) ||
+           ((!videoPlayer.scrubBar) || (childID == VIDEOPLAYER_SCRUBBAR &&
+           !videoPlayer.scrubBar.enabled)) ||
+           ((!videoPlayer.currentTimeDisplay) ||
            (childID == VIDEOPLAYER_CURRENTTIMEDISPLAY &&
-        	!videoPlayer.currentTimeDisplay.enabled) ||
-           (childID == VIDEOPLAYER_MUTEBUTTON &&
-        	!videoPlayer.volumeBar.enabled) ||
-           (childID == VIDEOPLAYER_VOLUMEBAR &&
-        	!videoPlayer.volumeBar.enabled) ||
+           !videoPlayer.currentTimeDisplay.enabled)) ||
+           ((!videoPlayer.volumeBar) || (childID == VIDEOPLAYER_MUTEBUTTON &&
+           !videoPlayer.volumeBar.enabled)) ||
+           ((!videoPlayer.volumeBar) || (childID == VIDEOPLAYER_VOLUMEBAR &&
+           !videoPlayer.volumeBar.enabled)) ||
+           ((!videoPlayer.fullScreenButton) ||
            (childID == VIDEOPLAYER_FULLSCREENBUTTON &&
-        	!videoPlayer.fullScreenButton.enabled))
+           !videoPlayer.fullScreenButton.enabled)))
         {
            accState |= AccConst.STATE_SYSTEM_UNAVAILABLE;
            return accState;
@@ -451,13 +460,15 @@

 		if (master.enabled)
 		{
-			if (childID == VIDEOPLAYER_PLAYPAUSEBUTTON)
+            if (childID == VIDEOPLAYER_PLAYPAUSEBUTTON &&
+                videoPlayer.playPauseButton)
 			{
 				clickEvent = new MouseEvent(MouseEvent.CLICK);
-				videoPlayer.playPauseButton.dispatchEvent(clickEvent);
+                videoPlayer.playPauseButton.dispatchEvent(clickEvent);
 			}

-			else if (childID == VIDEOPLAYER_MUTEBUTTON)
+            else if (childID == VIDEOPLAYER_MUTEBUTTON &&
+                     videoPlayer.volumeBar)
             {
 				videoPlayer.volumeBar.muted = !videoPlayer.volumeBar.muted;

@@ -466,7 +477,8 @@
 				videoPlayer.volumeBar.dispatchEvent(mutedChangeEvent);
 			}

-			else if (childID == VIDEOPLAYER_FULLSCREENBUTTON)
+            else if (childID == VIDEOPLAYER_FULLSCREENBUTTON &&
+                     videoPlayer.fullScreenButton)
 			{
 				clickEvent = new MouseEvent(MouseEvent.CLICK);
 				videoPlayer.fullScreenButton.dispatchEvent(clickEvent);
@@ -488,10 +500,11 @@

 		var accValue:String = "";

-		if (childID == VIDEOPLAYER_SCRUBBAR)
+        if (childID == VIDEOPLAYER_SCRUBBAR &&
+            videoPlayer.currentTimeDisplay)
   	   	    accValue = videoPlayer.currentTimeDisplay.text;

-		else if (childID == VIDEOPLAYER_VOLUMEBAR)
+        else if (childID == VIDEOPLAYER_VOLUMEBAR && videoPlayer.volumeBar)
             accValue = String(Math.floor(videoPlayer.volumeBar.value * 100));

 		return accValue;
@@ -513,31 +526,36 @@
             {
 	            case VIDEOPLAYER_PLAYPAUSEBUTTON:
                 {
-			        videoPlayer.playPauseButton.setFocus();
+                    if (videoPlayer.playPauseButton)
+    			        videoPlayer.playPauseButton.setFocus();
 			 	    break;
 			    }

 			    case VIDEOPLAYER_SCRUBBAR:
                 {
-			     	videoPlayer.scrubBar.setFocus();
+                    if (videoPlayer.scrubBar)
+    			     	videoPlayer.scrubBar.setFocus();
 			     	break;
 			    }

 			    case VIDEOPLAYER_MUTEBUTTON:
                 {
-			     	 videoPlayer.volumeBar.setFocus();
+                     if (videoPlayer.volumeBar)
+			     	     videoPlayer.volumeBar.setFocus();
 			     	 break;
 			    }

 			    case VIDEOPLAYER_VOLUMEBAR:
                 {
-			    	 videoPlayer.volumeBar.setFocus();
+                     if (videoPlayer.volumeBar)
+    			    	 videoPlayer.volumeBar.setFocus();
 			    	 break;
 			    }

 			    case VIDEOPLAYER_FULLSCREENBUTTON:
                 {
-			    	 videoPlayer.fullScreenButton.setFocus();
+                     if (videoPlayer.fullScreenButton)
+    			    	 videoPlayer.fullScreenButton.setFocus();
 			         break;
 			    }
 		    }
@@ -587,6 +605,9 @@

 		    case VIDEOPLAYER_PLAYPAUSEBUTTON:
             {
+                if (!videoPlayer.playPauseButton)
+                    break;
+
                 label = videoPlayer.playPauseButton.accessibilityProperties ?
 						videoPlayer.playPauseButton.accessibilityName :
 						"";
@@ -612,6 +633,9 @@
 		    }
 		    case VIDEOPLAYER_SCRUBBAR:
             {
+                if (!videoPlayer.scrubBar)
+                    break;
+
                 label = videoPlayer.scrubBar.accessibilityName ?
 						videoPlayer.scrubBar.accessibilityName :
                 		resourceManager.getString(
@@ -621,6 +645,9 @@

 		    case VIDEOPLAYER_CURRENTTIMEDISPLAY:
             {
+                if (!videoPlayer.currentTimeDisplay)
+                    break;
+
 		        label = videoPlayer.currentTimeDisplay.text + "/" +
                 		videoPlayer.durationDisplay.text;
 		        break;
@@ -628,6 +655,11 @@

             case VIDEOPLAYER_MUTEBUTTON:
             {
+                if (!videoPlayer.volumeBar)
+                    break;
+                if (!videoPlayer.volumeBar.muteButton)
+                    break;
+
                 label =
 					videoPlayer.volumeBar.muteButton.accessibilityProperties ?
 					videoPlayer.volumeBar.muteButton.accessibilityName :
@@ -655,6 +687,9 @@

             case VIDEOPLAYER_VOLUMEBAR:
             {
+                if (!videoPlayer.volumeBar)
+                    break;
+
                 label = videoPlayer.volumeBar.accessibilityName ?
 						videoPlayer.volumeBar.accessibilityName :
                 		resourceManager.getString(
@@ -664,6 +699,8 @@

             case VIDEOPLAYER_FULLSCREENBUTTON:
             {
+                if (!videoPlayer.fullScreenButton)
+                    break;
                 label = videoPlayer.fullScreenButton.accessibilityName ?
 						videoPlayer.fullScreenButton.accessibilityName :
                 		resourceManager.getString(


missing header

missing header

--- frameworks/projects/Mobile/asjs/src/org/apache/flex/mobile/ViewManagerBase.as
+++ frameworks/projects/Mobile/asjs/src/org/apache/flex/mobile/ViewManagerBase.as
@@ -1,3 +1,21 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.mobile
 {
 	import org.apache.flex.core.UIBase;


Transferred from the Adobe Open Source Subversion Repository

Revision: 11070
Author:   rfrishbe@adobe.com
Date:     2009-10-21T23:56:10.882948Z

Log Message:
-----------
This has two changes: one is adding index to IItemRenderer and the other is adding handleHighlightBackground to ItemRenderer.  Adding an index property should speed things up a little bit, and it'll help fix a bug with renderers that have index-dependent drawing, like when alternatingItemColors is set.  handleHighlightBackground is a new shortcut property that will automatically handle drawing the background for selection/highlight in an item renderer.  For now, handleHighlightBackground defaults to false, so it shouldn’t affect anything.

The two new properties still need to be PARBed, and the handleHighlightBackround property in particular may change names and default values.

QE notes: We'll need to add new tests for this
Doc notes: We'll need some new documentation around the handleHighlightBackground property and the suggested approach for custom item renderers.
Bugs: SDK-22908
Reviewer: Deepa, Evtim
Tests run: checkintests, Mustella List, DataGroup, SkinnableDataContainer, ButtonBar, DropDownList
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBarButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/IItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DataGroup.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as
@@ -20,6 +20,7 @@

 import spark.components.DataRenderer;
 import spark.components.IItemRenderer;
+import spark.components.ResizeMode;

 use namespace mx_internal;

@@ -99,12 +100,7 @@
             // translate these colors into uints
             styleManager.getColorNames(alternatingColors);

-            if (parent is GroupBase)
-                idx = GroupBase(parent).getElementIndex(this);
-            else
-                idx = parent.getChildIndex(this);
-
-            return alternatingColors[idx % alternatingColors.length];
+            return alternatingColors[index % alternatingColors.length];
         }

         return getStyle("contentBackgroundColor");
@@ -148,6 +144,88 @@
     //  Public Properties
     //
     //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  handleHighlightBackground
+    //----------------------------------
+
+    /**
+     *  @private
+     *  storage for the handleHighlightBackground property
+     */
+    private var _handleHighlightBackground:Boolean = false;
+
+    /**
+     *  Whether the item renderer should handle drawing the
+     *  selection/highlight background.
+     *
+     *
If set to true, the background for
+     *  the item renderer will automatically be drawn, and it
+     *  will depend on the styles that are set (contentBackgroundColor,
+     *  alternatingItemColor, rollOverColor, selectionColor) as
+     *  well as what state the item renderer is in (normal,
+     *  selected, or hovered).

+     *
+     *  @default false
+     */
+    public function get handleHighlightBackground():Boolean
+    {
+        return _handleHighlightBackground;
+    }
+
+    /**
+     *  @private
+     */
+    public function set handleHighlightBackground(value:Boolean):void
+    {
+        if (_handleHighlightBackground == value)
+            return;
+
+        _handleHighlightBackground = value;
+
+        if (_handleHighlightBackground)
+        {
+            redrawRequested = true;
+            super.$invalidateDisplayList();
+        }
+    }
+
+    //----------------------------------
+    //  index
+    //----------------------------------
+
+    /**
+     *  @private
+     *  storage for the index property
+     */
+    private var _index:int;
+
+    /**
+     *  @inheritDoc
+     *
+     *  @default false
+     */
+    public function get index():int
+    {
+        return _index;
+    }
+
+    /**
+     *  @private
+     */
+    public function set index(value:int):void
+    {
+        if (value == _index)
+            return;
+
+        _index = value;
+        dispatchEvent(new Event("contentBackgroundColorChanged"));
+        if (handleHighlightBackground)
+        {
+            redrawRequested = true;
+            super.$invalidateDisplayList();
+        }
+    }

     //----------------------------------
     //  labelDisplay
@@ -225,7 +303,12 @@
         if (value != _selected)
         {
             _selected = value;
-            setCurrentState(getCurrentRendererState(), playTransitions);
+            setCurrentState(getCurrentRendererState(), playTransitions);
+            if (handleHighlightBackground)
+            {
+                redrawRequested = true;
+                super.$invalidateDisplayList();
+            }
         }
     }

@@ -408,16 +491,72 @@
         {
             conditionalEventDispatch("contentBackgroundColorChanged");
         }
-
-        if (allStyles || styleName == "rollOverColor")
-        {
-            conditionalEventDispatch("rollOverColorChanged");
-        }
-
-        if (allStyles || styleName == "selectionColor")
-        {
-            conditionalEventDispatch("selectionColorChanged");
-        }
+    }
+
+    /**
+     *  @private
+     */
+    override protected function renderBackgroundFill():void
+    {
+        // if handleHighlightBackground is set to true, we always
+        // draw a background and don't need to worry about mouseEnabledWhereTransparent.
+        // However, if it's false, then we should just let super.renderBackgroundFill()
+        // do its job.
+        if (!handleHighlightBackground)
+        {
+            super.renderBackgroundFill();
+            return;
+        }
+
+        // TODO (rfrishbe): Would be good to remove this duplicate code with the
+        // super.renderBackgroundFill() version
+        var w:Number = (resizeMode == ResizeMode.SCALE) ? measuredWidth : unscaledWidth;
+        var h:Number = (resizeMode == ResizeMode.SCALE) ? measuredHeight : unscaledHeight;
+
+        if (isNaN(w) || isNaN(h))
+            return;
+
+        graphics.clear();
+
+        var backgroundColor:uint;
+
+        if (selected)
+            backgroundColor = getStyle("selectionColor");
+        else if (hovered)
+            backgroundColor = getStyle("rollOverColor");
+        else
+        {
+            var alternatingColors:Array = getStyle("alternatingItemColors");
+
+            if (alternatingColors && alternatingColors.length > 0)
+            {
+                // translate these colors into uints
+                styleManager.getColorNames(alternatingColors);
+
+                backgroundColor = alternatingColors[index % alternatingColors.length];
+            }
+
+            backgroundColor = getStyle("contentBackgroundColor");
+        }
+        graphics.beginFill(backgroundColor, 1);
+
+        if (layout && layout.useVirtualLayout)
+            graphics.drawRect(horizontalScrollPosition, verticalScrollPosition, w, h);
+        else
+        {
+            const tileSize:int = 4096;
+            const maxX:int = Math.round(Math.max(w, contentWidth));
+            const maxY:int = Math.round(Math.max(h, contentHeight));
+            for (var x:int = 0; x < maxX; x += tileSize)
+                for (var y:int = 0; y < maxY; y += tileSize)
+                {
+                    var tileWidth:int = Math.min(maxX - x, tileSize);
+                    var tileHeight:int = Math.min(maxY - y, tileSize);
+                    graphics.drawRect(x, y, tileWidth, tileHeight);
+                }
+        }
+
+        graphics.endFill();
     }

     //--------------------------------------------------------------------------
@@ -460,7 +599,12 @@
         if (!anyButtonDown(event))
         {
             hovered = true;
-            setCurrentState(getCurrentRendererState(), playTransitions);
+            setCurrentState(getCurrentRendererState(), playTransitions);
+            if (handleHighlightBackground)
+            {
+                redrawRequested = true;
+                super.$invalidateDisplayList();
+            }
         }
     }

@@ -471,7 +615,12 @@
     protected function itemRenderer_rollOutHandler(event:MouseEvent):void
     {
         hovered = false;
-        setCurrentState(getCurrentRendererState(), playTransitions);
+        setCurrentState(getCurrentRendererState(), playTransitions);
+        if (handleHighlightBackground)
+        {
+            redrawRequested = true;
+            super.$invalidateDisplayList();
+        }
     }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3786
Author:   chaase@adobe.com
Date:     2008-10-21T19:13:31.927962Z

Log Message:
-----------
Fix for bug where we would set up the start state of an effect prior to any startDelay. This meant, in some cases, that we would grab values that were out of date when the effect finally kicked in (because they had been changed by other effects running in the meantime).

The root problem was that the new effects pushed the startDelay functionality into the underlying Animation class. But that object needs the starting values when it is constructed, so it is not possible to grab the values later, after the startDelay has expired.

The fix was to revert to the Flex3 model of handling startDelay, where the effect instance itself will delay before calling play(). This delays grabbing the start values until the time when the effect actually needs to begin.

QE Notes: None
Doc Notes: None
Bugs: SDK-17694
Reviewer: Glenn
tests: checkintests, Mustella (Effects, gumbo/effects, ListDataEffects)

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
@@ -11,24 +11,24 @@

 package mx.effects.effectClasses
 {
+import flash.events.Event;
 import flash.events.TimerEvent;
 import flash.geom.Point;
 import flash.utils.Timer;

+import mx.components.Group;
 import mx.components.baseClasses.GroupBase;
-import mx.components.Group;
+import mx.core.Container;
+import mx.core.UIComponent;
 import mx.effects.Animation;
+import mx.effects.EffectInstance;
+import mx.effects.EffectManager;
 import mx.effects.PropertyValuesHolder;
 import mx.effects.interpolation.IEaser;
 import mx.effects.interpolation.IInterpolator;
 import mx.events.AnimationEvent;
 import mx.layout.ILayoutItem;
 import mx.layout.LayoutItemFactory;
-
-import mx.core.Container;
-import mx.core.UIComponent;
-import mx.effects.EffectInstance;
-import mx.effects.EffectManager;
 import mx.managers.LayoutManager;
 import mx.styles.IStyleClient;

@@ -253,18 +253,31 @@
      */
     override public function startEffect():void
     {
-        // This method is a copy of that in EffectInstance, but removes
-        // the startDelay functionality, as that is handled by the
-        // underlying Animation object for AnimateInstance
-
-        // Also removes EffectManager.effectStarted() to avoid use of
+        // This override removes EffectManager.effectStarted() to avoid use of
         // mx_internal. New effects are not currently triggerable, so
         // this should not matter

         if (target is UIComponent)
         {
             UIComponent(target).effectStarted(this);
-        }
+        }
+        if (startDelay > 0)
+        {
+            // We only need a simple Timer for this, but running an
+            // Animation will synchronize this delayed effect with other
+            // effects in the system
+            var anim:Animation = new Animation(0, 1, startDelay);
+            anim.addEventListener(AnimationEvent.ANIMATION_END, delayedPlay);
+            anim.play();
+        }
+        else
+        {
+            play();
+        }
+    }
+
+    private function delayedPlay(event:AnimationEvent):void
+    {
         play();
     }

@@ -276,6 +289,8 @@
      */
     override public function play():void
     {
+        super.play();
+
         if (!propertyValuesList || propertyValuesList.length == 0)
         {
             // nothing to do; at least schedule the effect to end after
@@ -383,7 +398,6 @@
         animation.repeatDelay = repeatDelay;
         animation.repeatBehavior = repeatBehavior;
         animation.easer = easer;
-        animation.startDelay = startDelay;

         animation.play();

@@ -428,13 +442,6 @@
         // play() functionality (the setup and playing of the Animation object)
         // into startEffect(), calling play() from here, and not overriding
         // play() at all.
-
-        // Call EffectInstace.play() here instead of from our play() function
-        // because we actually start playing immediately, and leave it to the
-        // Animation to pause on startDelay. By waiting until the animation
-        // starts to call play(), we delay the EffectInstance sending out the
-        // EFFECT_START events until any start delays are over
-        super.play();

         if (autoRemoveTarget)
             addDisappearingTarget();


This shouldn't be here.

This shouldn't be here.

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

--- src/as/com/threerings/flash/MediaContainer.as
+++ src/as/com/threerings/flash/MediaContainer.as
@@ -260,17 +260,6 @@
     }

     /**
-     * Get the application domain being used by this media, or null if
-     * none or not applicable.
-     */
-    public function getApplicationDomain () :ApplicationDomain
-    {
-        return (_media is Loader)
-            ? (_media as Loader).contentLoaderInfo.applicationDomain
-            : null;
-    }
-
-    /**
      * Unload the media we're displaying, clean up any resources.
      *
      * @param completely if true, we're going away and should stop


Found the streaming bug:
I was looking up streamers by java name, but passing in the actionscript
name. This was only affecting Object[]'s containing String elements
due to the addition of String to Translations.

Previously, 'java.lang.String' wasn't getting translated into the
actionscript equivalent, so it just worked. Two bugs can cancel each other out.

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

--- src/as/com/threerings/io/ObjectInputStream.as
+++ src/as/com/threerings/io/ObjectInputStream.as
@@ -51,15 +51,16 @@
                 code *= -1;

                 // read in the class metadata
-                var cname :String = Translations.getFromServer(readUTF());
-//                log.debug("read cname: " + cname);
-                var streamer :Streamer = Streamer.getStreamerByJavaName(cname);
+                var jname :String = readUTF();
+//                log.debug("read jname: " + jname);
+                var streamer :Streamer = Streamer.getStreamerByJavaName(jname);
                 if (streamer == Streamer.BAD_STREAMER) {
-                    log.warning("OMG, cannot stream " + cname);
+                    log.warning("OMG, cannot stream " + jname);
                     return null;
                 }
 //                log.debug("Got streamer (" + streamer + ")");

+                var cname :String = Translations.getFromServer(jname);
                 cmap = new ClassMapping(code, cname, streamer);
                 _classMap[code] = cmap;
                 if (DEBUG) log.debug(DEBUG_ID +


Transferred from the Adobe Open Source Subversion Repository

Revision: 7879
Author:   dloverin@adobe.com
Date:     2009-06-16T14:08:15.137863Z

Log Message:
-----------
WindowedApplication/Window P-ARB changes.

WindowedApplication/Window
•             Rename resizeAffordance to resizeAffordanceWidth
•             Change resizeAffordanceWidth from a property to a style
•             Remove showGripper property
•             Remove showTitleBar property
•             Make override functions @private
•             SkinState metadata: rename normalActive to normalAndInactive
•             SkinState metadata: rename disabledInactive to disabledAndInactive

TitleBar
•             SkinState metadata: rename maximized to normalAndMaximized
•             SkinState metadata: rename disabledMaximized to disabledAndMaximized

QE Notes: Expect testing failures do to the changes.
Doc Notes: none.
Bugs: none
Reviewer: Glenn
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/WindowedApplicationSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/TitleBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/MacTitleBarSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/windowClasses/TitleBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/skins/spark/FlexChromeSkin.mxml</path>

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

--- frameworks/projects/airspark/src/spark/components/WindowedApplication.as
+++ frameworks/projects/airspark/src/spark/components/WindowedApplication.as
@@ -50,6 +50,25 @@
 import spark.primitives.supportClasses.TextGraphicElement;

 use namespace mx_internal;
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+/**
+ *  Provides a margin of error around the application's border so a resize
+ *  and be more easily started. A click on the application is considered a
+ *  click on the application's border if the click occurs with the resizeAffordance
+ *  number of pixels from the outside edge of the application's window.
+ *
+ *  @default 6
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="resizeAffordanceWidth", type="Number", format="length", inherit="no")]

 //--------------------------------------
 //  Events
@@ -277,7 +296,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[SkinState("normalActive")]
+[SkinState("normalAndInactive")]

 /**
  *  The application is disabled and inactive.
@@ -287,7 +306,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[SkinState("disabledInactive")]
+[SkinState("disabledAndInactive")]

 //--------------------------------------
 //  Other metadata
@@ -459,16 +478,6 @@
     private var invokesPending:Boolean = true;

     /**
-     *  @private
-     */
-    private var lastDisplayState:String = StageDisplayState.NORMAL;
-
-    /**
-     *  @private
-     */
-    private var shouldShowTitleBar:Boolean;
-
-    /**
     *  @private
     */
     private var oldX:Number;
@@ -653,6 +662,7 @@
     }

     /**
+     *  @private
      *  Specifies the maximum height of the application's window.
      *
      *  @default dependent on the operating system and the AIR systemChrome setting.
@@ -700,6 +710,7 @@
     }

     /**
+     *  @private
      *  Specifies the maximum width of the application's window.
      *
      *  @default dependent on the operating system and the AIR systemChrome setting.
@@ -735,6 +746,7 @@
     [Bindable("windowComplete")]

     /**
+     *  @private
      *  Specifies the minimum height of the application's window.
      *
      *  @default dependent on the operating system and the AIR systemChrome setting.
@@ -782,6 +794,7 @@
     [Bindable("windowComplete")]

     /**
+     *  @private
      *  Specifies the minimum width of the application's window.
      *
      *  @default dependent on the operating system and the AIR systemChrome setting.
@@ -1230,22 +1243,6 @@
     }

-    //---------------------------------
-    //  resizeAffordance
-    //---------------------------------
-
-    /**
-     *  Provides a margin of error around the application's border so a resize
-     *  and be more easily started. A click on the application is considered a
-     *  click on the application's border if the click occurs with the resizeAffordance
-     *  number of pixels from the outside edge of the application's window.
-     *
-     *  @langversion 3.0
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public var resizeAffordance:Number = 6;
-
     //----------------------------------
     //  nativeApplication
     //----------------------------------
@@ -1260,57 +1257,6 @@
     public function get nativeApplication():NativeApplication
     {
         return NativeApplication.nativeApplication;
-    }
-
-    //----------------------------------
-    //  showGripper
-    //----------------------------------
-
-    /**
-     *  @private
-     *  Storage for the showGripper property.
-     */
-    private var _showGripper:Boolean = true;
-
-    /**
-     *  @private
-     */
-    private var showGripperChanged:Boolean = true;
-
-    /**
-     *  If true, the gripper button is visible.
-     *
-     *
On Mac OS X a window with systemChrome
-     *  set to "standard"
-     *  always has an operating system gripper, so this property is ignored
-     *  in that case.
-     *  On other systems, the gripper button only appears when using
-     *  the Flex Chrome, not the system chrome.

-     *
-     *  @default true
-     *
-     *  @langversion 3.0
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get showGripper():Boolean
-    {
-        return _showGripper;
-    }
-
-    /**
-     *  @private
-     */
-    public function set showGripper(value:Boolean):void
-    {
-        if (_showGripper == value)
-            return;
-
-        _showGripper = value;
-        showGripperChanged = true;
-
-        invalidateProperties();
-        invalidateDisplayList();
     }

      //---------------------------------
@@ -1357,50 +1303,6 @@
         _showStatusBar = value;
         showStatusBarChanged = true;

-        invalidateProperties();
-        invalidateDisplayList();
-    }
-
-    //----------------------------------
-    //  showTitleBar
-    //----------------------------------
-
-    /**
-     *  @private
-     *  Storage for the showTitleBar property.
-     */
-    private var _showTitleBar:Boolean = true;
-
-    /**
-     *  @private
-     */
-    private var showTitleBarChanged:Boolean = true;
-
-    /**
-     *  If true, the window's title bar is visible.
-     *
-     *  @default true
-     *
-     *  @langversion 3.0
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function get showTitleBar():Boolean
-    {
-        return _showTitleBar;
-    }
-
-    /**
-     *  @private
-     */
-    public function set showTitleBar(value:Boolean):void
-    {
-        if (_showTitleBar == value)
-            return;
-
-        _showTitleBar = value;
-        showTitleBarChanged = true;
-
         invalidateProperties();
         invalidateDisplayList();
     }
@@ -1750,17 +1652,6 @@
             dispatchEvent(new Event("menuChanged"));
         }

-        if (showTitleBarChanged)
-        {
-            if (titleBar)
-            {
-                titleBar.visible = _showTitleBar;
-                titleBar.includeInLayout = _showTitleBar;
-            }
-
-            showTitleBarChanged = false;
-        }
-
         if (titleChanged)
         {
             if (!nativeWindow.closed)
@@ -1785,14 +1676,6 @@
             if (statusText)
                 statusText.text = status;
             statusChanged = false;
-        }
-
-        if (showGripperChanged)
-        {
-            if (gripper)
-                gripper.visible = _showGripper;
-
-            showGripperChanged = false;
         }

         if (toMax)
@@ -2174,6 +2057,7 @@
     //--------------------------------------------------------------------------

     /**
+     *  @private
      *  Returns the name of the state to be applied to the skin. For example, a
      *  Button component could return the String "up", "down", "over", or "disabled"
      *  to specify the state.
@@ -2195,7 +2079,7 @@
         if (nativeWindow.active)
             return enabled ? "normal" : "disabled";
         else
-            return enabled ? "normalInactive" : "disabledInactive";
+            return enabled ? "normalAndInactive" : "disabledAndInactive";

     }

@@ -2268,8 +2152,9 @@
         }

         var hitTestResults:String = NativeWindowResize.NONE;
-        var borderWidth:int = resizeAffordance;
-        var cornerSize:int = resizeAffordance * 2;
+        var resizeAfforanceWidth:Number = getStyle("resizeAffordanceWidth");
+        var borderWidth:int = resizeAfforanceWidth;
+        var cornerSize:int = resizeAfforanceWidth * 2;

         if (event.stageY < borderWidth)
         {
@@ -2532,8 +2417,6 @@
         systemManager.stage.nativeWindow.addEventListener(
            NativeWindowBoundsEvent.RESIZE, window_resizeHandler);

-        systemManager.stage.addEventListener(
-            FullScreenEvent.FULL_SCREEN, stage_fullScreenHandler);
     }

     /**
@@ -2617,26 +2500,6 @@
     /**
      *  @private
      */
-    private function stage_fullScreenHandler(event:FullScreenEvent):void
-    {
-        //work around double events
-        if (stage.displayState != lastDisplayState)
-        {
-            lastDisplayState = stage.displayState;
-            if (stage.displayState == StageDisplayState.FULL_SCREEN ||
-                stage.displayState == StageDisplayState.FULL_SCREEN_INTERACTIVE)
-            {
-                shouldShowTitleBar = showTitleBar;
-                showTitleBar = false;
-            }
-            else
-                showTitleBar = shouldShowTitleBar;
-        }
-    }
-
-    /**
-     *  @private
-     */
     private function window_closeEffectEndHandler(event:Event):void
     {
         removeEventListener(EffectEvent.EFFECT_END, window_closeEffectEndHandler);


Fix mustella DateSpinner test RTEs.  Handle the case where the font isn't embedded correctly and the label length is 0.  The DataSpinner will be missing text but it should not RTE.  Currently this is the case for the zh_CN tests since we don't have an open source font.

git-svn-id: f8d5f742b420a6a114b58659a4f85f335318e53c@1434491 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as
+++ frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as
@@ -1254,8 +1254,12 @@
     private function getLongestLabel(list:IList):Object
     {
         var idx:int = -1;
-        var maxWidth:Number = 0;
         var labelWidth:Number;
+
+        // Even if all 0 because font not embedded correctly, want to return 0 as the longest
+        // so the typicalItem is non-null.
+        var maxWidth:Number = -1;
+
         for (var i:int = 0; i < list.length; i++)
         {
             // note: measureText() measures UITextField while our labels will be
@@ -1271,7 +1275,8 @@
         if (idx != -1)
             return list.getItemAt(idx);

-        return null;
+        // The case where the list is empty.  This shouldn't happen.
+        return {};
     }

     // set textAlign on list based on position, listType, or typicalItem content type:


Transferred from the Adobe Open Source Subversion Repository

Revision: 12327
Author:   smgilson@adobe.com
Date:     2009-12-01T18:17:23.194369Z

Log Message:
-----------
ASDoc updates in preparation for localization

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RadioButtonGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Label.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/core/IDeferredContentOwner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>

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

--- frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as
@@ -61,6 +61,8 @@

 /**
  *  The alpha of the focus ring for this component.
+ *
+ *  @default 0.55
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -132,14 +134,44 @@
  *  <s:SkinnableDataContainer
  *    Properties
  *    autoLayout="true"
- *    clipAndEnableScrolling="false"
  *    dataProvider="null"
- *    horizontalScrollPosition="null"
  *    itemRenderer="null"
  *    itemRendererFunction="null"
  *    layout="VerticalLayout"
  *    typicalItem="null"
- *    verticalScrollPosition="null"
+ *
+ *    Styles
+ *    alignmentBaseline="useDominantBaseline"
+ *    baselineShift="0.0"
+ *    cffHinting="horizontal_stem"
+ *    color="0"
+ *    digitCase="default"
+ *    digitWidth="default"
+ *    direction="LTR"
+ *    dominantBaseline="auto"
+ *    focusAlpha="0.55"
+ *    focusColor=""
+ *    focusThickness="2"
+ *    fontFamily="Times New Roman"
+ *    fontLookup="device"
+ *    fontSize="12"
+ *    fontStyle="normal"
+ *    fontWeight="normal"
+ *    justificationRule="auto"
+ *    justificationStyle="auto"
+ *    kerning="auto"
+ *    ligatureLevel="common"
+ *    lineHeight="120%"
+ *    lineThrough="false"
+ *    locale="en"
+ *    renderingMode="CFF"
+ *    textAlign="start"
+ *    textAlignLast="start"
+ *    textAlpha="1"
+ *    textJustify="inter_word"
+ *    trackingLeft="0"
+ *    trackingRight="0"
+ *    typographicCase="default"
  *
  *    Events
  *    rendererAdd="No default"
@@ -314,6 +346,13 @@

     /**
      *  @copy spark.components.DataGroup#dataProvider
+     *
+     *  @see #itemRenderer
+     *  @see #itemRendererFunction
+     *  @see mx.collections.IList
+     *  @see mx.collections.ArrayCollection
+     *  @see mx.collections.ArrayList
+     *  @see mx.collections.XMLListCollection
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


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

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

 package mx.collections
 {


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

--- frameworks/projects/rpc/src/mx/messaging/messages/MessagePerformanceUtils.as
+++ frameworks/projects/rpc/src/mx/messaging/messages/MessagePerformanceUtils.as
@@ -0,0 +1,433 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 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.messaging.messages
+{
+    import mx.messaging.messages.MessagePerformanceInfo;
+
+    /**
+     * The MessagePerformanceUtils utility class is used to retrieve various metrics about
+     * the sizing and timing of a message sent from a client to the server and its
+     * response message, as well as pushed messages from the server to the client.
+     * Metrics are gathered when corresponding properties on the channel used are enabled:
+     * <record-message-times> denotes capturing of timing information,
+     * <record-message-sizes> denotes capturing of sizing information.
+     *
+     *
You can then use methods of this utility class to retrieve various performance information
+     * about the message that you have just received.

+     *
+     *
When these metrics are enabled an instance of this class should be created from
+     * a response, acknowledgement, or message handler via something like:

+     * @example
+     *

+     *      var mpiutil:MessagePerformanceUtils = new MessagePerformanceUtils(event.message);
+     *

+     *
+     */
+    public class MessagePerformanceUtils
+    {
+        /**
+         * @private
+         *
+         * Information about the original message sent out by the client
+         */
+        public var mpii:MessagePerformanceInfo;
+
+        /**
+         * @private
+         *
+         * Information about the response message sent back to the client
+         */
+        public var mpio:MessagePerformanceInfo;
+
+        /**
+         * @private
+         *
+         * If this is a pushed message, information about the original message
+         * that caused the push
+         */
+        public var mpip:MessagePerformanceInfo;
+
+        /**
+         * @private
+         *
+         * Header for MPI of original message sent by client
+         */
+        public static const MPI_HEADER_IN:String = "DSMPII";
+
+        /**
+         * @private
+         *
+         * Header for MPI of response message sent to the client
+         */
+        public static const MPI_HEADER_OUT:String = "DSMPIO";
+
+        /**
+         * @private
+         *
+         * Header for MPI of a message that caused a pushed message
+         */
+        public static const MPI_HEADER_PUSH:String = "DSMPIP";
+
+
+        //--------------------------------------------------------------------------
+        //
+        // Constructor
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         * Constructor
+         *
+         * Creates an MPUtils instance with information from the MPI headers
+         * of the passed in message
+         *
+         * @param message The message whose MPI headers will be used in retrieving
+         * MPI information
+         */
+        public function MessagePerformanceUtils(message:Object):void
+        {
+            super();
+
+            this.mpii=message.headers[MPI_HEADER_IN] as MessagePerformanceInfo;
+            this.mpio=message.headers[MPI_HEADER_OUT] as MessagePerformanceInfo;
+
+            if (pushedMessageFlag)
+                this.mpip = message.headers[MPI_HEADER_PUSH] as MessagePerformanceInfo;
+
+            // it is possible that if not all participants have mpi enabled we might be missing parts here
+            if (mpio == null || (mpii==null && mpip==null))
+            {
+                throw new Error("Message is missing MPI headers.  Verify that all participants have it enabled.");
+            }
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Public Methods
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         * Time between this client sending a message and receiving a response
+         * for it from the server
+         *
+         * @return Total time in milliseconds
+         */
+        public function get totalTime():Number
+        {
+            if (mpii == null)
+                return 0;
+            else
+                return mpio.receiveTime - mpii.sendTime;
+        }
+
+        /**
+         * Time between server receiving the client message and either the time
+         * the server responded to the received message or had the pushed message ready
+         * to be sent to the receiving client.
+         *
+         * @return Server processing time in milliseconds
+         */
+        public function get serverProcessingTime():Number
+        {
+            if (pushedMessageFlag)
+            {
+            	return mpip.serverPrePushTime - mpip.receiveTime;
+            }
+            else
+            {
+            	return mpio.sendTime - mpii.receiveTime;
+            }
+        }
+
+        /**
+         * Time between server receiving the client message and the server beginning to push
+         * messages out to other clients as a result of the original message.
+         *
+         * @return Server pre-push processing time in milliseconds
+         */
+        public function get serverPrePushTime():Number
+        {
+            if (mpii == null)
+                return 0;
+            if (mpii.serverPrePushTime == 0)
+                return serverProcessingTime;
+
+            return mpii.serverPrePushTime - mpii.receiveTime;
+        }
+
+        /**
+         * Time spent in the adapter associated with the destination for this message before
+         * either the response to the message was ready or the message had been prepared
+         * to be pushed to the receiving client.
+         *
+         * @return Server adapter processing time in milliseconds
+         */
+		public function get serverAdapterTime():Number
+		{
+			if (pushedMessageFlag)
+			{
+				if (mpip == null)
+					return 0;
+				if (mpip.serverPreAdapterTime == 0 || mpip.serverPostAdapterTime == 0)
+					return 0;
+
+				return mpip.serverPostAdapterTime - mpip.serverPreAdapterTime;
+			}
+			else
+			{
+				if (mpii == null)
+					return 0;
+				if (mpii.serverPreAdapterTime == 0 || mpii.serverPostAdapterTime == 0)
+					return 0;
+
+				return mpii.serverPostAdapterTime - mpii.serverPreAdapterTime;
+			}
+		}
+
+        /**
+         * Time spent in a module invoked from the adapter associated with the destination for this message
+         * but external to it, before either the response to the message was ready or the message had been
+         * prepared to be pushed to the receiving client.
+         *
+         * @return Server adapter-external processing time in milliseconds
+         */
+		public function get serverAdapterExternalTime():Number
+		{
+			if (pushedMessageFlag)
+			{
+				if (mpip == null)
+					return 0;
+				if (mpip.serverPreAdapterExternalTime == 0 || mpip.serverPostAdapterExternalTime == 0)
+					return 0;
+
+				return mpip.serverPostAdapterExternalTime - mpip.serverPreAdapterExternalTime;
+			}
+			else
+			{
+				if (mpii == null)
+					return 0;
+				if (mpii.serverPreAdapterExternalTime == 0 || mpii.serverPostAdapterExternalTime == 0)
+					return 0;
+
+				return mpii.serverPostAdapterExternalTime - mpii.serverPreAdapterExternalTime;
+			}
+		}
+
+        /**
+         * @return Time that the message waited on the server after it was ready to be pushed to the client
+         * but had not yet been polled for.
+         */
+		public function get serverPollDelay():Number
+		{
+			if (mpip == null)
+				return 0;
+			if (mpip.serverPrePushTime == 0 || mpio.sendTime == 0)
+				return 0;
+
+			return mpio.sendTime - mpip.serverPrePushTime;
+		}
+
+        /**
+         * Server processing time spent outside of the adapter associated with the destination of this message
+         *
+         * @return Non-adapter server processing time in milliseconds
+         */
+		public function get serverNonAdapterTime():Number
+		{
+			return serverProcessingTime - serverAdapterTime;
+		}
+
+        /**
+         * The network round trip time for a client message and the server response to it,
+         * calculated by the difference between total time and server processing time
+         *
+         * @return Network round trip time in milliseconds
+         */
+        public function get networkRTT():Number
+        {
+        	if (!pushedMessageFlag)
+            	return totalTime - serverProcessingTime;
+            else
+            	return 0;
+        }
+
+        /**
+         * Timestamp in milliseconds since epoch of when the server sent a response message back
+         * to the client
+         *
+         * @return Timestamp in milliseconds since epoch
+         */
+        public function get serverSendTime():Number
+        {
+            return  mpio.sendTime;
+        }
+
+        /**
+         * Timestamp in milliseconds since epoch of when the client received response message from
+         * the server
+         *
+         * @return Timestamp in milliseconds since epoch
+         */
+        public function get clientReceiveTime():Number
+        {
+            return mpio.receiveTime;
+        }
+
+        /**
+         * The size of the original client message as measured during deserialization by the server
+         * endpoint
+         *
+         * @return Message size in Bytes
+         */
+        public function get messageSize():int
+        {
+            if (mpii == null)
+                return 0;
+            else
+                return mpii.messageSize;
+        }
+
+        /**
+         * The size of the response message sent to the client by the server as measured during serialization
+         * at the server endpoint
+         *
+         * @return Message size in Bytes
+         */
+        public function get responseMessageSize():int
+        {
+            return mpio.messageSize;
+        }
+
+        /**
+         * Returns true if message was pushed to the client and is not a response to a message that
+         * originated on the client
+         *
+         * @return true if this message was pushed to the client and is not a response to a message that
+         * originated on the client
+         */
+        public function get pushedMessageFlag():Boolean
+        {
+            return mpio.pushedFlag;
+        }
+
+        /**
+         * Only populated in the case of a pushed message, this is the time between the push causing client
+         * sending its message and the push receving client receiving it.  Note that the two clients'
+         * clocks must be in sync for this to be meaningful.
+         *
+         * @return Total push time in milliseconds
+         */
+        public function get totalPushTime():Number
+        {
+            return clientReceiveTime - originatingMessageSentTime  - pushedOverheadTime;
+        }
+
+        /**
+         * Only populated in the case of a pushed message, this is the network time between
+         * the server pushing the message and the client receiving it.  Note that the server
+         * and client clocks must be in sync for this to be meaningful.
+         *
+         * @return One way server push time in milliseconds
+         */
+        public function get pushOneWayTime():Number
+        {
+            return  clientReceiveTime - serverSendTime;
+        }
+
+        /**
+         * Only populated in the case of a pushed message, timestamp in milliseconds since epoch of
+         * when the client that caused a push message sent its message.
+         *
+         * @return Timestamp in milliseconds since epoch
+         */
+        public function get originatingMessageSentTime():Number
+        {
+            return mpip.sendTime;
+        }
+
+        /**
+         * Only populated in the case of a pushed message, size in Bytes of the message that originally
+         * caused this pushed message
+         *
+         * @return Pushed causer message size in Bytes
+         */
+        public function get originatingMessageSize():Number
+        {
+            return mpip.messageSize;
+        }
+
+        /**
+         * Method returns a summary of all information available in MPI.  A suggested use of this
+         * is something like,
+         * @example
+         * <listing version="3.0">
+         *      var mpiutil:MessagePerformanceUtils = new MessagePerformanceUtils(message);
+         *      Alert.show(mpiutil.prettyPrint(), "MPI Output", Alert.NONMODAL);
+         * </listing>
+         *
+         * @return String containing a summary of all information available in MPI
+         */
+        public function prettyPrint():String
+        {
+            var alertString:String = new String("");
+            if (messageSize != 0)
+                alertString +="Original message size(B): " + messageSize + "\n";
+            if (responseMessageSize != 0)
+                alertString +="Response message size(B): " + responseMessageSize + "\n";
+            if (totalTime != 0)
+                alertString +="Total time (s): " + (totalTime / 1000) + "\n";
+            if (networkRTT != 0)
+                alertString +="Network Roundtrip time (s): " + (networkRTT / 1000) + "\n";
+            if (serverProcessingTime != 0)
+                alertString +="Server processing time (s): " + (serverProcessingTime / 1000) + "\n";
+      		if (serverAdapterTime != 0)
+      			alertString +="Server adapter time (s): " + (serverAdapterTime / 1000) + "\n";
+      		if (serverNonAdapterTime != 0)
+      			alertString +="Server non-adapter time (s): " + (serverNonAdapterTime / 1000) + "\n"
+      		if (serverAdapterExternalTime != 0)
+      			alertString +="Server adapter external time (s): " + (serverAdapterExternalTime / 1000) + "\n";
+
+            if (pushedMessageFlag)
+            {
+                alertString += "PUSHED MESSAGE INFORMATION:\n";
+                if (totalPushTime != 0)
+                    alertString += "Total push time (s): " + (totalPushTime / 1000) + "\n";
+                if (pushOneWayTime != 0)
+                    alertString += "Push one way time (s): " + (pushOneWayTime / 1000) + "\n";
+                if (originatingMessageSize != 0)
+                    alertString += "Originating Message size (B): " + originatingMessageSize + "\n";
+      			if (serverPollDelay != 0)
+      				alertString +="Server poll delay (s): " + (serverPollDelay / 1000) + "\n";
+            }
+
+            return alertString;
+        }
+
+        //--------------------------------------------------------------------------
+        //
+        //  Private Methods
+        //
+        //--------------------------------------------------------------------------
+
+        /**
+         * @private
+         *
+         * Overhead time in milliseconds for processing of the push causer message
+         */
+        private function get pushedOverheadTime():Number
+        {
+            return mpip.overheadTime;
+        }
+
+    }
+}


Taking out the SELECT special case for CommandComplete (it's not special and fed the wrong branch.

--- driver/src/main/flex/org/postgresql/febe/message/CommandComplete.as
+++ driver/src/main/flex/org/postgresql/febe/message/CommandComplete.as
@@ -25,9 +25,7 @@
         public function read(input:ICDataInput):void {
             commandTag = input.readCString();
             var match:Array;
-            if (SELECT_CMD.test(commandTag)) {
-                // nothing to do here
-            } else if (INSERT_CMD.test(commandTag)) {
+            if (INSERT_CMD.test(commandTag)) {
                 match = commandTag.match(INSERT_CMD);
                 if (match.length != 3) {
                      badTag(commandTag);


set explicitWidth/Height so that initial view doesn't think it is sized to content

--- frameworks/projects/Core/as/src/org/apache/flex/core/Application.as
+++ frameworks/projects/Core/as/src/org/apache/flex/core/Application.as
@@ -143,9 +143,9 @@
             {
                 initialView.applicationModel =  model;
                 if (isNaN(initialView.explicitWidth))
-                    initialView.setWidth(stage.stageWidth);
+                    initialView.width = stage.stageWidth;
                 if (isNaN(initialView.explicitHeight))
-                    initialView.setHeight(stage.stageHeight);
+                    initialView.height = stage.stageHeight;
         	    this.addElement(initialView);
                 var bgColor:Object = ValuesManager.valuesImpl.getValue(this, "background-color");
                 if (bgColor != null)


Transferred from the Adobe Open Source Subversion Repository

Revision: 784
Author:   shodgson@adobe.com
Date:     2008-03-12T06:03:27.486454Z

Log Message:
-----------
Merge revision 755 from branches/3.0.x to trunk.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/AbstractProducer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/messages/CommandMessage.as</path>
<path kind="file" action="M">/flex/sdk/branches/3.0.x/frameworks/projects/rpc/src/mx/messaging/AbstractProducer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/messages/CommandMessage.as
+++ frameworks/projects/rpc/src/mx/messaging/messages/CommandMessage.as
@@ -33,43 +33,43 @@
     /**
      *  This operation is used to subscribe to a remote destination.
      */
-	public static const SUBSCRIBE_OPERATION:uint = 0;
+    public static const SUBSCRIBE_OPERATION:uint = 0;

     /**
      *  This operation is used to unsubscribe from a remote destination.
      */
-	public static const UNSUBSCRIBE_OPERATION:uint = 1;
+    public static const UNSUBSCRIBE_OPERATION:uint = 1;

     /**
      *  This operation is used to poll a remote destination for pending,
      *  undelivered messages.
      */
-	public static const POLL_OPERATION:uint = 2;
+    public static const POLL_OPERATION:uint = 2;

     /**
      *  This operation is used by a remote destination to sync missed or cached messages
      *  back to a client as a result of a client issued poll command.
      */
-	public static const CLIENT_SYNC_OPERATION:uint = 4;
+    public static const CLIENT_SYNC_OPERATION:uint = 4;

     /**
      *  This operation is used to test connectivity over the current channel to
      *  the remote endpoint.
      */
-	public static const CLIENT_PING_OPERATION:uint = 5;
-
+    public static const CLIENT_PING_OPERATION:uint = 5;
+
     /**
      *  This operation is used to request a list of failover endpoint URIs
      *  for the remote destination based on cluster membership.
      */
-	public static const CLUSTER_REQUEST_OPERATION:uint = 7;
-
-	/**
-	 * This operation is used to send credentials to the endpoint so that
-	 * the user can be logged in over the current channel.
-	 * The credentials need to be Base64 encoded and stored in the body
-	 * of the message.
-	 */
+    public static const CLUSTER_REQUEST_OPERATION:uint = 7;
+
+    /**
+     * This operation is used to send credentials to the endpoint so that
+     * the user can be logged in over the current channel.
+     * The credentials need to be Base64 encoded and stored in the body
+     * of the message.
+     */
     public static const LOGIN_OPERATION:uint = 8;

     /**
@@ -101,28 +101,33 @@
      *  This operation is used to indicate that a channel has disconnected.
      */
     public static const DISCONNECT_OPERATION:uint = 12;
-
+
+    /**
+     *  This operation is used to trigger a ChannelSet to connect.
+     */
+    public static const TRIGGER_CONNECT_OPERATION:uint = 13;
+
     /**
      *  This is the default operation for new CommandMessage instances.
      */
-	public static const UNKNOWN_OPERATION:uint = 10000;
-
-	/**
-	 *  The server message type for authentication commands.
-	 */
-	public static const AUTHENTICATION_MESSAGE_REF_TYPE:String = "flex.messaging.messages.AuthenticationMessage";
-
-	/**
-	 *  Subscribe commands issued by a Consumer pass the Consumer's selector
-	 *  expression in this header.
-	 */
-	public static const SELECTOR_HEADER:String = "DSSelector";
-
-	/**
-	 *  Durable JMS subscriptions are preserved when an unsubscribe message
-	 *  has this parameter set to true in its header.
-	 */
-	public static const PRESERVE_DURABLE_HEADER:String = "DSPreserveDurable";
+    public static const UNKNOWN_OPERATION:uint = 10000;
+
+    /**
+     *  The server message type for authentication commands.
+     */
+    public static const AUTHENTICATION_MESSAGE_REF_TYPE:String = "flex.messaging.messages.AuthenticationMessage";
+
+    /**
+     *  Subscribe commands issued by a Consumer pass the Consumer's selector
+     *  expression in this header.
+     */
+    public static const SELECTOR_HEADER:String = "DSSelector";
+
+    /**
+     *  Durable JMS subscriptions are preserved when an unsubscribe message
+     *  has this parameter set to true in its header.
+     */
+    public static const PRESERVE_DURABLE_HEADER:String = "DSPreserveDurable";

     /**
      * Header to indicate that the Channel needs the configuration from the
@@ -194,15 +199,15 @@
     //
     //--------------------------------------------------------------------------

-	/**
-	 *  Constructs an instance of a CommandMessage with an empty body and header
-	 *  and a default operation of UNKNOWN_OPERATION.
-	 */
-	public function CommandMessage()
-	{
-		super();
-		operation = UNKNOWN_OPERATION;
-	}
+    /**
+     *  Constructs an instance of a CommandMessage with an empty body and header
+     *  and a default operation of UNKNOWN_OPERATION.
+     */
+    public function CommandMessage()
+    {
+        super();
+        operation = UNKNOWN_OPERATION;
+    }

     //--------------------------------------------------------------------------
     //
@@ -210,12 +215,12 @@
     //
     //--------------------------------------------------------------------------

-	/**
+    /**
      *  Provides access to the operation/command for the CommandMessage.
      *  Operations indicate how this message should be processed by the remote
      *  destination.
      */
-	public var operation:uint;
+    public var operation:uint;

     //--------------------------------------------------------------------------
     //
@@ -296,8 +301,9 @@
             operationTexts[SUBSCRIPTION_INVALIDATE_OPERATION] = "subscription invalidate";
             operationTexts[MULTI_SUBSCRIBE_OPERATION] = "multi-subscribe";
             operationTexts[DISCONNECT_OPERATION] = "disconnect";
+            operationTexts[TRIGGER_CONNECT_OPERATION] = "trigger connect";
             operationTexts[UNKNOWN_OPERATION] = "unknown";
-	    }
+        }
         var result:* = operationTexts[op];
         return result == undefined ? op.toString() : String(result);
     }


position/duration should also be updated in case JS interface is not available

--- src/org/mangui/chromeless/ChromelessPlayer.as
+++ src/org/mangui/chromeless/ChromelessPlayer.as
@@ -120,9 +120,9 @@
         };

         private function _mediaTimeHandler(event : HLSEvent) : void {
-            if (ExternalInterface.available) {
-                _duration = event.mediatime.duration;
-                _media_position = event.mediatime.position;
+            _duration = event.mediatime.duration;
+            _media_position = event.mediatime.position;
+            if (ExternalInterface.available) {
                 ExternalInterface.call("onPosition", event.mediatime.position, event.mediatime.duration, event.mediatime.live_sliding);
             }

@@ -180,7 +180,7 @@
         };

         private function _getDuration() : Number {
-          return _duration;
+            return _duration;
         };

         private function _getPosition() : Number {


Transferred from the Adobe Open Source Subversion Repository

Revision: 17450
Author:   rfrishbe@adobe.com
Date:     2010-08-23T21:43:35.884406Z

Log Message:
-----------
- Modified the Scroller algorithm used in calculating the scrollAnchorPoint (the point where the scroll starts).  Now instead of using the mouseEvent coordinates where the threshold was crossed, we now calculate the threshold and use that instead.  In practice, a user probably wouldn't notice this much (unless there was a big delay between MouseMoves for some reason). However, this calculation is the right thing to do, and will help produce more consistent results with regards to QE and programatically faking the mouse events.

- Removed a FIXME that no longer applied since MobileIconItemRenderer.subText was already renamed to MobileIconItemRenderer.message.

- Modified GetTimerUtil for QE to use fakeTime instead of getTimerFunction().

QE notes: Modified GetTimerUtil so it now uses fakeTime instead of getTimerFunction()
Doc notes: None
Bugs: SDK-27546
Reviewer: Evtim
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/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/GetTimerUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileIconItemRenderer.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as
@@ -641,7 +641,6 @@
      */
     public function get messageField():String
     {
-        // FIXME (rfrishbe): PARB this property name b/c confusing with "TextField" the component
         return _messageField;
     }


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as
@@ -26,7 +26,6 @@
 import mx.core.UITextField;
 import mx.core.UITextFormat;
 import mx.core.mx_internal;
-import mx.events.FlexEvent;
 import mx.graphics.BitmapFillMode;
 import mx.graphics.BitmapScaleMode;
 import mx.styles.CSSStyleDeclaration;
@@ -214,8 +213,6 @@
             _imageCache.enableCaching = true;
             _imageCache.maxCacheEntries = 100;
         }
-
-        addEventListener(FlexEvent.MEASURED_SIZE_PRELIMINARY, measuredSizePreliminaryHandler);
     }

     //--------------------------------------------------------------------------
@@ -1635,37 +1632,7 @@

         super.validateSize(recursive);
     }
-
-    /**
-     *  @private
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    override public function setEstimatedSize(estimatedWidth:Number = NaN,
-                                              estimatedHeight:Number = NaN,
-                                              invalidateSizeAllowed:Boolean = true):void
-    {
-        var oldcw:Number = this.estimatedWidth;
-        var oldch:Number = this.estimatedHeight;
-
-        super.setEstimatedSize(estimatedWidth, estimatedHeight, invalidateSizeAllowed);
-
-        var sameWidth:Boolean = isNaN(estimatedWidth) && isNaN(oldcw) || estimatedWidth == oldcw;
-        var sameHeight:Boolean = isNaN(estimatedHeight) && isNaN(oldch) || estimatedHeight == oldch;
-        if (!(sameHeight && sameWidth))
-        {
-            if (!isNaN(explicitWidth) &&
-                !isNaN(explicitHeight))
-                return;
-
-            if (invalidateSizeAllowed)
-                invalidateSize();
-        }
-    }
-
+
     /**
      *  @private
      */
@@ -1754,9 +1721,11 @@

         if (hasMessage)
         {
+            // FIXME: (aharui)
+            var estimatedWidth:Number = 480;
             // now we need to measure messageDisplay's height.  Unfortunately, this is tricky and
             // is dependent on messageDisplay's width
-            // if we have an estimated width, use it to calculate messageDisplay's width.
+            // if we have an explicit width, use it to calculate messageDisplay's width.
             // Otherwise, we'll keep it the same width as it was before
             if (!isNaN(estimatedWidth))
                 messageDisplay.width = estimatedWidth - paddingAndGapWidth - decoratorWidth - myIconWidth;
@@ -1783,55 +1752,6 @@

         measuredMinWidth = myMeasuredMinWidth;
         measuredMinHeight = Math.max(itemMinimumHeight, myMeasuredMinHeight);
-    }
-
-    /**
-     *  @private
-     *  We override the setLayoutBoundsSize to determine whether to perform
-     *  text reflow. This is a convenient place, as the layout passes NaN
-     *  for a dimension not constrained to the parent.
-     */
-    override public function setLayoutBoundsSize(width:Number,
-                                                 height:Number,
-                                                 postLayoutTransform:Boolean = true):void
-    {
-        var newEstimates:Boolean = false;
-        var cw:Number = estimatedWidth;
-        var ch:Number = estimatedHeight;
-        var oldcw:Number = cw;
-        var oldch:Number = ch;
-        // we got lied to, probably the constraints weren't accurate or
-        // couldn't be computed
-        if (!isNaN(width))
-        {
-            if (isNaN(estimatedWidth) || width != estimatedWidth)
-            {
-                cw = width;
-                newEstimates = true;
-            }
-        }
-        // we got lied to, probably the constraints weren't accurate or
-        // couldn't be computed
-        if (!isNaN(height))
-        {
-            if (isNaN(estimatedHeight) || height != estimatedHeight)
-            {
-                ch = height;
-                newEstimates = true;
-            }
-        }
-        if (newEstimates)
-        {
-            setEstimatedSize(cw, ch);
-
-            // re-measure with the new estimated size
-            UIComponentGlobals.layoutManager.validateClient(this, true);
-
-            // set estimated size back to what it was
-            setEstimatedSize(oldcw, oldch, false);
-        }
-
-        super.setLayoutBoundsSize(width, height, postLayoutTransform);
     }

     /**
@@ -2031,17 +1951,6 @@
         }
     }

-    /**
-     *  @private
-     */
-    private function measuredSizePreliminaryHandler(event:FlexEvent):void
-    {
-        // block the event if there is no icon to display
-        // otherwise the size will not get cached
-        if (iconDisplay && iconDisplay.source == null)
-            event.stopImmediatePropagation();
-    }
-
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 5545
Author:   jimurphy@adobe.com
Date:     2009-03-25T19:00:52.330680Z

Log Message:
-----------
1st pass of rename according to the spec http://opensource.adobe.com/wiki/display/flexsdk/Dropping+the+Fx+Prefix

Flex now requires CSS Style declarations to declare @namespace rules and disambiguate between halo and spark components using CSS 3 namespace prefixes on type selectors. At compile time, this namespace information will be used to map type names to qualified ActionScript class names. At runtime, type selectors are matched on qualified ActionScript class name (for example mx.controls.Button rather than just Button). Flex 3 applications must be compiled with -compatibility-version=3.0.0 to get unqualified CSS type selector behavior.

QE: Yes, this build may help in updating test cases to use the new namespaces and class names.
Dev: Not yet
Doc: Not yet

Modified Paths:
--------------
748 paths were modified

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
@@ -9,7 +9,7 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package mx.effects.effectClasses
+package spark.effects.supportClasses
 {
 import flash.events.TimerEvent;
 import flash.utils.Timer;
@@ -19,14 +19,13 @@
 import mx.core.IVisualElementContainer;
 import mx.core.UIComponent;
 import mx.core.mx_internal;
-import mx.effects.Animation;
-import mx.effects.AnimationProperty;
+import spark.effects.animation.Animation;
 import mx.effects.EffectInstance;
-import mx.effects.interpolation.IEaser;
-import mx.effects.interpolation.IInterpolator;
-import mx.effects.interpolation.NumberInterpolator;
-import mx.events.AnimationEvent;
-import mx.layout.LayoutElementFactory;
+import spark.effects.easing.IEaser;
+import spark.effects.interpolation.IInterpolator;
+import spark.effects.interpolation.NumberInterpolator;
+import spark.events.AnimationEvent;
+import spark.layout.supportClasses.LayoutElementFactory;
 import mx.resources.IResourceManager;
 import mx.resources.ResourceManager;
 import mx.styles.IStyleClient;
@@ -43,20 +42,20 @@
 [ResourceBundle("sparkEffects")]

 /**
- * The FxAnimateInstance class implements the instance class for the
- * FxAnimate effect. Flex creates an instance of this class when
- * it plays a FxAnimate effect; you do not create one yourself.
+ * The AnimateInstance class implements the instance class for the
+ * Animate effect. Flex creates an instance of this class when
+ * it plays a Animate effect; you do not create one yourself.
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-public class FxAnimateInstance extends EffectInstance
+public class AnimateInstance extends EffectInstance
 {
     public var animation:Animation;

-    public function FxAnimateInstance(target:Object)
+    public function AnimateInstance(target:Object)
     {
         super(target);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 8883
Author:   chaase@adobe.com
Date:     2009-07-28T23:05:56.967720Z

Log Message:
-----------
Fixes RTE seeking into Sequences. Seeking (setting playheadTime) to or past the end of the Sequence would not properly end the effect and would set it up for failure on future playing.

QE notes: None
Doc notes: None
Bugs: sdk-22367
Reviewer: Jason
Tests run: checkintests, Mustella (spark/effects, mx/effects/Sequence)
Is noteworthy for integration: No

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as

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

--- frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as
+++ frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as
@@ -187,6 +187,9 @@
             // appropriate child effects
             if (activeEffectQueue && activeEffectQueue.length > 0)
             {
+                // If we end up skipping past all child effects, then
+                // finish this Sequence effect when we're done
+                var finishWhenDone:Boolean = true;
                 var cumulativeDuration:Number = 0;
                 for (var i:int = 0; i < activeEffectQueue.length; ++i)
                 {
@@ -196,6 +199,7 @@
                         instances[0].actualDuration;
                     if (value < endTime)
                     {
+                        finishWhenDone = false;
                         // These are the effects that should be active
                         // simply seek to the right time in the effect
                         if (currentSetIndex != i)
@@ -210,31 +214,45 @@
                     }
                     else
                     {
+                        // setting endEffectCalled works around a side-effect
+                        // of the onEffectEnd() handler where it will
+                        // automatically launch the next child effect
+                        endEffectCalled = true;
+
                         // if we're seeking past the currently playing
                         // instance, end it
                         if (currentSetIndex == i)
                         {
                             for (var j:int = 0; j < instances.length; j++)
-                            {
-                                // setting endEffectCalled works around a side-effect
-                                // of the onEffectEnd() handler where it will
-                                // automatically launch the next child effect
-                                endEffectCalled = true;
                                 instances[j].end();
-                                endEffectCalled = false;
-                            }
-                            currentSetIndex = -1;
                         }
                         else
                         {
+                            // more child effects to go: set up currentSet vars
+                            // to point to the appropriate ones
+                            currentSetIndex = i;
+                            var nextInstances:Array = activeEffectQueue[currentSetIndex];
+                            currentSet = [];
+                            var childEffect:EffectInstance;
+                            for (var l:int = 0; l < nextInstances.length; l++)
+                            {
+                                childEffect = nextInstances[l];
+                                currentSet.push(childEffect);
+                            }
                             // Skip past effects by playing them with no duration
-                            for (var l:int = 0; l < instances.length; l++)
+                            for (l = 0; l < instances.length; l++)
                                 instances[l].playWithNoDuration();
                         }
+                        endEffectCalled = false;
                     }
                     cumulativeDuration = endTime;
                 }
-
+                if (finishWhenDone)
+                {
+                    finishRepeat();
+                    currentSetIndex = -1;
+                }
+
             }
         }
         // Seek in the SequenceInstance itself, which advances the
@@ -411,11 +429,13 @@

             // Call end on the currently playing set
             var currentInstances:Array = queueCopy[currentSetIndex];
-            var currentCount:int = currentInstances.length;
-
-            for (var i:int = 0; i < currentCount; i++)
-            {
-                currentInstances[i].end();
+            if (currentInstances)
+            {
+                var currentCount:int = currentInstances.length;
+                for (var i:int = 0; i < currentCount; i++)
+                {
+                    currentInstances[i].end();
+                }
             }

             var n:int = queueCopy.length;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

Bugs: SDK-20606

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
@@ -39,7 +39,7 @@
  *  @playerversion AIR 1.5
  *  @productversion Flex 4
  */
-[Style(name="symbolColor", type="uint", format="Color", inherit="yes")]
+[Style(name="symbolColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
  *  Number of milliseconds after the first pageevent


Transferred from the Adobe Open Source Subversion Repository

Revision: 121
Author:   jszeto@adobe.com
Date:     2008-01-08T08:08:26.009559Z

Log Message:
-----------
Flex SDK Bug Fix

SDK-13812 - Scale grid behavior on Button, etc. to reopen

Changed IBorder references to IRectangularBorder.

Bugs: SDK-13812
QA: Yes
Doc: No

[ private comments below ]

Code Review: Alex Harui

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ToolTip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/VideoDisplay.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/PopUpButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/TextInput.as</path>

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

--- frameworks/projects/mx/src/mx/controls/VideoDisplay.as
+++ frameworks/projects/mx/src/mx/controls/VideoDisplay.as
@@ -18,8 +18,8 @@
 import flash.media.Camera;
 import mx.controls.videoClasses.VideoPlayer;
 import mx.core.EdgeMetrics;
-import mx.core.IBorder;
 import mx.core.IFlexDisplayObject;
+import mx.core.IRectangularBorder;
 import mx.core.IUIComponent;
 import mx.core.UIComponent;
 import mx.core.mx_internal;
@@ -417,8 +417,8 @@
      */
     public function get borderMetrics():EdgeMetrics
     {
-        return (border && border is IBorder) ?
-                IBorder(border).borderMetrics : EdgeMetrics.EMPTY;
+		return (border && border is IRectangularBorder) ?
+                IRectangularBorder(border).borderMetrics : EdgeMetrics.EMPTY;
     }

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