Transferred from the Adobe Open Source Subversion Repository

Revision: 4037
Author:   egeorgie@adobe.com
Date:     2008-11-07T01:36:44.934217Z

Log Message:
-----------
Fix bug http://bugs.adobe.com/jira/browse/FLEXDOCS-533 Gumbo Button lacks documentation and http://bugs.adobe.com/jira/browse/SDK-16487 Gumbo Button control has write-only enabled property and read-only isEnabled property

Update documentation, add onClick protected method and remove click event handler from toggle button, rename the FxButton state properties and make them protected.

QE Notes: Test clicking and click event handlers on FxButton and FxToggleButton
Doc Notes: None
Bugs: SDK-16487 FLEXDOCS-533
Reviewer: Ryan
tests: checkintests, Mustella (Button)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxToggleButton.as</path>

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

--- frameworks/projects/spark/src/spark/components/Button.as
+++ frameworks/projects/spark/src/spark/components/Button.as
@@ -178,54 +178,48 @@
     // -----------------------------------------------------------------------

     /**
-     *  @private true when we need to check whether to dispatch
+     *  @private
+     *  true when we need to check whether to dispatch
      *  a button down event
      */
      private var checkForButtonDownConditions:Boolean = false;

     /**
-     *  true when the mouse pointer is over the button.
+     *  Indicates whether the mouse pointer is over the button.
+     *  Used to determine the skin state.
      */
-    public function get isHoveredOver():Boolean
-    {
-        return flags.isSet(isHoveredOverFlag);
-    }
-
-    /**
-     *  Sets the isHoveredOver property,
-     *  which indicates whether the mouse cursor is over the button.
-     *
-     *  @param value The new value of the isHoveredOver property.
-     *  This parameter can be true or false.
+    protected function get hoveredOver():Boolean
+    {
+        return flags.isSet(hoveredOverFlag);
+    }
+
+    /**
+     *  @private
      */
-    protected function setHoveredOver(value:Boolean):void
-    {
-        if (!flags.update(isHoveredOverFlag, value))
+    protected function set hoveredOver(value:Boolean):void
+    {
+        if (!flags.update(hoveredOverFlag, value))
             return;

         invalidateButtonState();
     }

     /**
-     *  true if the mouse button is pressed down
-     *  while the cursor is over the button.
+     *  Indicates whether the mouse is down and the mouse pointer was
+     *  over the button when MouseEvent.MOUSE_DOWN was first dispatched.
+     *  Used to determine the skin state.
      */
-    public function get isMouseCaptured():Boolean
-    {
-        return flags.isSet(isMouseCapturedFlag);
-    }
-
-    /**
-     *  Sets the isMouseCaptured property,
-     *  which indicates whether the mouse button is pressed down
-     *  while the cursor is over the button.
-     *
-     *  @param value The new value of the isMouseCaptured property.
-     *  This parameter can be true or false.
-     */
-    protected function setMouseCaptured(value:Boolean):void
-    {
-        if (!flags.update(isMouseCapturedFlag, value))
+    protected function get mouseCaptured():Boolean
+    {
+        return flags.isSet(mouseCapturedFlag);
+    }
+
+    /**
+     *  @private
+     */
+    protected function set mouseCaptured(value:Boolean):void
+    {
+        if (!flags.update(mouseCapturedFlag, value))
             return;

         invalidateButtonState();
@@ -236,42 +230,32 @@
     }

     /**
-     *  true if the button is enabled.
+     *  @private
+     */
+    override public function set enabled(value:Boolean):void
+    {
+        if (enabled == value)
+            return;
+        super.enabled = value;
+
+        invalidateButtonState();
+    }
+
+    /**
+     *  Indicates whether a keyboard key is pressed while the button is in focus.
+     *  Used to determine the skin state.
      */
-    public function get isEnabled():Boolean { return enabled; }
-
-    /**
-     *  @private
-     */
-    override public function set enabled(value:Boolean):void
-    {
-        if (isEnabled == value)
-            return;
-        super.enabled = value;
-
-        invalidateButtonState();
-    }
-
-    /**
-     *  true if a keyboard key is pressed
-     *  while the button has focus.
-     */
-    public function get isKeyboardPressed():Boolean
-    {
-        return flags.isSet(isKeyboardPressedFlag);
-    }
-
-    /**
-     *  Sets the isKeyboardPressed property,
-     *  which indicates if a keyboard key is pressed
-     *  while the cursor is over the button.
-     *
-     *  @param value The new value of the isMouseCaptured property.
-     *  This parameter can be true or false.
-     */
-    protected function setKeyboardPressed(value:Boolean):void
-    {
-        if (!flags.update(isKeyboardPressedFlag, value))
+    protected function get keyboardPressed():Boolean
+    {
+        return flags.isSet(keyboardPressedFlag);
+    }
+
+    /**
+     *  @private
+     */
+    protected function set keyboardPressed(value:Boolean):void
+    {
+        if (!flags.update(keyboardPressedFlag, value))
             return;

         invalidateButtonState();
@@ -306,15 +290,15 @@
     /**
      *  @private
      */
-    protected static const isHoveredOverFlag:uint       = 1 << 0;
-    /**
-     *  @private
-     */
-    protected static const isMouseCapturedFlag:uint     = 1 << 1;
-    /**
-     *  @private
-     */
-    protected static const isKeyboardPressedFlag:uint   = 1 << 2;
+    protected static const hoveredOverFlag:uint         = 1 << 0;
+    /**
+     *  @private
+     */
+    protected static const mouseCapturedFlag:uint       = 1 << 1;
+    /**
+     *  @private
+     */
+    protected static const keyboardPressedFlag:uint     = 1 << 2;
     /**
      *  @private
      */
@@ -340,7 +324,7 @@
      *  An instance of the Flags32 class used to manipulate Boolean properties.
      */
     protected var flags:Flags32 = new Flags32();
-
+
     //--------------------------------------------------------------------------
     //
     //  Overridden methods
@@ -380,10 +364,10 @@
             // Only if down state has changed, do we need to do something
             if (flags.update(downEventFiredFlag, isCurrentlyDown))
             {
-                if( isCurrentlyDown )
+                if (isCurrentlyDown)
                     dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));

-                checkAutoRepeatTimerConditions( isCurrentlyDown );
+                checkAutoRepeatTimerConditions(isCurrentlyDown);
             }

             checkForButtonDownConditions = false;
@@ -398,13 +382,13 @@

     private function isDown():Boolean
     {
-        if (!isEnabled)
+        if (!enabled)
             return false;

-        if (isKeyboardPressed)
+        if (keyboardPressed)
             return true;

-        if (isMouseCaptured && (isHoveredOver || stickyHighlighting))
+        if (mouseCaptured && (hoveredOver || stickyHighlighting))
             return true;
         return false;
     }
@@ -421,20 +405,18 @@
         invalidateSkinState();
     }

-    // GetState returns a string representation of the component's state as
-    // a combination of some of its public properties
     /**
      *  @private
      */
     override protected function getCurrentSkinState():String
     {
-        if (!isEnabled)
+        if (!enabled)
             return "disabled";

         if (isDown())
             return "down";

-        if (isHoveredOver || isMouseCaptured )
+        if (hoveredOver || mouseCaptured)
             return "over";

         return "up";
@@ -458,21 +440,40 @@
         addEventListener(MouseEvent.CLICK, mouseEventHandler);
     }

+    /**
+     *  @private
+     *  This method adds the mouseEventHandler as an event listener to
+     *  the stage and the systemManager so that it gets called even if mouse events
+     *  are dispatched outside of the button. This is needed for example when the
+     *  user presses the button, drags out and releases the button.
+     */
     private function addSystemMouseHandlers():void
     {
         systemManager.addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, true /*useCapture*/);
         systemManager.stage.addEventListener(Event.MOUSE_LEAVE, mouseEventHandler);
     }

+    /**
+     *  @private
+     *  This method removes the mouseEventHandler as an event listener from
+     *  the stage and the systemManager.
+     */
     private function removeSystemMouseHandlers():void
     {
         systemManager.removeEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, true /*useCapture*/);
         systemManager.stage.removeEventListener(Event.MOUSE_LEAVE, mouseEventHandler);
     }

-
-    /**
-     *  @private
+    /**
+     *  This method handles the mouse events, calls the onClick method
+     *  where appropriate and updates the hoveredOver and
+     *  mouseCaptured properties.
+     *
This method gets called to handle MouseEvent.ROLL_OVER, MouseEvent.ROLL_OUT,
+     *  MouseEvent.MOUSE_DOWN, MouseEvent.MOUSE_UP, MouseEvent.CLICK and Event.MOUSE_LEAVE.

+     *
For MouseEvent.MOUSE_UP and Event.MOUSE_LEAVE, the event target can be other than the
+     *  FxButton - for example when the user presses the FxButton, we listen for MOUSE_UP
+     *  on the stage to handle cases where the user drags outside the FxButton and releases
+     *  the mouse.

      */
     protected function mouseEventHandler(event:Event):void
     {
@@ -482,36 +483,36 @@
             case MouseEvent.ROLL_OVER:
             {
                 // if the user rolls over while holding the mouse button
-                if (mouseEvent.buttonDown && !isMouseCaptured)
+                if (mouseEvent.buttonDown && !mouseCaptured)
                     return;
-                    setHoveredOver(true);
+                    hoveredOver = true;
                 break;
             }

             case MouseEvent.ROLL_OUT:
             {
-                setHoveredOver(false);
+                hoveredOver = false;
                 break;
             }

             case MouseEvent.MOUSE_DOWN:
             {
                 // When the button is down we need to listen for mouse events outsied the button so that
-                // we update the state appropriately on mouse up.  Whenever isMouseCaptured changes to false,
+                // we update the state appropriately on mouse up.  Whenever mouseCaptured changes to false,
                 // it will take care to remove those handlers.
                 addSystemMouseHandlers();
-                setMouseCaptured(true);
+                mouseCaptured = true;
                 break;
             }

             case MouseEvent.MOUSE_UP:
             {
                 if (event.currentTarget == this)
-                    setHoveredOver(true);
+                    hoveredOver = true;
             } //fallthrough:
             case Event.MOUSE_LEAVE:
             {
-                setMouseCaptured(false);
+                mouseCaptured = false;
                 break;
             }

@@ -521,14 +522,25 @@
             // if the Button is disabled.
             case MouseEvent.CLICK:
             {
-                if(!isEnabled )
+                if (!enabled)
                     event.stopImmediatePropagation();
+                else
+                    onClick(MouseEvent(event));
                 return;
             }
         }
         if (mouseEvent)
             mouseEvent.updateAfterEvent();
     }
+
+    /**
+     *  Override in subclasses to handle the click event rather than
+     *  adding a separate handler. onClick will not get called if the
+     *  button is disabled.
+     */
+    protected function onClick(event:MouseEvent):void
+    {
+    }

     //--------------------------------------------------------------------------
     //
@@ -546,8 +558,8 @@
         // that you don't get one so we force one on FOCUS_OUT.
         super.focusOutHandler(event);

-        setMouseCaptured(false);
-        setKeyboardPressed(false);
+        mouseCaptured = false;
+        keyboardPressed = false;
     }

     /**
@@ -555,9 +567,9 @@
      */
     override protected function keyDownHandler(event:KeyboardEvent):void
     {
-        if( event.keyCode != Keyboard.SPACE )
-            return;
-        setKeyboardPressed(true);
+        if (event.keyCode != Keyboard.SPACE)
+            return;
+        keyboardPressed = true;
         event.updateAfterEvent();
     }

@@ -566,11 +578,11 @@
      */
     override protected function keyUpHandler(event:KeyboardEvent):void
     {
-        if( event.keyCode != Keyboard.SPACE )
-            return;
-        setKeyboardPressed(false);
-
-        if( isEnabled )
+        if (event.keyCode != Keyboard.SPACE)
+            return;
+        keyboardPressed = false;
+
+        if (enabled)
             dispatchEvent(new MouseEvent(MouseEvent.CLICK));
         event.updateAfterEvent();
     }
@@ -609,9 +621,12 @@
         checkAutoRepeatTimerConditions( isDown() );
     }

-    private function checkAutoRepeatTimerConditions(isButtonDown:Boolean):void
-    {
-        var needsTimer:Boolean = autoRepeat && isButtonDown;
+    /**
+     *  @private
+     */
+    private function checkAutoRepeatTimerConditions(buttonDown:Boolean):void
+    {
+        var needsTimer:Boolean = autoRepeat && buttonDown;
         var hasTimer:Boolean = autoRepeatTimer != null;

         if (needsTimer == hasTimer)
@@ -623,6 +638,9 @@
             stopTimer();
     }

+    /**
+     *  @private
+     */
     private function startTimer():void
     {
         autoRepeatTimer = new Timer(1);
@@ -631,12 +649,18 @@
         autoRepeatTimer.start();
     }

+    /**
+     *  @private
+     */
     private function stopTimer():void
     {
         autoRepeatTimer.stop();
         autoRepeatTimer = null;
     }

+    /**
+     *  @private
+     */
     private function autoRepeat_timerDelayHandler(event:TimerEvent):void
     {
         autoRepeatTimer.reset();
@@ -647,6 +671,9 @@
         autoRepeatTimer.start();
     }

+    /**
+     *  @private
+     */
     private function autoRepeat_timerHandler(event:TimerEvent):void
     {
         dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));


Transferred from the Adobe Open Source Subversion Repository

Revision: 5573
Author:   jimurphy@adobe.com
Date:     2009-03-26T15:11:59.159776Z

Log Message:
-----------
-more updated package and class names that were missed in the first pass
-remove the mx folder

qa: probably
doc: this updated more asdoc comments so you may want to make sure that this pass made the correct updates
checkintests: pass

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/IViewport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VideoDisplay.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/interpolation/HSBInterpolator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/SetActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/IGraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/easing/IEaser.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/Animate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/components/examples/DataGroupExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateShaderTransition.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformScale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/Slider.as</path>
<path kind="dir" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/pathSegments/PathSegment.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/animation/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/asdoc/en_US/mx/components/examples/FxToggleButtonExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/AddActionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/events/AnimationEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/supportClasses/WipeInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformMove3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/AnimateTransformRotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/effects/SetAction.as</path>

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

--- frameworks/projects/spark/src/spark/components/HGroup.as
+++ frameworks/projects/spark/src/spark/components/HGroup.as
@@ -25,7 +25,7 @@
  *
  * The layout property should not be set or configured directly.
  *
- * @see mx.layout.HorizontalLayout
+ * @see spark.layout.HorizontalLayout
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -42,8 +42,8 @@
      *  Resetting the layout property or setting its properties directly
      *  is not supported.
      *
-     *  @see mx.layout.HorizontalLayout
-     *  @see mx.components.VGroup
+     *  @see spark.layout.HorizontalLayout
+     *  @see spark.components.VGroup
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -71,7 +71,7 @@
     //----------------------------------

     /**
-     * @copy mx.layout.HorizontalLayout#gap
+     * @copy spark.layout.HorizontalLayout#gap
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -98,7 +98,7 @@
     [Bindable("propertyChange")]

     /**
-     * @copy mx.layout.HorizontalLayout#columnCount
+     * @copy spark.layout.HorizontalLayout#columnCount
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -115,7 +115,7 @@
     //----------------------------------

     /**
-     * @copy mx.layout.HorizontalLayout#requestedColumnCount
+     * @copy spark.layout.HorizontalLayout#requestedColumnCount
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -142,7 +142,7 @@
     [Inspectable(category="General")]

     /**
-     * @copy mx.layout.HorizontalLayout#columnWidth
+     * @copy spark.layout.HorizontalLayout#columnWidth
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -169,7 +169,7 @@
     [Inspectable(category="General")]

     /**
-     * @copy mx.layout.HorizontalLayout#variableColumnWidth
+     * @copy spark.layout.HorizontalLayout#variableColumnWidth
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -194,7 +194,7 @@
     //----------------------------------

     /**
-     * @copy mx.layout.HorizontalLayout#verticalAlign
+     * @copy spark.layout.HorizontalLayout#verticalAlign
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -221,7 +221,7 @@
     [Bindable("indexInViewChanged")]

     /**
-     * @copy mx.layout.HorizontalLayout#firstIndexInView
+     * @copy spark.layout.HorizontalLayout#firstIndexInView
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -240,7 +240,7 @@
     [Bindable("indexInViewChanged")]

     /**
-     * @copy mx.layout.HorizontalLayout#lastIndexInView
+     * @copy spark.layout.HorizontalLayout#lastIndexInView
      *
      *  @langversion 3.0
      *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

Revision: 4611
Author:   chaase@adobe.com
Date:     2009-01-22T00:30:21.783682Z

Log Message:
-----------
Various bug fixes in effects, mostly in the area of seeking, auto-reversing, and shader transitions.

QE Notes: None
Doc Notes: None
Bugs: sdk-17783, sdk-18767, sdk-18759, sdk-18461, sdk-18309, sdk-18013, sdk-18688
Reviewer: Jason
Tests: checkintests, Mustella: Effects, gumbo/effects, ListDataEffects

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/SetAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/UnconstrainItemAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/AddChildAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/ParallelInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Effect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/Parallel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/SetPropertyAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/RemoveChildAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateShaderTransitionInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/FxAnimateShaderTransition.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/Animation.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/AddItemAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/effectClasses/SequenceInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/SetStyleAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/RemoveItemAction.as</path>

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

--- frameworks/projects/spark/src/spark/effects/SetAction.as
+++ frameworks/projects/spark/src/spark/effects/SetAction.as
@@ -65,7 +65,7 @@
     public function SetAction(target:Object = null)
     {
         super(target);
-
+        duration = 0;
         instanceClass = SetActionInstance;
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 12060
Author:   aharui@adobe.com
Date:     2009-11-20T20:12:21.522473Z

Log Message:
-----------
Fix dependency issues

QE Notes: None
Doc Notes: None
Bugs: SDK-24353, SDK-24354
Reviewer: Corey
API Change: No
Is noteworthy for integration: No
tests: checkintests mustella/gumbo/components/DropDownList

Modified Paths:
--------------
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/utils/FTETextUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/utils/TextUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>

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

--- frameworks/projects/spark/src/spark/utils/FTETextUtil.as
+++ frameworks/projects/spark/src/spark/utils/FTETextUtil.as
@@ -0,0 +1,222 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2008 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.utils
+{
+
+import flash.text.TextFormat;
+import flash.text.engine.ElementFormat;
+import flash.text.engine.FontDescription;
+import flash.text.engine.FontLookup;
+import flash.text.engine.TextBlock;
+import flash.text.engine.TextElement;
+import flash.text.engine.TextLine;
+
+import flashx.textLayout.compose.ISWFContext;
+
+import mx.core.IEmbeddedFontRegistry;
+import mx.core.IFlexModuleFactory;
+import mx.core.IUIComponent;
+import mx.core.Singleton;
+import mx.managers.ISystemManager;
+import mx.styles.IStyleClient;
+
+[ExcludeClass]
+
+/**
+ *  @private
+ */
+public class FTETextUtil
+{
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods - Font Baseline
+    //
+    //--------------------------------------------------------------------------
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class properties
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Used in getEmbeddedFontContext().
+     */
+    private static var staticTextFormat:TextFormat;
+
+    //----------------------------------
+    //  embeddedFontRegistry
+    //----------------------------------
+
+    private static var noEmbeddedFonts:Boolean;
+
+    /**
+     *  @private
+     *  Storage for the _embeddedFontRegistry property.
+     *  Note: This gets initialized on first access,
+     *  not when this class is initialized, in order to ensure
+     *  that the Singleton registry has already been initialized.
+     */
+    private static var _embeddedFontRegistry:IEmbeddedFontRegistry;
+
+    /**
+     *  @private
+     *  A reference to the embedded font registry.
+     *  Single registry in the system.
+     *  Used to look up the moduleFactory of a font.
+     */
+    private static function get embeddedFontRegistry():IEmbeddedFontRegistry
+    {
+        if (!_embeddedFontRegistry && !noEmbeddedFonts)
+        {
+            try
+            {
+                _embeddedFontRegistry = IEmbeddedFontRegistry(
+                    Singleton.getInstance("mx.core::IEmbeddedFontRegistry"));
+            }
+            catch (e:Error)
+            {
+                noEmbeddedFonts = true;
+            }
+        }
+
+        return _embeddedFontRegistry;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Method to measure baseline position
+     *
+     *  @param client The IStyleClient to use to calculate the baseline.
+     *  @param height Height of client.  Used only for degenerate cases.
+     *  @param moduleFactory The default moduleFactory to use for the font.
+     */
+    public static function calculateFontBaseline(client:IStyleClient, height:Number, moduleFactory:IFlexModuleFactory):Number
+    {
+        var fontDescription:FontDescription = new FontDescription();
+        var embeddedFontContext:IFlexModuleFactory;
+
+        var s:String;
+
+        s = client.getStyle("cffHinting");
+        if (s != null)
+            fontDescription.cffHinting = s;
+
+        s = client.getStyle("fontFamily");
+        if (s != null)
+            fontDescription.fontName = s;
+
+        s = client.getStyle("fontLookup");
+        if (s != null)
+        {
+            // FTE understands only "device" and "embeddedCFF"
+            // for fontLookup. But Flex allows this style to be
+            // set to "auto", in which case we automatically
+            // determine it based on whether the CSS styles
+            // specify an embedded font.
+            if (s == "auto")
+            {
+                embeddedFontContext = getEmbeddedFontContext(client, moduleFactory);
+                s = (embeddedFontContext) ?
+                    FontLookup.EMBEDDED_CFF :
+                    FontLookup.DEVICE;
+            }
+            fontDescription.fontLookup = s;
+        }
+
+        s = client.getStyle("fontStyle");
+        if (s != null)
+            fontDescription.fontPosture = s;
+
+        s = client.getStyle("fontWeight");
+        if (s != null)
+            fontDescription.fontWeight = s;
+
+        var elementFormat:ElementFormat = new ElementFormat();
+        elementFormat.fontDescription = fontDescription;
+        elementFormat.fontSize = client.getStyle("fontSize");
+
+        var textElement:TextElement = new TextElement();
+        textElement.elementFormat = elementFormat;
+        textElement.text = "Wj";
+
+        var textBlock:TextBlock = new TextBlock();
+        textBlock.content = textElement;
+
+        var textLine:TextLine;
+        if (embeddedFontContext)
+        {
+            var swfContext:ISWFContext = ISWFContext(embeddedFontContext);
+            textLine = swfContext.callInContext(
+						textBlock.createTextLine, textBlock,
+						[ null, 1000]);
+        }
+        else
+            textLine = textBlock.createTextLine(null, 1000);
+
+        if (height < 2 + textLine.ascent + 2)
+            return int(height + (textLine.ascent - height) / 2);
+
+        return 2 + textLine.ascent;
+    }
+
+	/**
+	 *  @private
+	 *  Uses the component's CSS styles to determine the module factory
+	 *  that should creates its TextLines.
+	 */
+    private static function getEmbeddedFontContext(client:IStyleClient, moduleFactory:IFlexModuleFactory):IFlexModuleFactory
+	{
+		var fontContext:IFlexModuleFactory;
+
+		var fontLookup:String = client.getStyle("fontLookup");
+		if (fontLookup != FontLookup.DEVICE)
+        {
+			var font:String = client.getStyle("fontFamily");
+			var bold:Boolean = client.getStyle("fontWeight") == "bold";
+			var italic:Boolean = client.getStyle("fontStyle") == "italic";
+
+            var localLookup:ISystemManager;
+            if (moduleFactory != null && moduleFactory is ISystemManager)
+                localLookup = ISystemManager(moduleFactory);
+            else if (client is IUIComponent)
+            {
+                var uic:IUIComponent = IUIComponent(client);
+                if (uic.parent is IUIComponent)
+                    localLookup = IUIComponent(uic.parent).systemManager;
+            }
+
+            fontContext = embeddedFontRegistry.getAssociatedModuleFactory(
+            	font, bold, italic, client, moduleFactory, localLookup, true);
+        }
+
+        if (!fontContext && fontLookup == FontLookup.EMBEDDED_CFF)
+        {
+            // if we couldn't find the font and somebody insists it is
+            // embedded, try the default fontContext
+            fontContext = moduleFactory;
+        }
+
+        return fontContext;
+	}
+
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 22985
Author:   jasonsj@adobe.com
Date:     2011-10-12T22:18:03.994117Z

Log Message:
-----------
Snap pop-up size and position for keyboard height changes after the initial ACTIVATE. This prevents the SK effect from causing unwanted changes to soft keyboard height due to auto correction on Android.

Add null check during effect cleanup if pop-up was deactivate effect was aborted while the pop-up was closing.

QE notes: None
Doc notes: None
Bugs:
SDK-31834 SPUC SK Effects: Resizing SPUC dismisses the suggestion panel on android
SDK-31843 SPUC SK Effects : RTE when closing a resized callout
Reviewer: tkraikit
Tests run: checkintests, manual SK effect tests
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as

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

--- frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as
@@ -894,6 +894,8 @@
      */
     private function softKeyboardActivateHandler(event:SoftKeyboardEvent=null):void
     {
+        var isFirstActivate:Boolean = false;
+
         // Save the original y-position and height if this is the first
         // ACTIVATE event and an existing deactivate effect is not already in
         // progress.
@@ -907,6 +909,8 @@

             // reset cached keyboard height
             cachedKeyboardHeight = 0;
+
+            isFirstActivate = true;
         }

         var smStage:Stage = systemManager.stage;
@@ -999,7 +1003,15 @@
                 smStage.addEventListener("orientationChange", stage_orientationHandler);
             }

-            prepareEffect(yToLocal, heightToLocal);
+            // Disable the effect and instead snap the pop-up position when
+            // the keyboard size changes after the first activation. This
+            // allows the StageText instance to stay active instead of being
+            // hidden by a bitmap proxy. This solves an issue on Android
+            // where a keyboard size change causes a pop-up resize, then the
+            // resize effect and subsequent bitmap proxy cause the keyboard
+            // size to revert, effectively killing auto correction.
+            // See SDK-31834.
+            prepareEffect(yToLocal, heightToLocal, !isFirstActivate);
         }
     }

@@ -1172,7 +1184,7 @@
         // activated again while the deactivate effect is playing. In that case,
         // we want to save the cached positions from the first activation.
         var deactivateComplete:Boolean =
-            (!isSoftKeyboardEffectActive && (event.type == EffectEvent.EFFECT_END));
+            (!isSoftKeyboardEffectActive && (event && (event.type == EffectEvent.EFFECT_END)));

         if (!event || deactivateComplete)
         {
@@ -1213,7 +1225,7 @@
     /**
      *  @private
      */
-    private function prepareEffect(yTo:Number, heightTo:Number):void
+    private function prepareEffect(yTo:Number, heightTo:Number, snapPosition:Boolean=false):void
     {
         // stop the current effect
         if (effect && effect.isPlaying)
@@ -1221,7 +1233,7 @@

         var duration:Number = getStyle("softKeyboardEffectDuration");

-        if (duration > 0)
+        if ((duration > 0) && !snapPosition)
             effect = createSoftKeyboardEffect(yTo, heightTo);

         // Stop looking for explicitHeight changes. The Resize effect or


Transferred from the Adobe Open Source Subversion Repository

Revision: 10962
Author:   jszeto@adobe.com
Date:     2009-10-09T21:59:08.563023Z

Log Message:
-----------
ComboBox Fixes:

http://bugs.adobe.com/jira/browse/SDK-23649 - ComboBox baseColor style does not color the openButton

Merged the DropDownListButtonSkin code into ComboBoxButtonSkin. We were missing setting the useBaseColor flag.

Other fixes:
- Merged the ComboBoxSkin with DropDownListSkin to get all of the latest updates.
- Changed some comments to reference ComboBox instead of DropDownList.
- Set allowCustomSelectedItem to false by default for ListBase. ComboBox should be the only current component that supports this behavior.

QE notes: Fixes some style tests
Doc notes: None
Bugs: SDK-23649
Reviewer: Ryan
Tests run: DropDownList, List
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ComboBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/wireframe/src/spark/skins/wireframe/ComboBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ComboBoxTextInputSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ComboBoxButtonSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -152,7 +152,7 @@
         super();
     }

-    mx_internal var allowCustomSelectedItem:Boolean = true;
+    mx_internal var allowCustomSelectedItem:Boolean = false;
     mx_internal static var CUSTOM_SELECTED_ITEM:int = -3;

     //--------------------------------------------------------------------------
@@ -437,7 +437,7 @@
         if (_pendingSelectedItem !== undefined)
             return _pendingSelectedItem;

-        if (selectedIndex == CUSTOM_SELECTED_ITEM)
+        if (allowCustomSelectedItem && selectedIndex == CUSTOM_SELECTED_ITEM)
             return _selectedItem;

         if (selectedIndex == NO_SELECTION || dataProvider == null)
@@ -942,7 +942,7 @@
         var oldSelectedIndex:int = _selectedIndex;
         var oldCaretIndex:int = _caretIndex;

-        if (_proposedSelectedIndex != CUSTOM_SELECTED_ITEM)
+        if (!allowCustomSelectedItem || _proposedSelectedIndex != CUSTOM_SELECTED_ITEM)
         {
             if (_proposedSelectedIndex < NO_SELECTION)
                 _proposedSelectedIndex = NO_SELECTION;


Transferred from the Adobe Open Source Subversion Repository

Revision: 16236
Author:   jszeto@adobe.com
Date:     2010-05-20T00:54:54.963159Z

Log Message:
-----------
Form Feature Work

Merging in Form classes from the private sandbox. All spec'ed functionality has been implemented.

QE notes: none
Doc notes: Needs ASDoc comments
Bugs: none
Reviewer: Hans, Kevin
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/layouts/FormItemLayout.as" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/FormItemLayout.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/assets/ErrorIndicator.png" copyfrom-rev="16235" action="R">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/assets/ErrorIndicator.png</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutElementHelper.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/layouts/ConstraintLayout.as" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/ConstraintLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ToolTipManagerImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/StackedFormItemSkin.mxml" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/StackedFormItemSkin.mxml</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/Form.as" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Form.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/FormItemSkin.mxml" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/FormItemSkin.mxml</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/StackedFormHeadingSkin.mxml" copyfrom-rev="16047" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/StackedFormHeadingSkin.mxml</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/FormHeadingSkin.mxml" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/FormHeadingSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/layouts/FormLayout.as" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/FormLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/bundles/en_US/layout.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/assets/RequiredIndicator.png" copyfrom-rev="16235" action="R">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/assets/RequiredIndicator.png</path>
<path kind="dir" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/assets" copyfrom-rev="16235" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/assets</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/FormItem.as" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/FormItem.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/FormHeading.as" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/FormHeading.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableComponent.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/skins/spark/FormSkin.mxml" copyfrom-rev="15875" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/FormSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/FocusSkin.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as
@@ -262,7 +262,7 @@
     //----------------------------------

     [Inspectable(category="General")]
-
+
     /**
      *  @private
      */


Transferred from the Adobe Open Source Subversion Repository

Revision: 13741
Author:   rbhat@adobe.com
Date:     2010-01-25T04:51:01.548340Z

Log Message:
-----------
Changes made by sbannur. Removed patent related comments from the files.
Reviewed By: Sameer Bhatt

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/chartClasses/IDataCanvas.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/chartClasses/CartesianDataCanvas.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/chartClasses/CartesianCanvasValue.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/datavisualization/src/mx/charts/chartClasses/PolarDataCanvas.as</path>

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

--- frameworks/projects/charts/src/mx/charts/chartClasses/CartesianCanvasValue.as
+++ frameworks/projects/charts/src/mx/charts/chartClasses/CartesianCanvasValue.as
@@ -7,10 +7,6 @@
 //  NOTICE: Adobe permits you to use, modify, and distribute this file
 //  in accordance with the terms of the license agreement accompanying it.
 //
-//  Adobe Patent or Adobe Patent Pending Invention Included Within this File
-//  Adobe patent application tracking B503, entitled Charting Data Graphics -
-//  graphics drawing API that allows to draw in data space, inventors Ely Greenfield.
-//  AdobePatentID="B503"
 //
 ////////////////////////////////////////////////////////////////////////////////////////


Ported GroupedDataTransform

Ported GroupedDataTransform


Transferred from the Adobe Open Source Subversion Repository

Revision: 153
Author:   proberts@adobe.com
Date:     2008-01-10T20:22:23.867658Z

Log Message:
-----------
Severity: ignore
Description: docs update -- added @productVersion tag to Flex AIR classes' class descriptions.

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeMenuEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/FlexHTMLLoader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMinimizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemHistoryButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowRestoreButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowMaximizeButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/StatusBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemTree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/IWindow.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumeration.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemSizeDisplayMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FlexNativeWindowBoundsEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/utils/DirectoryEnumerationMode.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/AIREvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowBackground.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/FileEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/WindowCloseButtonSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/skins/halo/ApplicationTitleBarBackgroundSkin.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FlexNativeMenu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/managers/NativeDragManagerImpl.as</path>

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

--- frameworks/projects/airframework/src/mx/skins/halo/WindowMinimizeButtonSkin.as
+++ frameworks/projects/airframework/src/mx/skins/halo/WindowMinimizeButtonSkin.as
@@ -21,6 +21,8 @@
 /**
  *  The skin for the minimize button in the TitleBar
  *  of a WindowedApplication or Window.
+ *
+ *  @productversion Apollo 1.0
  */
 public class WindowMinimizeButtonSkin extends UIComponent
 {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.graphics.shaderClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 21189
Author:   gruehle@adobe.com
Date:     2011-05-02T22:50:59.098875Z

Log Message:
-----------
Item renderer performance improvements:
* Set cacheAsBitmap="true" on LabelItemRenderer
* Remove cacheAsBitmap setting from labelDisplay and messageDisplay
* Set opaqueBackground if the item renderer background is a solid color

These result in a 10-15% speedup for throw, item, and pixel scrolls.

Item renderer bug fix: changing decorator source doesn't update the display

QE notes: N/A
Doc notes: N/A
Bugs: SDK-30173, SDK-29929
Reviewer: Evtim
Tests run: checkintests, cyclone
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
@@ -285,6 +285,8 @@

         interactionStateDetector = new InteractionStateDetector(this);
         interactionStateDetector.addEventListener(Event.CHANGE, interactionStateDetector_changeHandler);
+
+		cacheAsBitmap = true;
     }

     //--------------------------------------------------------------------------
@@ -701,7 +703,6 @@
         labelDisplay.selectable = false;
         labelDisplay.multiline = false;
         labelDisplay.wordWrap = false;
-        labelDisplay.cacheAsBitmap = true;

         addChild(labelDisplay);
     }
@@ -800,6 +801,7 @@
         var backgroundColor:*;
         var downColor:* = getStyle("downColor");
         var drawBackground:Boolean = true;
+		var opaqueBackgroundColor:* = undefined;

         if (down && downColor !== undefined)
         {
@@ -869,6 +871,12 @@
             graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
             graphics.endFill();
         }
+		else if (drawBackground)
+		{
+			// If our background is a solid color, use it as the opaqueBackground property
+			// for this renderer. This makes scrolling considerably faster.
+			opaqueBackgroundColor = backgroundColor;
+		}

         // separators are a highlight on the top and shadow on the bottom
         topSeparatorColor = 0xFFFFFF;
@@ -912,7 +920,7 @@
             graphics.endFill();
         }

-
+		opaqueBackground = opaqueBackgroundColor;
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 19857
Author:   mcho@adobe.com
Date:     2011-01-21T01:11:13.302094Z

Log Message:
-----------
Update last item in the list when items are added or removed

QE notes: None
Doc notes: None
Bugs: SDK-29194
Reviewer: Ryan
Tests run:
Is noteworthy for integration: No

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
@@ -324,6 +324,12 @@
      */
     private var interactionStateDetector:InteractionStateDetector;

+	/**
+	 *  @private
+	 *  Whether or not we're the last element in the list
+	 */
+	private var isLastItem:Boolean = false;
+
     //--------------------------------------------------------------------------
     //
     //  Overridden properties: UIComponent
@@ -484,6 +490,17 @@
      */
     public function set itemIndex(value:int):void
     {
+		var wasLastItem:Boolean = isLastItem;
+		var dataGroup:DataGroup = parent as DataGroup;
+		isLastItem = (dataGroup && (value == dataGroup.numElements - 1));
+
+		// if whether or not we are the last item in the last has changed then
+		// invalidate our display. note:  even if our new index has not changed,
+		// whether or not we're the last item may have so we perform this check
+		// before the value == _itemIndex check below
+		if (wasLastItem != isLastItem)
+			invalidateDisplayList();
+
         if (value == _itemIndex)
             return;

@@ -887,10 +904,6 @@
 		bottomSeparatorColor = 0x000000;
 		bottomSeparatorAlpha = .3;

-
-		var dataGroup:DataGroup = parent as DataGroup;
-		var isLast:Boolean = (dataGroup && (itemIndex == dataGroup.numElements - 1));
-

 		// draw separators
 		// don't draw top separator for down and selected states
@@ -902,7 +915,7 @@
 		}

 		graphics.beginFill(bottomSeparatorColor, bottomSeparatorAlpha);
-		graphics.drawRect(0, unscaledHeight - (isLast ? 0 : 1), unscaledWidth, 1);
+		graphics.drawRect(0, unscaledHeight - (isLastItem ? 0 : 1), unscaledWidth, 1);
 		graphics.endFill();

@@ -917,7 +930,7 @@
 		}

 		// bottom
-		if (isLast)
+		if (isLastItem)
 		{
 			// we want to offset the bottom by 1 so that we don't get
 			// a double line at the bottom of the list if there's a


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package spark.events
 {


minor fix for error message when attempting to navigate to project when not a member

--- Arguments/src/Model/VerifyProjectMemberModel.as
+++ Arguments/src/Model/VerifyProjectMemberModel.as
@@ -53,7 +53,8 @@
 			var result:XML = event.result as XML;
 			if(result.@verified != 1){
 				verified = false;
-				Alert.show(Language.lookup('NotMember'));
+				Alert.show(Language.lookup('NotMember') +
+					result.@project_admin_firstname + " " + result.@project_admin_lastname + '\n' + "URL: " + result.@admin_url);
 				AGORAModel.getInstance().agoraMapModel.projectID = AGORAModel.getInstance().agoraMapModel.tempprojectID;
 				AGORAModel.getInstance().agoraMapModel.projID = AGORAModel.getInstance().agoraMapModel.tempprojID;
 				return;


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package mx.managers
 {


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

--- frameworks/projects/framework/src/mx/skins/halo/BusyCursor.as
+++ frameworks/projects/framework/src/mx/skins/halo/BusyCursor.as
@@ -26,6 +26,11 @@
 /**
  *  Defines the appearance of the cursor that appears while an operation is taking place. For example,
  *  while the SWFLoader class loads an asset.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
  */
 public class BusyCursor extends FlexSprite
 {
@@ -39,6 +44,11 @@

 	/**
 	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function BusyCursor()
 	{


Transferred from the Adobe Open Source Subversion Repository

Revision: 18809
Author:   egeorgie@adobe.com
Date:     2010-11-24T02:39:54.532608Z

Log Message:
-----------
Density Scaling

- Add authorDensity property to the Applicaiton
- Add DensityUtil class and DeviceDensity enum

QE notes:
Doc notes:
Bugs:
Reviewer: Glenn
Tests run: checkintests, cyclone
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/DensityUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreen.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/DeviceDensity.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/spark/src/spark/components/Application.as
+++ frameworks/projects/spark/src/spark/components/Application.as
@@ -763,6 +763,25 @@
      */
     public var splashScreenMinimumDisplayTime:Number;

+    //----------------------------------
+    //  authorDensity
+    //----------------------------------
+
+    [Inspectable(category="General", enumeration="160ppi,240ppi,320ppi")]
+
+    /**
+     *  The density that the application is authored for.
+     *
+     *  When set, Flex will automatically scale between the author density and
+     *  the density of the current device the application is running on.
+     *
+     *  This property cannot be set by ActionScript code; it must be set in MXML code.
+     *
+     *  @see mx.core.DeviceDensity
+     *  @see mx.core.DensityUtil
+     *  @see mx.core.ISystemManager#densityScale
+     */
+    public var authorDensity:String;

     //----------------------------------
     //  usePreloader


Transferred from the Adobe Open Source Subversion Repository

Revision: 4809
Author:   cframpto@adobe.com
Date:     2009-02-03T14:02:34.556406Z

Log Message:
-----------
Improve ASdoc for FxRadioButton group and groupName properties.

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxRadioButton.as

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

--- frameworks/projects/spark/src/spark/components/RadioButton.as
+++ frameworks/projects/spark/src/spark/components/RadioButton.as
@@ -161,7 +161,10 @@

     /**
      *  The FxRadioButtonGroup object to which this FxRadioButton belongs.
-     *  All radio buttons in the group must have the same parent.
+     *  When creating radio buttons to put in a FxRadioButtonGroup, it is
+     *  advisable to use group for all of the buttons or groupName for all of
+     *  the buttons.  In addition, all radio buttons in the group must have the
+     *  same parent.
      *
      *  @default "undefined"
      *  @see #groupName
@@ -260,8 +263,11 @@
      *  Specifies the name of the group to which this FxRadioButton control belongs, or
      *  specifies the value of the id property of a FxRadioButtonGroup control
      *  if this FxRadioButton is part of a group defined by a FxRadioButtonGroup control.
-     *  All radio buttons with the same groupName will be in the same tab group.
-     *  All radio buttons in the group must have the same parent.
+     *  All radio buttons with the same groupName will be in the same tab group
+     *  even if they belong to different radio button groups.  When creating
+     *  radio buttons to put in a FxRadioButtonGroup, it is advisable to
+     *  use group for all of the buttons or groupName for all of the buttons.
+     *  In addition, all radio buttons in the group must have the same parent.
      *
      *  @default "radioButton"
      *  @see #group


Transferred from the Adobe Open Source Subversion Repository

Revision: 19527
Author:   klin@adobe.com
Date:     2010-12-23T01:22:07.328805Z

Log Message:
-----------
Enable percentWidth on ConstraintColumns in ConstraintLayout. The aligned columns of a Form will now fit inside the Form container because the content column of each FormItem has width="100%". Note that this changes the behavior for the default Spark Form. Form is now resizable by default and does not resize FormItems to fit the Form. FormItems should be set at width="100%" to fit the Form.

ConstraintLayout.as
-percentWidth on columns now works. Columns with a percentWidth will resize to fill the remaining space based on their specified percentages at layout time.
-measureAndPositionColumnsAndRows now takes two parameters, constrainedWidth and constrainedHeight, which are used to calculate the size of percent size columns and rows.
-Refactored measureColumns into three steps: Setting columns to their minimum width, finding the preferred width of each column based on elements that constrain to the column, and constraining the percent size columns to the given constrainingWidth.
-ConstraintLayout uses similar code to Horizontal and VerticalLayout to calculate the widths of the percent size columns in constrainPercentColumnWidths().

FormLayout.as
-Refactored much of the code to use and pass around a vector of the layout elements with a FormItemLayout.
-Modified updateDisplayList to first calculate the maximum column widths then constrain the percent size columns to the Form's unscaledWidth. This ensures that the columns will fit within the Form container. However, form items themselves are not resized to fit the columns. Thus, columns may spill out of each FormItem.

Skins, defaults.css
-The contentCol is now width="100%" making it fill the remaining space. Thus, Forms by default will be resizable.
-Fixed bug with bold font. We must hard code these values onto the sequenceLabel and labelDisplay because putting it in the CSS file will cause all the content to be bold too.
-Fixed bug in StackedFormItemSkin where the required indicator was included in the layout causing issues with its measuredMinWidth.

QE notes: No
Doc notes: No
Bugs: SDK-28949
Reviewer: Evtim
Tests run: cyclone to Joann, checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/FormHeadingSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/FormItemLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/FormLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/ConstraintLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/StackedFormItemSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/FormItemSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/StackedFormHeadingSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/layouts/FormItemLayout.as
+++ frameworks/projects/spark/src/spark/layouts/FormItemLayout.as
@@ -63,7 +63,7 @@
             return;

         // need to parse constraints and rows may resize.
-        measureAndPositionColumnsAndRows();
+        measureAndPositionColumnsAndRows(unscaledWidth, unscaledHeight);

         if (layoutColumnWidths)
             setColumnWidths(layoutColumnWidths);
@@ -77,16 +77,7 @@
      */
     public function getMeasuredColumnWidths():Vector.<Number>
     {
-        measureAndPositionColumnsAndRows();
-
-        var constraintColumns:Vector.<ConstraintColumn> = this.constraintColumns;
-        var numCols:int = constraintColumns.length;
-        var columnWidths:Vector.<Number> = new Vector.<Number>(numCols, true);
-
-        for (var i:int = 0; i < numCols; i++)
-            columnWidths[i] = constraintColumns[i].width;
-
-        return columnWidths;
+        return measureColumns();
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 10876
Author:   egeorgie@adobe.com
Date:     2009-10-05T22:20:07.936303Z

Log Message:
-----------
Add support for drag-and-drop from Spark List to Spark List.

- List drop related handlers
- LayoutBase APIs
- VerticalLayout DND support

Notes:
- ListSkin is not final.
- Drag-scrolling not yet implemented.

QE notes: Only VerticalLayout works, HorizontalLayout still not implemented.
Doc notes: None
Bugs: None
Reviewer: Deepa
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/ListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/DropLocation.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
@@ -16,10 +16,12 @@

 import mx.containers.utilityClasses.Flex;
 import mx.core.ILayoutElement;
+import mx.core.IVisualElement;
 import mx.events.PropertyChangeEvent;

 import spark.components.supportClasses.GroupBase;
 import spark.core.NavigationUnit;
+import spark.layouts.supportClasses.DropLocation;
 import spark.layouts.supportClasses.LayoutBase;
 import spark.layouts.supportClasses.LayoutElementHelper;
 import spark.layouts.supportClasses.LinearLayoutVector;
@@ -1783,6 +1785,94 @@
         g.invalidateDisplayList();
     }

+    //--------------------------------------------------------------------------
+    //
+    //  Drop methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override protected function calculateDropIndex(x:Number, y:Number):int
+    {
+        // Iterate over the visible elements
+        var layoutTarget:GroupBase = target;
+        var count:int = layoutTarget.numElements;
+
+        // If there are no items, insert at index 0
+        if (count == 0)
+            return 0;
+
+        // Go through the visible elements
+        var minDistance:Number = Number.MAX_VALUE;
+        var bestIndex:int = -1;
+        var start:int = this.firstIndexInView;
+        var end:int = this.lastIndexInView;
+
+        for (var i:int = start; i <= end; i++)
+        {
+            var elementBounds:Rectangle = this.getElementBounds(i);
+            if (!elementBounds)
+                continue;
+
+            if (elementBounds.top <= y && y <= elementBounds.bottom)
+            {
+                var centerY:Number = elementBounds.y + elementBounds.height / 2;
+                return (y < centerY) ? i : i + 1;
+            }
+
+            var curDistance:Number = Math.min(Math.abs(y - elementBounds.top),
+                                              Math.abs(y - elementBounds.bottom));
+            if (curDistance < minDistance)
+            {
+                minDistance = curDistance;
+                bestIndex = (y < elementBounds.top) ? i : i + 1;
+            }
+        }
+
+        // If there are no visible elements, either pick to drop at the beginning or at the end
+        if (bestIndex == -1)
+            bestIndex = getElementBounds(0).y < y ? count : 0;
+
+        return bestIndex;
+    }
+
+    /**
+     *  @private
+     */
+    override protected function calculateDropIndicatorBounds(dropLocation:DropLocation):Rectangle
+    {
+        var dropIndex:int = dropLocation.dropIndex;
+        var count:int = target.numElements;
+        var gap:Number = this.gap;
+
+        // Special case, if we insert at the end, and the gap is negative, consider it to be zero
+        if (gap < 0 && dropIndex == count)
+            gap = 0;
+
+        var emptySpace:Number = (0 < gap ) ? gap : 0;
+        var emptySpaceTop:Number = 0;
+        if (target.numElements > 0)
+        {
+            emptySpaceTop = (dropIndex < count) ? getElementBounds(dropIndex).top - emptySpace :
+                                                  getElementBounds(dropIndex - 1).bottom + gap - emptySpace;
+        }
+
+        // Calculate the size of the bounds, take minium and maximum into account
+        var width:Number = Math.max(target.width, target.contentWidth) - paddingLeft - paddingRight;
+        var height:Number = emptySpace;
+        if (dropIndicator is IVisualElement)
+        {
+            var element:IVisualElement = IVisualElement(dropIndicator);
+            height = Math.max(Math.min(height, element.getMaxBoundsHeight(false)), element.getMinBoundsHeight(false));
+        }
+
+        var x:Number = paddingLeft;
+        var y:Number = emptySpaceTop + Math.round((emptySpace - height)/2);
+        y = Math.max(-Math.ceil(height / 2), Math.min(target.contentHeight - Math.ceil(height/2), y));
+        return new Rectangle(x, y, width, height);
+    }
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 18145
Author:   egeorgie@adobe.com
Date:     2010-10-13T20:16:24.277475Z

Log Message:
-----------
Fix SDK-28197 requestedMaxColumnCount in HorizontalLayout is not respected

The problem was we didn't take into account the maxRequested in the non-virtual code path.

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

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

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

--- frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/VerticalLayout.as
@@ -1277,6 +1277,8 @@
         if (!variableRowHeight)
             fixedRowHeight = rowHeight;  // may query typicalLayoutElement, elt at index=0

+        // Get the numElementsInLayout clamped to requested min/max
+        var rowsToMeasure:int = getRowsToMeasure(numElementsInLayout);
         var element:ILayoutElement;
         for (var i:int = 0; i < numElements; i++)
         {
@@ -1288,7 +1290,7 @@
             }

             // Can we measure this row height?
-            if (requestedRowCount == -1 || rowsMeasured < requestedRowCount)
+            if (rowsMeasured < rowsToMeasure)
             {
                 getElementHeight(element, fixedRowHeight, size);
                 preferredHeight += size.preferredSize;
@@ -1303,8 +1305,8 @@
             minWidth = Math.max(minWidth, size.minSize);
         }

-        // Calculate the total number of rows to measure
-        var rowsToMeasure:int = getRowsToMeasure(numElementsInLayout);
+        // Calculate the total number of rows to measure again, since numElementsInLayout may have changed
+        rowsToMeasure = getRowsToMeasure(numElementsInLayout);

         // Do we need to measure more rows?
         if (rowsMeasured < rowsToMeasure)


Transferred from the Adobe Open Source Subversion Repository

Revision: 18681
Author:   smgilson@adobe.com
Date:     2010-11-17T22:41:44.503891Z

Log Message:
-----------
ASDoc edits for DataGrid

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridLayer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/gridClasses/GridSelectionMode.as</path>

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridSelectionMode.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridSelectionMode.as
@@ -13,8 +13,31 @@
 {

 /**
- *  The GridSelectionMode class defines the legal constant values for the DataGrid
- *  selectionMode property.
+ *  The GridSelectionMode class defines the valid constant values for the
+ *  selectionMode property of the Spark DataGrid and Grid controls.
+ *
+ *
Use the constants in ActionsScript, as the following example shows:

+ *

+ *    myDG.selectionMode = GridSelectionMode.MULTIPLE_CELLS;
+ *

+ *
+ *
In MXML, use the String value of the constants,
+ *  as the following example shows:

+ *

+ *    <s:DataGrid id="myGrid" width="350" height="150"
+ *        selectionMode="multipleCells">
+ *        ...
+ *    </s:DataGrid>
+ *

+ *
+ *  @see spark.components.DataGrid#selectionMode
+ *  @see spark.components.Grid#selectionMode
+ *  @see spark.components.gridClasses.GridSelection
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
  */
 public final class GridSelectionMode
 {
@@ -24,7 +47,7 @@
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
+     *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
     public function GridSelectionMode()
@@ -39,11 +62,11 @@
     //--------------------------------------------------------------------------

     /**
-     *  Specifies that there is no selection allowed.
+     *  Specifies that no selection is allowed.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
+     *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
     public static const NONE:String = "none";
@@ -53,7 +76,7 @@
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
+     *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
     public static const SINGLE_ROW:String = "singleRow";
@@ -63,7 +86,7 @@
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
+     *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
     public static const MULTIPLE_ROWS:String = "multipleRows";
@@ -73,7 +96,7 @@
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
+     *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
     public static const SINGLE_CELL:String = "singleCell";
@@ -83,7 +106,7 @@
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
+     *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
     public static const MULTIPLE_CELLS:String = "multipleCells";


Transferred from the Adobe Open Source Subversion Repository

Revision: 18717
Author:   aharui@adobe.com
Date:     2010-11-18T21:06:34.594376Z

Log Message:
-----------
Fix a bunch of DG bugs by removing a thicket of code no longer needed by the ScrollerLayout now that we have estimated sizes

QE notes: none
Doc notes: none
Bugs: SDK-28364, SDK-28075, SDK-26872, SDK-28150
Reviewer: Hans
Tests run: checkintests mustella full run
Is noteworthy for integration: no

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

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as
@@ -471,25 +471,11 @@
         {
             if (measuredSizeIncludesScrollBars)
             {
-                var contentSize:Point = getLayoutContentSize(viewport);
-
                 var viewportPreferredW:Number =  viewport.getPreferredBoundsWidth();
-                var viewportContentW:Number = contentSize.x;
-                var viewportW:Number = viewport.getLayoutBoundsWidth();  // "current" size
-                var currentSizeNoHSB:Boolean = !isNaN(viewportW) && ((viewportW + SDT) > viewportContentW);
-                if (hAuto && !showHSB && ((viewportPreferredW + SDT) <= viewportContentW) && currentSizeNoHSB)
-                    measuredW += viewportW;
-                else
-                    measuredW += Math.max(viewportPreferredW, (showHSB) ? hsb.getMinBoundsWidth() : 0);
+                measuredW += Math.max(viewportPreferredW, (showHSB) ? hsb.getMinBoundsWidth() : 0);

                 var viewportPreferredH:Number = viewport.getPreferredBoundsHeight();
-                var viewportContentH:Number = contentSize.y;
-                var viewportH:Number = viewport.getLayoutBoundsHeight();  // "current" size
-                var currentSizeNoVSB:Boolean = !isNaN(viewportH) && ((viewportH + SDT) > viewportContentH);
-                if (vAuto && !showVSB && ((viewportPreferredH + SDT) <= viewportContentH) && currentSizeNoVSB)
-                    measuredH += viewportH;
-                else
-                    measuredH += Math.max(viewportPreferredH, (showVSB) ? vsb.getMinBoundsHeight() : 0);
+                measuredH += Math.max(viewportPreferredH, (showVSB) ? vsb.getMinBoundsHeight() : 0);
             }
             else
             {


Transferred from the Adobe Open Source Subversion Repository

Revision: 3149
Author:   gruehle@adobe.com
Date:     2008-09-08T23:58:35.368231Z

Log Message:
-----------
Fix bugs introduced by the display object sharing optimization. This checkin should fix ordering problems when dynamically adding/removing graphic elements, and ordering problems when changing graphic element properties that require a display object (rotation, alpha, filters, etc).

Bugs:
MXMLG-219: BitmapGraphic component content always rendered from 0, 0 origin.
MXMLG-220: setting visible property of Rect and Ellipse does nothing.
MXMLG-222: setting the alpha of a rectangle changes z-order when there are 3 or more rectangles
SDK-16754: Z-order incorrect when a Group is present

QA: Yes - the test files from these bugs (or something equivalent) should be added to our standard test suite
Reviewer: Deepa

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/graphicsClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/BitmapGraphic.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
+++ frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as
@@ -1624,7 +1624,6 @@

         visibleChanged = true;

-        // TODO EGeorgie: should we redraw for visibility changes?
         invalidateProperties();
     }

@@ -2227,6 +2226,17 @@
                 commitXY();

             displayObjectChanged = false;
+        }
+        else
+        {
+        	if (visibleChanged)
+        	{
+        		visibleChanged = false;
+
+        		// If we're sharing a display list, we need to force a redraw
+        		// to change visibility.
+        		invalidateDisplayList();
+        	}
         }
     }

@@ -2353,7 +2363,8 @@
             return; */
         invalidateDisplayListFlag = false;

-        updateDisplayList(_width, _height);
+		if (visible)
+        	updateDisplayList(_width, _height);

         // If we aren't doing any more invalidation, send out an UpdateComplete event
         if (!invalidatePropertiesFlag && !invalidateSizeFlag && !invalidateDisplayListFlag)