Transferred from the Adobe Open Source Subversion Repository

Revision: 5220
Author:   chaase@adobe.com
Date:     2009-03-10T15:55:06.496289Z

Log Message:
-----------
New Transform effects to handle correctly doing Move, Rotate, and Scale operations simultaneously. Also, added keyframe capabilities to new effects system (necessary for the transform effects, shouldn't affect operation of other effects). Fixed various issues with effects/transition infrastructure as necessary. Added transform utility functions to UIComponent, AdvancedLayoutFeatures, and GraphicElement.

QE Notes: This will break existing new effects tests due to changes in core Animation and AnimationEvent classes, QE is disabling them for now and will add them back in as changes are made.
Doc Notes: None
Bugs:
Reviewer: Ely (transform utilities) and Jason (the rest)
tests: checkintests, Mustella tests/Effects, tests/ListDataEffects

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/TransformOffsets.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/KeyFrame.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/PropertyChanges.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate3D.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/effectClasses</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateColorInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimate.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotate3DInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxRotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxRotateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/baseClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxMoveInstance.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/effectClasses/AnimateTransformInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/AnimationEvent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate3D.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/AnimationProperty.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove3D.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateInstance.as
@@ -22,6 +22,8 @@
 import mx.effects.Animation;
 import mx.effects.AnimationProperty;
 import mx.effects.EffectInstance;
+import spark.effects.KeyFrame;
+import spark.effects.MotionPath;
 import mx.effects.interpolation.IEaser;
 import mx.effects.interpolation.IInterpolator;
 import mx.effects.interpolation.NumberInterpolator;
@@ -220,7 +222,7 @@
     {
         super.playReversed = value;

-        if (animation)
+        if (value && animation)
             animation.reverse();

         reverseAnimation = value;
@@ -398,58 +400,52 @@
             return;
         }

-        isStyleMap = new Array(animationProperties.length);
-
-        // These two temporary arrays will hold the values passed into the
-        // Animation to be interpolated between during the animation. The order
-        // of the values in these arrays must match the order of the property
-        // names in the animationProperties array, as we will assume during update
-        // events that the interpolated values in the array are in that same order.
-        var fromVals:Array = [];
-        var toVals:Array = [];
-        for (var i:int = 0; i < animationProperties.length; ++i)
-        {
-            var holder:AnimationProperty = AnimationProperty(animationProperties[i]);
-            var property:String = holder.property;
-            var fromValue:Object = null;
-            var toValue:Object = null;
-
-            if (!property || (property == ""))
-                throw new Error(resourceManager.getString("sparkEffects", "illegalPropValue", [property]));
-
-            setupStyleMapEntry(property);
-
-            // For any invalid value, set the animating value to null
-            // null is a trigger for finalizing the value later on
-            fromValue = isValidValue(holder.valueFrom) ? holder.valueFrom : null;
-            toValue = isValidValue(holder.valueTo) ? holder.valueTo : null;
-            if (toValue === null && propertyChanges &&
-                propertyChanges.end[property] !== undefined)
-                toValue = propertyChanges.end[property];
-
-            if (animationProperties.length > 1)
-            {
-                fromVals.push(fromValue);
-                toVals.push(toValue);
-            }
-        }
+        isStyleMap = new Array(animationProperties.length);

         // TODO (chaase): avoid setting up animations on properties whose
         // from/to values are the same. Not worth the cycles, but also want
         // to avoid triggering any side effects when we're not actually changing
-        // values
-        if (animationProperties.length > 1)
-        {
-            // Create the single Animation that will interpolate all properties
-            // simultaneously by interpolating the elements of the
-            // from/toVals arrays
-            animation = new Animation(fromVals, toVals, duration);
-        }
-        else
-        {
-            // Only one property; don't bother with the arrays
-            animation = new Animation(fromValue, toValue, duration);
-        }
+        // values
+        var i:int;
+        var j:int;
+        for (i = 0; i < animationProperties.length; ++i)
+        {
+            var mp:MotionPath = MotionPath(animationProperties[i]);
+            // TODO (chaase): should we push this keyframe-init logic
+            // into the MotionPath class instead?
+
+            // Create an initial (time==0) value if necessary
+            var keyframes:Array = animationProperties[i].keyframes;
+            if (keyframes[0].time > 0)
+            {
+                keyframes.splice(0, 0, new KeyFrame(0, null));
+                keyframes[0].timeFraction = 0;
+            }
+            if (interpolator)
+                mp.interpolator = interpolator;
+            // Fix the first and last values if necessary and possible
+            var kf:KeyFrame = keyframes[keyframes.length - 1];
+            if (!isValidValue(kf.value) &&
+                propertyChanges &&
+                propertyChanges.end[mp.property] !== undefined)
+            {
+                kf.value = propertyChanges.end[mp.property];
+            }
+            // adjust effect duration to be the max of all MotionPath keyframe times
+            // TODO (chaase): Currently we do not adjust *down* for smaller duration
+            // MotionPaths. This is because we do not distinguish between
+            // AnimationProperty objects (which are created with fake durations of 1,
+            // knowing that they will derive their duration from their effects) and
+            // actual keyframe-based MotionPaths.
+            for (j = 0; j < keyframes.length; ++j)
+                duration = Math.max(duration, keyframes[j].time);
+
+            mp.scaleKeyframes(keyframes[keyframes.length-1].time);
+        }
+
+        animation = new Animation(duration);
+        animation.animationProperties = animationProperties;
+
         animation.addEventListener(AnimationEvent.ANIMATION_START, startHandler);
         animation.addEventListener(AnimationEvent.ANIMATION_UPDATE, updateHandler);
         animation.addEventListener(AnimationEvent.ANIMATION_REPEAT, repeatHandler);
@@ -484,26 +480,14 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    protected function applyValues(value:Object):void
-    {
-        var holder:AnimationProperty;
-
-        if (animationProperties.length == 1)
-        {
-            holder = AnimationProperty(animationProperties[0]);
-            setValue(holder.property, value);
-        }
-        else
-        {
-            var valueArray:Array = value as Array;
-            for (var i:int = 0; i < animationProperties.length; ++i)
-            {
-                holder = AnimationProperty(animationProperties[i]);
-                setValue(holder.property, valueArray[i]);
-            }
-        }
-    }
-
+    protected function applyValues(anim:Animation):void
+    {
+        for (var i:int = 0; i < animationProperties.length; ++i)
+            setValue(animationProperties[i].property, anim.currentValue[i]);
+    }
+
+    // TODO (chaase): This function appears in multiple places. Maybe
+    // put it in some util class instead?
     /**
      * @private
      *
@@ -532,40 +516,45 @@
     private function finalizeValues():Boolean
     {
         var changedValues:Boolean = false;
+        var j:int;
+        var prevValue:Object;
         for (var i:int = 0; i < animationProperties.length; ++i)
         {
-            var holder:AnimationProperty =
-                AnimationProperty(animationProperties[i]);
-            // Note that we use strict equality tests for null, as a simple
-            // '0' value for a Number or int would look the same as a null
-            // in a simple !value test.
-            // Let's hope they've set a reasonable interpolator by now,
-            // or otherwise we're just dealing with numbers
-            var interp:IInterpolator =
-                interpolator ?
-                interpolator :
-                NumberInterpolator.getInstance();
-            var fromValid:Boolean = isValidValue(holder.valueFrom);
-            var toValid:Boolean = isValidValue(holder.valueTo);
-            var byValid:Boolean = isValidValue(holder.valueBy);
-            if (!fromValid || !toValid)
+            var motionPath:MotionPath =
+                MotionPath(animationProperties[i]);
+            // set the first value (if invalid) to the current value
+            // in the target
+            var keyframes:Array = motionPath.keyframes;
+            if (!keyframes || keyframes.length == 0)
+                continue;
+            if (!isValidValue(keyframes[0].value))
             {
-                if (!fromValid)
+                if (keyframes.length > 0 &&
+                    isValidValue(keyframes[1].valueBy) &&
+                    isValidValue(keyframes[1].value))
                 {
-                    if (toValid && byValid)
-                        holder.valueFrom = interp.decrement(holder.valueTo, holder.valueBy);
+                    keyframes[0].value = motionPath.interpolator.decrement(
+                        keyframes[1].value, keyframes[1].valueBy);
+                }
+                else
+                {
+                    keyframes[0].value = getCurrentValue(motionPath.property);
+                }
+            }
+            // set any other invalid values to the value in the preceding
+            // keyframe
+            prevValue = keyframes[0].value;
+            for (j = 1; j < keyframes.length; ++j)
+            {
+                var kf:KeyFrame = KeyFrame(keyframes[j]);
+                if (!isValidValue(kf.value))
+                {
+                    if (isValidValue(kf.valueBy))
+                        kf.value = motionPath.interpolator.increment(prevValue, kf.valueBy);
                     else
-                        holder.valueFrom = getCurrentValue(holder.property);
-                    fromValid = isValidValue(holder.valueFrom);
-                }
-                if (!toValid)
-                {
-                    if (fromValid && byValid)
-                        holder.valueTo = interp.increment(holder.valueFrom, holder.valueBy);
-                    else
-                        holder.valueTo = getCurrentValue(holder.property);
-                }
-                changedValues = true;
+                        kf.value = prevValue;
+                }
+                prevValue = kf.value;
             }
         }
         return changedValues;
@@ -593,34 +582,8 @@
             setupParentLayout(false);

         var anim:Animation = Animation(event.target);
-        if (finalizeValues())
-        {
-            var holder:AnimationProperty;
-            // Some of the values were updated; must now update
-            // the respective values in the Animation
-            if (animationProperties.length == 1)
-            {
-                holder = AnimationProperty(animationProperties[0]);
-                if (anim.startValue === null)
-                    anim.startValue = holder.valueFrom;
-                if (anim.endValue === null)
-                    anim.endValue = holder.valueTo;
-            }
-            else
-            {
-                var startValues:Array = anim.startValue as Array;
-                var endValues:Array = anim.endValue as Array;
-                for (var i:int = 0; i < animationProperties.length; ++i)
-                {
-                    holder = AnimationProperty(animationProperties[i]);
-                    if (startValues[i] === null)
-                        startValues[i] = holder.valueFrom;
-                    if (endValues[i] === null)
-                        endValues[i] = holder.valueTo;
-                }
-            }
-        }
-
+        finalizeValues();
+
         // TODO (chaase): Consider putting AnimateInstance (and subclass's)
         // play() functionality (the setup and playing of the Animation object)
         // into startEffect(), calling play() from here, and not overriding
@@ -640,7 +603,7 @@
      */
     protected function updateHandler(event:AnimationEvent):void
     {
-        applyValues(event.value);
+        applyValues(Animation(event.target));
         dispatchEvent(event);
     }


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

--- frameworks/projects/spark/src/spark/validators/supportClasses/GlobalizationValidatorBase.as
+++ frameworks/projects/spark/src/spark/validators/supportClasses/GlobalizationValidatorBase.as
@@ -1,21 +1,4 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2010 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// This file is originally available in mx:validators code. Minor changes were
-// made to use this in spark validators. The changes done are
-// 1. removed the inheritance from IMXMLObject class and instead inherits from
-//    GlobalizationBase
-// 2. removed the private variable document.
-// 3. removed initialize() method.
-//
+
 package spark.validators.supportClasses
 {


added createLookup()

added createLookup()

--- WeaveData/src/weave/utils/VectorUtils.as
+++ WeaveData/src/weave/utils/VectorUtils.as
@@ -431,5 +431,23 @@
 		{
 			return array.map(function(item:Object, i:int, a:*):* { return item[property]; });
 		}
+
+		/**
+		 * Creates a lookup from item (or item property) to index. Does not consider duplicate items (or item property values).
+		 * @param propertyChain A property name or chain of property names to index on rather than the item itself.
+		 * @return A reverse lookup.
+		 */
+		public static function createLookup(array:*, ...propertyChain):Dictionary
+		{
+			var lookup:Dictionary = new Dictionary(true);
+			for (var key:* in array)
+			{
+				var value:* = array[key];
+				for each (var prop:String in propertyChain)
+					value = value[prop];
+				lookup[value] = key;
+			}
+			return lookup;
+		}
 	}
 }


178 MouseDebugger now gaudier and wordier than ever

--- raw/src/org/yellcorp/debug/MouseDebugger.as
+++ raw/src/org/yellcorp/debug/MouseDebugger.as
@@ -3,7 +3,9 @@
 import org.yellcorp.display.ViewDebugUtil;

 import flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
 import flash.display.Graphics;
+import flash.display.InteractiveObject;
 import flash.display.Sprite;
 import flash.display.Stage;
 import flash.events.Event;
@@ -21,12 +23,14 @@
 public class MouseDebugger
 {
     private var canvas:Sprite;
-    private var caption:TextField;
+    private var classNames:TextField;
+    private var instanceNames:TextField;

     public function MouseDebugger(canvas:Sprite)
     {
         this.canvas = canvas;
-        caption = createTextField();
+        classNames = createTextField();
+        instanceNames = createTextField();

         canvas.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true);
         canvas.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage, false, 0, true);
@@ -43,13 +47,14 @@
         canvas.stage.addEventListener(MouseEvent.MOUSE_OVER, onStageOver);
         canvas.stage.addEventListener(MouseEvent.MOUSE_OUT, onStageOut);

-        canvas.stage.addEventListener(Event.RESIZE, onResize);
-        caption.width = canvas.stage.stageWidth;
-
-        canvas.addChild(caption);
-
-        caption.x = 0;
-        caption.y = 0;
+        canvas.stage.addEventListener(Event.RESIZE, onStageResize);
+        classNames.width = canvas.stage.stageWidth;
+        instanceNames.width = canvas.stage.stageWidth;
+
+        canvas.addChild(classNames);
+        canvas.addChild(instanceNames);
+
+        layout();
     }

     private function onRemovedFromStage(event:Event):void
@@ -58,14 +63,17 @@
         canvas.removeEventListener(MouseEvent.MOUSE_OUT, onCanvasOut);
         canvas.stage.removeEventListener(MouseEvent.MOUSE_OVER, onStageOver);
         canvas.stage.removeEventListener(MouseEvent.MOUSE_OUT, onStageOut);
-        canvas.stage.removeEventListener(Event.RESIZE, onResize);
-
-        canvas.removeChild(caption);
-    }
-
-    private function onResize(event:Event):void
-    {
-        caption.width = canvas.stage.stageWidth;
+        canvas.stage.removeEventListener(Event.RESIZE, onStageResize);
+
+        canvas.removeChild(classNames);
+        canvas.removeChild(instanceNames);
+    }
+
+    private function onStageResize(event:Event):void
+    {
+        classNames.width = canvas.stage.stageWidth;
+        instanceNames.width = canvas.stage.stageWidth;
+        layout();
     }

     private function onCanvasOver(event:MouseEvent):void
@@ -84,12 +92,14 @@
         var target:DisplayObject = event.target as DisplayObject;

         g.clear();
-        caption.text = "";
+        classNames.text = "";
+        instanceNames.text = "";

         if (target)
         {
             canvas.visible = true;
-            drawRectHeirarchy(canvas, target, caption);
+            drawRectHeirarchy(target);
+            layout();
         }
     }

@@ -97,12 +107,21 @@
     {
     }

-    private function drawRectHeirarchy(canvas:Sprite, subject:DisplayObject, field:TextField):void
+    private function layout():void
+    {
+        classNames.x = 0;
+        classNames.y = 0;
+
+        instanceNames.x = 0;
+        instanceNames.y = classNames.height;
+    }
+
+    private function drawRectHeirarchy(subject:DisplayObject):void
     {
         var i:int;
         var nodes:Array = [ ];
         var color:uint;
-        var name:String;
+        var text:String;

         while (subject && !(subject is Stage))
         {
@@ -115,17 +134,33 @@
             color = ViewDebugUtil.makeIndexColor(i + 1, 3);
             drawGuide(canvas, nodes[i], color);

-            name = getDisplayName(nodes[i]);
+            text = getDisplayName(nodes[i]);
             if (i > 0)
             {
-                name = "." + name;
+                text = "." + text;
             }
-
-            appendWithColor(field, name, color);
-        }
-    }
-
-    private function appendWithColor(field:TextField, text:String, color:uint):void
+            appendWithColor(classNames, text, color);
+
+            text = nodes[i].name;
+            if (i > 0)
+            {
+                text = "." + text;
+            }
+            appendWithColor(instanceNames, text, color);
+        }
+
+        if (subject is InteractiveObject)
+        {
+            text = "\nmouseEnabled=" + InteractiveObject(subject).mouseEnabled;
+            if (subject is DisplayObjectContainer)
+            {
+                text += ", mouseChildren=" + DisplayObjectContainer(subject).mouseChildren;
+            }
+            appendWithColor(instanceNames, text, 0xFFFFFF);
+        }
+    }
+
+    private static function appendWithColor(field:TextField, text:String, color:uint):void
     {
         field.appendText(text);
         field.setTextFormat(new TextFormat(null, null, color),
@@ -133,7 +168,7 @@
                 field.text.length);
     }

-    private function drawGuide(canvas:Sprite, subject:DisplayObject, color:uint):void
+    private static function drawGuide(canvas:Sprite, subject:DisplayObject, color:uint):void
     {
         var g:Graphics = canvas.graphics;
         var rect:Rectangle;
@@ -147,7 +182,7 @@
         g.lineTo(rect.left + 16, rect.top);
     }

-    private function createTextField():TextField
+    private static function createTextField():TextField
     {
         var t:TextField;
         var tf:TextFormat;
@@ -167,14 +202,19 @@
         return t;
     }

-    private function createStrokeFilter():BitmapFilter
+    private static function createStrokeFilter():BitmapFilter
     {
         return new GlowFilter(0, 1, 2, 2, 4, 1);
     }

     private static function getDisplayName(target:DisplayObject):String
     {
-        return getLeafName(getQualifiedClassName(target));
+        var displayName:String = getLeafName(getQualifiedClassName(target));
+        if (target.parent)
+        {
+            displayName += "[" + target.parent.getChildIndex(target) + "]";
+        }
+        return displayName;
     }

     private static function getLeafName(className:String):String


Transferred from the Adobe Open Source Subversion Repository

Revision: 14571
Author:   deeptika@adobe.com
Date:     2010-03-04T07:17:40.283901Z

Log Message:
-----------
Merging revision 14570 from 4.x branch
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/automation/src/mx/automation/delegates/core/UIComponentAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/automation/delegates/controls/FlexNativeMenuAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/delegates/controls/SWFLoaderAutomationImpl.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/tabularData/SparkListBaseTabularData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/mx/automation/delegates/core/UIFTETextFieldAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/delegates/core/UITextFieldAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkDropDownListBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_dmv/src/mx/automation/delegates/advancedDataGrid/AdvancedDataGridAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkListBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/tabularData/OLAPDataGridTabularData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/codec/RendererPropertyCodec.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/delegates/TextFieldAutomationHelper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/codec/AutomationObjectPropertyCodec.as</path>

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

--- frameworks/projects/automation/src/mx/automation/delegates/core/UITextFieldAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/core/UITextFieldAutomationImpl.as
@@ -17,6 +17,7 @@
 	import flash.events.Event;

 	import mx.automation.Automation;
+	import mx.automation.AutomationConstants;
 	import mx.automation.IAutomationObject;
 	import mx.core.UITextField;

@@ -96,7 +97,7 @@
 		//---------------------------------
 		public function get automationEnabled():Boolean
 		{
-			trace ("This method should not be called on delegate.Should have been called on the component");
+			Automation.automationDebugTracer.traceMessage("UITextFieldAutomationImpl", "get automationEnabled()",AutomationConstants.invalidDelegateMethodCall);
 			if(uiTextField)
 				return uiTextField.enabled;

@@ -108,7 +109,7 @@
 		//---------------------------------
 		public function get automationOwner():DisplayObjectContainer
 		{
-			trace ("This method should not be called on delegate.Should have been called on the component");
+			Automation.automationDebugTracer.traceMessage("UITextFieldAutomationImpl", "get automationOwner()",AutomationConstants.invalidDelegateMethodCall);

 			if(uiTextField)
 				return uiTextField.owner;
@@ -121,7 +122,7 @@
 		//---------------------------------
 		public function get automationParent():DisplayObjectContainer
 		{
-			trace ("This method should not be called on delegate.Should have been called on the component");
+			Automation.automationDebugTracer.traceMessage("UITextFieldAutomationImpl", "get automationParent()",AutomationConstants.invalidDelegateMethodCall);

 			if(uiTextField)
 				return uiTextField.parent;
@@ -134,7 +135,7 @@
 		//---------------------------------
 		public function get automationVisible():Boolean
 		{
-			trace ("This method should not be called on delegate.Should have been called on the component");
+			Automation.automationDebugTracer.traceMessage("UITextFieldAutomationImpl", "get automationVisible()",AutomationConstants.invalidDelegateMethodCall);
 			if(uiTextField)
 				return uiTextField.visible;

@@ -277,7 +278,7 @@
 		 */
 		public function set automationDelegate(val:Object):void
 		{
-			trace("Invalid setter function call. Should have been called on the component");
+			Automation.automationDebugTracer.traceMessage("UITextFieldAutomationImpl", "set automationDelegate()", AutomationConstants.invalidDelegateMethodCall);
 		}

 		/**
@@ -285,7 +286,7 @@
 		 */
 		public function get automationDelegate():Object
 		{
-			trace("Invalid setter function call. Should have been called on the component");
+			Automation.automationDebugTracer.traceMessage("UITextFieldAutomationImpl", "get automationDelegate()", AutomationConstants.invalidDelegateMethodCall);
 			return this;
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

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

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

 package spark.automation.events
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 4894
Author:   hmuller@adobe.com
Date:     2009-02-07T17:17:54.948626Z

Log Message:
-----------
I10 Bug fixes: FxScroller mouse wheel scrolling, FxScrollerSkin.

QE Notes: Mustella tests pass
Doc Notes: None
Bugs:
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScrollerLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxScrollerLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxScrollerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxScrollBar.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as
@@ -273,17 +273,6 @@

     /**
      *  @private
-     */
-    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
-    {
-        super.updateDisplayList(unscaledWidth, unscaledHeight);
-
-        // Hide the thumb if there is no room to display it
-        if (thumb)
-            thumb.visible = thumbSize < trackSize;
-    }
-    /**
-     *  @private
      */
     override protected function partAdded(partName:String, instance:Object):void
     {
@@ -381,7 +370,7 @@
         // Thumb takes up entire track.
         if (range == 0)
             return trackSize;
-
+
         return Math.min((pageSize / (range + pageSize) ) * trackSize, trackSize);
     }


Fix fillLabels for 1-frame movies

Fix fillLabels for 1-frame movies

--- runtime/src/main/as/flump/mold/MovieMold.as
+++ runtime/src/main/as/flump/mold/MovieMold.as
@@ -34,7 +34,10 @@
         }
         labels[0] = new <String>[];
         labels[0].push(Movie.FIRST_FRAME);
-        labels[frames - 1] = new <String>[];
+        if (labels.length > 1) {
+            // If we only have 1 frame, don't overwrite labels[0]
+            labels[frames - 1] = new <String>[];
+        }
         labels[frames - 1].push(Movie.LAST_FRAME);
         for each (var layer :LayerMold in layers) {
             for each (var kf :KeyframeMold in layer.keyframes) {


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

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

 package mx.containers.utilityClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 8487
Author:   smgilson@adobe.com
Date:     2009-07-09T18:57:21.985536Z

Log Message:
-----------
final checkin to update the namespace in ASDoc MXML syntax descriptions for Spark components

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Fade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/ColorMatrixFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Power.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/BlurFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/DisplacementMapFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/ShaderFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/DropShadowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/CallAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientBevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateColor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Animate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AddAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Graphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Wipe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/ConvolutionFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Keyframe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientGlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/SetAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/RemoveAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/BevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientFilter.as</path>

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

--- frameworks/projects/spark/src/spark/filters/GradientGlowFilter.as
+++ frameworks/projects/spark/src/spark/filters/GradientGlowFilter.as
@@ -43,7 +43,7 @@
  * turned off if the resulting image exceeds the maximum dimensions.

  *
  *  @mxml
- *
The <GradientGlowFilter> tag inherits all of the tag
+ *
The <s:GradientGlowFilter> tag inherits all of the tag
  *  attributes of its superclass and adds no tag attributes:

  *
  *


Fix upper end of buffer, also require 2 segments.

--- HLSPlugin/src/org/osmf/net/httpstreaming/HLSHTTPNetStream.as
+++ HLSPlugin/src/org/osmf/net/httpstreaming/HLSHTTPNetStream.as
@@ -353,7 +353,7 @@
 					var lastMan:HLSManifestParser = indexHandler.getLastSequenceManifest();
 					if(lastMan && lastMan.targetDuration > 0.0)
 					{
-						value = 1.75 * lastMan.targetDuration;
+						value = 2.0 * lastMan.targetDuration;
 					}
 				}

@@ -371,7 +371,7 @@
 			super.bufferTime = value;
 			trace("   o super.bufferTime = " + super.bufferTime);
 			_desiredBufferTime_Min = Math.max(OSMFSettings.hdsMinimumBufferTime, value);
-			_desiredBufferTime_Max = Math.min(60, _desiredBufferTime_Min * 3);
+			_desiredBufferTime_Max = Math.max(60, _desiredBufferTime_Min * 3);
 			trace("   o _desiredBufferTime_Min = " + _desiredBufferTime_Min);
 			trace("   o _desiredBufferTime_Max = " + _desiredBufferTime_Max);


Issue #118 incorrectly adding triangles using IndexStream.pushTriangle

--- src/aerys/minko/render/geometry/stream/IndexStream.as
+++ src/aerys/minko/render/geometry/stream/IndexStream.as
@@ -219,7 +219,7 @@

 		public function pushTriangle(index1 : uint, index2 : uint, index3 : uint) : IndexStream
 		{
-			return setTriangle(length * 3, index1, index2, index3);
+			return setTriangle(length, index1, index2, index3);
 		}

 		public function setTriangle(triangleIndex	: uint,


- standardised use of didSucceed() method for asynchronous and non-asynchronous commands, so that IInputs can rely on it

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@773 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/commands/CompositeCommand.as
+++ src/reprise/commands/CompositeCommand.as
@@ -381,7 +381,7 @@
 			unregisterListenersForAsynchronousCommand(completedCommand);
 			m_currentCommands.remove(e.target);
 			m_numCommandsExecuted++;
-			if (!e.success)
+			if (!completedCommand.didSucceed())
 			{
 				m_didSucceed = false;
 				m_numCommandsFailed++;


Develop

Develop

--- src/test/org/shypl/common/util/CollectionUtilsTest.as
+++ src/test/org/shypl/common/util/CollectionUtilsTest.as
@@ -3,17 +3,15 @@

 	public class CollectionUtilsTest {
 		[Test]
-		public function testMoveDown():void {
-			var array:Vector.<int> = new <int>[1, 2, 3];
+		public function testMove():void {
+			var array:Vector.<int>;
+
+			array = new <int>[1, 2, 3];
 			CollectionUtils.move(array, 1);
 			Assert.assertArrayEquals(new <int>[0, 1, 2], array);
-		}

-		[Test]
-		public function testMoveUp():void {
-			var array:Vector.<int> = new <int>[1, 2, 3];
 			CollectionUtils.move(array, -1);
-			Assert.assertArrayEquals(new <int>[2, 3, 0], array);
+			Assert.assertArrayEquals(new <int>[1, 2, 0], array);
 		}
 	}
 }


Fix normal computation when indexStream does not reference all vertexStream and original vertexStream does not include normals

--- src/aerys/minko/render/geometry/Geometry.as
+++ src/aerys/minko/render/geometry/Geometry.as
@@ -562,27 +562,37 @@

 			normalsData = normalsStream == xyzStream ? xyzData : normalsStream.lock();

-			for (i = 0; i < numTriangles; ++i)
-			{
-				ii = triangles ? triangles[i] * 3 : i * 3;
-				i0 = indices.readUnsignedShort();
-				i1 = indices.readUnsignedShort();
-				i2 = indices.readUnsignedShort();
-
-				normalsData.position = i0 * normalsVertexSize + normalsOffset;
-				normalsData.writeFloat(0.);
-				normalsData.writeFloat(0.);
-				normalsData.writeFloat(0.);
-
-				normalsData.position = i1 * normalsVertexSize + normalsOffset;
-				normalsData.writeFloat(0.);
-				normalsData.writeFloat(0.);
-				normalsData.writeFloat(0.);
-
-				normalsData.position = i2 * normalsVertexSize + normalsOffset;
-				normalsData.writeFloat(0.);
-				normalsData.writeFloat(0.);
-				normalsData.writeFloat(0.);
+			if (normalsData == xyzData)
+			{
+				for (i = 0; i < numTriangles; ++i)
+				{
+					ii = triangles ? triangles[i] * 3 : i * 3;
+					i0 = indices.readUnsignedShort();
+					i1 = indices.readUnsignedShort();
+					i2 = indices.readUnsignedShort();
+
+					normalsData.position = i0 * normalsVertexSize + normalsOffset;
+					normalsData.writeFloat(0.);
+					normalsData.writeFloat(0.);
+					normalsData.writeFloat(0.);
+
+					normalsData.position = i1 * normalsVertexSize + normalsOffset;
+					normalsData.writeFloat(0.);
+					normalsData.writeFloat(0.);
+					normalsData.writeFloat(0.);
+
+					normalsData.position = i2 * normalsVertexSize + normalsOffset;
+					normalsData.writeFloat(0.);
+					normalsData.writeFloat(0.);
+					normalsData.writeFloat(0.);
+				}
+			}
+			else
+			{
+				var normalSize : uint = (xyzData.length / xyzStream.format.numBytesPerVertex) * 3;
+
+				for (i = 0; i < normalSize; ++i)
+					normalsData.writeFloat(0.);
 			}

 			for (i = 0; i < numTriangles; ++i)


Fixed Matrix4x4.interpolateTo scale

Fixed Matrix4x4.interpolateTo scale

--- src/aerys/minko/type/math/Matrix4x4.as
+++ src/aerys/minko/type/math/Matrix4x4.as
@@ -577,7 +577,7 @@
                 sz += (scale.z - sz) * ratio;

 				_matrix.interpolateTo(target._matrix, ratio);
-                _matrix.appendScale(sx, sy, sz);
+				_matrix.prependScale(sx, sy, sz);

                 if (interpolateW)
                 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 22789
Author:   chiedozi@adobe.com
Date:     2011-09-28T20:50:14.755429Z

Log Message:
-----------
Changing the viewNavigatorPopUp type in SplitViewNavigatorSkin to SkinnablePopUpContainer

QE notes:
Doc notes:
Bugs:
Reviewer: Max
Tests run: checkin-tests, mustella-mobile
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SplitViewNavigatorSkin.as

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/SplitViewNavigatorSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/SplitViewNavigatorSkin.as
@@ -15,6 +15,7 @@

 import spark.components.Callout;
 import spark.components.Group;
+import spark.components.SkinnablePopUpContainer;
 import spark.components.SplitViewNavigator;
 import spark.layouts.HorizontalLayout;
 import spark.skins.mobile.supportClasses.MobileSkin;
@@ -69,7 +70,7 @@
     /**
      *  @copy spark.components.SplitViewNavigator#viewNavigatorPopUp
      */
-    public var viewNavigatorPopUp:Callout;
+    public var viewNavigatorPopUp:SkinnablePopUpContainer;

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


FragmentLoader: set initial _nextLevel value to avoid LEVEL_SWITCH events leak on startup

--- src/org/mangui/hls/loader/FragmentLoader.as
+++ src/org/mangui/hls/loader/FragmentLoader.as
@@ -45,7 +45,7 @@
         /** last loaded level. **/
         private var _levelLastLoaded : int;
         /** next level (-1 if not defined yet) **/
-        private var _levelNext : int;
+        private var _levelNext : int = -1;
         /** Reference to the manifest levels. **/
         private var _levels : Vector.<Level>;
         /** Util for loading the fragment. **/
@@ -933,4 +933,4 @@
             _timer.start();
         }
     }
-}+}


- Made sure the conferences are sorted on the conference selection view

--- core/src/main/flex/org/dukecon/services/ConferenceService.as
+++ core/src/main/flex/org/dukecon/services/ConferenceService.as
@@ -67,6 +67,13 @@
         for(var conferenceId:String in conferencesSharedObject.data.conferences) {
             conferenceStorages.addItem(conferencesSharedObject.data.conferences[conferenceId]);
         }
+        // Sort the conferences by starting time of the first event.
+        var dataSortField:SortField = new SortField("firstDay");
+        var dataSort:Sort = new Sort();
+        dataSort.fields=[dataSortField];
+        dataSort.reverse();
+        conferenceStorages.sort = dataSort;
+        conferenceStorages.refresh();
         return conferenceStorages;
     }


fixing missing "else" in SceneIterator.parsePredicate() to make sure the "hasController" case is mutually exclusive

--- src/aerys/minko/scene/SceneIterator.as
+++ src/aerys/minko/scene/SceneIterator.as
@@ -306,7 +306,7 @@

 			if (propertyName == 'hasController')
 				filterOnController();
-			if (propertyName == 'hasProperty')
+			else if (propertyName == 'hasProperty')
 				filterOnProperty();
 			else if (propertyName == 'position')
 				filterOnPosition();


Roll this back. You don't even want to see the unchecked-in code I also trashed.
Too bad the bitchy comment about adobe goes too.

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

--- src/as/com/threerings/flex/FlexUtil.as
+++ src/as/com/threerings/flex/FlexUtil.as
@@ -62,21 +62,13 @@
     /**
      * Create an uneditable/unselectable multiline Text widget with the specified text and width.
      */
-    public static function createText (
-        text :String, width :int, style :String = null, html :Boolean = false) :Text
+    public static function createText (text :String, width :int, style :String = null) :Text
     {
         var t :Text = new Text();
         t.styleName = style;
         t.width = width;
-        if (html) {
-            // I want selectable = false here too, but that makes links not work. They still
-            // have a hand cursor, you can still click the fucking things, but they don't
-            // work. WHY ADOBE WHY YOU RANCID PIEFUCKERS?
-            t.htmlText = text;
-        } else {
-            t.selectable = false;
-            t.text = text;
-        }
+        t.selectable = false;
+        t.text = text;
         return t;
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 3594
Author:   pfarland@adobe.com
Date:     2008-10-13T18:00:52.025975Z

Log Message:
-----------
Initial check-in for Advanced CSS selector support. Note that since direct AST generation for advanced styles (i.e. equivalent code of StyleModule.vm, StyleDef.vm, ClassDefLib.vm) is not yet implemented and as such advanced selector support is only enabled when the compiler -keep=true is enabled at this time. Direct AST generation to follow.

This change adds support for descendant type selectors (e.g. Panel VBox Button), non-global class selectors (e.g. Button.special), id selectors (e.g. Button#button14), and combinations of these types of selectors (e.e. Panel.special VBox.box12 Button.cancel). Pseudo selector awareness is included but it is not yet wired up to the runtime states mechanism as an efficient method of reacting to state changes is still being developed. Combinator conditional global selectors will be supported soon (i.e. the scenario of combining both an id and class selector at the top level, e.g. .foo#foo12, this requires a more expensive search of global class selectors).

This change juggles both the introduction of advanced selector support while retaining legacy styles APIs. The major difference with advanced styles is that multiple styles need to be considered for a type. This requires new data structures to keep track of selectors by subject. Performance analysis will be conducted to ensure these new data structures do not add unacceptable overhead to the style subsystem.

For the compiler this change consolidates styles processing in the base StyleModule class and then MXML-specific overrides (i.e. inline <Styles> nodes and SWC defaults.css) are in the StylesContainer.java class, which now extends StyleModule. The existing structure for legacy simple style codegen was retained and advanced style codegen wedged in.

QA: Yes
Doc: Not yet
Checkintests: Pass 100%
mxunit styles tests: Pass 100% (note that styles modules include tests you need to manually compile the .css files to swf and they're currently cleaned out each time a build runs... QE please correct this).
mustella styles tests: QE's select list of components testsuites pass 100%. Any failures in the full suite will be addressed in the next-checkin.
Reviewers: Glenn (framework), Paul (compiler)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/CssCompiler.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StylesContainer.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/rep/MxmlDocument.java</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager3.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/config/ConfigMap.as</path>
<path kind="file" action="A">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleSelector.java</path>
<path kind="file" action="A">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleProperty.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleDeclaration.java</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSSelectorKind.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSConditionKind.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flash/css/FontFaceRule.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/ImplementationGenerator.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleClient.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleSheet.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleDocumentHandler.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSSelector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="D">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleProperty.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleModule.vm</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IAdvancedStyleClient.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSCondition.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/gen/ClassDefLib.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flash/css/Rule.java</path>
<path kind="file" action="A">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleCondition.java</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.java</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/css/StyleDef.vm</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flash/css/StyleParser.java</path>

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

--- frameworks/projects/rpc/src/mx/messaging/config/ConfigMap.as
+++ frameworks/projects/rpc/src/mx/messaging/config/ConfigMap.as
@@ -12,14 +12,7 @@
 package mx.messaging.config
 {

-import flash.utils.getQualifiedClassName;
-import flash.utils.Proxy;
-import flash.utils.flash_proxy;
-import mx.utils.object_proxy;
-import mx.utils.ObjectUtil;
-
-use namespace flash_proxy;
-use namespace object_proxy;
+import mx.utils.OrderedObject;

 [RemoteClass(alias="flex.messaging.config.ConfigMap")]

@@ -27,7 +20,7 @@
  *  The ConfigMap class provides a mechanism to store the properties returned
  *  by the server with the ordering of the properties maintained.
  */
-public dynamic class ConfigMap extends Proxy
+public dynamic class ConfigMap extends OrderedObject
 {
     //--------------------------------------------------------------------------
     //
@@ -40,209 +33,10 @@
      *
      * @param item An Object containing name/value pairs.
      */
-    public function ConfigMap(item:Object = null)
+    public function ConfigMap(item:Object=null)
     {
-        super();
-
-        if (!item)
-            item = {};
-        _item = item;
-
-		propertyList = [];
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Variables
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  Contains a list of all of the property names for the proxied object.
-     */
-    object_proxy var propertyList:Array;
-
-    //--------------------------------------------------------------------------
-    //
-    //  Properties
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    //  object
-    //----------------------------------
-
-    /**
-     *  Storage for the object property.
-     */
-    private var _item:Object;
-
-    //--------------------------------------------------------------------------
-    //
-    //  Overridden methods
-    //
-    //--------------------------------------------------------------------------
-
-	/**
-     *  Returns the specified property value of the proxied object.
-     *
-     *  @param name Typically a string containing the name of the property,
-     *  or possibly a QName where the property name is found by
-     *  inspecting the localName property.
-     *
-     *  @return The value of the property.
-     */
-    override flash_proxy function getProperty(name:*):*
-    {
-        // if we have a data proxy for this then
-        var result:Object = null;
-
-        result = _item[name];
-
-        return result;
+        super(item);
     }
-
-    /**
-     *  Returns the value of the proxied object's method with the specified name.
-     *
-     *  @param name The name of the method being invoked.
-     *
-     *  @param rest An array specifying the arguments to the
-     *  called method.
-     *
-     *  @return The return value of the called method.
-     */
-    override flash_proxy function callProperty(name:*, ... rest):*
-    {
-        return _item[name].apply(_item, rest)
-    }
-
-    /**
-     *  Deletes the specified property on the proxied object and
-     *  sends notification of the delete to the handler.
-     *
-     *  @param name Typically a string containing the name of the property,
-     *  or possibly a QName where the property name is found by
-     *  inspecting the localName property.
-     *
-     *  @return A Boolean indicating if the property was deleted.
-     */
-    override flash_proxy function deleteProperty(name:*):Boolean
-    {
-        var oldVal:Object = _item[name];
-        var deleted:Boolean = delete _item[name];
-
-        var deleteIndex:int = -1;
-        for (var i:int = 0; i < propertyList.length; i++)
-        {
-        	if (propertyList[i] == name)
-        	{
-        		deleteIndex = i;
-        		break;
-        	}
-        }
-		if (deleteIndex > -1)
-		{
-			propertyList.splice(deleteIndex, 1);
-		}
-
-        return deleted;
-    }
-
-    /**
-     *  This is an internal function that must be implemented by
-     *  a subclass of flash.utils.Proxy.
-     *
-     *  @param name The property name that should be tested
-     *  for existence.
-     *
-     *  @return If the property exists, true;
-     *  otherwise false.
-     *
-     *  @see flash.utils.Proxy#hasProperty()
-     */
-    override flash_proxy function hasProperty(name:*):Boolean
-    {
-        return(name in _item);
-    }
-
-    /**
-     *  This is an internal function that must be implemented by
-     *  a subclass of flash.utils.Proxy.
-     *
-     *  @param index The zero-based index value of the object's
-     *  property.
-     *
-     *  @return The property's name.
-     *
-     *  @see flash.utils.Proxy#nextName()
-     */
-    override flash_proxy function nextName(index:int):String
-    {
-        return propertyList[index -1];
-    }
-
-    /**
-     *  This is an internal function that must be implemented by
-     *  a subclass of flash.utils.Proxy.
-     *
-     *  @see flash.utils.Proxy#nextNameIndex()
-     */
-    override flash_proxy function nextNameIndex(index:int):int
-    {
-        if (index < propertyList.length)
-        {
-            return index + 1;
-        }
-        else
-        {
-            return 0;
-        }
-    }
-
-    /**
-     *  This is an internal function that must be implemented by
-     *  a subclass of flash.utils.Proxy.
-     *
-     *  @param index The zero-based index value of the object's
-     *  property.
-     *
-     *  @return The property's value.
-     *
-     *  @see flash.utils.Proxy#nextValue()
-     */
-    override flash_proxy function nextValue(index:int):*
-    {
-        return _item[propertyList[index -1]];
-    }
-
-    /**
-     *  Updates the specified property on the proxied object
-     *  and sends notification of the update to the handler.
-     *
-     *  @param name Object containing the name of the property that
-     *  should be updated on the proxied object.
-     *
-     *  @param value Value that should be set on the proxied object.
-     */
-    override flash_proxy function setProperty(name:*, value:*):void
-    {
-        var oldVal:* = _item[name];
-        if (oldVal !== value)
-        {
-            // Update item.
-            _item[name] = value;
-
-			for (var i:int = 0; i < propertyList.length; i++)
-        	{
-        		if (propertyList[i] == name)
-        		{
-        			return;
-	        	}
-	        }
-	        propertyList.push(name);
-        }
-    }
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

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

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

 package spark.components
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 11511
Author:   gruehle@adobe.com
Date:     2009-11-06T18:56:06.156108Z

Log Message:
-----------
Fix a couple focus styling bugs.

QE notes:
Doc notes:
Bugs: SDK-24019, SDK-24021
Reviewer: Kevin
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableContainerBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VideoPlayer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.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/spark/src/spark/skins/spark/FocusSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/NumericStepperSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/FocusSkin.as
+++ frameworks/projects/spark/src/spark/skins/spark/FocusSkin.as
@@ -94,6 +94,10 @@

     override protected function get borderWeight() : Number
     {
+        if (target)
+            return target.getStyle("focusThickness");
+
+        // No target, return default value
         return getStyle("focusThickness");
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

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

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

 package mx.skins.halo
 {


Event types listed.

Event types listed.

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

--- src/org/igniterealtime/xiff/im/Roster.as
+++ src/org/igniterealtime/xiff/im/Roster.as
@@ -7,17 +7,9 @@
 	import mx.collections.Sort;
 	import mx.collections.SortField;

-	import org.igniterealtime.xiff.core.EscapedJID;
-	import org.igniterealtime.xiff.core.UnescapedJID;
-	import org.igniterealtime.xiff.core.XMPPConnection;
-	import org.igniterealtime.xiff.data.ExtensionClassRegistry;
-	import org.igniterealtime.xiff.data.IQ;
-	import org.igniterealtime.xiff.data.Presence;
-	import org.igniterealtime.xiff.data.XMLStanza;
-	import org.igniterealtime.xiff.data.XMPPStanza;
-	import org.igniterealtime.xiff.data.im.RosterExtension;
-	import org.igniterealtime.xiff.data.im.RosterGroup;
-	import org.igniterealtime.xiff.data.im.RosterItemVO;
+	import org.igniterealtime.xiff.core.*;
+	import org.igniterealtime.xiff.data.*;
+	import org.igniterealtime.xiff.data.im.*;
 	import org.igniterealtime.xiff.events.*;

 	/**
@@ -28,15 +20,17 @@
 	 *
 	 * The event object contains an attribute jid with the JID of
 	 * the user who revoked your subscription.
-	 */
-	[Event("subscriptionRevocation")]
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.SUBSCRIPTION_REVOCATION
+	 */
+	[Event(name="subscriptionRevocation", type="org.igniterealtime.xiff.events.RosterEvent")]

 	/**
 	 * Broadcast whenever someone requests to subscribe to your presence. The event object
 	 * contains an attribute jid with the JID of the user who is requesting
 	 * a presence subscription.
-	 */
-	[Event("subscriptionRequest")]
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.SUBSCRIPTION_REQUEST
+	 */
+	[Event(name="subscriptionRequest", type="org.igniterealtime.xiff.events.RosterEvent")]

 	/**
 	 * Broadcast whenever a subscription request that you make (via the addContact()
@@ -44,22 +38,45 @@
 	 *
 	 * The event object contains an attribute jid with the JID of the user who
 	 * denied the request.
-	 */
-	[Event("subscriptionDenial")]
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.SUBSCRIPTION_DENIAL
+	 */
+	[Event(name="subscriptionDenial", type="org.igniterealtime.xiff.events.RosterEvent")]

 	/**
 	 * Broadcast whenever a contact in the roster becomes unavailable. (Goes from online to offline.)
 	 * The event object contains an attribute jid with the JID of the user who
 	 * became unavailable.
-	 */
-	[Event("userUnavailable")]
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.USER_UNAVAILABLE
+	 */
+	[Event(name="userAvailable", type="org.igniterealtime.xiff.events.RosterEvent")]

 	/**
 	 * Broadcast whenever a contact in the roster becomes available. (Goes from offline to online.)
 	 * The event object contains an attribute jid with the JID of the user who
 	 * became available.
-	 */
-	[Event("userAvailable")]
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.USER_AVAILABLE
+	 */
+	[Event(name="userAvailable", type="org.igniterealtime.xiff.events.RosterEvent")]
+
+	/**
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.ROSTER_LOADED
+	 */
+	[Event(name="rosterLoaded", type="org.igniterealtime.xiff.events.RosterEvent")]
+
+	/**
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.USER_REMOVED
+	 */
+	[Event(name="userRemoved", type="org.igniterealtime.xiff.events.RosterEvent")]
+
+	/**
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.USER_PRESENCE_UPDATED
+	 */
+	[Event(name="userPresenceUpdated", type="org.igniterealtime.xiff.events.RosterEvent")]
+
+	/**
+	 * @eventType org.igniterealtime.xiff.events.RosterEvent.USER_SUBSCRIPTION_UPDATED
+	 */
+	[Event(name="userSubscriptionUpdated", type="org.igniterealtime.xiff.events.RosterEvent")]

 	/**
 	 * Manages a user's server-side instant messaging roster (or "buddy list"). By default,
@@ -73,14 +90,15 @@
 	 * API decorations, like in the case of a Macromedia Central LCDataProvider. Overall,
 	 * however, its probably a rare occurence.
 	 *
-	 * @param	aConnection A reference to an XMPPConnection class instance
 	 * @param	externalDataProvider (Optional) A reference to an instance of a data provider
 	 */
 	public class Roster extends ArrayCollection
 	{
 		private var myConnection:XMPPConnection;
+
 		//FIXME: does not support multiple pending requests
 		private var pendingSubscriptionRequestJID:UnescapedJID;
+
 		//FIXME: maps should not be arrays
 		private var _presenceMap:Array = [];

@@ -94,10 +112,15 @@

 		private static var rosterStaticConstructed:Boolean = RosterStaticConstructor();

+		/**
+		 *
+		 * @param	aConnection A reference to an XMPPConnection class instance
+		 */
 		public function Roster( aConnection:XMPPConnection = null)
 		{

-			if (aConnection != null){
+			if (aConnection != null)
+			{
 				connection = aConnection;
 			}
 			var groupSort:Sort = new Sort();
@@ -105,6 +128,10 @@
 			groups.sort = groupSort;
 		}

+		/**
+		 *
+		 * @return
+		 */
 		private static function RosterStaticConstructor():Boolean
 		{
 			ExtensionClassRegistry.register( RosterExtension );
@@ -153,7 +180,8 @@
 			myConnection.send( tempIQ );

-			addRosterItem( id, displayName, RosterExtension.SHOW_PENDING, RosterExtension.SHOW_PENDING, [groupName], subscription, askType );
+			addRosterItem( id, displayName, RosterExtension.SHOW_PENDING, RosterExtension.SHOW_PENDING,
+				[groupName], subscription, askType );
 		}

 		/**
@@ -175,7 +203,7 @@
 				return;
 			}
 			// Only request for items in the roster
-			if(contains(RosterItemVO.get(id, false)))
+			if (contains(RosterItemVO.get(id, false)))
 			{
 				tempPresence = new Presence( id.escaped, null, Presence.SUBSCRIBE_TYPE );
 				myConnection.send( tempPresence );
@@ -339,6 +367,10 @@
 			myConnection.send( tempPresence );
 		}

+		/**
+		 *
+		 * @param	resultIQ
+		 */
 		public function fetchRoster_result( resultIQ:IQ ):void
 		{
 			// Clear out the old roster
@@ -354,7 +386,9 @@
 						if (!item is XMLStanza)
 							continue;

-						addRosterItem( new UnescapedJID(item.jid), item.name, RosterExtension.SHOW_UNAVAILABLE, "Offline", item.groupNames, item.subscription.toLowerCase(), item.askType != null ? item.askType.toLowerCase() : RosterExtension.ASK_TYPE_NONE);
+						var askType:String = item.askType != null ? item.askType.toLowerCase() : RosterExtension.ASK_TYPE_NONE;
+						addRosterItem( new UnescapedJID(item.jid), item.name, RosterExtension.SHOW_UNAVAILABLE,
+							"Offline", item.groupNames, item.subscription.toLowerCase(), askType);
 					}
 				}
 				enableAutoUpdate();
@@ -369,6 +403,10 @@
 			}
 		}

+		/**
+		 *
+		 * @param	resultIQ
+		 */
 		public function addContact_result( resultIQ:IQ ):void
 		{
 			// Contact was added, request subscription
@@ -376,28 +414,31 @@
 			pendingSubscriptionRequestJID = null;
 		}

+		/**
+		 *
+		 * @param	resultIQ
+		 */
 		public function unsubscribe_result( resultIQ:IQ ):void
 		{
 			// Does nothing for now
 		}
-
-		public override function set filterFunction(f:Function):void
-		{
-			throw new Error("Setting the filterFunction on Roster is not allowed; Wrap it in a ListCollectionView and filter that.");
-		}
-
+
+		/**
+		 *
+		 * @param	eventObj PresenceEvent, LoginEvent or RosterExtension
+		 */
 		private function handleEvent( eventObj:* ):void
 		{

 			switch( eventObj.type )
 			{
 				// Handle any incoming presence items
-				case "presence":
+				case PresenceEvent.PRESENCE:
 					handlePresences( eventObj.data );
 					break;

 				// Fetch the roster immediately after login
-				case "login":
+				case LoginEvent.LOGIN:
 					fetchRoster();
 					// Tell the server we are online and available
 					//setPresence( Presence.SHOW_NORMAL, "Online", 5 );
@@ -444,16 +485,23 @@
 							else
 							{
 								var groups:Array = item.groupNames;
+								var askType:String = item.askType != null ?
+									item.askType.toLowerCase() : RosterExtension.ASK_TYPE_NONE;

-								if( item.subscription.toLowerCase() != RosterExtension.SUBSCRIBE_TYPE_REMOVE &&  item.subscription.toLowerCase() != RosterExtension.SUBSCRIBE_TYPE_NONE)
+								if ( item.subscription.toLowerCase() != RosterExtension.SUBSCRIBE_TYPE_REMOVE &&
+									item.subscription.toLowerCase() != RosterExtension.SUBSCRIBE_TYPE_NONE)
 								{
 									// Add this item to the roster if it's not there and if the subscription type is not equal to 'remove' or 'none'
-									addRosterItem( jid, item.name, RosterExtension.SHOW_UNAVAILABLE, "Offline", groups, item.subscription.toLowerCase(), item.askType != null ? item.askType.toLowerCase() : RosterExtension.ASK_TYPE_NONE );
+									addRosterItem( jid, item.name, RosterExtension.SHOW_UNAVAILABLE, "Offline",
+										groups, item.subscription.toLowerCase(), askType );
 								}
-								else if( (item.subscription.toLowerCase() == RosterExtension.SUBSCRIBE_TYPE_NONE || item.subscription.toLowerCase() == RosterExtension.SUBSCRIBE_TYPE_FROM) && item.askType == RosterExtension.ASK_TYPE_SUBSCRIBE )
+								else if ( (item.subscription.toLowerCase() == RosterExtension.SUBSCRIBE_TYPE_NONE ||
+									item.subscription.toLowerCase() == RosterExtension.SUBSCRIBE_TYPE_FROM) &&
+										item.askType == RosterExtension.ASK_TYPE_SUBSCRIBE )
 								{
 									// A contact was added to the roster, and its authorization is still pending.
-									addRosterItem( jid, item.name, RosterExtension.SHOW_PENDING, "Pending", groups, item.subscription.toLowerCase(), item.askType != null ? item.askType.toLowerCase() : RosterExtension.ASK_TYPE_NONE );
+									addRosterItem( jid, item.name, RosterExtension.SHOW_PENDING, "Pending", groups,
+										item.subscription.toLowerCase(), askType );
 								}
 							}
 						}
@@ -615,35 +663,35 @@
 			return _presenceMap[jid.toString()];
 		}

+		public function getGroup(name:String):RosterGroup
+		{
+			for each(var group:RosterGroup in groups)
+			{
+				if(group.label == name)
+					return group;
+			}
+			return null;
+		}
+
 		/**
 		 * The instance of the XMPPConnection class to use for the roster to use for
 		 * sending and receiving data.
-		 *
 		 */
 		public function get connection():XMPPConnection
 		{
 			return myConnection;
 		}
-
-		private static var counter:int = 0;
 		public function set connection( aConnection:XMPPConnection ):void
 		{
-			trace(++counter);
 			myConnection = aConnection;
-			// Set up listeners
 			myConnection.addEventListener(PresenceEvent.PRESENCE, handleEvent);
 			myConnection.addEventListener(LoginEvent.LOGIN, handleEvent);
 			myConnection.addEventListener( RosterExtension.NS, handleEvent );
 		}

-		public function getGroup(name:String):RosterGroup
-		{
-			for each(var group:RosterGroup in groups)
-			{
-				if(group.label == name)
-					return group;
-			}
-			return null;
+		public override function set filterFunction(f:Function):void
+		{
+			throw new Error("Setting the filterFunction on Roster is not allowed; Wrap it in a ListCollectionView and filter that.");
 		}
 	}
 }


Mobile views should be flagged as occupying 100% of their space.

--- frameworks/projects/Mobile/asjs/src/org/apache/flex/mobile/View.as
+++ frameworks/projects/Mobile/asjs/src/org/apache/flex/mobile/View.as
@@ -33,6 +33,10 @@
 		public function View()
 		{
 			super();
+
+			// views always take up 100% of their space
+			percentWidth = 100;
+			percentHeight = 100;
 		}

 		private var _title:String;