Transferred from the Adobe Open Source Subversion Repository

Revision: 17366
Author:   rfrishbe@adobe.com
Date:     2010-08-18T20:55:44.548390Z

Log Message:
-----------
Adding touchDelay and minimumDownState styles to Button.

In addition, there are some other PARB changes (touchScroll is renamed to more generic gestureCapture).  This means TouchScrollEvent has been renamed to GestureCaptureEvent as well.

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

Modified Paths:
--------------
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/TouchScrollEvent.as" copyfrom-rev="17335" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/GestureCaptureEvent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/styles/metadata/MobileTextFieldTextStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableContainer.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/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/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/tools/dependencychecker/flex/tools/dependencychecker/FrameworkSwcDependencyRules.java</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/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="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/TrackBase.as</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/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/TouchScrollEvent.as</path>

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

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -31,8 +31,8 @@
 import mx.core.mx_internal;
 import mx.effects.easing.Exponential;
 import mx.events.EffectEvent;
+import mx.events.GestureCaptureEvent;
 import mx.events.PropertyChangeEvent;
-import mx.events.TouchScrollEvent;
 import mx.managers.IFocusManagerComponent;

 import spark.components.Group;
@@ -52,60 +52,6 @@
 include "../styles/metadata/BasicInheritingTextStyles.as"
 include "../styles/metadata/AdvancedInheritingTextStyles.as"
 include "../styles/metadata/SelectionFormatTextStyles.as"
-
-//--------------------------------------
-//  TouchScroll events
-//--------------------------------------
-
-// touchScrollStarting defined on UIComponent
-// touchScrollStart defined on UIComponent
-
-/**
- *  Dispatched as the user is drag scrolling.
- *
- *
The event.dragX and event.dragY
- *  properties are set to the distance dragged since the initial
- *  mouseDown/touchBegin occurred.

- *
- *  @eventType mx.events.TouchScrollEvent.TOUCH_SCROLL_DRAG
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.5
- *  @productversion Flex 4.5
- */
-[Event(name="touchScrollDrag", type="mx.events.TouchScrollEvent")]
-
-/**
- *  Dispatched when a user flicks or throw scrolls a list.
- *
- *
The event.velocityX and event.velocityY
- *  properties are set to the velocity the user threw the list.

- *
- *  @eventType mx.events.TouchScrollEvent.TOUCH_SCROLL_THROW
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.5
- *  @productversion Flex 4.5
- */
-[Event(name="touchScrollThrow", type="mx.events.TouchScrollEvent")]
-
-/**
- *  Dispatched at the end of a scroll throw operation.
- *
- *
If no throw occurs, this is dispatched immediately on
- *  mouseUp/touchEnd.  However, if a scroll throw does occur, then
- *  this is dispatched after the throw has completely finished.

- *
- *  @eventType mx.events.TouchScrollEvent.TOUCH_SCROLL_END
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.5
- *  @productversion Flex 4.5
- */
-[Event(name="touchScrollEnd", type="mx.events.TouchScrollEvent")]

 //--------------------------------------
 //  Styles
@@ -203,6 +149,26 @@
  *  @productversion Flex 4
  */
 [Style(name="symbolColor", type="uint", format="Color", inherit="yes", theme="spark")]
+
+/**
+ *  When in touch interaction mode, the number of milliseconds to wait before showing the
+ *  component in a visually down state.
+ *
+ *
The reason for this delay is because when a user initiates a scroll gesture, we don't want
+ *  components to flicker as they touch the screen.  By having a reasonable delay, we make
+ *  sure that the user still gets feedback when they press down on a component, but that the
+ *  feedback doesn't come too quickly that it gets displayed during a scroll gesture
+ *  operation.

+ *
+ *
If the mobile theme is applied, the default value for this style is 100 ms for
+ *  components inside of a Scroller and 0 ms for components outside of a Scroller.

+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+[Style(name="touchDelay", type="Number", format="Time", inherit="yes", minValue="0.0")]

 /**
  *  Indicates under what conditions the vertical scroll bar is displayed.
@@ -584,8 +550,8 @@
      *  Used to keep track of whether we should capture the next
      *  mousedown event that we receive or whether we should let it dispatch
      *  normally.  We capture the mousedown event if a scroll-throw is
-     *  currently happening.  We set this property in mouseDown, touchScrollStart,
-     *  and touchScrollEnd.
+     *  currently happening.  We set this property in mouseDown, gestureCaptureStart,
+     *  and gestureCaptureEnd.
      */
     private var captureNextMouseDown:Boolean = false;

@@ -1041,11 +1007,9 @@
     private function installTouchListeners():void
     {
         addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
-        addEventListener(TouchScrollEvent.TOUCH_SCROLL_STARTING, touchScrollStartingHandler);
-        addEventListener(TouchScrollEvent.TOUCH_SCROLL_START, touchScrollStartHandler);
-        addEventListener(TouchScrollEvent.TOUCH_SCROLL_DRAG, touchScrollDragHandler);
-        addEventListener(TouchScrollEvent.TOUCH_SCROLL_END, touchScrollEndHandler);
-        addEventListener(TouchScrollEvent.TOUCH_SCROLL_THROW, touchScrollThrowHandler);
+        addEventListener(GestureCaptureEvent.GESTURE_CAPTURE_STARTING, gestureCaptureStartingHandler);
+        addEventListener(GestureCaptureEvent.GESTURE_CAPTURE_START, gestureCaptureStartHandler);
+        addEventListener(GestureCaptureEvent.GESTURE_CAPTURE_END, gestureCaptureEndHandler);

         // capture mouse listeners to help block click and mousedown events.
         // mousedown is blocked when a scroll is in progress
@@ -1060,11 +1024,9 @@
     private function uninstallTouchListeners():void
     {
         removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
-        removeEventListener(TouchScrollEvent.TOUCH_SCROLL_STARTING, touchScrollStartingHandler);
-        removeEventListener(TouchScrollEvent.TOUCH_SCROLL_START, touchScrollStartHandler);
-        removeEventListener(TouchScrollEvent.TOUCH_SCROLL_END, touchScrollEndHandler);
-        removeEventListener(TouchScrollEvent.TOUCH_SCROLL_DRAG, touchScrollDragHandler);
-        removeEventListener(TouchScrollEvent.TOUCH_SCROLL_THROW, touchScrollThrowHandler);
+        removeEventListener(GestureCaptureEvent.GESTURE_CAPTURE_STARTING, gestureCaptureStartingHandler);
+        removeEventListener(GestureCaptureEvent.GESTURE_CAPTURE_START, gestureCaptureStartHandler);
+        removeEventListener(GestureCaptureEvent.GESTURE_CAPTURE_END, gestureCaptureEndHandler);

         removeEventListener(MouseEvent.CLICK, touchScrolling_captureMouseHandler, true);
         removeEventListener(MouseEvent.MOUSE_DOWN, touchScrolling_captureMouseHandler, true);
@@ -1511,13 +1473,13 @@
      *  @private
      *  Event handler dispatched when someone is about to start scrolling.
      */
-    private function touchScrollStartingHandler(event:TouchScrollEvent):void
+    private function gestureCaptureStartingHandler(event:GestureCaptureEvent):void
     {
         // if it's us, don't do anything
         // if it's someone else and we've started scrolling, cancel this event
         // if it's someone else and we haven't started scrolling, don't do anything
-        // here yet. Worry about it in the touchScrollStartHandler().
-        if (event.scrollingObject != this && (horizontalScrollInProgress || verticalScrollInProgress))
+        // here yet. Worry about it in the gestureCaptureStartHandler().
+        if (event.relatedObject != this && (horizontalScrollInProgress || verticalScrollInProgress))
         {
             event.preventDefault();
         }
@@ -1527,9 +1489,9 @@
      *  @private
      *  Event handler dispatched when someone has started scrolling.
      */
-    private function touchScrollStartHandler(event:TouchScrollEvent):void
-    {
-        if (event.scrollingObject != this)
+    private function gestureCaptureStartHandler(event:GestureCaptureEvent):void
+    {
+        if (event.relatedObject != this)
         {
             // if it's not us scrolling, abort our scrolling attempt
             touchScrollHelper.stopScrollWatch();
@@ -1625,16 +1587,16 @@
     /**
      *  @private
      */
-    private function touchScrollDragHandler(event:TouchScrollEvent):void
+    mx_internal function performDrag(dragX:Number, dragY:Number):void
     {
         var xMove:int = 0;
         var yMove:int = 0;

         if (canScrollHorizontally)
-            xMove = event.dragX;
+            xMove = dragX;

         if (canScrollVertically)
-            yMove = event.dragY;
+            yMove = dragY;

         var newHSP:Number = hspBeforeTouchScroll - xMove;
         var newVSP:Number = vspBeforeTouchScroll - yMove;
@@ -1645,6 +1607,7 @@
         var viewportWidth:Number = isNaN(viewport.width) ? 0 : viewport.width;
         var cWidth:Number = viewport.contentWidth;
         var maxWidth:Number = Math.max(0, (cWidth == 0) ? viewport.horizontalScrollPosition : cWidth - viewportWidth);
+
         var vsp:Number = viewport.verticalScrollPosition;
         var viewportHeight:Number = isNaN(viewport.height) ? 0 : viewport.height;
         var cHeight:Number = viewport.contentHeight;
@@ -1668,16 +1631,16 @@
         if (stoppedPreemptively)
             return;

-        dispatchEvent(new TouchScrollEvent(TouchScrollEvent.TOUCH_SCROLL_THROW_ANIMATION_END));
+        touchScrollHelper.touchScrollThrowAnimationEnd();
     }

     /**
      *  @private
      */
-    private function touchScrollThrowHandler(event:TouchScrollEvent):void
+    mx_internal function performThrow(velocityX:Number, velocityY:Number):void
     {
         stoppedPreemptively = false;
-        setUpThrowEffect(event.velocityX, event.velocityY);
+        setUpThrowEffect(velocityX, velocityY);

         throwEffect.play();
     }
@@ -1687,14 +1650,17 @@
      *  When the throw is over, no need to listen for mouse events anymore.
      *  Also, use this to hide the scrollbars.
      */
-    private function touchScrollEndHandler(event:TouchScrollEvent):void
-    {
-        captureNextMouseDown = false;
-        // don't reset captureNextClick here because touchScrollEnd
-        // may be invoked on mouseUp and mouseClick occurs immediately
-        // after that, so we want to block this next mouseClick
-
-        hideScrollBars();
+    private function gestureCaptureEndHandler(event:GestureCaptureEvent):void
+    {
+        if (event.relatedObject == this)
+        {
+            captureNextMouseDown = false;
+            // don't reset captureNextClick here because touchScrollEnd
+            // may be invoked on mouseUp and mouseClick occurs immediately
+            // after that, so we want to block this next mouseClick
+
+            hideScrollBars();
+        }
     }

     /**
@@ -1727,8 +1693,9 @@
 import flash.utils.getTimer;

 import mx.core.mx_internal;
+import mx.events.GestureCaptureEvent;
+import mx.events.GestureCaptureReason;
 import mx.events.SandboxMouseEvent;
-import mx.events.TouchScrollEvent;
 import mx.utils.GetTimerUtil;

 import spark.components.Scroller;
@@ -2032,7 +1999,7 @@
      *  @private
      *  If we are not scrolling, this is used to determine whether we should start
      *  scrolling or not by checking if we've moved more than the slop.
-     *  If we are scrolling, this is used to dispatch TouchScrollEvent.TOUCH_SCROLL_DRAG
+     *  If we are scrolling, this is used to call scroller.touchScrollDragHandler()
      *  events and to determine how far the user has scrolled.
      */
     private function sbRoot_mouseMoveHandler(event:MouseEvent):void
@@ -2065,9 +2032,10 @@
             if (shouldBeScrolling)
             {
                 // Dispatch a cancellable and bubbling event to notify others
-                var scrollDragStartingEvent:TouchScrollEvent = new TouchScrollEvent(TouchScrollEvent.TOUCH_SCROLL_STARTING, true, true);
-                scrollDragStartingEvent.scrollingObject = scroller;
-                var eventAccepted:Boolean = mouseDownedDisplayObject.dispatchEvent(scrollDragStartingEvent);
+                var scrollStartingEvent:GestureCaptureEvent = new GestureCaptureEvent(GestureCaptureEvent.GESTURE_CAPTURE_STARTING, true, true);
+                scrollStartingEvent.relatedObject = scroller;
+                scrollStartingEvent.reason = GestureCaptureReason.SCROLL;
+                var eventAccepted:Boolean = mouseDownedDisplayObject.dispatchEvent(scrollStartingEvent);

                 // if the event was preventDefaulted(), then stop scrolling scrolling
                 if (!eventAccepted)
@@ -2082,9 +2050,10 @@
                 }

                 // if the event has been accepted, then dispatch a bubbling start event
-                var scrollDragStartEvent:TouchScrollEvent = new TouchScrollEvent(TouchScrollEvent.TOUCH_SCROLL_START, true, true);
-                scrollDragStartEvent.scrollingObject = scroller;
-                mouseDownedDisplayObject.dispatchEvent(scrollDragStartEvent);
+                var scrollStartEvent:GestureCaptureEvent = new GestureCaptureEvent(GestureCaptureEvent.GESTURE_CAPTURE_START, true, true);
+                scrollStartEvent.relatedObject = scroller;
+                scrollStartEvent.reason = GestureCaptureReason.SCROLL;
+                mouseDownedDisplayObject.dispatchEvent(scrollStartEvent);

                 // FIXME (rfrishbe): the difference should not be from the original point but from the slop.
                 // otherwise we "jump" on the first move.
@@ -2109,13 +2078,7 @@
             var dx:Number = event.stageX - scrollGestureAnchorPoint.x;
             var dy:Number = event.stageY - scrollGestureAnchorPoint.y;

-            // dispatch the event
-            var scrollDragEvent:TouchScrollEvent = new TouchScrollEvent(TouchScrollEvent.TOUCH_SCROLL_DRAG, false, false);
-            scrollDragEvent.scrollingObject = scroller;
-            scrollDragEvent.dragX = dx;
-            scrollDragEvent.dragY = dy;
-
-            scroller.dispatchEvent(scrollDragEvent);
+            scroller.performDrag(dx, dy);

             // Call updateAfterEvent() to make sure it looks smooth, but don't
             // call it on the first or second time because the thumb might not be positioned
@@ -2198,7 +2161,7 @@
         lastVelocity.x *= movedRatio.x;
         lastVelocity.y *= movedRatio.y;

-        var scrollEndEvent:TouchScrollEvent;
+        var scrollEndEvent:GestureCaptureEvent;

         // FIXME (rfrishbe): should be minXVelocity, minYVelocity, minDiagonalVelocity
         // FIXME (rfrishbe): this should be parameterized better and the heuristic should
@@ -2209,8 +2172,9 @@
             isScrolling = false;

             // don't do anything
-            scrollEndEvent = new TouchScrollEvent(TouchScrollEvent.TOUCH_SCROLL_END);
-            scrollEndEvent.scrollingObject = scroller;
+            scrollEndEvent = new GestureCaptureEvent(GestureCaptureEvent.GESTURE_CAPTURE_END);
+            scrollEndEvent.relatedObject = scroller;
+            scrollEndEvent.reason = GestureCaptureReason.SCROLL;
             scroller.dispatchEvent(scrollEndEvent);
             return;
         }
@@ -2225,14 +2189,7 @@
         // if the velocity is greater than the minimum velocity, start throwing
         if (throwVelocity.length > MIN_START_VELOCITY)
         {
-            var scrollEndAndThrowEvent:TouchScrollEvent = new TouchScrollEvent(TouchScrollEvent.TOUCH_SCROLL_THROW, false, false);
-            scrollEndAndThrowEvent.scrollingObject = scroller;
-            scrollEndAndThrowEvent.velocityX = throwVelocity.x;
-            scrollEndAndThrowEvent.velocityY = throwVelocity.y;
-
-            // wait for the animation to be over so we can dispatch a touchScrollEnd event
-            scroller.addEventListener(TouchScrollEvent.TOUCH_SCROLL_THROW_ANIMATION_END, scroller_touchScrollThrowAnimationEnd);
-            scroller.dispatchEvent(scrollEndAndThrowEvent);
+            scroller.performThrow(throwVelocity.x, throwVelocity.y);
         }
         else
         {
@@ -2240,8 +2197,9 @@
             isScrolling = false;

             // don't do anything
-            scrollEndEvent = new TouchScrollEvent(TouchScrollEvent.TOUCH_SCROLL_END);
-            scrollEndEvent.scrollingObject = scroller;
+            scrollEndEvent = new GestureCaptureEvent(GestureCaptureEvent.GESTURE_CAPTURE_END);
+            scrollEndEvent.relatedObject = scroller;
+            scrollEndEvent.reason = GestureCaptureReason.SCROLL;
             scroller.dispatchEvent(scrollEndEvent);
         }
     }
@@ -2296,16 +2254,15 @@

     /**
      *  @private
-     *  When the touchScrollThrow is over, we should dispatch a touchScrollEnd.
-     */
-    private function scroller_touchScrollThrowAnimationEnd(event:TouchScrollEvent):void
-    {
-        scroller.removeEventListener(TouchScrollEvent.TOUCH_SCROLL_THROW_ANIMATION_END, scroller_touchScrollThrowAnimationEnd);
-
+     *  When the touchScrollThrow is over, we should dispatch a gestureCaptureEnd.
+     */
+    public function touchScrollThrowAnimationEnd():void
+    {
         isScrolling = false;

-        var scrollEndEvent:TouchScrollEvent = new TouchScrollEvent(TouchScrollEvent.TOUCH_SCROLL_END);
-        scrollEndEvent.scrollingObject = scroller;
+        var scrollEndEvent:GestureCaptureEvent = new GestureCaptureEvent(GestureCaptureEvent.GESTURE_CAPTURE_END);
+        scrollEndEvent.relatedObject = scroller;
+        scrollEndEvent.reason = GestureCaptureReason.SCROLL;
         scroller.dispatchEvent(scrollEndEvent);
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 17466
Author:   rfrishbe@adobe.com
Date:     2010-08-24T19:58:32.424056Z

Log Message:
-----------
Fixing up logic for Scroller determining when it can scroll horizontally and/or vertically.  This code has moved in to ScrollerLayout(), and the properties are now set in ScorllerLayout.udl() rather than trying to directly calculate it in another method.

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>

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

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -427,14 +427,6 @@
      */
     private static const THROW_EFFECT_TIME:int = 2000;

-    /**
-     *  @private
-     *  SDT - Scrollbar Display Threshold.  If the content size exceeds the
-     *  viewport's size by SDT, then we show a scrollbar.  For example, if the
-     *  contentWidth >= viewport width + SDT, show the horizontal scrollbar.
-     */
-    mx_internal static const SDT:Number = 1.0;
-
     //--------------------------------------------------------------------------
     //
     //  Constructor
@@ -568,15 +560,6 @@
     //  Properties
     //
     //--------------------------------------------------------------------------
-
-    private function invalidateSkin():void
-    {
-        if (skin)
-        {
-            skin.invalidateSize()
-            skin.invalidateDisplayList();
-        }
-    }

     //----------------------------------
     //  horizontalScrollBar
@@ -997,6 +980,37 @@

     //--------------------------------------------------------------------------
     //
+    //  Private Helper Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Helper method to easily invalidate the skins's size and display list.
+     */
+    private function invalidateSkin():void
+    {
+        if (skin)
+        {
+            skin.invalidateSize()
+            skin.invalidateDisplayList();
+        }
+    }
+
+    /**
+     *  @private
+     *  Helper method to grab the ScrollerLayout.
+     */
+    mx_internal function get scrollerLayout():ScrollerLayout
+    {
+        if (skin)
+            return Group(skin).layout as ScrollerLayout;
+
+        return null;
+    }
+
+    //--------------------------------------------------------------------------
+    //
     //  Touch scrolling methods
     //
     //--------------------------------------------------------------------------
@@ -1035,48 +1049,6 @@

     /**
      *  @private
-     *  Helper function to determine whether the viewport scrolls horizontally
-     */
-    mx_internal function get canScrollHorizontally():Boolean
-    {
-        if (getStyle("horizontalScrollPolicy") == ScrollPolicy.ON)
-            return true;
-
-        if (getStyle("horizontalScrollPolicy") == ScrollPolicy.AUTO)
-        {
-            var viewportUIC:IUIComponent = viewport as IUIComponent;
-            var explicitViewportW:Number = viewportUIC ? viewportUIC.explicitWidth : NaN;
-            var viewportW:Number = isNaN(explicitViewportW) ? (viewport.width - (minViewportInset * 2)) : explicitViewportW;
-
-            return viewport.contentWidth >= (viewportW + SDT);
-        }
-
-        return false;
-    }
-
-    /**
-     *  @private
-     *  Helper function to determine whether the viewport scrolls vertically
-     */
-    mx_internal function get canScrollVertically():Boolean
-    {
-        if (getStyle("verticalScrollPolicy") == ScrollPolicy.ON)
-            return true;
-
-        if (getStyle("verticalScrollPolicy") == ScrollPolicy.AUTO)
-        {
-            var viewportUIC:IUIComponent = viewport as IUIComponent;
-            var explicitViewportH:Number = viewportUIC ? viewportUIC.explicitHeight : NaN;
-            var viewportH:Number = isNaN(explicitViewportH) ? (viewport.height - (minViewportInset * 2)) : explicitViewportH;
-
-            return viewport.contentHeight >= (viewportH + SDT);
-        }
-
-        return false;
-    }
-
-    /**
-     *  @private
      *  Set up the effect to be used for the throw animation
      *  FIXME (rfrishbe): this could use some work
      */
@@ -1106,7 +1078,7 @@
         var decelerationRateY:Number = velocityY/THROW_EFFECT_TIME;

         // figure out where we're scrolling to
-        if (canScrollHorizontally)
+        if (scrollerLayout && scrollerLayout.canScrollHorizontally)
         {
             var hsp:Number = viewport.horizontalScrollPosition;
             var viewportWidth:Number = isNaN(viewport.width) ? 0 : viewport.width;
@@ -1118,7 +1090,7 @@

         }

-        if (canScrollVertically)
+        if (scrollerLayout && scrollerLayout.canScrollVertically)
         {
             var vsp:Number = viewport.verticalScrollPosition;
             var viewportHeight:Number = isNaN(viewport.height) ? 0 : viewport.height;
@@ -1138,7 +1110,7 @@
         var timeToReachHSP:Number = 0;
         var timeToReachVSP:Number = 0;

-        if (canScrollHorizontally)
+        if (scrollerLayout && scrollerLayout.canScrollHorizontally)
         {
             var horizontalMP:MotionPath = new SimpleMotionPath("horizontalScrollPosition", hsp, finalHSP);
             var hspToUse:Number = Math.min(Math.max(finalHSP,0), maxWidth);
@@ -1158,7 +1130,7 @@
             scrollingHorizontally = false;
         }

-        if (canScrollVertically)
+        if (scrollerLayout && scrollerLayout.canScrollVertically)
         {
             var verticalMP:SimpleMotionPath = new SimpleMotionPath("verticalScrollPosition");
             var vspToUse:Number = Math.min(Math.max(finalVSP,0), maxHeight);
@@ -1510,10 +1482,10 @@
             // Scroller events to determine this rather than doing it here.
             // Also should figure out who's in charge of fading the alpha of the
             // scrollbars...Scroller or ScrollerLayout (or even HScrollbar/VScrollbar)?
-            if (canScrollHorizontally)
+            if (scrollerLayout && scrollerLayout.canScrollHorizontally)
                 horizontalScrollInProgress = true;

-            if (canScrollVertically)
+            if (scrollerLayout && scrollerLayout.canScrollVertically)
                 verticalScrollInProgress = true;

             // need to invaliadte the ScrollerLayout object so it'll update the
@@ -1593,10 +1565,10 @@
         var xMove:int = 0;
         var yMove:int = 0;

-        if (canScrollHorizontally)
+        if (scrollerLayout && scrollerLayout.canScrollHorizontally)
             xMove = dragX;

-        if (canScrollVertically)
+        if (scrollerLayout && scrollerLayout.canScrollVertically)
             yMove = dragY;

         var newHSP:Number = hspBeforeTouchScroll - xMove;
@@ -2015,10 +1987,10 @@
             var possibleScrollVertically:Boolean = false;

             // figure out if we can even scroll horizontally or vertically
-            if (scroller.canScrollHorizontally)
+            if (scroller.scrollerLayout && scroller.scrollerLayout.canScrollHorizontally)
                 possibleScrollHorizontally = true;

-            if (scroller.canScrollVertically)
+            if (scroller.scrollerLayout && scroller.scrollerLayout.canScrollVertically)
                 possibleScrollVertically = true;

             // now figure out if we should scroll horizontally or vertically based on our slop


Transferred from the Adobe Open Source Subversion Repository

Revision: 3935
Author:   hmuller@adobe.com
Date:     2008-10-28T23:06:19.450100Z

Log Message:
-----------
Fix for 17281, 17751, 17765, and PARB changes: ClipContent now defaults to false, defined ScrollUnit enum and changed IViewport ScrollPositionDelta methods to use it.   Added "get" prefix to the ScrollPositionDelta methods.

Changed the default value of the clipContent property in GroupBase
and FxContainer from true to false.

Scroller now sets the clipContent of its viewport to true.

Removed clipContent="false" from spark skins, since false is
now the default.

Removed a clipContent="false" hack from CircularScrollbar test.

Removed calls to updateScrollRect from layout updateDisplayList()
methods, since the scrollRect is no longer contingent on
the value of the contentWidth,Height properties.  To keep
the scrollRect in sync with a component's size, we call
layout.updateScrollRect() in GroupBase::updateDisplayList()
and FxContainer::updateDisplayList().

Revised (simplified) the LayoutBase::updateScrollRect ASDoc.

Provisional change to make the FxContainer clipContent property work
correctly.

LayoutBase method renames per PARB feedback:
verticalScrollPositionDelta() => getVerticalScrollPositionDelta()
horizontalScrollPositionDelta() => getHorizontalScrollPositionDelta()

Defined a new mx.core.ScrollUnit enum per PARB feedback.  The
IViewport getHorizontal,VerticalScrollPositionDelta() methods now take
a ScrollUnit type argument, instead of a (character code) uint.

QE Notes: clipContent and ScrollUnit changes will break tests
Doc Notes: None
Bugs: sdk-17751, sdk-17257, sdk-17765
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxVSliderThumbSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/IViewport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/ScrollUnit.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxCheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxHSliderThumbSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxRadioButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -23,6 +23,7 @@
 import mx.events.PropertyChangeEvent;
 import mx.components.baseClasses.FxComponent;
 import mx.core.ScrollPolicy;
+import mx.core.ScrollUnit;
 import mx.managers.IFocusManagerComponent;

@@ -111,7 +112,10 @@
      *  The viewport component to be scrolled.
      *
      *
The viewport is added to the FXScroller component's skin
-     *  which lays out both the viewport and scrollbars.

+     *  which lays out both the viewport and scrollbars.
+     *
+     *  When the viewport property is set, the viewport's clipContent property is
+     *  set to true to enable scrolling.

      */
     public function get viewport():IViewport
     {
@@ -134,6 +138,7 @@
     {
         if (skin && viewport)
         {
+            viewport.clipContent = true;
             skin.addItemAt(viewport, 0);
             viewport.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, viewport_propertyChangeHandler);
         }
@@ -151,6 +156,7 @@
             verticalScrollBar.viewport = null;
         if (skin && viewport)
         {
+            viewport.clipContent = false;
             skin.removeItem(viewport);
             viewport.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, viewport_propertyChangeHandler);
         }
@@ -348,13 +354,23 @@
             var vspDelta:Number = NaN;
             switch (event.keyCode)
             {
+                case Keyboard.UP:
+                     vspDelta = vp.getVerticalScrollPositionDelta(ScrollUnit.UP);
+                     break;
                 case Keyboard.DOWN:
-                case Keyboard.UP:
+                     vspDelta = vp.getVerticalScrollPositionDelta(ScrollUnit.DOWN);
+                     break;
                 case Keyboard.PAGE_UP:
+                     vspDelta = vp.getVerticalScrollPositionDelta(ScrollUnit.PAGE_UP);
+                     break;
                 case Keyboard.PAGE_DOWN:
+                     vspDelta = vp.getVerticalScrollPositionDelta(ScrollUnit.PAGE_DOWN);
+                     break;
                 case Keyboard.HOME:
+                     vspDelta = vp.getVerticalScrollPositionDelta(ScrollUnit.HOME);
+                     break;
                 case Keyboard.END:
-                     vspDelta = vp.verticalScrollPositionDelta(event.keyCode);
+                     vspDelta = vp.getVerticalScrollPositionDelta(ScrollUnit.END);
                      break;
             }
             if (!isNaN(vspDelta))
@@ -369,11 +385,27 @@
             switch (event.keyCode)
             {
                 case Keyboard.LEFT:
+                    hspDelta = vp.getHorizontalScrollPositionDelta(ScrollUnit.LEFT);
+                    break;
                 case Keyboard.RIGHT:
+                    hspDelta = vp.getHorizontalScrollPositionDelta(ScrollUnit.RIGHT);
+                    break;
                 case Keyboard.HOME:
+                    hspDelta = vp.getHorizontalScrollPositionDelta(ScrollUnit.HOME);
+                    break;
                 case Keyboard.END:
-                    hspDelta = vp.horizontalScrollPositionDelta(event.keyCode);
+                    hspDelta = vp.getHorizontalScrollPositionDelta(ScrollUnit.END);
                     break;
+                // If there's no vertical scrollbar, then map page up/down to
+                // page left,right
+                case Keyboard.PAGE_UP:
+                     if (!verticalScrollBar || !(verticalScrollBar.visible))
+                         hspDelta = vp.getHorizontalScrollPositionDelta(ScrollUnit.PAGE_LEFT);
+                     break;
+                case Keyboard.PAGE_DOWN:
+                     if (!verticalScrollBar || !(verticalScrollBar.visible))
+                         hspDelta = vp.getHorizontalScrollPositionDelta(ScrollUnit.PAGE_RIGHT);
+                     break;
             }
             if (!isNaN(hspDelta))
             {


Transferred from the Adobe Open Source Subversion Repository

Revision: 7065
Author:   smgilson@adobe.com
Date:     2009-05-19T12:27:36.799816Z

Log Message:
-----------
ASDoc updates for styles

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

Modified Paths:
--------------
<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/components/Scroller.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/components/SkinnableContainer.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/layouts/BasicLayout.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/components/TextArea.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/supportClasses/GroupBase.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/BasicLayout.as
+++ frameworks/projects/spark/src/spark/layouts/BasicLayout.as
@@ -27,7 +27,7 @@
  *  verticalCenter, baseline, percentWidth, percentHeight.
  *  Element's minimum and maximum sizes will always be respected.
  *
- *
The measured size of the container is calculated from the elements, their
+ *
The measured size of the container is calculated from the elements, their
  *  constraints and their preferred sizes. The measured size of the container
  *  is big enough to fit in all of the elements at their preferred sizes with
  *  their constraints satisified. Here are some examples of how measured size is
@@ -52,9 +52,9 @@
  *

  *

  *
- *  During updateDisplayList() the element's size is determined according to
+ *
During updateDisplayList() the element's size is determined according to
  *  the rules in the following order of precedence (the element's minimum and
- *  maximum sizes are always respected):
+ *  maximum sizes are always respected):

  *

  *
If the element has percentWidth or percentHeight set, then its size
  *    is calculated as a percentage of the available size, where the available
@@ -70,8 +70,8 @@
  *
The element is set to its preferred width and/or height.

  *

  *
- *  The element's position is determined according to the rules in the following
- *  order of precedence:
+ *
The element's position is determined according to the rules in the following
+ *  order of precedence:

  *

  *
The horizontalCenter/verticalCenter constraints specify the distance
  *    between the container's center and the element's center.
@@ -94,8 +94,8 @@
  *    direction, the element is positioned according to its x/y coordinates.

  *

  *
- *  The content size of the container is calculated as the maximum of the
- *  coordinates of the bottom-right corner of all the layout elements.
+ *
The content size of the container is calculated as the maximum of the
+ *  coordinates of the bottom-right corner of all the layout elements.

  *
  *  @langversion 3.0
  *  @playerversion Flash 10
@@ -424,7 +424,7 @@
             else if (!isNaN(right))
                 childX = unscaledWidth - elementWidth - right;
             else
-            	childX = layoutElement.getLayoutBoundsX();
+                childX = layoutElement.getLayoutBoundsX();

             // Vertical position
             if (!isNaN(vCenter))
@@ -436,7 +436,7 @@
             else if (!isNaN(bottom))
                 childY = unscaledHeight - elementHeight - bottom;
             else
-           		childY = layoutElement.getLayoutBoundsY();
+                childY = layoutElement.getLayoutBoundsY();

             // Set position
             layoutElement.setLayoutBoundsPosition(childX, childY);


Transferred from the Adobe Open Source Subversion Repository

Revision: 3321
Author:   hmuller@adobe.com
Date:     2008-09-23T21:21:31.020570Z

Log Message:
-----------
Created ILayout implementation LayoutBase and made it the base
class for the three existing layouts. LayoutBase defines the
following properties:

  target - the Group or DataGroup (GroupBase) that whose
  layout property is _this_ layout.

  verticalScrollPosition, horizontalScrollPosition - the
  origin of the target's scrollRect.  These properties were
  defined by GroupBase.

LayoutBase also adds some new protected methods:

  scrollPositionChanged() - called when the
  vertical,horizontalScrollPosition properties change.

  updateScrollRect() - syncs the scrollRect with the
  vertical,horizontalScrollPosition properties

  invalidateTargetSizeAndDisplayList() - convenience
  method that calls invalidateSize,DisplayList().

LayoutBase also defines empty implementations of measure
and updateDisplayList.

GroupBase now delegates vertical,horizontalScrollPosition
to its layout and redispatches the layout's propertyChange
events for these properties.

QE: No
Doc: No
Checkintests: Pass
Reviewer: Evtim
Bugs:
   SDK-17002 -  includeInLayout no longer being respected

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/Selector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/VGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/VerticalLayout.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/HGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/intf/ILayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/Scroller.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/BasicLayout.as
+++ frameworks/projects/spark/src/spark/layouts/BasicLayout.as
@@ -22,7 +22,7 @@
 /**
  *  Documentation is not currently available.
  */
-public class BasicLayout implements ILayout
+public class BasicLayout extends LayoutBase
 {
     include "../core/Version.as";

@@ -62,34 +62,11 @@

     //--------------------------------------------------------------------------
     //
-    //  Properties
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    // target
-    //----------------------------------
-
-    private var _target:GroupBase;
-
-    public function get target():GroupBase
-    {
-        return _target;
-    }
-
-    public function set target(value:GroupBase):void
-    {
-        _target = value;
-    }
-
-
-    //--------------------------------------------------------------------------
-    //
     //  Methods: ILayout
     //
     //--------------------------------------------------------------------------

-    public function measure():void
+    override public function measure():void
     {
         var layoutTarget:GroupBase = target;
         if (!layoutTarget)
@@ -205,7 +182,7 @@
         }
     }

-    public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+    override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
     {
         var layoutTarget:GroupBase = target;
         if (!layoutTarget)
@@ -296,6 +273,7 @@
         }

         layoutTarget.setContentSize(maxX, maxY);
+        updateScrollRect(unscaledWidth, unscaledHeight);
     }
 }


integrate fix from LPP-2133

 integrate fix from LPP-2133

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

--- WEB-INF/lps/lfc/data/LzLoader.as
+++ WEB-INF/lps/lfc/data/LzLoader.as
@@ -214,7 +214,8 @@
         if (typeof(data) != 'undefined') {
             if (loadobj.proxied) {
                 // proxied req gets back <resultset><body>XML</body><headers/></resultset>
-                ndata.setChildNodes([data.childNodes[0].childNodes[0]]);
+                ndata.setChildNodes(data.childNodes[0].childNodes);
+                //ndata.setChildNodes([data.childNodes[0].childNodes[0]]);
             } else {
                 // SOLO, we get back raw XML only
                 ndata.setChildNodes([data]);


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

--- frameworks/projects/automation/src/mx/automation/delegates/controls/NavBarAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/controls/NavBarAutomationImpl.as
@@ -0,0 +1,167 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.automation.delegates.controls
+{
+	import flash.display.DisplayObject;
+	import flash.events.Event;
+	import flash.events.KeyboardEvent;
+	import flash.events.MouseEvent;
+	import mx.automation.Automation;
+	import mx.automation.IAutomationObjectHelper;
+	import mx.automation.events.AutomationRecordEvent;
+	import mx.automation.delegates.core.ContainerAutomationImpl;
+	import mx.controls.NavBar;
+	import mx.core.mx_internal;
+	import mx.events.ItemClickEvent;
+	import mx.core.EventPriority;
+
+	use namespace mx_internal;
+
+	[Mixin]
+	/**
+	 *
+	 *  Defines methods and properties required to perform instrumentation for the
+	 *  NavBar control.
+	 *
+	 *  @see mx.controls.NavBar
+	 *
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public class NavBarAutomationImpl extends ContainerAutomationImpl
+	{
+		include "../../../core/Version.as";
+
+		//--------------------------------------------------------------------------
+		//
+		//  Class methods
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Registers the delegate class for a component class with automation manager.
+		 *
+		 *  @param root The SystemManger of the application.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public static function init(root:DisplayObject):void
+		{
+			Automation.registerDelegateClass(NavBar, NavBarAutomationImpl);
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Constructor
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Constructor.
+		 * @param obj NavBar object to be automated.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public function NavBarAutomationImpl(obj:NavBar)
+		{
+			super(obj);
+
+			recordClick = false;
+
+			obj.addEventListener(AutomationRecordEvent.RECORD, automationRecordHandler, false, EventPriority.DEFAULT+1, true);
+
+			obj.addEventListener(ItemClickEvent.ITEM_CLICK, itemClickHandler, false, 0, true);
+
+		}
+
+		/**
+		 *  @private
+		 *  storage for the owner component
+		 */
+		protected function get  nBar():NavBar
+		{
+			return uiComponent as NavBar;
+		}
+
+		/**
+		 *  @private
+		 *  Replays click events by dispatching a MouseEvent
+		 *  to the item that was clicked.
+		 */
+		override public function replayAutomatableEvent(interaction:Event):Boolean
+		{
+			var help:IAutomationObjectHelper = Automation.automationObjectHelper;
+			if (interaction is ItemClickEvent)
+			{
+				var itemClickInteraction:ItemClickEvent =
+					ItemClickEvent(interaction);
+				if (itemClickInteraction.relatedObject != null)
+					return help.replayClick(itemClickInteraction.relatedObject);
+				else
+					return false;
+			}
+			else if (interaction is KeyboardEvent)
+			{
+				return help.replayKeyboardEvent(uiComponent, KeyboardEvent(interaction));
+			}
+			else
+			{
+				return super.replayAutomatableEvent(interaction);
+			}
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Event handlers
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  @private
+		 */
+		private function automationRecordHandler(event:AutomationRecordEvent):void
+		{
+			if (event.replayableEvent.type == MouseEvent.CLICK)
+				event.stopImmediatePropagation();
+		}
+
+		/**
+		 *  @private
+		 */
+		protected function itemClickHandler(event:ItemClickEvent):void
+		{
+			recordAutomatableEvent(event);
+		}
+
+		/**
+		 * @private
+		 */
+		public function getItemsCount():int
+		{
+			if (nBar.dataProvider)
+				return nBar.dataProvider.length;
+
+			return 0;
+		}
+
+	}
+
+}


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

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

 package spark.automation.delegates.components.mediaClasses
 {


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

--- frameworks/projects/automation_dmv/src/mx/automation/delegates/advancedDataGrid/AdvancedListBaseContentHolderAutomationImpl.as
+++ frameworks/projects/automation_dmv/src/mx/automation/delegates/advancedDataGrid/AdvancedListBaseContentHolderAutomationImpl.as
@@ -0,0 +1,127 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.automation.delegates.advancedDataGrid
+{
+
+	import flash.display.DisplayObject;
+	import flash.events.Event;
+	import flash.events.KeyboardEvent;
+
+	import mx.automation.Automation;
+	import mx.automation.IAutomationObject;
+	import mx.automation.delegates.core.UIComponentAutomationImpl;
+	import mx.controls.listClasses.IListItemRenderer;
+	import mx.controls.listClasses.ListBaseContentHolder;
+	import mx.controls.listClasses.AdvancedListBaseContentHolder;
+	import mx.core.mx_internal;
+
+	use namespace mx_internal;
+
+	[Mixin]
+	/**
+	 *
+	 *  Defines methods and properties required to perform instrumentation for the
+	 *  AdvancedListBaseContentHolder class.
+	 *
+	 *  @see mx.controls.listClasses.AdvancedListBaseContentHolder
+	 *
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public class AdvancedListBaseContentHolderAutomationImpl extends UIComponentAutomationImpl
+	{
+		// include "../../../core/Version.as";
+
+		//--------------------------------------------------------------------------
+		//
+		//  Class methods
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Registers the delegate class for a component class with automation manager.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public static function init(root:DisplayObject):void
+		{
+			Automation.registerDelegateClass(AdvancedListBaseContentHolder, AdvancedListBaseContentHolderAutomationImpl);
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Constructor
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Constructor.
+		 * @param obj ListBaseContentHolder object to be automated.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public function AdvancedListBaseContentHolderAutomationImpl(obj:AdvancedListBaseContentHolder)
+		{
+			super(obj);
+
+			obj.addEventListener(Event.ADDED, addedHandler, false, 0, true);
+		}
+
+		/**
+		 *  @private
+		 *  storage for the owner component
+		 */
+		protected function get listContent():AdvancedListBaseContentHolder
+		{
+			return uiComponent as AdvancedListBaseContentHolder;
+		}
+
+		/**
+		 *  @private
+		 *  The super handler makes the child a composite if the parent is already a composite.
+		 *  We have overriden here to revert that.
+		 */
+		protected function addedHandler(event:Event):void
+		{
+			if (event.target is IListItemRenderer)
+			{
+				var item:IListItemRenderer = event.target as IListItemRenderer;
+				if (item.parent == listContent)
+				{
+					item.owner = listContent.getParentList();
+					if (item is IAutomationObject)
+						IAutomationObject(item).showInAutomationHierarchy = true;
+
+				}
+			}
+		}
+
+		/**
+		 *  @private
+		 */
+		override protected function keyDownHandler(event:KeyboardEvent):void
+		{
+			//no recording required
+		}
+
+	}
+
+}


Minor

Minor

git-svn-id: 27326a786375daad9d33dc990c6f272e4c8f567c@1439 fda5f131-174c-0410-8613-e0905860106b

--- org.openwms/trunk/org.openwms.core/org.openwms.client.flex.lib/src/main/flex/org/openwms/web/flex/client/module/CommonModule.as
+++ org.openwms/trunk/org.openwms.core/org.openwms.client.flex.lib/src/main/flex/org/openwms/web/flex/client/module/CommonModule.as
@@ -57,4 +57,5 @@
         protected function initApp() : void {
         }
     }
-}+}
+


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

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


Transferred from the Adobe Open Source Subversion Repository

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

Log Message:
-----------
Merging revision 14570 from 4.x branch
QE notes:
Doc notes:
Bugs:
Reviewer:
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/delegates/core/UIComponentAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_air/src/mx/automation/delegates/controls/FlexNativeMenuAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/delegates/controls/SWFLoaderAutomationImpl.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/tabularData/SparkListBaseTabularData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/mx/automation/delegates/core/UIFTETextFieldAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/delegates/core/UITextFieldAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkDropDownListBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_dmv/src/mx/automation/delegates/advancedDataGrid/AdvancedDataGridAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation_spark/src/spark/automation/delegates/components/supportClasses/SparkListBaseAutomationImpl.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/tabularData/OLAPDataGridTabularData.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/codec/RendererPropertyCodec.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/delegates/TextFieldAutomationHelper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/automation/src/mx/automation/codec/AutomationObjectPropertyCodec.as</path>

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

--- frameworks/projects/automation_spark/src/spark/automation/tabularData/SparkListBaseTabularData.as
+++ frameworks/projects/automation_spark/src/spark/automation/tabularData/SparkListBaseTabularData.as
@@ -11,7 +11,7 @@

 package spark.automation.tabularData
 {
-
+	import mx.automation.Automation;
 	import mx.automation.IAutomationObject;
 	import mx.automation.IAutomationTabularData;
 	import mx.core.mx_internal;
@@ -238,7 +238,8 @@
 				// we may need to get the renderer deails for the dropdown list in a
 				// different way as no renderers are available (and hence no datagroup)
 				// itslef not present when the dropDown list is not visible.
-				trace("To be handled in SparkListBaseTabularData and it is happening in DropDownList - while getting selected item");
+				var message:String = "To be handled in SparkListBaseTabularData and it is happening in DropDownList - while getting selected item";
+				Automation.automationDebugTracer.traceMessage("SparkListBaseTabularData","getAutomationValueForData()",message);
 			}

 			return [];


F Fix bug on Mesh.clone

F Fix bug on Mesh.clone

--- src/aerys/minko/scene/node/mesh/Mesh.as
+++ src/aerys/minko/scene/node/mesh/Mesh.as
@@ -157,11 +157,15 @@

 		override public function clone() : ISceneNode
 		{
-			var clone : Mesh = new Mesh();
-
-			clone.copyFrom(this, true);
-
-			return clone;
+			var cloned : Mesh = new Mesh();
+
+			cloned.copyFrom(this, true);
+
+			var numControllers : uint = this.numControllers;
+			for (var controllerId : uint = 0; controllerId < numControllers; ++controllerId)
+				cloned.addController(getController(controllerId));
+
+			return cloned;
 		}

 		override protected function addedToSceneHandler(child : ISceneNode, scene : Scene) : void


FLEX-17210: removed exception throw to get ResourceManager mustella tests to pass again

--- frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as
+++ frameworks/projects/framework/src/mx/resources/ResourceManagerImpl.as
@@ -239,15 +239,6 @@
     public function set localeChain(value:Array /* of String */):void
     {
         _localeChain = value;
-
-		for each (var locale:String in value)
-		{
-			if (!localeMap.hasOwnProperty(locale))
-			{
-				throw new Error(
-					"Could not find compiled locale '" + locale + "'.");
-			}
-		}

         update();
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 13038
Author:   hneelu@adobe.com
Date:     2009-12-17T09:45:13.816497Z

Log Message:
-----------
Reverting P4 changes made for automation project.

Modified Paths:
--------------
228 paths were modified

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

--- frameworks/projects/automation/src/mx/automation/delegates/containers/ApplicationAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/containers/ApplicationAutomationImpl.as
@@ -101,7 +101,7 @@
 		override public function get automationName():String
 		{
 			var am:IAutomationManager2 = Automation.automationManager2;
-			return am.getUniqueApplicationID();
+			return am.getUniqueApplicationId();
 		}
 		/**
 		 *  @private
@@ -231,7 +231,7 @@
 			var am:IAutomationManager2 = Automation.automationManager2;

 			return application.numChildren + application.numRepeaters +
-				getDockedApplicationControlBarCount() +am.getPopUpChildrenCount();
+				getDockedApplicationControlBarCount() +am.getPopoupChildrenCount();
 		}

 		override public function getAutomationChildren():Array
@@ -240,7 +240,7 @@

 			// we need to add popup children
 			var childList:Array = new Array();
-			var tempChildren1:Array  = am.getPopUpChildren();
+			var tempChildren1:Array  = am.getPopoupChildren();
 			var n:int = 0;
 			var i:int = 0;

@@ -287,9 +287,9 @@
 		{
 			var am:IAutomationManager2 = Automation.automationManager2;
 			// handle popup objects
-			var popUpCount:int = am.getPopUpChildrenCount();
+			var popUpCount:int = am.getPopoupChildrenCount();
 			if (index < popUpCount)
-				return am.getPopUpChildObject(index) ;
+				return am.getPopoupChildObject(index) ;
 			else
 				index = index - popUpCount;


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

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


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransitionShaderInstance.as
+++ frameworks/projects/spark/src/spark/effects/supportClasses/AnimateTransitionShaderInstance.as
@@ -21,9 +21,10 @@
 import mx.containers.Panel;
 import mx.core.Application;
 import mx.core.UIComponent;
-import spark.effects.AnimationProperty;
+
 import spark.effects.AnimateShaderTransition;
-import spark.events.AnimationEvent;
+import spark.effects.SimpleMotionPath;
+import spark.effects.animation.Animation;

 public class AnimateShaderTransitionInstance extends AnimateInstance
 {
@@ -236,8 +237,8 @@
             shader.data.from.input = bitmapFrom;
             shader.data.to.input = bitmapTo;

-            animationProperties = [
-                new AnimationProperty("progress", 0, 1, duration)
+            motionPaths = [
+                new SimpleMotionPath("progress", 0, 1, duration)
             ];
             // auto-set width/height if exposed in shader
             if ("width" in shader.data)
@@ -269,16 +270,13 @@
      */
     override protected function setValue(property:String, value:Object):void
     {
-        if (roundValues && (value is Number))
-            value = Math.round(Number(value));
-
         shader.data.progress.value = [value];
         target.filters = [shaderFilter];
     }

-    override protected function startHandler(event:AnimationEvent):void
-    {
-        super.startHandler(event);
+    override public function animationStart(animation:Animation):void
+    {
+        super.animationStart(animation);
         // Note that we don't want the old filters active on the target
         // during the animation; these filters will already be accounted
         // for when we take a bitmap snapshot of the object. Applying
@@ -288,11 +286,11 @@
         // shader filter during the animation.
         oldFilters  = target.filters;
     }
-    override protected function endHandler(event:AnimationEvent):void
+    override public function animationEnd(animation:Animation):void
     {
         target.filters = oldFilters;
         oldFilters = null;
-        super.endHandler(event);
+        super.animationEnd(animation);
     }

     /**


cleaned up RTE check

cleaned up RTE check

--- frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
+++ frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
@@ -1725,9 +1725,9 @@
     private function itemToLabelWithoutFormatting(data:Object):String
     {
         var headerInfo:AdvancedDataGridHeaderInfo  = owner.mx_internal::getHeaderInfo(this);
-        //In case of Column grouping, when a column has a parent with dataField/labelFunction set, this column is
-        //supposed to take value from what its parent supplies it
-        if(headerInfo && headerInfo.internalLabelFunction!=null)
+        // In case of Column grouping, when a column has a parent with dataField/labelFunction set, this column is
+        // supposed to take value from what its parent supplies it
+		if (headerInfo != null && headerInfo.internalLabelFunction != null)
             data = headerInfo.internalLabelFunction(data, this);

         if (!data)


OFC-395 Always show minCount instances of attrib/entity in UI; do not allow remove

--- collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
+++ collect-flex/collect-flex-client/src/generated/flex/org/openforis/collect/model/proxy/RecordProxy.as
@@ -6,18 +6,18 @@
  */

 package org.openforis.collect.model.proxy {
-	import flash.utils.Dictionary;
-
-	import mx.collections.ArrayCollection;
-	import mx.collections.IList;
-	import mx.collections.ListCollectionView;
-
-	import org.openforis.collect.event.ApplicationEvent;
-	import org.openforis.collect.event.EventDispatcherFactory;
-	import org.openforis.collect.remoting.service.UpdateRequest;
-	import org.openforis.collect.remoting.service.UpdateRequestOperation;
-	import org.openforis.collect.remoting.service.UpdateRequestOperation$Method;
-	import org.openforis.collect.remoting.service.UpdateResponse;
+	import flash.utils.Dictionary;
+
+	import mx.collections.ArrayCollection;
+	import mx.collections.IList;
+	import mx.collections.ListCollectionView;
+
+	import org.openforis.collect.event.ApplicationEvent;
+	import org.openforis.collect.event.EventDispatcherFactory;
+	import org.openforis.collect.remoting.service.UpdateRequest;
+	import org.openforis.collect.remoting.service.UpdateRequestOperation;
+	import org.openforis.collect.remoting.service.UpdateRequestOperation$Method;
+	import org.openforis.collect.remoting.service.UpdateResponse;

     [Bindable]
     [RemoteClass(alias="org.openforis.collect.model.proxy.RecordProxy")]
@@ -57,7 +57,7 @@
 			return _nodesMap[id];
 		}

-		public function update(responses:IList, req:UpdateRequest = null):void {
+		public function update(responses:IList, req:UpdateRequest):void {
 			updateNodes(req);

 			for each (var response:UpdateResponse in responses)	{
@@ -88,9 +88,9 @@
 							field.symbol = reqOp.symbol;
 							field.remarks = reqOp.remarks;
 						} else {
-							for each (field in attr.fields) {
+							for each (field in attr.fields) {
 								field.symbol = reqOp.symbol;
-								field.remarks = reqOp.remarks;
+								field.remarks = reqOp.remarks;
 							}
 						}
 						break;
@@ -125,8 +125,8 @@
 					}
 					if(response.updatedFieldValues != null) {
 						var fieldIdxs:ArrayCollection = response.updatedFieldValues.keySet;
-						for each (var i:int in fieldIdxs) {
-							var f:FieldProxy = a.getField(i);
+						for each (var i:int in fieldIdxs) {
+							var f:FieldProxy = a.getField(i);
 							f.value = response.updatedFieldValues.get(i);
 						}
 						a.errorConfirmed = false;
@@ -154,8 +154,8 @@
 		public function showErrors():void {
 			rootEntity.showErrorsOnDescendants();
 		}
-
-		public function get updated():Boolean {
+
+		public function get updated():Boolean {
 			return _updated;
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 21886
Author:   smgilson@adobe.com
Date:     2011-08-08T17:16:05.568498Z

Log Message:
-----------
Add missing </p> tag to ASDoc comment

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

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as
+++ frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as
@@ -66,7 +66,7 @@
  *  are all English, "ja" is Japanese.
  *
  *
The default value is undefined. This property inherits its value from an ancestor; if still
- *  undefined, it inherits from the global locale style.
+ *  undefined, it inherits from the global locale style.

  *
  *
When using the Spark formatters and globalization classes, you can set this style on the root
  *  application to the value of the LocaleID.DEFAULT constant.
@@ -285,7 +285,7 @@
      *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
-     */
+     */
     protected var yearList:SpinnerList;

     /**
@@ -295,7 +295,7 @@
      *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
-     */
+     */
     protected var monthList:SpinnerList;

     /**
@@ -305,7 +305,7 @@
      *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
-     */
+     */
     protected var dateList:SpinnerList;

     /**
@@ -315,7 +315,7 @@
      *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
-     */
+     */
     protected var hourList:SpinnerList;

     /**
@@ -325,7 +325,7 @@
      *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
-     */
+     */
     protected var minuteList:SpinnerList;

     /**
@@ -335,7 +335,7 @@
      *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
-     */
+     */
     protected var meridianList:SpinnerList;

     //----------------------------------
@@ -355,7 +355,7 @@
      *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
-     */
+     */
     public function get displayMode():String
     {
         return _displayMode;
@@ -503,7 +503,7 @@
      *  @langversion 3.0
      *  @playerversion AIR 3
      *  @productversion Flex 4.5.2
-     */
+     */
     public function get minuteStepSize():int
     {
         return _minuteStepSize;
@@ -730,7 +730,7 @@
         var s:SpinnerList = SpinnerList(createDynamicPartInstance("dateItemList"));
 //        s.addEventListener(TouchInteractionEvent.TOUCH_INTERACTION_START, dateItemList_touchEventHandler);
 //        s.addEventListener(TouchInteractionEvent.TOUCH_INTERACTION_END, dateItemList_touchEventHandler);
-        //		TODO: s.itemRenderer = // ...; for first column (or equivalent)
+        //      TODO: s.itemRenderer = // ...; for first column (or equivalent)
         return s;
     }

@@ -795,7 +795,7 @@
                         meridianList = createDateItemList(MERIDIAN_ITEM, fieldPosition++, numItems);
                         tempList = meridianList;
                         break;
-                    }
+                    }
                     case DATE_ITEM:
                     {
                         dateList = createDateItemList(DATE_ITEM, fieldPosition++, numItems);
@@ -844,7 +844,7 @@
                         yearList.wrapElements = false;
                         tempList = yearList;
                         break;
-                    }
+                    }
                 }
                 if (tempList && listContainer)
                 {
@@ -946,10 +946,10 @@
         {
             dateObj.fullYear = i;
             var item:Object = generateDateItemObject(dateTimeFormatter.format(dateObj), i);
-
+
             if (i == todayYear)
                 item["accentColor"] = getStyle("accentColor");
-
+
             ac.addItem(item);
         }

@@ -970,7 +970,7 @@

             if (i == todayMonth)
                 item["accentColor"] = getStyle("accentColor");
-
+
             ac.addItem(item);
         }

@@ -993,9 +993,9 @@
             dateObj.date = i;
             var item:Object = generateDateItemObject(dateTimeFormatter.format(dateObj), i);

-			if (i == todayDate)
+            if (i == todayDate)
                 item["accentColor"] = getStyle("accentColor");
-
+
             ac.addItem(item);
         }

@@ -1029,7 +1029,7 @@

         for (var i:int = 0; i <= 59; i += minuteStepSize)
         {
-        	dateObj.minutes = i;
+            dateObj.minutes = i;
             ac.addItem( generateDateItemObject(dateTimeFormatter.format(dateObj), i) );
         }

@@ -1361,7 +1361,7 @@
      *  Handles changes in the underlying SpinnerLists; applies them to the selectedDate
      * @param event
      *
-     */
+     */
     private function dateItemList_changeHandler(event:IndexChangeEvent):void
     {
         if (spinnersAnimating)


FLEX-33347 - If DateSpinner is in dateAndTime mode you can't spin forward from Jan 31 to date in February or if set on March 31 can't spin forward to date in April, etc. The fix is to set the date variable's month field before the date field (day of the month).  If the date is Jan 31 and you set the month to February, since Feb 31 isn't valid, Flash sets the month to March.  Unfortunately I don't think there is a workaround for this bug.

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

--- frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as
+++ frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as
@@ -1893,12 +1893,15 @@
                     break;
                 case dateList:
                     // for DATE_AND_TIME mode data is a Date.time value
+                    // Must set date before the month to ensure the date is valid for the
+                    // month.  If newDate is Jan 31 and you set the month to Feb it will change
+                    // the month to March since Feb 31 is not a valid date.
                     if (displayMode == DateSelectorDisplayMode.DATE_AND_TIME)
                     {
                         var spinnerDate:Date = new Date(newValue.data);
                         newDate.fullYear = spinnerDate.fullYear;
+                        newDate.date = spinnerDate.date;
                         newDate.month = spinnerDate.month;
-                        newDate.date = spinnerDate.date;
                     }
                     else if (!dateRolledBack) // don't tamper with date if we already rolled it back
                     {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

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

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

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

 package mx.skins.wireframe
 {


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

--- frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as
+++ frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2006-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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 3847
Author:   hmuller@adobe.com
Date:     2008-10-23T17:46:32.310457Z

Log Message:
-----------
Fixed 17690, 17706

Fixed Flex::distributeExtraWidth(), stop adding width to children when
there's less than 1 pixel of space left to distribute.

Fix GroupBase properties vertical,horizontalScrollPosition, and
clipContent.  All of these properties are just delegated to the layout
property, so they must be preserved when the layout property changes.

QE Notes: Should work OK in Japanese
Doc Notes: None
Bugs: sdk-17690, sdk-17706
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/utilityClasses/Flex.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>

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

--- frameworks/projects/framework/src/mx/containers/utilityClasses/Flex.as
+++ frameworks/projects/framework/src/mx/containers/utilityClasses/Flex.as
@@ -487,7 +487,7 @@
 		// distribute to them
 		var stillFlexibleComponents:Boolean = true;

-		while (stillFlexibleComponents && spaceToDistribute > 0)
+		while (stillFlexibleComponents && spaceToDistribute >= 1.0)
 		{
 			// Start optimistically
 			stillFlexibleComponents = false;
@@ -595,7 +595,7 @@
 		// distribute to them
 		var stillFlexibleComponents:Boolean = true;

-		while (stillFlexibleComponents && spaceToDistribute > 0)
+		while (stillFlexibleComponents && spaceToDistribute >= 1.0)
 		{
 			// Start optimistically
 			stillFlexibleComponents = false;


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

--- frameworks/projects/framework/src/mx/formatters/NumberBaseRoundType.as
+++ frameworks/projects/framework/src/mx/formatters/NumberBaseRoundType.as
@@ -0,0 +1,56 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-2006 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.formatters
+{
+
+/**
+ *  The NumberBaseRoundType class defines the constant values for formatter properties
+ *  that specify a type of rounding. For example, you can set the
+ *  NumberFormatter.rounding property using these constants.
+ *
+ *  @see mx.formatters.NumberFormatter
+ *  @see mx.formatters.NumberBase
+ */
+public final class NumberBaseRoundType
+{
+	include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Rounds a number down to an integer that is both closest to,
+	 *  and less than or equal to, the input number.
+	 */
+	public static const DOWN:String = "down";
+
+	/**
+	 *  Rounds a number up or down to the nearest integer.
+	 */
+	public static const NEAREST:String = "nearest";
+
+	/**
+	 *  Perform no rounding.
+	 */
+	public static const NONE:String = "none";
+
+	/**
+	 *  Rounds a number up to an integer value that is both closest to,
+	 *  and greater than or equal to, the input number.
+	 */
+	public static const UP:String = "up";
+}
+
+}