Transferred from the Adobe Open Source Subversion Repository

Revision: 17274
Author:   rfrishbe@adobe.com
Date:     2010-08-11T18:08:34.293087Z

Log Message:
-----------
A lot of changes, most involving touch scrolling.

UIComponent: remove keepControlOfMouseDown, which was checked in accidentally

FocusManager: move a check for event.isPreventDefauled() from the mouseDown handler to the mouseFocusHandler.  It was probably accidentally added in the mouseDown handler in the first place since mousedown events were not prevent defaultable (they are now, though)

SystemManager: Make MouseDown events prevent defaultable.  We do this for mouseWheel handlers already.  This allows our components to communicate a little with regards to who's handling this event.  Currently only ButtonBase and ItemRenderer check for this.

Split up IconItemRenderer in to MobileItemRenderer and MobileIconItemRenderer.  MobileItemRenderer is still based on UIComponent and is in charge of drawing the background and has a single text component.  MobileIconItemRenderer will be a more complex item renderer that developers can use. I'm also moving both of these classes in to the mobilecomponents project and mapping them in the spark manifest so that developers can now use them.

ButtonBase and List: Clean up code around how we deal with touch scrolling and adding a delay to button.  We also make sure that if the Button was clicked quickly before the delay fires that we show the button in the down state for some minimum amount of time.

Scroller: clean up a lot of the touch scrolling code

QE notes: None
Doc notes: None
Bugs: SDK-27263, SDK-27173, SDK-27157, SDK-27016
Reviewer: Jason SJ for MobileItemRenderer/MobileIconItemRenderer, Hans for the rest (he's still working through it though)
Tests run: checkintests, all mustella (some mustella failed for me locally but also in a clean sandbox)
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/styles/metadata</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/MobileThemeClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TouchScrollingEasing.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/IconItemRenderer.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/IconItemRenderer.as" copyfrom-rev="17121" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileIconItemRenderer.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="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/styles/metadata/PaddingStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/styles/metadata/GapStyles.as</path>
<path kind="dir" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/styles</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/FocusManager.as</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -294,6 +294,9 @@
      *  Placeholder for mixin by ListAccImpl.
      */
     mx_internal static var createAccessibilityImplementation:Function;
+
+    // FIXME (rfrishbe): should be style
+    private static const DELAY_TO_SHOW_SELECTION_IN_TOUCH_MODE:int = 150;

     //--------------------------------------------------------------------------
     //
@@ -325,7 +328,7 @@
                     "spark.components.RichEditableText"));
         }

-        addEventListener(TouchScrollEvent.TOUCH_SCROLL_STARTING, touchScrollStartingHandler);
+        addEventListener(TouchScrollEvent.TOUCH_SCROLL_STARTING, touchScrollStartHandler);
     }

     //--------------------------------------------------------------------------
@@ -348,6 +351,13 @@
      *  track which is the "focus item" for a drag and drop operation.
      */
     mx_internal var mouseDownIndex:int = -1;
+
+    /**
+     *  @private
+     *  Timer for putting the item renderer in the selected state on a delay
+     *  timer because of touch input.
+     */
+    private var mouseDownSelectTimer:Timer;

     /**
      *  @private
@@ -1525,9 +1535,14 @@
      */
     protected function item_mouseDownHandler(event:MouseEvent):void
     {
-        // someone else handled it already
-//        if (event.isDefaultPrevented())
-//            return;
+        // someone else handled it already since this is cancellable thanks to
+        // some extra code in SystemManager that redispatches a cancellable version
+        // of the same event
+        if (event.isDefaultPrevented())
+            return;
+
+        // we are about to handle it
+        event.preventDefault();

         // Handle the fixup of selection
         var newIndex:int
@@ -1549,19 +1564,21 @@
                     currentRenderer.showsCaret = false;
             }

-            // Check to see if we're deselecting the currently selected item
-            if ((event.ctrlKey && selectedIndex == newIndex) || (getStyle("inputMode") == "touch" && scroller.viewport.clipAndEnableScrolling))
+            // Check to see if we're deselecting the currently selected item because if we're
+            // possibly dragging we don't want to de-select this immediately.  Similarly, if we
+            // are in touch inputMode, we need to delay the item renderer highlight for a bit
+            if ((event.ctrlKey && selectedIndex == newIndex) || getStyle("inputMode") == "touch")
             {
                 pendingSelectionOnMouseUp = true;
                 pendingSelectionCtrlKey = event.ctrlKey;
                 pendingSelectionShiftKey = event.shiftKey;

-                if (getStyle("inputMode") == "touch" && scroller.viewport.clipAndEnableScrolling)
+                if (getStyle("inputMode") == "touch")
                 {
                     if (selectedIndex != newIndex)
                     {
                         // visually select the item here
-                        selectMouseDownItemAfterDelay(150);
+                        startSelectButtonAfterDelayTimer();
                     }
                 }
             }
@@ -1572,20 +1589,18 @@
         {
             // Don't commit the selection immediately, but wait to see if the user
             // is actually dragging. If they don't drag, then commit the selection
-            if (isItemIndexSelected(newIndex) || (getStyle("inputMode") == "touch" && scroller.viewport.clipAndEnableScrolling))
+            if (isItemIndexSelected(newIndex) || getStyle("inputMode") == "touch")
             {
                 pendingSelectionOnMouseUp = true;
                 pendingSelectionShiftKey = event.shiftKey;
                 pendingSelectionCtrlKey = event.ctrlKey;

-                if (getStyle("inputMode") == "touch" && scroller.viewport.clipAndEnableScrolling)
+                if (getStyle("inputMode") == "touch")
                 {
                     if (!isItemIndexSelected(newIndex))
                     {
                         // visually select the item here
-                        selectMouseDownItemAfterDelay(150);
-
-                        // FIXME (rfrishbe): Need to also deselect the old item
+                        startSelectButtonAfterDelayTimer();
                     }
                 }
             }
@@ -1624,30 +1639,29 @@
         }
     }

-    private var mouseDownSelectTimer:Timer;
-
-    private function selectMouseDownItemAfterDelay(delay:Number):void
-    {
-        mouseDownSelectTimer = new Timer(delay, 1);
+    /**
+     *  @private
+     *  Starts timer to select the button
+     */
+    private function startSelectButtonAfterDelayTimer():void
+    {
+        mouseDownSelectTimer = new Timer(DELAY_TO_SHOW_SELECTION_IN_TOUCH_MODE, 1);
         mouseDownSelectTimer.addEventListener(TimerEvent.TIMER_COMPLETE, mouseDownSelectTimer_timerCompleteHandler);
         mouseDownSelectTimer.start();
     }

-    private function mouseDownSelectTimer_timerCompleteHandler(event:TimerEvent):void
-    {
-        if (mouseDownIndex != -1)
-        {
-            // select item visually now
-            itemSelected(mouseDownIndex, true);
-
-            // deselect old selected item
-            if (selectedIndex != NO_SELECTION)
-            {
-                itemSelected(selectedIndex, false);
-            }
-        }
-    }
-
+    /**
+     *  @private
+     */
+    private function stopSelectButtonAfterDelayTimer():void
+    {
+        if (mouseDownSelectTimer)
+        {
+            mouseDownSelectTimer.stop();
+            mouseDownSelectTimer = null;
+        }
+    }
+
     /**
      *  @private
      *  Handles MouseEvent.MOUSE_MOVE events from any mouse
@@ -1986,8 +2000,7 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    // FIXME (rfrishbe): this should really be on start, not starting...
-    private function touchScrollStartingHandler(event:TouchScrollEvent):void
+    private function touchScrollStartHandler(event:TouchScrollEvent):void
     {
         if (event.scrollingObject == this.scroller)
         {
@@ -1995,9 +2008,7 @@
             mouseDownCancelledFromScroll = true;

             // remove visual selection indicator
-            if (mouseDownSelectTimer)
-                mouseDownSelectTimer.stop();
-            mouseDownSelectTimer = null;
+            stopSelectButtonAfterDelayTimer();

             // unselect what we thought was selected
             itemSelected(mouseDownIndex, false);
@@ -2601,14 +2612,17 @@
             ensureIndexIsVisible(proposedNewIndex);
         }
         // Entering the caret state with the Ctrl key down
-        else if (event.ctrlKey)
+        // FIXME (rfrishbe): shouldn't just check inputMode but should depend on
+        // either the platform or whether it was a 5-way button or whether
+        // soem other keyboardSelection style.
+        else if (event.ctrlKey || getStyle("inputMode") == "touch")
         {
             var oldCaretIndex:Number = caretIndex;
             setCurrentCaretIndex(proposedNewIndex);
             var e:IndexChangeEvent = new IndexChangeEvent(IndexChangeEvent.CARET_CHANGE);
             e.oldIndex = oldCaretIndex;
             e.newIndex = caretIndex;
-            dispatchEvent(e);
+            dispatchEvent(e);
             ensureIndexIsVisible(proposedNewIndex);
         }
         // Its just a new selection action, select the new index.
@@ -2631,6 +2645,24 @@
             (richEditableTextClass && focusObj is richEditableTextClass &&
              focusObj.editable == true))
     }
+
+    /**
+     *  @private
+     */
+    private function mouseDownSelectTimer_timerCompleteHandler(event:TimerEvent):void
+    {
+        if (mouseDownIndex != -1)
+        {
+            // select item visually now
+            itemSelected(mouseDownIndex, true);
+
+            // deselect old selected item
+            if (selectedIndex != NO_SELECTION)
+            {
+                itemSelected(selectedIndex, false);
+            }
+        }
+    }
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 3154
Author:   jimurphy@adobe.com
Date:     2008-09-09T13:55:57.617710Z

Log Message:
-----------
Merged 3.0.x revisions [3143-3144 ] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>

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

--- frameworks/projects/mx/src/mx/controls/MenuBar.as
+++ frameworks/projects/mx/src/mx/controls/MenuBar.as
@@ -50,6 +50,7 @@
 import mx.styles.StyleManager;
 import mx.styles.StyleProxy;
 import mx.collections.IViewCursor;
+import mx.events.InterManagerRequest;

 use namespace mx_internal;

@@ -1656,15 +1657,28 @@
         // The getMenuAt function will create the Menu if it doesn't
         // already exist.
         var menu:Menu = getMenuAt(index);
-        var sm:ISystemManager = systemManager;
-        var screen:Rectangle = sm.screen;
+        var sm:ISystemManager = systemManager.topLevelSystemManager;
+        var sbRoot:DisplayObject = sm.getSandboxRoot();
+        var screen:Rectangle;
+
+        if (sm != sbRoot)
+        {
+            var request:InterManagerRequest = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST,
+                                    false, false,
+                                    "getVisibleApplicationRect");
+            sbRoot.dispatchEvent(request);
+            screen = Rectangle(request.value);
+        }
+        else
+            screen = sm.getVisibleApplicationRect();

         UIComponentGlobals.layoutManager.validateClient(menu, true);
-
+
         // popups go on the root of the swf which if loaded, is not
         // necessarily at 0,0 in global coordinates
         var pt:Point = new Point(0, 0);
         pt = DisplayObject(item).localToGlobal(pt);
+
         // check to see if we'll go offscreen
         if (pt.y + item.height + 1 + menu.getExplicitOrMeasuredHeight() > screen.height + screen.y)
             pt.y -= menu.getExplicitOrMeasuredHeight();
@@ -1672,7 +1686,7 @@
             pt.y += item.height + 1;
         if (pt.x + menu.getExplicitOrMeasuredWidth() > screen.width + screen.x)
             pt.x = screen.x + screen.width - menu.getExplicitOrMeasuredWidth();
-        pt = DisplayObject(sm.topLevelSystemManager).globalToLocal(pt);
+        pt = sbRoot.globalToLocal(pt);

         // If inside an ACB, slight offset looks much better.
         if (isInsideACB)


trace out samples when sampling is paused for now

--- Agent.as
+++ Agent.as
@@ -7,6 +7,7 @@
     import flash.events.SecurityErrorEvent;
     import flash.net.XMLSocket;
     import flash.system.System;
+    import flash.utils.getQualifiedClassName;
     import flash.sampler.*;

     public class Agent extends Sprite {
@@ -53,7 +54,7 @@

                     trace(getSampleCount());
                     for each (var s:Sample in getSamples()) {
-                        trace(s);
+                        trace(sampleToString(s));
                     }
                     return;
                 case "STOP SAMPLING":
@@ -61,6 +62,43 @@
                     _socket.send("OK STOP");
                     return;
     	    }
+    	}
+
+    	private function sampleToString(s:Sample):String {
+            if( s is NewObjectSample ) {
+                var nos:NewObjectSample = s as NewObjectSample;
+
+                return "[NewObjectSample" +
+                    "\n     id: " + nos.id +
+                    "\n   type: " + getQualifiedClassName(nos.type) +
+                    "\n   time: " + nos.time +
+                    "\n  stack: " + stackToString(nos.stack) +
+                    "\n]";
+
+            } else if( s is DeleteObjectSample ) {
+                var dos:DeleteObjectSample = s as DeleteObjectSample;
+
+                return "[DeleteObjectSample" +
+                    "\n     id: " + dos.id +
+                    "\n   size: " + dos.size +
+                    "\n   time: " + dos.time +
+                    "\n  stack: " + stackToString(dos.stack) +
+                    "\n]";
+            }
+
+            return "[Sample" +
+                "\n   time: " + s.time +
+                "\n  stack: " + stackToString(s.stack) +
+                "]";
+    	}
+
+    	private function stackToString(stack:Array):String {
+    	    if( null == stack ) {
+    	        return "(none)";
+    	    }
+
+    	    var separator:String = "\n    ";
+    	    return separator + stack.join(separator);
     	}

     	private function connect():void {


Transferred from the Adobe Open Source Subversion Repository

Revision: 17992
Author:   rfrishbe@adobe.com
Date:     2010-10-01T20:59:13.104275Z

Log Message:
-----------
Making performance changes to optimize list scrolling.  Most of the changes are around gating dispatchEvent() with hasEventListener().  The biggest of these is that UIComponent SHOW and HIDE don't dispatch all the time anymore--they only dispatch if someone has attached an event listener directly to them (capture phase won't work).

Also, adding an mx_internal property for Design View on MobileIconItemRenderer, iconDisplayClass.

Also, adding a FIXME in ButtonSkinbase related to my last change around text measurement.

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/core/ContentRequest.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/MobileTextField.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.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="M">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/src/spark/skins/wireframe/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataRenderer.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@1289261 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/wireframe/src/spark/skins/wireframe/DefaultItemRenderer.as
+++ frameworks/projects/wireframe/src/spark/skins/wireframe/DefaultItemRenderer.as
@@ -240,7 +240,8 @@
     {
         _data = value;

-        dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
+        if (hasEventListener(FlexEvent.DATA_CHANGE))
+            dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
     }

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


Minor rearrangement.

Minor rearrangement.

--- tamarin-central/thane/as3src/flash/utils/Timer.as
+++ tamarin-central/thane/as3src/flash/utils/Timer.as
@@ -104,6 +104,12 @@
         throw new Error("Too many simultaneous running flash.utils.Timer objects");
     }

+    private static function compareTimers (a :Buddy, b :Buddy) :int
+    {
+        // b-a rather than a-b so as to order low values before high
+        return b.expiration - a.expiration;
+    }
+
     protected static function heartbeat () :void
     {
         var now :int = getTimer();
@@ -117,7 +123,7 @@
     }

     static function createTimer (closure :Function, delay :Number,
-                                           timeout :Boolean, args :Array) :uint
+                                 timeout :Boolean, args :Array) :uint
     {
         var timer :Timer = new Timer(delay, timeout ? 1 : 0);
         var thisIx = _timerIx;
@@ -143,12 +149,6 @@
         }
     }

-    private static function compareTimers (a :Buddy, b :Buddy) :int
-    {
-        // b-a rather than a-b so as to order low values before high
-        return b.expiration - a.expiration;
-    }
-
     private var _currentCount :int;
     private var _delay :Number;
     private var _repeatCount :int;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

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

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

--- frameworks/projects/charts/src/mx/charts/renderers/CircleItemRenderer.as
+++ frameworks/projects/charts/src/mx/charts/renderers/CircleItemRenderer.as
@@ -0,0 +1,199 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.charts.renderers
+{
+
+import flash.display.Graphics;
+import flash.geom.Rectangle;
+import mx.charts.ChartItem;
+import mx.charts.chartClasses.GraphicsUtilities;
+import mx.core.IDataRenderer;
+import mx.graphics.IFill;
+import mx.graphics.IStroke;
+import mx.skins.ProgrammaticSkin;
+import mx.graphics.SolidColor;
+import mx.utils.ColorUtil;
+
+/**
+ *  A simple chart itemRenderer implementation
+ *  that fills an elliptical area.
+ *  This class can be used as an itemRenderer for ColumnSeries, BarSeries, AreaSeries, LineSeries,
+ *  PlotSeries, and BubbleSeries objects.
+ *  It renders its area on screen using the fill and stroke styles
+ *  of its associated series.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class CircleItemRenderer extends ProgrammaticSkin
+								implements IDataRenderer
+{
+    include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class variables
+    //
+    //--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	private static var rcFill:Rectangle = new Rectangle();
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function CircleItemRenderer()
+	{
+		super();
+	}
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+	//  data
+    //----------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the data property.
+	 */
+	private var _data:Object;
+
+	[Inspectable(environment="none")]
+
+	/**
+	 *  The chartItem that this itemRenderer displays.
+	 *  This value is assigned by the owning series.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public function get data():Object
+	{
+		return _data;
+	}
+
+	/**
+	 *  @private
+	 */
+	public function set data(value:Object):void
+	{
+		if (_data == value)
+			return;
+
+		_data = value;
+	}
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override protected function updateDisplayList(unscaledWidth:Number,
+												  unscaledHeight:Number):void
+	{
+		super.updateDisplayList(unscaledWidth, unscaledHeight);
+		var fill:IFill;
+		var state:String = "";
+
+		if (_data is ChartItem && _data.hasOwnProperty('fill'))
+		{
+		 	fill = _data.fill;
+		 	state = _data.currentState;
+		}
+		else
+		 	fill = GraphicsUtilities.fillFromStyle(getStyle('fill'));
+
+
+        var color:uint;
+		var adjustedRadius:Number = 0;
+
+		switch (state)
+		{
+			case ChartItem.FOCUSED:
+			case ChartItem.ROLLOVER:
+				if (styleManager.isValidStyleValue(getStyle('itemRollOverColor')))
+					color = getStyle('itemRollOverColor');
+				else
+					color = ColorUtil.adjustBrightness2(GraphicsUtilities.colorFromFill(fill),-20);
+				fill = new SolidColor(color);
+				adjustedRadius = getStyle('adjustedRadius');
+				if (!adjustedRadius)
+					adjustedRadius = 0;
+				break;
+			case ChartItem.DISABLED:
+				if (styleManager.isValidStyleValue(getStyle('itemDisabledColor')))
+					color = getStyle('itemDisabledColor');
+				else
+					color = ColorUtil.adjustBrightness2(GraphicsUtilities.colorFromFill(fill),20);
+				fill = new SolidColor(GraphicsUtilities.colorFromFill(color));
+				break;
+			case ChartItem.FOCUSEDSELECTED:
+			case ChartItem.SELECTED:
+				if (styleManager.isValidStyleValue(getStyle('itemSelectionColor')))
+					color = getStyle('itemSelectionColor');
+				else
+					color = ColorUtil.adjustBrightness2(GraphicsUtilities.colorFromFill(fill),-30);
+				fill = new SolidColor(color);
+				adjustedRadius = getStyle('adjustedRadius');
+				if (!adjustedRadius)
+					adjustedRadius = 0;
+				break;
+		}
+
+		var stroke:IStroke = getStyle("stroke");
+
+		var w:Number = stroke ? stroke.weight / 2 : 0;
+
+		rcFill.right = unscaledWidth;
+		rcFill.bottom = unscaledHeight;
+
+		var g:Graphics = graphics;
+		g.clear();
+		if (stroke)
+			stroke.apply(g,null,null);
+		if (fill)
+			fill.begin(g, rcFill, null);
+		g.drawEllipse(w - adjustedRadius,w - adjustedRadius,unscaledWidth - 2 * w + adjustedRadius * 2, unscaledHeight - 2 * w + adjustedRadius * 2);
+
+		if (fill)
+			fill.end(g);
+	}
+
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 4824
Author:   rfrishbe@adobe.com
Date:     2009-02-04T02:04:24.158140Z

Log Message:
-----------
Modifying flash component kit.  We now implement ILayoutElement directly on UIMovieClip.  I also fixed some scaling issues and worked on the Flash Container so we size children appropriately, adding a flag to size the content to the size of the flash container and a flag to unscale the flex content (even though it's parent is scaled due to resizing).

Because of this, we can remove ILayoutElementUIC.  Some point soon, we'll remove LayoutElementFactory and just assume all elements implement ILayoutElement (will do this change when we make IVisualElement extend ILayoutElement).

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Glenn, Evtim
tests: checkintests

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutElementFactory.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/FlexContentHolder.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/ContainerMovieClip.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutElementUIC.as</path>

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

--- frameworks/projects/flash-integration/src/mx/flash/ContainerMovieClip.as
+++ frameworks/projects/flash-integration/src/mx/flash/ContainerMovieClip.as
@@ -13,10 +13,12 @@
 {

 import flash.display.DisplayObjectContainer;
-import flash.display.MovieClip;
+import flash.events.Event;
 import flash.events.FocusEvent;
+import flash.geom.Rectangle;

 import mx.core.IUIComponent;
+import mx.core.mx_internal;

 [DefaultProperty("content")]

@@ -83,7 +85,6 @@
     //  Properties
     //
     //--------------------------------------------------------------------------
-

     //----------------------------------
     //  contentHolder
@@ -184,12 +185,156 @@
             _content = value;
         }
     }
+
+    //----------------------------------
+    //  fillContentToSize
+    //----------------------------------
+
+    private var _fillContentToSize:Boolean = false;
+
+    /**
+     *  Whether the flex content is sized to be the same size as the flash
+     *  container.
+     *
+     *
There is no layout system for the Flash container.  By default the
+     *  flex content is sized normally.  However, if you set this flag to true,
+     *  the flex content will be sized to 100% of the size of the flash
+     *  container.

+     *
+     *  @default false
+     */
+    public function get fillContentToSize():Boolean
+    {
+        return _fillContentToSize;
+    }
+
+   /**
+    *  @private
+    */
+    public function set fillContentToSize(value:Boolean):void
+    {
+        _fillContentToSize = value;
+
+        sizeContentHolder();
+    }
+
+    //----------------------------------
+    //  scaleContent
+    //----------------------------------
+
+    private var _scaleContent:Boolean = false;
+
+    /**
+     *  Whether the scale of the container due to sizing
+     *  affects the scale of the flex content.
+     *
+     *
When Flash components are resized, they scale up or down to their new size.
+     *  However, this means their children are also scaled up or down.  By setting this
+     *  flag to false, the children are inversely scaled when the container is resized.

+     *
+     *
Note: When the container is scaled direclty (through scaleX or scaleY), the
+     *  content will also be scaled accordingly.  This only affects scaling of the
+     *  container due to sizing.

+     *
+     *  @default false
+     */
+    public function get scaleContent():Boolean
+    {
+        return _scaleContent;
+    }
+
+   /**
+    *  @private
+    */
+    public function set scaleContent(value:Boolean):void
+    {
+        _scaleContent = value;
+
+        sizeContentHolder();
+    }

     //--------------------------------------------------------------------------
     //
     //  Methods
     //
     //--------------------------------------------------------------------------
+
+   /**
+    *  @private
+    */
+    override public function setActualSize(newWidth:Number, newHeight:Number):void
+    {
+        super.setActualSize(newWidth, newHeight);
+
+        sizeContentHolder();
+    }
+
+    /**
+     *  @private
+     *
+     *  Sizes the contentHolder and sets the scale of the contentHolder
+     *  according to applyInverseScaleToContent.
+     */
+    protected function sizeContentHolder():void
+    {
+        if (contentHolderObj)
+        {
+            // secretScale is the amount we scaled by to change the width and height
+            var secretScaleX:Number = mx_internal::$scaleX/scaleX;
+            var secretScaleY:Number = mx_internal::$scaleY/scaleY;
+
+            // width and height are what we actually want our content
+            // to fill up, but it doesn't take in to account our secretScale.
+            if (!scaleContent)
+            {
+                // apply inverse of the scale and set the width/height normally
+                contentHolderObj.scaleX = 1/secretScaleX;
+                contentHolderObj.scaleY = 1/secretScaleY;
+
+                contentHolderObj.setActualSize(width, height);
+            }
+            else
+            {
+                // apply the scale to the width/height
+                contentHolderObj.scaleX = 1;
+                contentHolderObj.scaleY = 1;
+
+                contentHolderObj.setActualSize(width / secretScaleX,
+                                               height / secretScaleY);
+            }
+        }
+    }
+
+    override protected function get bounds():Rectangle
+    {
+        if (!trackSizeChanges)
+            return super.bounds;
+
+        // we don't want our bounds to include the bounds of our child
+        // otherwise we can get into a scenario where we're telling our
+        // child to be width, height from setActualSize above and they are
+        // actually a bit bigger due to drawing outside the lines.
+        // then when we get bounds next time, we're also a tad bigger,
+        // and this goes on and on in this fashion until we're infinitely large
+        var contentHolderIndex:int = -1;
+        var myContentHolder:FlexContentHolder;
+
+        if (contentHolderObj && contentHolderObj.parent == this)
+        {
+            myContentHolder = contentHolderObj;
+            contentHolderIndex = getChildIndex(contentHolderObj);
+            removeChild(contentHolderObj);
+        }
+
+       var myBounds:Rectangle = super.bounds;
+
+        if (myContentHolder)
+        {
+            addChildAt(myContentHolder, contentHolderIndex);
+        }
+
+        return myBounds;
+    }

    /**
     *  @private


Transferred from the Adobe Open Source Subversion Repository

Revision: 11942
Author:   dloverin@adobe.com
Date:     2009-11-18T17:33:13.065717Z

Log Message:
-----------
StyleManager fixes.

Stop using the styleManager property in a constructor.
framework/src/mx/containers/DividedBox.as
framework/src/mx/containers/Form.as
framework/src/mx/controls/ButtonBar.as

Cache inheriting styles. Also made static arrays in StyleManagerImpl per-instance.
framework/src/mx/events/FlexChangeEvent.as
framework/src/mx/styles/StyleManagerImpl.as

Remove static StyleManager methods that were new to Flex 4 (qualifiedTypeSelectors property, getStyleDeclarations(), hasAdvancedSelectors(), hasPseudoCondition()).
framework/src/mx/styles/StyleManager.as

Update copyright.
framework/src/mx/styles/CSSMergedStyleDeclaration.as

QE notes: None.
Doc notes: None.
Bugs: SDK-24215
Reviewer: Alex
Tests run: checkintests, containers/DividedBox, containers/form, components/ButtonBar, Managers/StyleManager, PerModuleStyleManager
Is noteworthy for integration: yes - StyleManager performance improvement

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/DividedBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/CSSMergedStyleDeclaration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Form.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/events/FlexChangeEvent.as</path>

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

--- frameworks/projects/framework/src/mx/styles/CSSMergedStyleDeclaration.as
+++ frameworks/projects/framework/src/mx/styles/CSSMergedStyleDeclaration.as
@@ -1,7 +1,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
 //  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-2007 Adobe Systems Incorporated
+//  Copyright 2009 Adobe Systems Incorporated
 //  All Rights Reserved.
 //
 //  NOTICE: Adobe permits you to use, modify, and distribute this file


Transferred from the Adobe Open Source Subversion Repository

Revision: 18747
Author:   rfrishbe@adobe.com
Date:     2010-11-19T21:49:23.290523Z

Log Message:
-----------
A few MobileSkin changes

1) Added new protected methods to MobileSkin (getElementPreferredWidth(), getElementPreferredHeight())
2) Renamed MobileSkin resizePart(), positionPart() to resizeElement, positionElement().  This matches MobileItemRenderer but still needs to be PARBed
3) Fixed up multi-line resize in TextAreaSkin

QE notes:
Doc notes:
Bugs: -
Reviewer: Evtim
Tests run: checkintests, mustella cyclone
Is noteworthy for integration: No

Modified Paths:
--------------
<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/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/SelectableButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as
@@ -93,7 +93,7 @@

     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
-        resizePart(track, unscaledWidth, unscaledHeight);
+        resizeElement(track, unscaledWidth, unscaledHeight);
     }
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 19724
Author:   jasonsj@adobe.com
Date:     2011-01-12T01:07:20.451197Z

Log Message:
-----------
Moved ActionBar font color style declaration to #titleDisplay part and subclasses of ButtonBase
Replaced MobileSkin usage of layoutMeasuredWidth/Height with minWidth/Height

QE notes: Some mustella baselines for ActionBar custom content will need to be regenerated. In particular, usage of TextInput with text content.
Doc notes:
Bugs:
SDK-28948 The default color for text in TextInput on ActionBar is white so it looks invisible
SDK-28953 Button width not adjusted as expected when changing percentWidth at runtime
Reviewer: rfrishbe, chiedozi
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextAreaVScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationBackButtonSkin.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/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TextAreaHScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/TabbedViewNavigatorButtonBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionRoundedButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as
@@ -13,11 +13,12 @@
 {

 import mx.core.DPIClassification;
+import mx.core.mx_internal;

 import spark.components.Button;
 import spark.components.VScrollBar;
 import spark.skins.mobile.supportClasses.MobileSkin;
-import mx.core.mx_internal;
+
 use namespace mx_internal;

 /**
@@ -50,7 +51,7 @@
         super();

         useChromeColor = true;
-        layoutMeasuredHeight = 20;
+        minHeight = 20;
         thumbSkinClass = VScrollBarThumbSkin;
         var paddingRight:int;
         var paddingVertical:int;
@@ -60,14 +61,14 @@
         {
             case DPIClassification.DPI_320:
             {
-                layoutMeasuredWidth = 12;
+                minWidth = 12;
                 paddingRight = VScrollBarThumbSkin.PADDING_RIGHT_320DPI;
                 paddingVertical = VScrollBarThumbSkin.PADDING_VERTICAL_320DPI;
                 break;
             }
             case DPIClassification.DPI_240:
             {
-                layoutMeasuredWidth = 9;
+                minWidth = 9;
                 paddingRight = VScrollBarThumbSkin.PADDING_RIGHT_240DPI;
                 paddingVertical = VScrollBarThumbSkin.PADDING_VERTICAL_240DPI;
                 break;
@@ -75,16 +76,16 @@
             default:
             {
                 // default PPI160
-                layoutMeasuredWidth = 6;
+                minWidth = 6;
                 paddingRight = VScrollBarThumbSkin.PADDING_RIGHT_DEFAULTDPI;
                 paddingVertical = VScrollBarThumbSkin.PADDING_VERTICAL_DEFAULTDPI;
                 break;
             }
         }
-
+
         // The minimum height is set such that, at it's smallest size, the thumb appears
         // as high as it is wide.
-        minThumbHeight = (layoutMeasuredWidth - paddingRight) + (paddingVertical * 2);
+        minThumbHeight = (minWidth - paddingRight) + (paddingVertical * 2);
     }

     //--------------------------------------------------------------------------
@@ -97,12 +98,12 @@
      *  @copy spark.skins.spark.ApplicationSkin#hostComponent
      */
     public var hostComponent:VScrollBar;
-
+
     /**
      *  @private
      */
     private var minThumbHeight:Number;
-
+
     /**
      *  Skin to use for the thumb Button skin part
      */
@@ -150,8 +151,8 @@
             // We don't want a visible track so we set the skin to MobileSkin
             track = new Button();
             track.setStyle("skinClass", spark.skins.mobile.supportClasses.MobileSkin);
-            track.width = layoutMeasuredWidth;
-            track.height = layoutMeasuredHeight;
+            track.width = minWidth;
+            track.height = minHeight;
             addChild(track);
         }
         if (!thumb)
@@ -159,19 +160,10 @@
             thumb = new Button();
             thumb.minHeight = minThumbHeight;
             thumb.setStyle("skinClass", thumbSkinClass);
-            thumb.width = layoutMeasuredWidth;
-            thumb.height = layoutMeasuredWidth;
+            thumb.width = minWidth;
+            thumb.height = minWidth;
             addChild(thumb);
         }
-    }
-
-    /**
-     *  @private
-     */
-    override protected function measure():void
-    {
-        measuredWidth = layoutMeasuredWidth;
-        measuredHeight = layoutMeasuredHeight;
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 20931
Author:   cframpto@adobe.com
Date:     2011-03-21T14:21:57.979092Z

Log Message:
-----------
ASdoc changes that missed Flex 4.5 - mostly the mxml syntax sections for the new DataGrid and Image components but also some other errors I noticed in various classes.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/gridClasses/GridItemEditor.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Label.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Image.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridColumn.as
@@ -40,6 +40,37 @@
  *  It also specifies the item renderer used to display that value, the item editor
  *  used to change the value, and other properties of the column.
  *
+ *  @mxml
The <s:GridColumn> tag inherits all of the tag
+ *  attributes of its superclass and adds the following tag attributes:

+ *
+ *

+ *  <s:GridColumn
+ *    Properties
+ *    dataField="null"
+ *    dataTipField="null"
+ *    dataTipFormatter="null"
+ *    dataTipFunction="null"
+ *    editable="true"
+ *    formatter="null"
+ *    headerRenderer="null"
+ *    headerText="value of dataField"
+ *    imeMode="null"
+ *    itemEditor="null"
+ *    itemRendererFunction="null"
+ *    labelFunction="null"
+ *    maxWidth="NaN"
+ *    minWidth="20"
+ *    rendererIsEditable="false"
+ *    resizeable="true"
+ *    showDataTips="undefined"
+ *    sortable="true"
+ *    sortCompareFunction="null"
+ *    sortDescending="false"
+ *    visible="true"
+ *    width="NaN"
+ *  />
+ *

+ *
  *  @see spark.components.Grid
  *  @see spark.components.DataGrid
  *
@@ -1375,7 +1406,7 @@
      *
      *
If the data provider is not an ICollectionView, then this property has no effect.

      *
-     *  @default false;
+     *  @default false
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

Revision: 18031
Author:   klin@adobe.com
Date:     2010-10-06T18:01:29.650399Z

Log Message:
-----------
Enable column visibility to change at runtime. When column.visible is changed, it will cause the columns IList to dispatch a CollectionEventKind.UPDATE event for the Grid to handle. The Grid then fixes up GridDimensions and clears the layout cache.

Grid.as - Added columns_visibleChangedHandler which is called when the Grid gets an UPDATE event from the columns IList. It clears the columns that are changing and sets their typical and actual width to the correct values in gridDimensions.

GridColumn.as - visible property now dispatches a CollectionEvent on the columns IList.

GridDimensions.as, GridLayout.as, GridSelection.as - various small fixes to make this all work.

QE notes: No
Doc notes: No
Bugs: SDK-26843
Reviewer: Hans
Tests run: cyclone server
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridSelection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridDimensions.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridLayout.as
@@ -105,7 +105,6 @@
      */
     private const visibleGridBounds:Rectangle = new Rectangle();

-
     /**
      *  @private
      *  The elements available for reuse.  Maps from an IFactory to a list of the elements
@@ -383,15 +382,17 @@
                 performanceStatistics.updateDisplayListStartTime = startTime;
         }

+        // Find the index of the last GridColumn.visible==true column
         const columns:IList = grid.columns;
-        if (!columns)
+        const lastVisibleColumnIndex:int = (columns) ? grid.getPreviousVisibleColumnIndex(grid.columns.length) : -1;
+        if (!columns || lastVisibleColumnIndex < 0)
+        {
+            // HACK: Make sure columnHeaderBar fixes itself
+            var dg:DataGrid = grid.gridOwner as DataGrid;
+            if (dg && dg.columnHeaderBar)
+                dg.columnHeaderBar.invalidateDisplayList();
             return;
-
-        // Find the index of the last GridColumn.visible==true column
-
-        const lastVisibleColumnIndex:int = grid.getPreviousVisibleColumnIndex(grid.columns.length);
-        if (lastVisibleColumnIndex < 0)
-            return;
+        }

         // Layout the item renderers and compute new values for visibleRowIndices et al

@@ -447,7 +448,7 @@
             visibleColumnSeparators, oldVisibleColumnIndices, visibleColumnIndices, layoutColumnSeparator, lastVisibleColumnIndex);

         // HACK
-        var dg:DataGrid = grid.gridOwner as DataGrid;
+        dg = grid.gridOwner as DataGrid;
         if (dg && dg.columnHeaderBar)
             dg.columnHeaderBar.invalidateDisplayList();


Transferred from the Adobe Open Source Subversion Repository

Revision: 5203
Author:   smgilson@adobe.com
Date:     2009-03-08T18:43:31.818371Z

Log Message:
-----------
Fix broken ASDoc comment

QE Notes: None
Doc Notes: None
Bugs: -

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as

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

--- frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as
+++ frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as
@@ -29,17 +29,17 @@
  *
At minimum, subclasses must implement the updateDisplayList()
  *  method, which positions and sizes the target GroupBase's elements, and
  *  the measure() method, which calculates the target's default
- *  size.
+ *  size.

  *
- *  Subclasses may override methods like elementBoundsAboveScrollRect()
+ *
Subclasses may override methods like elementBoundsAboveScrollRect()
  *  and elementBoundsBelowScrollRect() to customize the way
- *  the target behaves when it's connected to scrollbars.
+ *  the target behaves when it's connected to scrollbars.

  *
  *
Subclasses that support virtualization must respect the
  *  useVirtualLayout property and should only retrieve
  *  layout elements within the scrollRect (the value of
  *  getTargetScrollRect()) using getVirtualElementAt()
- *  from within updateDisplayList().
+ *  from within updateDisplayList().

  */
 public class LayoutBase extends OnDemandEventDispatcher
 {
@@ -325,19 +325,19 @@
      *
This is one of the methods that you must override when creating a
      *  subclass of LayoutBase. The other method is updateDisplayList().
      *  You do not call these methods directly. Flex calls this method as part
-     *  of a layout pass. A layout pass consists of three phases.
-     *
-     *  First, if the target's properties are invalid, the LayoutManager calls
-     *  the target's commitProperties method.
-     *
-     *  Second, if the target's size is invalid, LayoutManager calls the target's
+     *  of a layout pass. A layout pass consists of three phases.

+     *
+     *
First, if the target's properties are invalid, the LayoutManager calls
+     *  the target's commitProperties method.

+     *
+     *
Second, if the target's size is invalid, LayoutManager calls the target's
      *  validateSize() method. The target's validateSize()
      *  will in turn call the layout's measure() to calculate the
      *  target's default size unless it was explicitly specified by both target's
-     *  explicitWidth and explicitHeight</codd> properties.
-     *  If the default size changes, Flex will invalidate the target's display list.
-     *
-     *  Last, if the target's display list is invalid, LayoutManager calls the target's
+     *  explicitWidth and explicitHeight properties.
+     *  If the default size changes, Flex will invalidate the target's display list.

+     *
+     *
Last, if the target's display list is invalid, LayoutManager calls the target's
      *  validateDisplayList. The target's validateDisplayList
      *  will in turn call the layout's updateDisplayList method to
      *  size and position the target's elements.

@@ -370,19 +370,19 @@
      *
This is one of the methods that you must override when creating a
      *  subclass of LayoutBase. The other method is measure().
      *  You do not call these methods directly. Flex calls this method as part
-     *  of a layout pass. A layout pass consists of three phases.
-     *
-     *  First, if the target's properties are invalid, the LayoutManager calls
-     *  the target's commitProperties method.
-     *
-     *  Second, if the target's size is invalid, LayoutManager calls the target's
+     *  of a layout pass. A layout pass consists of three phases.

+     *
+     *
First, if the target's properties are invalid, the LayoutManager calls
+     *  the target's commitProperties method.

+     *
+     *
Second, if the target's size is invalid, LayoutManager calls the target's
      *  validateSize() method. The target's validateSize()
      *  will in turn call the layout's measure() to calculate the
      *  target's default size unless it was explicitly specified by both target's
-     *  explicitWidth and explicitHeight</codd> properties.
-     *  If the default size changes, Flex will invalidate the target's display list.
-     *
-     *  Last, if the target's display list is invalid, LayoutManager calls the target's
+     *  explicitWidth and explicitHeight properties.
+     *  If the default size changes, Flex will invalidate the target's display list.

+     *
+     *
Last, if the target's display list is invalid, LayoutManager calls the target's
      *  validateDisplayList. The target's validateDisplayList
      *  will in turn call the layout's updateDisplayList method to
      *  size and position the target's elements.


Transferred from the Adobe Open Source Subversion Repository

Revision: 20062
Author:   chiedozi@adobe.com
Date:     2011-02-02T18:59:57.668632Z

Log Message:
-----------
Removed Flash @playerversion tags from ViewNavigatorApplication and ViewNavigatorApplicationBase because the components are AIR only

QE notes:
Doc notes:
Bugs:
Reviewer: Jason San Jose
Tests run:
Is noteworthy for integration: No

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
@@ -1911,7 +1911,6 @@
         view.data = viewProxy.data;
         view.percentWidth = view.percentHeight = 100;

-        // Update the views orientation state
         addElement(view);

         return view;


Transferred from the Adobe Open Source Subversion Repository

Revision: 16758
Author:   chiedozi@adobe.com
Date:     2010-07-01T02:40:32.399747Z

Log Message:
-----------
Fixed a RTE in ViewNavigator that occurred when the sections property changed.

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

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as

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

--- frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as
@@ -178,9 +178,6 @@
     [SkinPart(required="false")]
     public var actionBar:ActionBar;

-    [SkinPart(required="false")]
-    public var viewContainer:Group;
-
     //--------------------------------------------------------------------------
     //
     // Variables
@@ -376,6 +373,9 @@
      */
     public function set sections(value:Vector.<ViewNavigatorSection>):void
     {
+		currentViewChanged = true;
+		selectedSectionChanged = true;
+
         if (value)
         {
             _sections = value.concat();
@@ -387,12 +387,14 @@
             selectedIndex = -1;
         }

-        currentViewChanged = true;
-        selectedSectionChanged = true;
-        invalidateProperties();
-
-        if (tabBar)
-            tabBar.visible = tabBar.includeInLayout = (_sections != null && _sections.length > 1);
+		internalDispatchEvent(CollectionEventKind.RESET);
+
+		if (tabBar)
+			tabBar.visible = tabBar.includeInLayout = (_sections != null && _sections.length > 1);
+
+		// Changing the section always forces a validation to happened immediately
+		if (initialized)
+        	validateNow();
     }

@@ -439,7 +441,7 @@
             throw new RangeError(message);
         }

-        if (value == selectedIndex)
+        if (!selectedSectionChanged && value == selectedIndex)
             return;

@@ -1084,6 +1086,10 @@
         // Run transition
         if (transition)
         {
+            // Notify listeners that a new view has been successfully added to the stage
+            if (hasEventListener(ViewNavigatorEvent.VIEW_TRANSITION_START))
+                dispatchEvent(new ViewNavigatorEvent(ViewNavigatorEvent.VIEW_TRANSITION_START, false, false, pendingView, transition));
+
             transition.play();
         }
         else
@@ -1100,6 +1106,10 @@
     protected function transitionComplete(event:Event):void
     {
         ViewTransition(event.target).removeEventListener(Event.COMPLETE, transitionComplete);
+
+        // Notify listeners that a new view has been successfully added to the stage
+        if (hasEventListener(ViewNavigatorEvent.VIEW_TRANSITION_END))
+            dispatchEvent(new ViewNavigatorEvent(ViewNavigatorEvent.VIEW_TRANSITION_END, false, false));

         endViewChange();
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 11450
Author:   dsubrama@adobe.com
Date:     2009-11-05T01:10:56.713867Z

Log Message:
-----------
Cleaning up the whitespace in these 3 files (tabs to spaces).

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.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/supportClasses/GroupBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as
@@ -629,79 +629,79 @@
         }
     }

-	//----------------------------------
-	//  overlay
-	//----------------------------------
-
-	/**
-	 *  @private
-	 *  Storage for the overlay property
-	 */
-	mx_internal var _overlay:DisplayLayer;
-
-	[Inspectable(category="General")]
-
-	/**
-	 *  The overlay plane for this Group.
-	 *  All objects of the overlay plane render on top of the Group elements.
-	 *  Don't hold on to this object, as Group destroys and creates it on demand.
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 1.5
-	 *  @productversion Flex 4
-	 */
-	public function get overlay():DisplayLayer
-	{
-		if (!_overlay)
-		{
-			_overlay = new DisplayLayer();
-			_overlay.addEventListener(DisplayLayerObjectExistenceEvent.OBJECT_ADD, overlay_objectAdd);
-			_overlay.addEventListener(DisplayLayerObjectExistenceEvent.OBJECT_REMOVE, overlay_objectRemove);
-
-			// Invalidate properties, so that if nothing was actually added to the
-			// overlay object, we'll clean it up:
-			invalidateProperties();
-		}
-		return _overlay;
-	}
-
-	/**
-	 *  @private
-	 *  Event listener to add overlay objects when added to the overlay DisplayLayer.
-	 */
-	private function overlay_objectAdd(event:DisplayLayerObjectExistenceEvent):void
-	{
-		super.addChildAt(event.object, event.index + numChildren - _overlay.numDisplayObjects + 1);
-	}
-
-	/**
-	 *  @private
-	 *  Event listener to remove overlay objects when removed from the overlay
-	 *  DisplayLayer.
-	 */
-	private function overlay_objectRemove(event:DisplayLayerObjectExistenceEvent):void
-	{
-		// Remove the object from the display list
-		super.removeChild(event.object);
-
-		// Is this the last display object?
-		if (_overlay.numDisplayObjects == 1)
-			invalidateProperties();
-	}
-
-	/**
-	 *  Destroys the overlay object. This method gets called on commitProperties
-	 *  when the overlay doesn't contain any objects.
-	 */
-	private function destroyOverlay():void
-	{
-		_overlay.removeEventListener(DisplayLayerObjectExistenceEvent.OBJECT_ADD, overlay_objectAdd);
-		_overlay.removeEventListener(DisplayLayerObjectExistenceEvent.OBJECT_REMOVE, overlay_objectRemove);
-		_overlay = null;
-	}
-
-	//----------------------------------
+    //----------------------------------
+    //  overlay
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the overlay property
+     */
+    mx_internal var _overlay:DisplayLayer;
+
+    [Inspectable(category="General")]
+
+    /**
+     *  The overlay plane for this Group.
+     *  All objects of the overlay plane render on top of the Group elements.
+     *  Don't hold on to this object, as Group destroys and creates it on demand.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get overlay():DisplayLayer
+    {
+        if (!_overlay)
+        {
+            _overlay = new DisplayLayer();
+            _overlay.addEventListener(DisplayLayerObjectExistenceEvent.OBJECT_ADD, overlay_objectAdd);
+            _overlay.addEventListener(DisplayLayerObjectExistenceEvent.OBJECT_REMOVE, overlay_objectRemove);
+
+            // Invalidate properties, so that if nothing was actually added to the
+            // overlay object, we'll clean it up:
+            invalidateProperties();
+        }
+        return _overlay;
+    }
+
+    /**
+     *  @private
+     *  Event listener to add overlay objects when added to the overlay DisplayLayer.
+     */
+    private function overlay_objectAdd(event:DisplayLayerObjectExistenceEvent):void
+    {
+        super.addChildAt(event.object, event.index + numChildren - _overlay.numDisplayObjects + 1);
+    }
+
+    /**
+     *  @private
+     *  Event listener to remove overlay objects when removed from the overlay
+     *  DisplayLayer.
+     */
+    private function overlay_objectRemove(event:DisplayLayerObjectExistenceEvent):void
+    {
+        // Remove the object from the display list
+        super.removeChild(event.object);
+
+        // Is this the last display object?
+        if (_overlay.numDisplayObjects == 1)
+            invalidateProperties();
+    }
+
+    /**
+     *  Destroys the overlay object. This method gets called on commitProperties
+     *  when the overlay doesn't contain any objects.
+     */
+    private function destroyOverlay():void
+    {
+        _overlay.removeEventListener(DisplayLayerObjectExistenceEvent.OBJECT_ADD, overlay_objectAdd);
+        _overlay.removeEventListener(DisplayLayerObjectExistenceEvent.OBJECT_REMOVE, overlay_objectRemove);
+        _overlay = null;
+    }
+
+    //----------------------------------
     //  resizeMode
     //----------------------------------

@@ -941,17 +941,17 @@
             layout = new BasicLayout();
     }

-	/**
-	 *  @private
-	 */
-	override protected function commitProperties():void
-	{
-		super.commitProperties();
-
-		// Cleanup the _overlay object when there are no more overlay objects
-		if (_overlay && _overlay.numDisplayObjects == 0)
-			destroyOverlay();
-	}
+    /**
+     *  @private
+     */
+    override protected function commitProperties():void
+    {
+        super.commitProperties();
+
+        // Cleanup the _overlay object when there are no more overlay objects
+        if (_overlay && _overlay.numDisplayObjects == 0)
+            destroyOverlay();
+    }

     /**
      *  @private
@@ -1009,8 +1009,8 @@
      */
     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
-		var shaderFilter:ShaderFilter;
-
+        var shaderFilter:ShaderFilter;
+
         if (_resizeMode == ResizeMode.SCALE)
         {
             unscaledWidth = measuredWidth;
@@ -1029,7 +1029,7 @@
                 if (!_mask.parent)
                 {
                     // TODO (jszeto): Does this need to be attached to a sibling?
-					overlay.addDisplayObject(_mask, OverlayDepth.MASK);
+                    overlay.addDisplayObject(_mask, OverlayDepth.MASK);
                     var maskComp:UIComponent = _mask as UIComponent;
                     if (maskComp)
                     {
@@ -1041,31 +1041,31 @@
                 }
             }
         }
-
-		if (luminositySettingsChanged)
-		{
-			luminositySettingsChanged = false;
-
-			if (_mask && _maskType == MaskType.LUMINOSITY && _mask.filters.length > 0)
-			{
-				// Grab the shader filter and clear out the mask
-				shaderFilter = _mask.filters[0];
-
-				if (shaderFilter && (shaderFilter.shader is LuminosityMaskShader))
-				{
-					// Clear out the mask's filters because we could potentially
-					// have a rendering change by setting the mode dynamically
-					// while the filters have been set.
-					_mask.filters = [];
-
-					// Reset the mode property
-					LuminosityMaskShader(shaderFilter.shader).mode = calculateLuminositySettings();
-
-					// Re-apply the filter to the mask
-					_mask.filters = [shaderFilter];
-				}
-			}
-		}
+
+        if (luminositySettingsChanged)
+        {
+            luminositySettingsChanged = false;
+
+            if (_mask && _maskType == MaskType.LUMINOSITY && _mask.filters.length > 0)
+            {
+                // Grab the shader filter and clear out the mask
+                shaderFilter = _mask.filters[0];
+
+                if (shaderFilter && (shaderFilter.shader is LuminosityMaskShader))
+                {
+                    // Clear out the mask's filters because we could potentially
+                    // have a rendering change by setting the mode dynamically
+                    // while the filters have been set.
+                    _mask.filters = [];
+
+                    // Reset the mode property
+                    LuminosityMaskShader(shaderFilter.shader).mode = calculateLuminositySettings();
+
+                    // Re-apply the filter to the mask
+                    _mask.filters = [shaderFilter];
+                }
+            }
+        }

         if (maskTypeChanged)
         {
@@ -1086,25 +1086,25 @@
                     _mask.cacheAsBitmap = true;
                     cacheAsBitmap = true;
                 }
-				else if (_maskType == MaskType.LUMINOSITY)
-				{
-					_mask.cacheAsBitmap = true;
-					cacheAsBitmap = true;
-
-					// Create the shader class which wraps the pixel bender filter
-					var luminosityMaskShader:LuminosityMaskShader = new LuminosityMaskShader();
-
-					// Sets up the shader's mode property based on
-					// whether the luminosityClip and
-					// luminosityInvert properties are on or off.
-					luminosityMaskShader.mode = calculateLuminositySettings();
-
-					// Create the shader filter
-					shaderFilter = new ShaderFilter(luminosityMaskShader);
-
-					// Apply the shader filter to the mask
-					_mask.filters = [shaderFilter];
-				}
+                else if (_maskType == MaskType.LUMINOSITY)
+                {
+                    _mask.cacheAsBitmap = true;
+                    cacheAsBitmap = true;
+
+                    // Create the shader class which wraps the pixel bender filter
+                    var luminosityMaskShader:LuminosityMaskShader = new LuminosityMaskShader();
+
+                    // Sets up the shader's mode property based on
+                    // whether the luminosityClip and
+                    // luminosityInvert properties are on or off.
+                    luminosityMaskShader.mode = calculateLuminositySettings();
+
+                    // Create the shader filter
+                    shaderFilter = new ShaderFilter(luminosityMaskShader);
+
+                    // Apply the shader filter to the mask
+                    _mask.filters = [shaderFilter];
+                }
             }
         }

@@ -1118,26 +1118,26 @@
                 _layout.updateScrollRect(unscaledWidth, unscaledHeight);
         }
     }
-
-	/**
-	 *  @private
-	 *  Calculates the luminosity mask shader's mode property which
-	 *  determines how the shader is drawn.
-	 */
-	private function calculateLuminositySettings():int
-	{
-		var mode:int = -1;
-
-		if (luminosityClip && !luminosityInvert)
-			mode = 0;
-		if (luminosityClip && luminosityInvert)
-			mode = 1;
-		if (!luminosityClip && !luminosityInvert)
-			mode = 2;
-		if (!luminosityClip && luminosityInvert)
-			mode = 3;
-		return mode;
-	}
+
+    /**
+     *  @private
+     *  Calculates the luminosity mask shader's mode property which
+     *  determines how the shader is drawn.
+     */
+    private function calculateLuminositySettings():int
+    {
+        var mode:int = -1;
+
+        if (luminosityClip && !luminosityInvert)
+            mode = 0;
+        if (luminosityClip && luminosityInvert)
+            mode = 1;
+        if (!luminosityClip && !luminosityInvert)
+            mode = 2;
+        if (!luminosityClip && luminosityInvert)
+            mode = 3;
+        return mode;
+    }

     /**
      *  @private
@@ -1409,7 +1409,7 @@
     {
         if (value)
         {
-			overlay.addDisplayObject(value, OverlayDepth.FOCUS_PANE);
+            overlay.addDisplayObject(value, OverlayDepth.FOCUS_PANE);

             value.x = 0;
             value.y = 0;
@@ -1419,7 +1419,7 @@
         }
         else
         {
-			overlay.removeDisplayObject(_focusPane);
+            overlay.removeDisplayObject(_focusPane);

             // TODO (jszeto): remove mask?  SDK-15310
             _focusPane = null;
@@ -1544,7 +1544,7 @@
         {
             if (_mask && _mask.parent === this)
             {
-				overlay.removeDisplayObject(_mask);
+                overlay.removeDisplayObject(_mask);
             }

             _mask = value;
@@ -1566,36 +1566,36 @@

     /**
      *
The mask type. Possible values are MaskType.CLIP, MaskType.ALPHA
-	 *  or MaskType.LUMINOSITY.

+     *  or MaskType.LUMINOSITY.

      *
-	 *
Clip Masking

+     *
Clip Masking

      *
      *
When masking in clip mode, a clipping masks is reduced to 1-bit.  This means that a mask will
      *  not affect the opacity of a pixel in the source content; it either leaves the value unmodified,
      *  if the corresponding pixel in the mask is has a non-zero alpha value, or makes it fully
      *  transparent, if the mask pixel value has an alpha value of zero.

-	 *
-	 *
Alpha Masking

+     *
+     *
Alpha Masking

      *
      *
In alpha mode, the opacity of each pixel in the source content is multiplied by the opacity
      *  of the corresponding region of the mask.  i.e., a pixel in the source content with an opacity of
      *  1 that is masked by a region of opacity of .5 will have a resulting opacity of .5.  A source pixel
      *  with an opacity of .8 masked by a region with opacity of .5 will have a resulting opacity of .4.

-	 *
-	 *
Luminosity Masking

-     *
-	 *
A luminosity mask, sometimes called a 'soft mask', works very similarly to an alpha mask
-	 *  except that both the opacity and RGB color value of a pixel in the source content is multiplied
-	 *  by the opacity and RGB color value of the corresponding region in the mask.

-	 *
-	 *
Luminosity masking is not native to Flash but is common in Adobe Creative Suite tools like Adobe
-	 *  Illustrator and Adobe Photoshop. In order to accomplish the visual effect of a luminosity mask in
-	 *  Flash-rendered content, a graphic element specifying a luminosity mask actually instantiates a shader
-	 *  filter that mimics the visual look of a luminosity mask as rendered in Adobe Creative Suite tools.

-	 *
-	 *
Objects being masked by luminosity masks can set properties to control the RGB color value and
-	 *  clipping of the mask. See the luminosityInvert and luminosityClip attributes.

-	 *
+     *
+     *
Luminosity Masking

+     *
+     *
A luminosity mask, sometimes called a 'soft mask', works very similarly to an alpha mask
+     *  except that both the opacity and RGB color value of a pixel in the source content is multiplied
+     *  by the opacity and RGB color value of the corresponding region in the mask.

+     *
+     *
Luminosity masking is not native to Flash but is common in Adobe Creative Suite tools like Adobe
+     *  Illustrator and Adobe Photoshop. In order to accomplish the visual effect of a luminosity mask in
+     *  Flash-rendered content, a graphic element specifying a luminosity mask actually instantiates a shader
+     *  filter that mimics the visual look of a luminosity mask as rendered in Adobe Creative Suite tools.

+     *
+     *
Objects being masked by luminosity masks can set properties to control the RGB color value and
+     *  clipping of the mask. See the luminosityInvert and luminosityClip attributes.

+     *
      *  @default MaskType.CLIP
      *
      *  @see  spark.core.MaskType
@@ -1615,7 +1615,7 @@
      */
     public function set maskType(value:String):void
     {
-		if (_maskType != value)
+        if (_maskType != value)
         {
             _maskType = value;
             maskTypeChanged = true;
@@ -1640,22 +1640,22 @@

     [Inspectable(category="General", enumeration="true,false", defaultValue="false")]

-	/**
-	 *  A property that controls the calculation of the RGB
-	 *  color value of a graphic element being masked by
-	 *  a luminosity mask. If true, the RGB color value of a
-	 *  pixel in the source content is inverted and multipled
-	 *  by the corresponding region in the mask. If false,
-	 *  the source content's pixel's RGB color value is used
-	 *  directly.
-	 *
-	 *  @default false
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 1.5
-	 *  @productversion Flex 4
-	 */
+    /**
+     *  A property that controls the calculation of the RGB
+     *  color value of a graphic element being masked by
+     *  a luminosity mask. If true, the RGB color value of a
+     *  pixel in the source content is inverted and multipled
+     *  by the corresponding region in the mask. If false,
+     *  the source content's pixel's RGB color value is used
+     *  directly.
+     *
+     *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
     public function get luminosityInvert():Boolean
     {
         return _luminosityInvert;
@@ -1666,15 +1666,15 @@
      */
     public function set luminosityInvert(value:Boolean):void
     {
-    	if (_luminosityInvert == value)
+        if (_luminosityInvert == value)
             return;

         _luminosityInvert = value;
-		luminositySettingsChanged = true;
-		invalidateDisplayList();
-    }
-
-	//----------------------------------
+        luminositySettingsChanged = true;
+        invalidateDisplayList();
+    }
+
+    //----------------------------------
     //  luminosityClip
     //----------------------------------

@@ -1686,21 +1686,21 @@

     [Inspectable(category="General", enumeration="true,false", defaultValue="false")]

-	/**
-	 *  A property that controls whether the luminosity
-	 *  mask clips the masked content. This property can
-	 *  only have an effect if the graphic element has a
-	 *  mask applied to it that is of type
-	 *  MaskType.LUMINOSITY.
-	 *
-	 *  @default false
-	 *  @see #maskType
-	 *
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 1.5
-	 *  @productversion Flex 4
-	 */
+    /**
+     *  A property that controls whether the luminosity
+     *  mask clips the masked content. This property can
+     *  only have an effect if the graphic element has a
+     *  mask applied to it that is of type
+     *  MaskType.LUMINOSITY.
+     *
+     *  @default false
+     *  @see #maskType
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
     public function get luminosityClip():Boolean
     {
         return _luminosityClip;
@@ -1711,12 +1711,12 @@
      */
     public function set luminosityClip(value:Boolean):void
     {
-    	if (_luminosityClip == value)
+        if (_luminosityClip == value)
             return;

         _luminosityClip = value;
-		luminositySettingsChanged = true;
-		invalidateDisplayList();
+        luminositySettingsChanged = true;
+        invalidateDisplayList();
     }

    /**


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


Transferred from the Adobe Open Source Subversion Repository

Revision: 6175
Author:   jszeto@adobe.com
Date:     2009-04-21T00:11:03.904730Z

Log Message:
-----------
Automation support for NativeDragManagerImpl.

Added automation hooks into AIR DragManager.

These changes submitted on behalf of Rani Kumar

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Rani

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as

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

--- frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as
+++ frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as
@@ -24,6 +24,7 @@
 import flash.events.NativeDragEvent;
 import flash.geom.Point;
 import flash.system.Capabilities;
+import flash.utils.getDefinitionByName

 import mx.core.DragSource;
 import mx.core.IFlexDisplayObject;
@@ -237,6 +238,11 @@
             imageAlpha:Number = 0.5,
             allowMove:Boolean = true):void
     {
+    	if (dragAutomationHandlerClass)
+		{
+			dragAutomationHandlerClass["storeAIRDragSourceDetails"](dragSource);
+		}
+
         var proxyWidth:Number;
         var proxyHeight:Number;

@@ -315,6 +321,11 @@
         }

         _dragImage = dragImage;
+
+        if (dragAutomationHandlerClass)
+		{
+			dragAutomationHandlerClass["recordAutomatableDragStart1"](dragInitiator as IUIComponent, mouseEvent);
+		}

         if (dragImage is IUIComponent && dragImage is ILayoutManagerClient &&
             !ILayoutManagerClient(dragImage).initialized && dragInitiator)
@@ -544,6 +555,48 @@

     }

+
+    //--------------------------------------------------------------------------
+    //
+    //  Automation
+    //
+    //--------------------------------------------------------------------------
+    /**
+	 * @private
+	 * This function gets the class which is responsible for getting the
+	 * drag automation handler class.
+	 */
+
+	 private var _dragAutomationHandlerClass:Class;
+
+	 /**
+	  *  @private
+	  */
+	 private function get dragAutomationHandlerClass():Class
+	 {
+	 	if (!_dragAutomationHandlerClass)
+	 	{
+	 	 	try
+		 	{
+		 		if (sm)
+		 		{
+		 			_dragAutomationHandlerClass =
+		 				Class(sm.getDefinitionByName("mx.automation.delegates.DragManagerAutomationImpl"));
+		 		}
+		 		else
+		 		{
+		 			_dragAutomationHandlerClass =
+		 				Class(getDefinitionByName("mx.automation.delegates.DragManagerAutomationImpl"));
+		 		}
+		 	}
+		 	catch (e:Error)
+		 	{
+		 		trace(e.message);
+		 	}
+	 	}
+	 	return _dragAutomationHandlerClass;
+	 }
+
     //--------------------------------------------------------------------------
     //
     //  Event handlers
@@ -626,6 +679,20 @@
             dragEvent.relatedObject = _relatedObject;
         else
             dragEvent.relatedObject = event.relatedObject;
+
+        if (dragAutomationHandlerClass)
+		{
+			if (newType == DragEvent.DRAG_DROP)
+			{
+				dragAutomationHandlerClass["recordAutomatableDragDrop1"](target,dragEvent);
+			}
+			else if (newType == DragEvent.DRAG_COMPLETE)
+			{
+			   	dragAutomationHandlerClass["recordAutomatableDragCancel1"]
+			   		(NativeDragManager.dragInitiator as IUIComponent, dragEvent);
+			}
+		}
+
         // Resend the event as a DragEvent.
         _dispatchDragEvent(target, dragEvent);


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/mx/src/mx/controls/listClasses/ListBaseSeekPending.as
+++ frameworks/projects/mx/src/mx/controls/listClasses/ListBaseSeekPending.as
@@ -20,6 +20,11 @@
  *
  *  @see mx.collections.errors.ItemPendingError
  *  @see mx.controls.listClasses.ListBase#lastSeekPending
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class ListBaseSeekPending
 {
@@ -38,6 +43,11 @@
 	 *                  seek operation.
 	 *  @param offset The offset from the bookmark that was the target of
 	 *                  the seek operation.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function ListBaseSeekPending(bookmark:CursorBookmark, offset:int)
 	{
@@ -59,6 +69,11 @@

 	/**
 	 *  The bookmark that was being used in the seek operation.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var bookmark:CursorBookmark;

@@ -68,6 +83,11 @@

 	/**
 	 *  The offset from the bookmark that was the target of the seek operation.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public var offset:int;
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 1803
Author:   jimurphy@adobe.com
Date:     2008-05-21T15:12:36.332665Z

Log Message:
-----------
Merge 3.0.x revisions [1802 ] -> trunk

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/AMFChannel.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/lib/flex-messaging-common.jar</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/NetConnectionChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/channels/StreamingAMFChannel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/rpc/src/mx/messaging/ChannelSet.as</path>

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

--- frameworks/projects/rpc/src/mx/messaging/channels/NetConnectionChannel.as
+++ frameworks/projects/rpc/src/mx/messaging/channels/NetConnectionChannel.as
@@ -173,7 +173,6 @@
         if (_appendToURL != null)
             url += _appendToURL;

-
         // If the NetConnection has a non-null uri the Player will close() it automatically
         // as part of its connect() processing below. Pre-emptively close the connection while suppressing
         // NetStatus event handling to avoid spurious events.
@@ -258,8 +257,6 @@
             if (Log.isDebug())
                 _log.debug("'{0}' channel will disconnect and reconnect with with its session identifier '{1}' appended to its endpoint url \n", id, value);
             _appendToURL = value;
-            shutdownNetConnection();
-            internalConnect();
         }
     }

@@ -287,7 +284,7 @@
                 }
                 catch (e:Error)
                 {
-                    _log.debug("Could not get message performance information for: " + msg.toString());
+                    _log.debug("Could not get message performance information for: " + msg.toString());
                 }
             }
         }


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

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