Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/mx/src/mx/effects/RemoveChildAction.as
+++ frameworks/projects/mx/src/mx/effects/RemoveChildAction.as
@@ -78,7 +78,7 @@
 	public function RemoveChildAction(target:Object = null)
 	{
 		super(target);
-
+        duration = 0;
 		instanceClass = RemoveChildActionInstance;
 	}


Transferred from the Adobe Open Source Subversion Repository

Revision: 17454
Author:   klin@adobe.com
Date:     2010-08-23T23:00:57.671134Z

Log Message:
-----------
Add icons for DataGrid and FormHeading.

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

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/FormHeading.png</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.png</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/FormHeading.as</path>

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

--- frameworks/projects/spark/src/spark/components/DataGrid.as
+++ frameworks/projects/spark/src/spark/components/DataGrid.as
@@ -279,9 +279,15 @@
  */
 [Event(name="caretChange", type="spark.events.GridCaretEvent")]

+//--------------------------------------
+//  Other metadata
+//--------------------------------------
+
 [DefaultProperty("dataProvider")]

 [DiscouragedForProfile("mobileDevice")]
+
+[IconFile("DataGrid.png")]

 /**
  *  TBD


Transferred from the Adobe Open Source Subversion Repository

Revision: 5463
Author:   hmuller@adobe.com
Date:     2009-03-20T18:52:47.717993Z

Log Message:
-----------
Added ASDoc for FxScroller about the unconditional use of FxScrollerLayout.   Fixed a mistake in FxScrollerLayout::measure().

QE Notes:
Doc Notes:
Bugs: sdk-19555
Reviewer: Ryan

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScrollerLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxScrollerSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -108,6 +108,13 @@
  *  policy, which can be auto, on, or off.
  *  The auto policy means that the scrollbar will be visible and included
  *  in the layout when the viewport's content is larger than the viewport itself.

+ *
+ *
The FxScroller skin layout cannot be changed, it's unconditionally set to a
+ *  private layout implementation that handles the scroll policies.  FxScroller skins
+ *  can only provide replacement scrollbars.  To gain more control over the layout
+ *  of a viewport and its scrollbars, instead of using FxScroller, just add them
+ *  to a Group and use the scrollbar viewport property
+ *  to link them together.

  *
  *  @langversion 3.0
  *  @playerversion Flash 10


Transferred from the Adobe Open Source Subversion Repository

Revision: 16937
Author:   smgilson@adobe.com
Date:     2010-07-15T16:35:17.543693Z

Log Message:
-----------
Add ASDoc comment about using component in an item renderer

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RadioButtonGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ComboBox.as</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/Button.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ToggleButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Image.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichEditableText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RichText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>

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

--- frameworks/projects/spark/src/spark/components/TextArea.as
+++ frameworks/projects/spark/src/spark/components/TextArea.as
@@ -216,6 +216,12 @@
  *  unlimited undo/redo within one editing session.
  *  An editing session starts when the control gets keyboard focus
  *  and ends when the control loses focus.

+ *
+ *
To use this component in a list-based component, such as a List or DataGrid,
+ *  create an item renderer.
+ *  For information about creating an item renderer, see
+ *
+ *  Custom Spark item renderers.

  *
  *
The TextArea control has the following default characteristics:

  *


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

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

 package mx.controls
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 19680
Author:   rfrishbe@adobe.com
Date:     2011-01-10T22:59:13.303277Z

Log Message:
-----------
Fixing up textreflow in Mobile TextAreaSkin and IconItemRenderer after SVN 19635.

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

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/IconItemRenderer.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as
@@ -99,6 +99,9 @@
                 break;
             }
         }
+
+        // default the text display width to be layoutMeasuredWidth
+        oldUnscaledWidth = layoutMeasuredWidth;
     }

     //--------------------------------------------------------------------------
@@ -119,6 +122,24 @@
      *  @copy spark.skins.spark.ApplicationSkin#hostComponent
      */
     public var hostComponent:TextArea;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  The width of the component on the previous layout manager
+     *  pass.  This gets set in updateDisplayList() and used in measure() on
+     *  the next layout pass.  This is so our "guessed width" in measure()
+     *  will be as accurate as possible since textDisplay is multiline and
+     *  the textDisplay height is dependent on the width.
+     *
+     *  In the constructor this is actually set based on the DPI.
+     */
+    private var oldUnscaledWidth:Number;

     //--------------------------------------------------------------------------
     //
@@ -182,9 +203,11 @@

         var paddingTop:Number = getStyle("paddingTop");
         var paddingBottom:Number = getStyle("paddingBottom");
-
-        // TextDisplay always defaults to 440 pixels wide, and tall enough to
-        // show all text.
+        var paddingLeft:Number = getStyle("paddingLeft");
+        var paddingRight:Number = getStyle("paddingRight");
+
+        // TextDisplay always defaults to 440 pixels wide (the value is DPI dependent),
+        // and tall enough to show all text.
         //
         // You can set an explicit width and the height will adjust accordingly. The opposite
         // is not true: setting an explicit height will not adjust the width accordingly.
@@ -192,10 +215,23 @@
         measuredWidth = layoutMeasuredWidth;

         // now we need to measure textDisplay's height.  Unfortunately, this is tricky and
-        // is dependent on textDisplay's width
-
-
-        measuredHeight = Math.max(layoutMeasuredHeight, textDisplay.measuredTextSize.y + paddingTop + paddingBottom);
+        // is dependent on textDisplay's width.  Let's use the heuristic that our width
+        // is the same as our last width.
+        // We don't use layoutMeasuredWidth, because that value is just a constant and doesn't
+        // take into account the fact that the TextArea could have an explicitWidth or could
+        // be constrained by some value.  However, we still default oldTextDisplayWidth to
+        // be layoutMeasuredWidth the first time through.
+        var textDisplayEstimatedWidth:Number = oldUnscaledWidth - paddingLeft - paddingRight;
+
+        // now we need to measure textDisplay's height.  Unfortunately, this is tricky and
+        // is dependent on textDisplay's width.
+        // Use the old textDisplay width as an estimte for the new one.
+        // If we are wrong, we'll find out in updateDisplayList()
+        setElementSize(textDisplay, textDisplayEstimatedWidth, NaN);
+
+        var textDisplayHeight:Number = getElementPreferredHeight(textDisplay);
+
+        measuredHeight = Math.max(layoutMeasuredHeight, textDisplayHeight + paddingTop + paddingBottom);
     }

     /**
@@ -226,21 +262,38 @@
         textDisplayGroup.paddingTop = paddingTop;
         textDisplayGroup.paddingBottom = paddingBottom;

+        // because the text is multi-line, measuring and layout
+        // can be somewhat tricky
         var unscaledTextWidth:Number = unscaledWidth - paddingLeft - paddingRight;
-
-        // set width first to measure height correctly
-        textDisplay.width = unscaledTextWidth;
-
         var unscaledTextHeight:Number = unscaledHeight - paddingTop - paddingBottom;
         var textHeight:Number = unscaledTextHeight;

-        // TextField height should match it's content or the TextArea bounds
+        // TextField height should match its content or the TextArea bounds
         // iOS special case to prevent Flex Scroller scrolling
         if (!_isIOS || !textDisplay.editable)
             textHeight = Math.max(textDisplay.measuredTextSize.y, textHeight);

+        // grab old measured textDisplay height before resizing it
+        var oldPreferredTextHeight:Number = getElementPreferredHeight(textDisplay);
+
+        // keep track of oldUnscaledWidth so we have a good guess as to the width
+        // of the textDisplay on the next measure() pass
+        oldUnscaledWidth = unscaledWidth;
+
+        // set the width of textDisplay to textWidth.
+        // set the height to oldTextHeight.  If the height's actually wrong,
+        // we'll invalidateSize() and go through this layout pass again anyways
         setElementSize(textDisplay, unscaledTextWidth, textHeight);

+        // grab new measured textDisplay height after the textDisplay has taken its final width
+        var newPreferredTextHeight:Number = getElementPreferredHeight(textDisplay);
+
+        // if the resize caused the textDisplay's height to change (because of
+        // text reflow), then we need to remeasure ourselves with our new width
+        if (oldPreferredTextHeight != newPreferredTextHeight)
+            invalidateSize();
+
+        // Now that we're done with laying out the textDisplay,
         // size the Group to the StyleableTextField plus padding
         setElementSize(textDisplayGroup, unscaledWidth, paddingTop + textHeight + paddingBottom);


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

--- frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as
+++ frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as
@@ -12,16 +12,19 @@
 {
 import flash.display.Bitmap;
 import flash.display.BitmapData;
+import flash.display.DisplayObject;
 import flash.display.IBitmapDrawable;
 import flash.display.Shader;
 import flash.display.ShaderData;
 import flash.display.ShaderInput;
 import flash.display.Sprite;
 import flash.geom.Matrix;
+import flash.geom.Point;
 import flash.geom.Rectangle;
 import flash.utils.ByteArray;

 import mx.effects.effectClasses.FxAnimateShaderTransitionInstance;
+import mx.graphics.graphicsClasses.GraphicElement;
 import mx.utils.ObjectUtil;

 /**
@@ -40,6 +43,14 @@
  * goes away or comes into existence during that state change,
  * then a fully-transparent bitmap will be used to represent
  * that object when it does not exist.

+ *
+ *
This effect can only be run on targets that are either
+ * DisplayObjects or GraphicElements, since capturing the bitmap
+ * of the object requires information about the object that only
+ * exists in these classes.

+ *
+ * @see mx.graphics.GraphicElement
+ * @see flash.display.DisplayObject
  */
 public class FxAnimateShaderTransition extends FxAnimate
 {
@@ -154,10 +165,30 @@
         if (!target.visible || !target.parent)
             return null;

-        var bounds:Rectangle = target.getBounds(target);
-        var bmData:BitmapData = new BitmapData(bounds.width, bounds.height, true, 0);
-        var m:Matrix = new Matrix();
-        m.translate(-bounds.x, -bounds.y);
+        return getSnapshot(target);
+    }
+
+    public static function getSnapshot(target:Object):BitmapData
+    {
+        if (target is GraphicElement)
+            return GraphicElement(target).getBitmapData(true, 0);
+        else if (!(target is DisplayObject))
+            throw new Error("FxAnimateShaderTransition can only operate on" +
+                    " DisplayObject and GraphicElement instances");
+        // TODO (chaase): Simplify logic here - do we really need both local and
+        // global bounds?
+        // TODO (chaase): Does this utility function belong in a more central
+        // location, like UIComponent, or as part of ImageSnapshot?
+        var targetBounds:Rectangle = target.getBounds(target);
+        var boundsOffset:Point = new Point(targetBounds.x, targetBounds.y);
+        var pixelBounds:Rectangle = target.transform.pixelBounds;
+        var m:Matrix = target.transform.concatenatedMatrix;
+        m.tx = 0;
+        m.ty = 0;
+        boundsOffset = m.transformPoint(boundsOffset);
+        m.translate(-boundsOffset.x, -boundsOffset.y);
+        var bmData:BitmapData = new BitmapData(pixelBounds.width,
+            pixelBounds.height, true, 0);
         bmData.draw(IBitmapDrawable(target), m);

         return bmData;


Transferred from the Adobe Open Source Subversion Repository

Revision: 13693
Author:   hmuller@adobe.com
Date:     2010-01-21T20:25:54.403160Z

Log Message:
-----------
Initial version of the mirroring layout code.  Only Spark is supported.  API revisions for this feature are very likely to follow.

QE notes:
Doc notes:
Bugs:
Reviewer: Evtim
Tests run: All Mustella tests pass
Is noteworthy for integration: yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/MatrixUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/core/SpriteVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/TextBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutDirection.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Label.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/PanelSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/utils/BitmapUtil.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/AdvancedLayoutFeatures.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as
+++ frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as
@@ -155,7 +155,7 @@
     public function DefaultItemRenderer()
     {
         super();
-
+        layoutDirection = "ltr";
         addHandlers();
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 14095
Author:   cframpto@adobe.com
Date:     2010-02-10T17:33:30.511669Z

Log Message:
-----------
Merge 14076 from 4.x branch to trunk.

Revision: 14076
Author:   cframpto@adobe.com
Date:     2010-02-09 15:23:15 -0800 (Tue, 09 Feb 2010)
Log Message:
***********
Add UIComponent.mapKeycodeForLayoutDirection().  This should be called by any keyDownHandlers() which handles Keyboard.LEFT and Keyboard.RIGHT, and optionally for Keyboard.UP and Keyboard.DOWN, if they behave like Keyboard.LEFT and Keyboard.RIGHT.  If the layoutDirection="rtl", it maps LEFT to RIGHT, RIGHT to LEFT, UP to RIGHT and DOWN to LEFT.  This allows the keyDownHandler() to perform the correct action without adding lots of special case code to the key handling code.

QE notes: For layoutDirection="rtl" need to test LEFT, RIGHT, UP and DOWN keys.
Doc notes: None
Bugs: SDK-25330
Reviewed By: Hans
Tests run: checkintests
Is noteworthy for integration: No

Ticket Links:
***********
    http://bugs.adobe.com/jira/browse/SDK-25330

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="dir" action="M">/flex/sdk/trunk/frameworks</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/RadioButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Tree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/colorPickerClasses/SwatchPanel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/CalendarLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/Container.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/TileBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/SliderThumb.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -40,6 +40,7 @@
 import flash.system.Capabilities;
 import flash.text.TextFormatAlign;
 import flash.text.TextLineMetrics;
+import flash.ui.Keyboard;
 import flash.utils.getQualifiedClassName;

 import mx.automation.IAutomationObject;
@@ -9763,7 +9764,63 @@
     mx_internal function childXYChanged():void
     {
     }
-
+
+    /**
+     *  @private
+     *  Typically, Keyboard.LEFT means go left, regardless of the
+     *  layoutDirection, and similiarly for Keyboard.RIGHT.  When
+     *  layoutDirection="rtl", rather than duplicating lots of code in the
+     *  switch statement of the keyDownHandler, map Keyboard.LEFT to
+     *  Keyboard.RIGHT, and similiarly for Keyboard.RIGHT.
+     *
+     *  Optionally, Keyboard.UP and can tied with Keyboard.LEFT and
+     *  Keyboard.DOWN can be tied with Keyboard.RIGHT since some components
+     *  do this.
+     *
+     *  @return keyCode to use for the layoutDirection if always using ltr
+     *  actions
+     */
+    mx_internal function mapKeycodeForLayoutDirection(
+        event:KeyboardEvent,
+        mapUpDown:Boolean=false):int
+    {
+        var keyCode:int = event.keyCode;
+
+        // If rtl layout, left still means left and right still means right so
+        // swap the keys to get the correct action.
+        switch (keyCode)
+        {
+            case Keyboard.DOWN:
+            {
+                // typically, if ltr, the same as RIGHT
+                if (mapUpDown && layoutDirection == "rtl")
+                    keyCode = Keyboard.LEFT;
+                break;
+            }
+            case Keyboard.RIGHT:
+            {
+                if (layoutDirection == "rtl")
+                    keyCode = Keyboard.LEFT;
+                break;
+            }
+            case Keyboard.UP:
+            {
+                // typically, if ltr, the same as LEFT
+                if (mapUpDown && layoutDirection == "rtl")
+                    keyCode = Keyboard.RIGHT;
+                break;
+            }
+            case Keyboard.LEFT:
+            {
+                if (layoutDirection == "rtl")
+                    keyCode = Keyboard.RIGHT;
+                break;
+            }
+        }
+
+        return keyCode;
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Methods: States


Transferred from the Adobe Open Source Subversion Repository

Revision: 4806
Author:   pfarland@adobe.com
Date:     2009-02-03T05:01:18.665465Z

Log Message:
-----------
Fixes for Advanced CSS applying to inner components. The changes involved three areas:

1. mx.styles.StyleProxy needed updating to support IAdvancedStyleClient

2. mx.styles.StyleProtoChain required refactoring so that advanced selector matching functionality could be shared outside of this class (see next). The main change is in StyleProtoChain.addProperties() which is recursively called to handle the case when styleName is set to another IStyleClient (instead of a String). The change concerns the order of building the proto chain for this special case. Before advanced CSS, it seems we recursively did the following in the addProperties() subroutine:
  - Find type selectors, add to proto chain
  - Examine styleName:
    - if a CSSStyleDeclaration, add it to the proto chain next
    - if a IStyleClient, recurse again by calling addProperties to this IStyleClient
    - if a String, apply class selectors to proto chain
  - Finally, add inline style declarations to proto chain

Advanced CSS might involve other universal selectors that aren't necessarily class selectors (such as id selectors), or we could have type selectors that are more specific that class selectors. So the new logic for Advanced CSS is:
  - Examine styleName:
    - if a CSSStyleDeclaration, add it to the list of selectors
  - Get all matching selectors, sort by specificity, and add to the proto chain.
  - Then, if styleName was an IStyleClient, recurse again by calling addProperties to this IStyleClient
  - Finally, add inline styleDeclarations to proto chain

A styleName pointing to an IStyleClient means that it has a very high specificity and will override any other selector. The only thing that continues to always win are inline style declarations which are added last to the proto chain.

3. mx.core.UIComponent.initThemeColor() needed updating to support advanced CSS selectors. This required the use of a new utility method in StyleProtoChain to find matching selectors.

QA: Yes, please watch styles test results closely. Take a look at descendant/id/class selectors on more advanced components like DataGrid.
Doc: No
Checkintests: Pass
Reviewer: Glenn
Bugs:
SDK-17358 - [Advanced CSS] When using an id selector without a Type selector, styles are not passed onto sub components (e.g. the drop down of a ComboBox)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProxy.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>

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

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -8363,6 +8363,7 @@
         var tc:Object;  // Can be number or string
         var rc:Number;
         var sc:Number;
+        var i:int;

         // First look for locally-declared styles
         if (_styleDeclaration)
@@ -8372,41 +8373,66 @@
             sc = _styleDeclaration.getStyle("selectionColor");
         }

-        // Next look for class selectors
-        if ((tc === null || !StyleManager.isValidStyleValue(tc)) &&
-            (styleName && !(styleName is ISimpleStyleClient)))
-        {
-            var classSelector:Object =
-                styleName is String ?
-                StyleManager.getStyleDeclaration("." + styleName) :
-                styleName;
-
-            if (classSelector)
+        if (StyleManager.hasAdvancedSelectors())
+        {
+            // Next look for matching selectors (working backwards, starting
+            // with the most specific selector)
+            if (tc === null || !StyleManager.isValidStyleValue(tc))
             {
-                tc = classSelector.getStyle("themeColor");
-                rc = classSelector.getStyle("rollOverColor");
-                sc = classSelector.getStyle("selectionColor");
+                var styleDeclarations:Array = StyleProtoChain.getMatchingStyleDeclarations(this);
+                for (i = styleDeclarations.length - 1; i >= 0; i--)
+                {
+                    var decl:CSSStyleDeclaration = styleDeclarations[i];
+                    if (decl)
+                    {
+                        tc = decl.getStyle("themeColor");
+                        rc = decl.getStyle("rollOverColor");
+                        sc = decl.getStyle("selectionColor");
+                    }
+
+                    if (tc !== null && StyleManager.isValidStyleValue(tc))
+                        break;
+                }
             }
         }
-
-        // Finally look for type selectors
-        if (tc === null || !StyleManager.isValidStyleValue(tc))
-        {
-            var typeSelectors:Array = getClassStyleDeclarations();
-
-            for (var i:int = 0; i < typeSelectors.length; i++)
+        else
+        {
+            // Next look for class selectors
+            if ((tc === null || !StyleManager.isValidStyleValue(tc)) &&
+                (styleName && !(styleName is ISimpleStyleClient)))
             {
-                var typeSelector:CSSStyleDeclaration = typeSelectors[i];
-
-                if (typeSelector)
+                var classSelector:Object =
+                    styleName is String ?
+                    StyleManager.getStyleDeclaration("." + styleName) :
+                    styleName;
+
+                if (classSelector)
                 {
-                    tc = typeSelector.getStyle("themeColor");
-                    rc = typeSelector.getStyle("rollOverColor");
-                    sc = typeSelector.getStyle("selectionColor");
+                    tc = classSelector.getStyle("themeColor");
+                    rc = classSelector.getStyle("rollOverColor");
+                    sc = classSelector.getStyle("selectionColor");
                 }
-
-                if (tc !== null && StyleManager.isValidStyleValue(tc))
-                    break;
+            }
+
+            // Finally look for type selectors
+            if (tc === null || !StyleManager.isValidStyleValue(tc))
+            {
+                var typeSelectors:Array = getClassStyleDeclarations();
+
+                for (i = 0; i < typeSelectors.length; i++)
+                {
+                    var typeSelector:CSSStyleDeclaration = typeSelectors[i];
+
+                    if (typeSelector)
+                    {
+                        tc = typeSelector.getStyle("themeColor");
+                        rc = typeSelector.getStyle("rollOverColor");
+                        sc = typeSelector.getStyle("selectionColor");
+                    }
+
+                    if (tc !== null && StyleManager.isValidStyleValue(tc))
+                        break;
+                }
             }
         }


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

--- frameworks/projects/framework/src/mx/events/FlexEvent.as
+++ frameworks/projects/framework/src/mx/events/FlexEvent.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


fix as docs issue with mismatched tags

fix as docs issue with mismatched tags

--- frameworks/projects/framework/src/mx/utils/ObjectUtil.as
+++ frameworks/projects/framework/src/mx/utils/ObjectUtil.as
@@ -1228,7 +1228,7 @@
     /**
      *  Verifies if the first object is dynamic and is a subset of the second object.
      *
-     *  @param values The values which need to be shared by object</object>
+     *  @param values The values which need to be shared by object
      *  @param object The object to verify against.
      *
      *  @return true if and only if the objects are the same, or if values


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

--- frameworks/projects/mx/src/mx/controls/CalendarLayout.as
+++ frameworks/projects/mx/src/mx/controls/CalendarLayout.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2003-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: 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@1269570 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/events/ColorPickerEvent.as
+++ frameworks/projects/mx/src/mx/events/ColorPickerEvent.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.events
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 20149
Author:   klin@adobe.com
Date:     2011-02-04T21:39:31.000080Z

Log Message:
-----------
Add and update [Inspectable] metadata across spark components.

QE notes: No
Doc notes: No
Bugs: SDK-28942
Reviewer: Carol
Tests run: cyclone server, checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/HGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/NumericStepper.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/SliderBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ScrollBarBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ComboBox.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/spark/src/spark/components/TileGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Button.as</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/DropDownListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/VGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Image.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/Grid.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBarBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/Range.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DropDownList.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/Panel.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/modules/ModuleLoader.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ButtonBar.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/ListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/mediaClasses/DynamicStreamingVideoItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ToggleButtonBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as</path>

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

--- frameworks/projects/spark/src/spark/components/HGroup.as
+++ frameworks/projects/spark/src/spark/components/HGroup.as
@@ -101,7 +101,7 @@
     //  gap
     //----------------------------------

-    [Inspectable(category="General")]
+    [Inspectable(category="General", defaultValue="6")]

     /**
      *  @copy spark.layouts.HorizontalLayout#gap
@@ -152,7 +152,7 @@
     //  paddingLeft
     //----------------------------------

-    [Inspectable(category="General")]
+    [Inspectable(category="General", defaultValue="0.0")]

     /**
      *  @copy spark.layouts.HorizontalLayout#paddingLeft
@@ -181,7 +181,7 @@
     //  paddingRight
     //----------------------------------

-    [Inspectable(category="General")]
+    [Inspectable(category="General", defaultValue="0.0")]

     /**
      *  @copy spark.layouts.HorizontalLayout#paddingRight
@@ -210,7 +210,7 @@
     //  paddingTop
     //----------------------------------

-    [Inspectable(category="General")]
+    [Inspectable(category="General", defaultValue="0.0")]

     /**
      *  @copy spark.layouts.HorizontalLayout#paddingTop
@@ -239,7 +239,7 @@
     //  paddingBottom
     //----------------------------------

-    [Inspectable(category="General")]
+    [Inspectable(category="General", defaultValue="0.0")]

     /**
      *  @copy spark.layouts.HorizontalLayout#paddingBottom
@@ -383,7 +383,7 @@
     //  variablecolumnHeight
     //----------------------------------

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

     /**
      * @copy spark.layouts.HorizontalLayout#variableColumnWidth


Transferred from the Adobe Open Source Subversion Repository

Revision: 3237
Author:   hmuller@adobe.com
Date:     2008-09-16T22:57:19.486417Z

Log Message:
-----------
- Added HGroup and VGroup wrappers for Group+Horizontal,VerticalLayout.

- Removed the provisional support for specifying layout with a
classname string.  The type of the layout property in Group
and in ItemsComponent is now ILayout.

More about the rationale for this change here:
https://zerowing.corp.adobe.com/display/flex/Shorthand+MXML+syntax+for+object+values

Now, one must either use HGroup,VGroup or an explicit layout tag.
This change will affect most MXML files.  Upgrading is pretty easy.
For example, change

  <Group layout="flex.layout.VerticalLayout"/>

to this:

  <Group>
      <layout> <VerticalLayout/> </layout>
  </Group>

or this:

  <VGroup/>

The Panel and Application classes, whose default layout is BasicLayout,
have to be upgraded with an additional layout element, as in the
first example.

Substantially revised ScrollerSkin's measure and updateDisplayList
methods. The latter now calls invalidateSize (on itself!) if the
visibility of either scrollbar changes.  This causes the measure
method to compute new values for measuredWidth,Height based on the new
visibility state for the scrollbars.  When the scroll policy is "auto"
the Scroller's measured size includes space for the visible
scrollbars.

Note also: the logic for calling updateDisplayList and then restarting
the process if the component has become invalid is in
mx.managers.LayoutManager::validateDisplayList.

- Removed the protected Group invalidateSizeAndLayout() method.
It wasn't being used.

QE: This change will break many existing tests
Doc: No
Checkintests: Pass
Reviewer: Evtim
Bugs:
  SDK-16782 -  ScrollBars overlap content in Scroller

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/states/statefulNodes.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/AddItemsTest.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/PanelSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/layout/layout.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/RemoveItemsTest.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="A">/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/component/ItemsComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/ItemsComponentSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/DefaultItemRenderer.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/states/statefulAttributes.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/ListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/flex4/flex4test.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/ToggleButtonSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/SelectorSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="A">/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/component/Scroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/ScrollerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/flex4test.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/HGroup.as
+++ frameworks/projects/spark/src/spark/components/HGroup.as
@@ -0,0 +1,151 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flex.component
+{
+import flex.core.Group;
+import flex.intf.ILayout;
+import flex.layout.HorizontalLayout;
+
+/**
+ * A Group with a HorizontalLayout.
+ *
+ * All of the HorizontalLayout properties exposed by this class are simply
+ * delegated to the layout property.
+ *
+ * The layout property should not be set or configured directly.
+ *
+ * @see flex.layout.HorizontalLayout
+ */
+public class HGroup extends Group
+{
+
+    /**
+     *  Initializes the layout property to an instance of HorizontalLayout.
+     *
+     *  @see flex.layout.HorizontalLayout
+     */
+    public function HGroup():void
+    {
+        super();
+        super.layout = new HorizontalLayout();
+    }
+
+    private function get horizontalLayout():HorizontalLayout
+    {
+        return HorizontalLayout(layout);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  gap
+    //----------------------------------
+
+    /**
+     * @copy flex.layout.HorizontalLayout#gap
+     */
+    public function get gap():int
+    {
+        return horizontalLayout.gap;
+    }
+
+    /**
+     *  @private
+     */
+    public function set gap(value:int):void
+    {
+        horizontalLayout.gap = value;
+    }
+
+    //----------------------------------
+    //  columnCount
+    //----------------------------------
+
+    /**
+     * @copy flex.layout.HorizontalLayout#columnCount
+     */
+    public function get columnCount():int
+    {
+        return horizontalLayout.columnCount;
+    }
+
+    //----------------------------------
+    //  requestedColumnCount
+    //----------------------------------
+
+    /**
+     * @copy flex.layout.HorizontalLayout#requestedColumnCount
+     */
+    public function get requestedColumnCount():int
+    {
+        return horizontalLayout.requestedColumnCount;
+    }
+
+    /**
+     *  @private
+     */
+    public function set requestedColumnCount(value:int):void
+    {
+        horizontalLayout.requestedColumnCount = value;
+    }
+
+    //----------------------------------
+    //  columnHeight
+    //----------------------------------
+
+    [Inspectable(category="General")]
+
+    /**
+     * @copy flex.layout.HorizontalLayout#columnWidth
+     */
+    public function get columnWidth():Number
+    {
+        return horizontalLayout.columnWidth;
+    }
+
+    /**
+     *  @private
+     */
+    public function set columnWidth(value:Number):void
+    {
+        horizontalLayout.columnWidth = value;
+    }
+
+    //----------------------------------
+    //  variablecolumnHeight
+    //----------------------------------
+
+    [Inspectable(category="General")]
+
+    /**
+     * @copy flex.layout.HorizontalLayout#variableColumnWidth
+     */
+    public function get variableColumnWidth():Boolean
+    {
+        return horizontalLayout.variableColumnWidth;
+    }
+
+    /**
+     *  @private
+     */
+    public function set variableColumnWidth(value:Boolean):void
+    {
+        horizontalLayout.variableColumnWidth = value;
+    }
+
+}
+
+}


:memo:

:memo:

--- index.as
+++ index.as
@@ -1,7 +1,4 @@
 // [ ] Pass: Declare
-// [.] Unary Operators
-// [ ] Binary Operators: Relational
-// [x] Binary Operators: Bitwise
 // [ ] Select (if)
 // [ ] Loop (while)
 // [ ] Main!