Transferred from the Adobe Open Source Subversion Repository

Revision: 2462
Author:   jimurphy@adobe.com
Date:     2008-07-14T19:13:06.620116Z

Log Message:
-----------
gumbo push to trunk

Modified Paths:
--------------
214 paths were modified

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

--- frameworks/projects/rpc/src/mx/rpc/xml/Schema.as
+++ frameworks/projects/rpc/src/mx/rpc/xml/Schema.as
@@ -189,9 +189,9 @@
         xml.appendChild(fragment);
     }

-    public function getNamedDefinition(name:QName, ...componentTypes:Array):Object
-    {
-        var uri:String = name.uri;
+    public function getNamedDefinition(definitionName:QName, ...componentTypes:Array):Object
+    {
+        var uri:String = definitionName.uri;
         var schemas:Array = [this]

         // Also consider any imports at this level for the given URI
@@ -242,15 +242,15 @@
                 // namespace (it can't be unqualified).
                 if (componentType != schemaConstants.elementTypeQName
                     && componentType != schemaConstants.attributeQName
-                    && currentTargetNamespace.uri != name.uri)
+                    && currentTargetNamespace.uri != definitionName.uri)
                     continue;

                 // ...and ensure we have the qualified name of the schema component
                 // as defined in a particular schema...
                 var localComponentType:QName = new QName(constants.xsdURI, componentType.localName);

-                // ...then look for <[localComponentType] name="[name.localName]">
-                var definition:XML = schemaXML[localComponentType].(@name == name.localName)[0];
+                // ...then look for <[localComponentType] name="[definitionName.localName]">
+                var definition:XML = schemaXML[localComponentType].(@name == definitionName.localName)[0];
                 if (definition != null)
                 {
                     return {definition:definition, schema:schema};


This is kinda a magical number anyway but it appears I need a little more buffer for some of the taller sprites in question.

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

--- src/as/com/threerings/miso/client/MisoScenePanel.as
+++ src/as/com/threerings/miso/client/MisoScenePanel.as
@@ -333,7 +333,7 @@
     protected const DEF_WIDTH :int = 985;
     protected const DEF_HEIGHT :int = 560;

-    protected const BOTTOM_BUFFER :int = 250;
+    protected const BOTTOM_BUFFER :int = 300;
 }
 }


removed bitmap screenshot from demo

removed bitmap screenshot from demo

--- ApplicationDemo/src/main/flex/sk/yoz/ycanvas/demo/simple/ApplicationDemo.as
+++ ApplicationDemo/src/main/flex/sk/yoz/ycanvas/demo/simple/ApplicationDemo.as
@@ -1,6 +1,5 @@
 package sk.yoz.ycanvas.demo.simple
 {
-    import flash.display.Bitmap;
     import flash.display.Sprite;
     import flash.display.StageAlign;
     import flash.display.StageScaleMode;
@@ -15,7 +14,7 @@
     import sk.yoz.ycanvas.utils.IPartitionUtils;
     import sk.yoz.ycanvas.utils.TransformationUtils;

-    [SWF(frameRate="60", backgroundColor="#ffff00")]
+    [SWF(frameRate="60", backgroundColor="#ffffff")]
     public class ApplicationDemo extends Sprite
     {
         private var canvas:YCanvasStage3D;
@@ -29,14 +28,6 @@
             canvas = new YCanvasStage3D(stage, stage.stage3Ds[0], viewPort, canvasInit);
             canvas.partitionFactory = new PartitionFactory;
             canvas.layerFactory = new LayerFactory(canvas.partitionFactory);
-
-            stage.addEventListener(MouseEvent.CLICK, function(event:Event):void
-            {
-                var bitmap:Bitmap = new Bitmap(canvas.bitmapData);
-                bitmap.width = 300;
-                bitmap.height = 300;
-                stage.addChild(bitmap);
-            });
         }

         private function get viewPort():Rectangle


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

--- frameworks/projects/charts/src/mx/charts/series/items/AreaSeriesItem.as
+++ frameworks/projects/charts/src/mx/charts/series/items/AreaSeriesItem.as
@@ -0,0 +1,292 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.charts.series.items
+{
+
+import mx.charts.ChartItem;
+import mx.charts.series.AreaSeries;
+import mx.graphics.IFill;
+
+/**
+ *  Represents the information required to render an item
+ *  as part of an AreaSeries.
+ *  The AreaSeries class passes these items to its itemRenderer when rendering.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class AreaSeriesItem extends ChartItem
+{
+    include "../../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @param  element The owning series.
+     *  @param  data    The item from the dataProvider this ChartItem represents.
+     *  @param  index   The index of the item from the series's dataProvider.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function AreaSeriesItem(element:AreaSeries = null,
+                                   item:Object = null, index:uint = 0)
+    {
+        super(element, item, index);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    // fill
+    //----------------------------------
+    [Inspectable(environment="none")]
+
+    /**
+     *  Holds the fill color of the item.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+     public var fill:IFill;
+
+    //----------------------------------
+    //  min
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The minimum value of this item converted into screen coordinates. The value of this field is undefined if the AreaSeries is not stacked and its minField property is not set.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var min:Number;
+
+    //----------------------------------
+    //  minFilter
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The minimum value of this item, filtered against the vertical axis of the containing chart. This value is set to NaN if the value lies outside the axis's range.
+     *  The value of this field is undefined if the AreaSeries is not stacked and its minField property is not set.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var minFilter:Number;
+
+    //----------------------------------
+    //  minNumber
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The minimum value of this item, converted to a number by the vertical axis of the containing chart.
+     *  The value of this field is undefined if the AreaSeries is not stacked and its minField property is not set.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var minNumber:Number;
+
+    //----------------------------------
+    //  minValue
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The minimum value of this item.
+     *  The value of this field is undefined if the AreaSeries is not stacked and its minField property is not set.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var minValue:Object;
+
+    //----------------------------------
+    //  x
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The x value of this item converted into screen coordinates.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var x:Number;
+
+    //----------------------------------
+    //  xFilter
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The x value of this item, filtered against the horizontal axis of the containing chart. This value is set to NaN if the value lies outside the axis's range.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var xFilter:Number;
+
+    //----------------------------------
+    //  xNumber
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The x value of this item, converted to a numeric representation by the horizontal axis of the containing chart.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var xNumber:Number;
+
+    //----------------------------------
+    //  xValue
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The x value of this item.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var xValue:Object;
+
+    //----------------------------------
+    //  y
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The y value of this item converted into screen coordinates.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var y:Number;
+
+    //----------------------------------
+    //  yFilter
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The y value of this item, filtered against the vertical axis of the containing chart. This value is set to NaN if the value lies outside the axis's range.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var yFilter:Number;
+
+    //----------------------------------
+    //  yNumber
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The y value of this item, converted to a numeric representation by the vertical axis of the containing chart.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var yNumber:Number;
+
+    //----------------------------------
+    //  yValue
+    //----------------------------------
+
+    [Inspectable(environment="none")]
+
+    /**
+     *  The y value of this item.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public var yValue:Object;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Returns a copy of the ChartItem.
+     */
+    override public function clone():ChartItem
+    {
+        var result:AreaSeriesItem = new AreaSeriesItem(AreaSeries(element),item,index);
+        result.itemRenderer = itemRenderer;
+        return result;
+    }
+
+}
+
+}


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

--- frameworks/projects/spark/src/spark/collections/OnDemandDataProvider.as
+++ frameworks/projects/spark/src/spark/collections/OnDemandDataProvider.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2011 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.collections
 {
 import mx.collections.IList;


Clamping the scale9 rectangle

Clamping the scale9 rectangle

--- raw/src/org/yellcorp/lib/bitmap/Scale9BitmapMesh.as
+++ raw/src/org/yellcorp/lib/bitmap/Scale9BitmapMesh.as
@@ -108,8 +108,8 @@

     public function set bitmapData(new_bitmapData:BitmapData):void
     {
-        uvsNeedRecalc = vertsNeedRecalc = !bitmapsSameSize(_bitmapData, new_bitmapData);
         _bitmapData = new_bitmapData;
+        scale9Grid = _scale9Grid;
         invalidate();
     }

@@ -120,7 +120,9 @@

     public override function set scale9Grid(innerRectangle:Rectangle):void
     {
-        _scale9Grid = innerRectangle;
+        _scale9Grid = innerRectangle && _bitmapData ?
+              clampRect(innerRectangle, _bitmapData.rect)
+            : innerRectangle;
         uvsNeedRecalc = vertsNeedRecalc = true;
         invalidate();
     }
@@ -385,9 +387,21 @@
         return _indicesCorners;
     }

-    private static function bitmapsSameSize(a:BitmapData, b:BitmapData):Boolean
-    {
-        return a && b && a.width == b.width && a.height == b.height;
+    private static function clampRect(rect:Rectangle, outer:Rectangle):Rectangle
+    {
+        var newLeft:Number = clamp(rect.left, outer.left, outer.right);
+        var newRight:Number = clamp(rect.right, outer.left, outer.right);
+        var newTop:Number = clamp(rect.top, outer.top, outer.bottom);
+        var newBottom:Number = clamp(rect.bottom, outer.top, outer.bottom);
+
+        return new Rectangle(newLeft, newTop, newRight - newLeft, newBottom - newTop);
+    }
+
+    private static function clamp(v:Number, min:Number, max:Number):Number
+    {
+        return v < min ? min :
+               v > max ? max :
+                         v;
     }
 }
 }


Fixed bug with using the new asSingleton shortcut in the fluent registration

--- src/asfac/src/com/thedevstop/asfac/FluentRegistrar.as
+++ src/asfac/src/com/thedevstop/asfac/FluentRegistrar.as
@@ -25,6 +25,8 @@
 		public function register(instance:*):IRegisterAsType
 		{
 			_instance = instance;
+			_type = null;
+			_asSingleton = false;

 			return this;
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 17043
Author:   cframpto@adobe.com
Date:     2010-07-23T16:39:35.099323Z

Log Message:
-----------
Revert one line of last submit which accessed grid before checking if it was non-null.  If requireSelection is set to true, there is an RTE on startup.

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

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

--- frameworks/projects/spark/src/spark/components/gridClasses/GridSelection.as
+++ frameworks/projects/spark/src/spark/components/gridClasses/GridSelection.as
@@ -1031,10 +1031,7 @@
             return false;

         if (getGridDataProviderLength() == 0 || getGridColumnsLength() == 0)
-        {
-            grid.caretRowIndex = grid.caretColumnIndex = -1;
-            return false;
-        }
+             return false;

         // If there isn't a selection, set one, using the grid method rather
         // than the internal one, so that the caretPosition will be updated too.


Transferred from the Adobe Open Source Subversion Repository

Revision: 18503
Author:   jszeto@adobe.com
Date:     2010-11-09T18:36:40.819408Z

Log Message:
-----------
ViewMenu Bug Fixes

http://bugs.adobe.com/jira/browse/SDK-28425 - ViewMenu memory is not freed when the ViewMenu is closed

Added logic to SkinnableComponent to detachSkin when removed from the Stage

http://bugs.adobe.com/jira/browse/SDK-28412 - ViewMenu 5-way press interaction is incorrect

Let ViewMenuItem handle the SPACE and ENTER keys.

QE notes: None
Doc notes: none
Bugs: SDK-28425, SDK-28412
Reviewer: Glenn
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewMenuItem.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewMenu.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/SkinnableComponent.as</path>

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

--- frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
+++ frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as
@@ -1168,8 +1168,10 @@
      */
     override protected function keyDownHandler(event:KeyboardEvent):void
     {
-        if (event.keyCode != Keyboard.SPACE)
+        if (event.keyCode != Keyboard.SPACE &&
+            !(getStyle("interactionMode") == InteractionMode.TOUCH && event.keyCode == Keyboard.ENTER))
             return;
+
         keyboardPressed = true;
         event.updateAfterEvent();
     }
@@ -1179,7 +1181,8 @@
      */
     override protected function keyUpHandler(event:KeyboardEvent):void
     {
-        if (event.keyCode != Keyboard.SPACE)
+        if (event.keyCode != Keyboard.SPACE &&
+            !(getStyle("interactionMode") == InteractionMode.TOUCH && event.keyCode == Keyboard.ENTER))
             return;

         if (enabled && keyboardPressed)


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

--- frameworks/projects/advancedgrids/src/mx/collections/LeafNodeCursor.as
+++ frameworks/projects/advancedgrids/src/mx/collections/LeafNodeCursor.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: 18223
Author:   jasonsj@adobe.com
Date:     2010-10-19T18:54:19.289491Z

Log Message:
-----------
Fix ActionBar style declarations. Organize imports.

QE notes: Fixes mobile mustella compile errors
Doc notes:
Bugs:
Reviewer: chiedozi
Tests run: checkintests
Is noteworthy for integration: no

Modified Paths:
--------------
<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/mobilecomponents/src/spark/components/ActionBar.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ButtonBase.as</path>

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

--- frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
+++ frameworks/projects/mobilecomponents/src/spark/components/ActionBar.as
@@ -37,7 +37,7 @@
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Style(name="titleAlign", type="String", enumeration="left,right,center", inherit="no")]
+[Style(name="titleAlign", type="String", enumeration="left,right,center", inherit="no", theme="mobile")]

 /**
  *  Color of text shadows.
@@ -73,7 +73,7 @@
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Style(name="accentColor", type="uint", format="Color", inherit="yes", theme="spark")]
+[Style(name="accentColor", type="uint", format="Color", inherit="yes", theme="mobile")]

 /**
  *  @copy spark.components.SkinnableContainer#style:backgroundAlpha
@@ -85,7 +85,7 @@
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Style(name="backgroundAlpha", type="Number", inherit="no", theme="spark", minValue="0.0", maxValue="1.0")]
+[Style(name="backgroundAlpha", type="Number", inherit="no", theme="mobile", minValue="0.0", maxValue="1.0")]

 /**
  *  @copy spark.components.SkinnableContainer#style:contentBackgroundAlpha
@@ -95,7 +95,7 @@
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Style(name="contentBackgroundAlpha", type="Number", inherit="yes", theme="spark")]
+[Style(name="contentBackgroundAlpha", type="Number", inherit="yes", theme="mobile")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#style:contentBackgroundColor
@@ -105,7 +105,7 @@
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes", theme="spark")]
+[Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes", theme="mobile")]

 /**
  *  @copy spark.components.supportClasses.GroupBase#style:focusColor
@@ -115,7 +115,7 @@
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-[Style(name="focusColor", type="uint", format="Color", inherit="yes", theme="spark")]
+[Style(name="focusColor", type="uint", format="Color", inherit="yes", theme="mobile")]

 //--------------------------------------
 //  Skin states


Fixed Image component's view so that it does not report a failed image load.

--- frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ImageView.as
+++ frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ImageView.as
@@ -90,7 +90,7 @@
 			_model = value.getBeadByType(IImageModel) as IImageModel;
 			_model.addEventListener("urlChanged",handleUrlChange);

-			handleUrlChange(null);
+//			handleUrlChange(null);
 		}

 		/**
@@ -112,12 +112,14 @@
             }
             COMPILE::JS
             {
-                var host:IUIBase = _strand as IUIBase;
-                host.element.addEventListener('load',
-                    goog.bind(loadHandler, this), false);
-                host.addEventListener('sizeChanged',
-                    goog.bind(sizeChangedHandler, this));
-                (host.element as HTMLImageElement).src = _model.source;
+				if (_model.source) {
+	                var host:IUIBase = _strand as IUIBase;
+	                host.element.addEventListener('load',
+	                    goog.bind(loadHandler, this), false);
+	                host.addEventListener('sizeChanged',
+	                    goog.bind(sizeChangedHandler, this));
+	                (host.element as HTMLImageElement).src = _model.source;
+				}
             }
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 19344
Author:   egeorgie@adobe.com
Date:     2010-12-14T00:38:13.222484Z

Log Message:
-----------
PARB changes for density scaling

- authorDensity -> applicationDPI, type changed to int
- DensityUtil not visible in the documentation anymore [ExcludeClass]
- DensityUtil. screenDPIToDeviceDensity() -> classifyDPI(), returns int now
- DensityUtil. getDensityScale() -> getDPIScale(), takes int now
- DeviceDensity enum -> DPIClassification enum
- ISystemManager.densityScale property has been removed.
- New property to Application -> runtimeDPI.

QE notes: can start writing automated tests now
Doc notes:
Bugs:
Reviewer: Alex, Glenn, Jason SJ,
Tests run: checkintest
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/airframework/src/mx/managers/WindowedSystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/SystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/MobileSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/utils/DensityUtil.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/DeviceDensity.as" copyfrom-rev="19256" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/DPIClassification.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationAngledButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/VScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/managers/ISystemManager.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ActionButtonSkin.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/core/DeviceDensity.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderDataTip.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/TextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderTrackSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/ActionBarButtonSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/CheckBoxSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HSliderThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreen.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/RadioButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarThumbSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/HScrollBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/NavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Application.as</path>

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

--- frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as
+++ frameworks/projects/mobiletheme/src/spark/skins/mobile/TextInputSkin.as
@@ -13,7 +13,7 @@
 {
 import flash.events.Event;

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

 import spark.components.TextInput;
@@ -57,9 +57,9 @@

         useChromeColor = false;

-        switch (authorDensity)
+        switch (applicationDPI)
         {
-            case DeviceDensity.PPI_320:
+            case DPIClassification.DPI_320:
             {
                 borderClass = spark.skins.mobile320.assets.TextInput_border;
                 layoutCornerEllipseSize = 24;
@@ -69,7 +69,7 @@

                 break;
             }
-            case DeviceDensity.PPI_240:
+            case DPIClassification.DPI_240:
             {
                 borderClass = spark.skins.mobile240.assets.TextInput_border;
                 layoutCornerEllipseSize = 12;


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

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


Transferred from the Adobe Open Source Subversion Repository

Revision: 17632
Author:   cframpto@adobe.com
Date:     2010-09-09T17:21:50.205953Z

Log Message:
-----------
CHB and DataGrid - remove unnecessay code

DataGroup - fix RTE in removeRendererAt which can happen if the renderer has already been recycled

Grid - fix interaction of generatedColumns with typicalItem and/or dataProvider changing, fix interaction of variableRowHeight and rowHeight, selection methods need to force validation before they can be done since pending dataProvider or column changes will reset the selection, update CHB when dp changes

GridDimension - add comment

QE notes:
Doc notes:
Bugs: sDK-27691, SDK-27393, SDK-27592, SDK-27590 SDK-27529
Reviewer:  Hans
Tests run: many many cyclones
Is noteworthy for integration:

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

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

--- frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -582,9 +582,7 @@
         //----------------------------------
         //  itemRenderer
         //----------------------------------
-
-        private var _itemRenderer:IFactory = null;
-
+
         [Bindable("itemRendererChanged")]

         /**
@@ -605,10 +603,10 @@
          */
         override public function get itemRenderer():IFactory
         {
-            if (!_itemRenderer)
-                _itemRenderer = new ClassFactory(DefaultColumnHeaderRenderer);
-
-            return _itemRenderer;
+            if (!super.itemRenderer)
+                itemRenderer = new ClassFactory(DefaultColumnHeaderRenderer);
+
+            return super.itemRenderer;
         }

         /**
@@ -616,10 +614,10 @@
          */
         override public function set itemRenderer(value:IFactory):void
         {
-            if (_itemRenderer == value)
+            if (super.itemRenderer == value)
                 return;

-            _itemRenderer = value;
+            super.itemRenderer = value;

             dispatchChangeEvent("itemRendererChanged");
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 17841
Author:   hmuller@adobe.com
Date:     2010-09-24T15:36:59.172298Z

Log Message:
-----------
The ColumnHeaderBar classes have been substantially revised simplified and some of the horizontal scrolling flashing has been eliminated.  I've temporarily removed the column header bar event handling code since we weren't using it.   It will be restored when the column resizing feature is added.

The new versions of ColumnHeaderBar and ColumnHeaderBarLayout only depend on Grid (not GridDimensions or GridLayout).

QE notes: Failing mustella tests (bitmap and geometry changes) have been excluded
Doc notes:
Bugs: SDK-27967
Reviewer: Kevin
Tests run: checkin, mustella cyclone
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/IGridItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/accessibility/DataGridAccImpl.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridHeaderRendererSkin.mxml</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultGridHeaderRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/spark-manifest.xml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridRowNode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.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/ColumnHeaderBarLayout.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/IGridRowBackground.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/ColumnHeaderBar.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/DefaultColumnHeaderRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DataGridSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridRowList.as</path>

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

--- frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
+++ frameworks/projects/spark/src/spark/components/GridColumnHeaderGroup.as
@@ -17,230 +17,91 @@
 import flash.geom.Point;
 import flash.geom.Rectangle;

-import mx.collections.IList;
-import mx.core.ClassFactory;
 import mx.core.IFactory;
-import mx.core.IInvalidating;
 import mx.core.IVisualElement;
-import mx.core.UIComponent;
 import mx.core.mx_internal;
 import mx.managers.CursorManager;
 import mx.managers.CursorManagerPriority;
 import mx.managers.IFocusManagerComponent;

 import spark.components.supportClasses.ColumnHeaderBarLayout;
-import spark.components.supportClasses.DefaultColumnHeaderRenderer;
 import spark.components.supportClasses.GridColumn;
-import spark.components.supportClasses.GridDimensions;
-import spark.components.supportClasses.GridLayer;
+import spark.components.supportClasses.GridLayer;
 import spark.events.GridEvent;
-import spark.events.RendererExistenceEvent;
-import spark.utils.LabelUtil;
+import spark.layouts.supportClasses.LayoutBase;
 import spark.utils.MouseEventUtil;

 use namespace mx_internal;
-//--------------------------------------
-//  Events
-//--------------------------------------
-
-/**
- *  Dispatched when the mouse button is pressed over a column header.
- *
- *  @eventType spark.events.GridEvent.GRID_MOUSE_DOWN
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+/**
+ *  Bottom inset, in pixels, for all header renderers.
+ *
+ *  @default 0
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="paddingBottom", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Left inset, in pixels, for the first header renderer.
+ *
+ *  @default 0
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="paddingLeft", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Right inset, in pixels, for the last header renderer.
+ *
+ *  @default 0
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="paddingRight", type="Number", format="Length", inherit="no")]
+
+/**
+ *  Top inset, in pixels, for all header renderers.
+ *
+ *  @default 0
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="paddingTop", type="Number", format="Length", inherit="no")]
+
+//--------------------------------------
+//  Other metadata
+//--------------------------------------
+
+[IconFile("ColumnHeaderBar.png")]
+
+/**
+ *  The ColumnHeaderBar control defines
  *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 2.0
  *  @productversion Flex 4.5
  */
-[Event(name="gridMouseDown", type="spark.events.GridEvent")]
-
-
-/**
- *  Dispatched after a GRID_MOUSE_DOWN event if the mouse moves before the button is released.
- *
- *  @eventType spark.events.GridEvent.GRID_MOUSE_DRAG
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="gridMouseDrag", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched after a GRID_MOUSE_DOWN event when the mouse button is released, even
- *  if the mouse is no longer within the ColumnHeaderBar.
- *
- *  @eventType spark.events.GridEvent.GRID_MOUSE_UP
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="gridMouseUp", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched when the mouse enters a column header.
- *
- *  @eventType spark.events.GridEvent.GRID_ROLL_OVER
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="gridRollOver", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched when the mouse leaves a column header.
- *
- *  @eventType spark.events.GridEvent.GRID_ROLL_OUT
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="gridRollOut", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched when the mouse is clicked over a column header.
- *
- *  @eventType spark.events.GridEvent.GRID_CLICK
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="gridClick", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched when the mouse is double-clicked over a column header.
- *
- *  @eventType spark.events.GridEvent.GRID_DOUBLE_CLICK
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="gridDoubleClick", type="spark.events.GridEvent")]
-
-
-/**
- *  Dispatched when the mouse button is pressed over a column header.
- *
- *  @eventType spark.events.GridEvent.GRID_MOUSE_DOWN
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="gridMouseDown", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched after a SEPARATOR_MOUSE_DOWN event if the mouse moves before
- *  the button is released.
- *
- *  @eventType spark.events.GridEvent.SEPARATOR_MOUSE_DRAG
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="separatorMouseDrag", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched after a SEPARATOR_MOUSE_DOWN event when the mouse button is
- *  released, even if the mouse is no longer within the separator affordance.
- *
- *  @eventType spark.events.GridEvent.SEPARATOR_MOUSE_UP
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="separatorMouseUp", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched when the mouse is over a column header separator.
- *
- *  @eventType spark.events.GridEvent.SEPARATOR_ROLL_OVER
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="separatorRollOver", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched when the mouse leaves a column header separator.
- *
- *  @eventType spark.events.GridEvent.SEPARATOR_ROLL_OUT
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-[Event(name="separatorRollOut", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched when the mouse is clicked over a column header separator.
- *
- *  @eventType spark.events.GridEvent.SEPARATOR_CLICK
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-//[Event(name="separatorClick", type="spark.events.GridEvent")]
-
-/**
- *  Dispatched when the mouse is double-clicked over a column
- *  header separator.
- *
- *  @eventType spark.events.GridEvent.SEPARATOR_DOUBLE_CLICK
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-//[Event(name="separatorDoubleClick", type="spark.events.GridEvent")]
-
-//--------------------------------------
-//  Other metadata
-//--------------------------------------
-
-[IconFile("ColumnHeaderBar.png")]
-
-/**
- *  The ColumnHeaderBar control defines
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.0
- *  @productversion Flex 4.5
- */
-public class ColumnHeaderBar extends SkinnableDataContainer
-    implements IFocusManagerComponent
+public class ColumnHeaderBar extends Group implements IFocusManagerComponent
 {
     include "../core/Version.as";
-
-    //--------------------------------------------------------------------------
-    //
-    //  Constructor
-    //
-    //--------------------------------------------------------------------------

     /**
      *  Constructor.
@@ -253,139 +114,77 @@
     public function ColumnHeaderBar()
     {
         super();
-
+
         layout = new ColumnHeaderBarLayout();
-        layout.useVirtualLayout = true;
         layout.clipAndEnableScrolling = true;
-
-        itemRendererFunction = defaultColumnHeaderBarItemRendererFunction;
-
-        MouseEventUtil.addDownDragUpListeners(this,
-            chb_mouseDownDragUpHandler,
-            chb_mouseDownDragUpHandler,
-            chb_mouseDownDragUpHandler);
-
-        addEventListener(MouseEvent.MOUSE_MOVE, chb_mouseMoveHandler);
-        addEventListener(MouseEvent.ROLL_OUT, chb_mouseRollOutHandler);
-        addEventListener(MouseEvent.CLICK, chb_clickHandler);
-        addEventListener(MouseEvent.DOUBLE_CLICK, chb_doubleClickHandler);
-
-        addEventListener(GridEvent.GRID_MOUSE_DOWN, header_mouseDownHandler);
-        addEventListener(GridEvent.GRID_ROLL_OVER, header_rollOverHandler);
-        addEventListener(GridEvent.GRID_ROLL_OUT, header_rollOutHandler);
-
-        addEventListener(GridEvent.SEPARATOR_MOUSE_DOWN, sep_mouseDownHandler);
-        addEventListener(GridEvent.SEPARATOR_MOUSE_UP, sep_mouseUpHandler);
-        addEventListener(GridEvent.SEPARATOR_ROLL_OVER, sep_rollOverHandler);
-        addEventListener(GridEvent.SEPARATOR_ROLL_OUT, sep_rollOutHandler);
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Skin Parts
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    //  columnResizeIndicator
-    //----------------------------------
-
-    [SkinPart(required="false", type="flash.display.DisplayObject")]
-
-    /**
-     *  A skin part that defines the appearance of the column resize indicator.
-     *  The column resize indicator is resized and positioned by the layout
-     *  to ... TBD
+
+        overlayGroup = new Group();
+        overlayGroup.layout = new LayoutBase(); // no layout
+        overlay.addDisplayObject(overlayGroup);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private function dispatchChangeEvent(type:String):void
+    {
+        if (hasEventListener(type))
+            dispatchEvent(new Event(type));
+    }
+
+    //----------------------------------
+    //  headerRenderer
+    //----------------------------------
+
+    [Bindable("headerRendererChanged")]
+
+    private var _headerRenderer:IFactory = null;
+
+    /**
+     *  Returns the default header renderer
      *
-     *
By default, the column resize indicator for a is a solid line that
-     *  spans the height of the control.
-     *  Create a custom column resize indicator by creating a custom skin class for the drop target.
-     *  In your skin class, create a skin part named columnResizeIndicator,
-     *  in the <fx:Declarations> area of the skin class

-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4
-     */
-    public var columnResizeIndicator:IFactory;
-
-    //--------------------------------------------------------------------------
-    //
-    //  Class variables
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     */
-    public var overlayLayer:GridLayer;
-
-    /**
-     *  @private
-     */
-    private var resizeCursorID:int = CursorManager.NO_CURSOR;
-
-    /**
-     *  @private
-     *  Additional affordance given to header separators.
-     *  TBD: should this be configurable?
-     */
-    private var separatorAffordance:Number = 3;
-
-    //--------------------------------------------------------------------------
-    //
-    //  Properties
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    //  firstItemRenderer
-    //----------------------------------
-
-    private var _firstItemRenderer:IFactory = null;
-
-    [Bindable("firstItemRendererChanged")]
-
-    /**
-     *  A factory for IItemRenderers used to render the header for the first
-     *  grid columns.  If not specified, the column header bar's
-     *  headerItemRenderer is return.
-     *
-     *  @default The value of the firstItemRenderer, or the headerItemRenderer,
-     *  if this has not been set.
-     *
-     *  @see #dataField
-     *  @see GridItemRenderer
-     */
-    public function get firstItemRenderer():IFactory
-    {
-        return (_firstItemRenderer) ? _firstItemRenderer : itemRenderer;
-    }
-
-    /**
-     *  @private
-     */
-    public function set firstItemRenderer(value:IFactory):void
-    {
-        if (_firstItemRenderer == value)
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4.5
+     */
+    public function get headerRenderer():IFactory
+    {
+        return _headerRenderer;
+    }
+
+    /**
+     *  @private
+     */
+    public function set headerRenderer(value:IFactory):void
+    {
+        if (value == _headerRenderer)
             return;

-        _firstItemRenderer = value;
-
-        // Force the itemRenderers to be recreated.
-        super.itemRenderer = super.itemRenderer;
-
-        dispatchChangeEvent("firstItemRendererChanged");
-    }
-
-    //----------------------------------
-    //  headerSeparator
-    //----------------------------------
-
-    [Bindable("headerSeparatorChanged")]
-
-    private var _headerSeparator:IFactory = null;
+
+        _headerRenderer = value;
+
+        layout.clearVirtualLayoutCache();
+        invalidateSize();
+        invalidateDisplayList();
+
+        dispatchChangeEvent("headerRendererChanged");
+    }
+
+
+    //----------------------------------
+    //  columnSeparator
+    //----------------------------------
+
+    [Bindable("columnSeparatorChanged")]
+
+    private var _columnSeparator:IFactory = null;

     /**
      *  A visual element that's displayed in between each column.
@@ -397,905 +196,77 @@
      *  @playerversion AIR 1.5
      *  @productversion Flex 4.5
      */
-    public function get headerSeparator():IFactory
-    {
-        return _headerSeparator;
-    }
-
-    /**
-     *  @private
-     */
-    public function set headerSeparator(value:IFactory):void
-    {
-        if (_headerSeparator == value)
+    public function get columnSeparator():IFactory
+    {
+        return _columnSeparator;
+    }
+
+    /**
+     *  @private
+     */
+    public function set columnSeparator(value:IFactory):void
+    {
+        if (_columnSeparator == value)
             return;

-        _headerSeparator = value;
-
+        _columnSeparator = value;
         invalidateDisplayList();
-
-        dispatchChangeEvent("headerSeparatorChanged");
-    }
-
-    //----------------------------------
-    //  horizontalScrollPosition
-    //----------------------------------
-
-    private var _horizontalScrollPosition:int;
-
-    public function get horizontalScrollPosition():Number
-    {
-        return dataGroup ?
-               dataGroup.horizontalScrollPosition : _horizontalScrollPosition;
-    }
-
-    /**
-     *  @private
-     */
-    public function set horizontalScrollPosition(value:Number):void
-    {
-        // If there is no layout, dataGroup caches this.
-        if (dataGroup)
-            dataGroup.horizontalScrollPosition = value;
-        else
-            _horizontalScrollPosition = value;
-    }
-
-    //----------------------------------
-    //  labelField
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    private var _labelField:String = "headerText";
-
-    /**
-     *  @private
-     */
-    private var labelFieldOrFunctionChanged:Boolean;
-
-    /**
-     *  The name of the field in the data provider items to display
-     *  as the header label.
-     *  The labelFunction property overrides this property.
-     *
-     *  @default "headerText"
+        dispatchChangeEvent("columnSeparatorChanged");
+    }
+
+    //----------------------------------
+    //  overlayGroup
+    //----------------------------------
+
+    [Bindable("overlayGroupChanged")]
+
+    private var _overlayGroup:Group = null;
+
+    /**
+     *  The container for columnSeparator visual elements.  By default it's an
+     *  element of the ColumnHeaderBar's overlay.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4.5
+     */
+    public function get overlayGroup():Group
+    {
+        return _overlayGroup;
+    }
+
+    /**
+     *  @private
+     */
+    public function set overlayGroup(value:Group):void
+    {
+        if (_overlayGroup == value)
+            return;
+
+        _overlayGroup = value;
+        invalidateDisplayList();
+        dispatchChangeEvent("overlayGroupChanged");
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @copy spark.components.supportClasses.ColumnHeaderBarLayout#getHeaderRendererAt()
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
-     *  @playerversion AIR 2
-     *  @productversion Flex 4.5
-     */
-    public function get labelField():String
-    {
-        return _labelField;
-    }
-
-    /**
-     *  @private
-     */
-    public function set labelField(value:String):void
-    {
-        if (value == _labelField)
-            return
-
-        _labelField = value;
-        labelFieldOrFunctionChanged = true;
-        invalidateProperties();
-    }
-
-    //----------------------------------
-    //  labelFunction
-    //----------------------------------
-
-    /**
-     *  @private
-     */
-    private var _labelFunction:Function;
-
-    /**
-     *  A user-supplied function to run on each item to determine its label.
-     *  The labelFunction property overrides
-     *  the labelField property.
-     *
-     *
You can supply a labelFunction that finds the
-     *  appropriate fields and returns a displayable string. The
-     *  labelFunction is also good for handling formatting and
-     *  localization.

-     *
-     *
The label function takes a single argument which is the item in
-     *  the data provider and returns a String.

-     *

-     *  myLabelFunction(item:Object):String

-     *
-     *  @default null
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2
-     *  @productversion Flex 4.5
-     */
-    public function get labelFunction():Function
-    {
-        return _labelFunction;
-    }
-
-    /**
-     *  @private
-     */
-    public function set labelFunction(value:Function):void
-    {
-        if (value == _labelFunction)
-            return
-
-            _labelFunction = value;
-        labelFieldOrFunctionChanged = true;
-        invalidateProperties();
-    }
-
-    //----------------------------------
-    //  lastItemRenderer
-    //----------------------------------
-
-    private var _lastItemRenderer:IFactory = null;
-
-    [Bindable("lastItemRendererChanged")]
-
-    /**
-     *  A factory for IItemRenderers used to render the header for the last
-     *  grid columns.  If not specified, the column header bar's
-     *  itemRenderer is return.
-     *
-     *  @default The value of the lastItemRenderer, or the itemRenderer,
-     *  if this has not been set.
-     *
-     *  @see #dataField
-     *  @see GridItemRenderer
-     */
-    public function get lastItemRenderer():IFactory
-    {
-        return (_lastItemRenderer) ? _lastItemRenderer : itemRenderer;
-    }
-
-    /**
-     *  @private
-     */
-    public function set lastItemRenderer(value:IFactory):void
-    {
-        if (_lastItemRenderer == value)
-            return;
-
-        _lastItemRenderer = value;
-
-        // Force the itemRenderers to be recreated.
-        super.itemRenderer = super.itemRenderer;
-
-        dispatchChangeEvent("lastItemRendererChanged");
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Overridden Properties
-    //
-    //--------------------------------------------------------------------------
-
-    //----------------------------------
-    //  itemRenderer
-    //----------------------------------
-
-    [Bindable("itemRendererChanged")]
-
-    /**
-     *  A factory for IItemRenderers used to render the header for the
-     *  grid columns.  If not specified, the
-     *  DefaultColumnHeaderRenderer is returned.
-     *
-     *
The default item renderer just displays the value of its
-     *  label property, which is based on the dataProvider item for
-     *  the column, and on the column's headerText property.  Custom item
-     *  renderers that derive more values from the column item and include
-     *  more complex visuals are easily created by subclassing
-     *  ItemRenderer.

-     *
-     *  @default The value of the headerItemRenderer.
-     *
-     *  @see DefaultColumnHeaderRenderer
-     */
-    override public function get itemRenderer():IFactory
-    {
-        if (!super.itemRenderer)
-            itemRenderer = new ClassFactory(DefaultColumnHeaderRenderer);
-
-        return super.itemRenderer;
-    }
-
-    /**
-     *  @private
-     */
-    override public function set itemRenderer(value:IFactory):void
-    {
-        if (super.itemRenderer == value)
-            return;
-
-        super.itemRenderer = value;
-
-        dispatchChangeEvent("itemRendererChanged");
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Overridden Methods
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     */
-    override protected function partAdded(partName:String, instance:Object):void
-    {
-        super.partAdded(partName, instance);
-
-        if (instance == dataGroup)
-        {
-            overlayLayer = new GridLayer();
-            dataGroup.overlay.addDisplayObject(overlayLayer.root);
-
-            dataGroup.horizontalScrollPosition = _horizontalScrollPosition;
-            dataGroup.addEventListener(RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
-            dataGroup.addEventListener(RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
-        }
-    }
-
-    /**
-     * @private
-     */
-    override protected function partRemoved(partName:String, instance:Object):void
-    {
-        if (instance == dataGroup)
-        {
-            dataGroup.removeEventListener(RendererExistenceEvent.RENDERER_ADD, dataGroup_rendererAddHandler);
-            dataGroup.removeEventListener(RendererExistenceEvent.RENDERER_REMOVE, dataGroup_rendererRemoveHandler);
-            horizontalScrollPosition = 0;
-
-            overlayLayer = null;
-        }
-
-        super.partRemoved(partName, instance);
-    }
-
-    /**
-     *  @private
-     */
-    override protected function commitProperties():void
-    {
-        if (labelFieldOrFunctionChanged)
-        {
-            // Cycle through all instantiated renderers to push the correct text
-            // in to the renderer by setting its label property
-            if (dataGroup)
-            {
-                var itemIndex:int;
-
-                // if virtual layout, only loop through the indices in view
-                // otherwise, loop through all of the item renderers
-                if (layout && layout.useVirtualLayout)
-                {
-                    for each (itemIndex in dataGroup.getItemIndicesInView())
-                    {
-                        updateRendererLabelProperty(itemIndex);
-                    }
-                }
-                else
-                {
-                    var n:int = dataGroup.numElements;
-                    for (itemIndex = 0; itemIndex < n; itemIndex++)
-                    {
-                        updateRendererLabelProperty(itemIndex);
-                    }
-                }
-            }
-
-            labelFieldOrFunctionChanged = false;
-        }
-    }
-
-    /**
-     *  @private
-     */
-    override public function updateRenderer(renderer:IVisualElement, itemIndex:int, data:Object):void
-    {
-        // If the CHB has a height set on it, force all the headers to be
-        // that height.
-        if (!isNaN(explicitHeight))
-            renderer.height = explicitHeight;
-
-        super.updateRenderer(renderer, itemIndex, data);
-    }
-
-    /**
-     *  Given a data item, return the correct text a renderer
-     *  should display while taking the labelField
-     *  and labelFunction properties into account.
-     *
-     *  @param item A data item
-     *
-     *  @return String representing the text to display for the
-     *  data item in the  renderer.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    override public function itemToLabel(item:Object):String
-    {
-    return GridColumn.itemToString(item, [labelField], labelFunction);
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Private Methods
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     */
-    private function get dataGrid():DataGrid
-    {
-        return owner as DataGrid;
-    }
-
-    /**
-     *  @private
-     */
-    private function get grid():Grid
-    {
-        return dataGrid ? dataGrid.grid : null;
-    }
-
-    /**
-     *  @private
-     */
-    private function getDataProviderItem(columnIndex:int):Object
-    {
-        const dataProvider:IList = dataProvider;
-        if ((dataProvider == null) || (columnIndex < 0 || columnIndex >= dataProvider.length))
-            return null;
-
-        return dataProvider.getItemAt(columnIndex);
-    }
-
-    private function dispatchChangeEvent(type:String):void
-    {
-        if (hasEventListener(type))
-            dispatchEvent(new Event(type));
-    }
-
-    /**
-     *  @private
-     */
-    private function updateRendererLabelProperty(itemIndex:int):void
-    {
-        // grab the renderer at that index and re-compute it's label property
-        var renderer:IItemRenderer = dataGroup.getElementAt(itemIndex) as IItemRenderer;
-        if (renderer)
-            renderer.label = itemToLabel(renderer.data);
-    }
-
-    /**
-     *  @private
-     *  If the first column use the firstItemRenderer, if the last column use
-     *  the lastItemRenderer, otherwise use the itemRenderer.
-     */
-    private function defaultColumnHeaderBarItemRendererFunction(data:Object):IFactory
-    {
-        var column:GridColumn = GridColumn(data);
-
-        var columnIndex:int = column.columnIndex;
-
-        if (columnIndex == 0)
-            return firstItemRenderer;
-
-        if (columnIndex == dataProvider.length - 1)
-            return lastItemRenderer;
-
-        return itemRenderer;
-    }
-
-    // TBD: refactor the version of this in GridLayout so it doesn't
-    // have to be duplicated.
-
-    /**
-     *  @private
-     *  Size and position the visual element.
-     */
-    private function layoutGridElement(elt:IVisualElement,
-                                       x:Number, y:Number,
-                                       width:Number, height:Number):void
-    {
-        const validatingElt:IInvalidating = elt as IInvalidating;
-
-        if (!isNaN(width) || !isNaN(height))
-        {
-            if (validatingElt)
-                validatingElt.validateNow();
-            elt.setLayoutBoundsSize(width, height);
-        }
-        if (validatingElt)
-            validatingElt.validateNow();
-        elt.setLayoutBoundsPosition(x, y);
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  Event Handlers
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     */
-    private function dataGroup_rendererAddHandler(event:RendererExistenceEvent):void
-    {
-        /*
-        const renderer:IItemRenderer = event.renderer as IItemRenderer;
-        if (renderer)
-        {
-            renderer.addEventListener(MouseEvent.CLICK, item_clickHandler);
-
-            // ToDo: deal with focus issues
-            //if (renderer is IFocusManagerComponent)
-            //    IFocusManagerComponent(renderer).focusEnabled = false;
-        }
-        */
-    }
-
-    /**
-     *  @private
-     */
-    private function dataGroup_rendererRemoveHandler(event:RendererExistenceEvent):void
-    {
-        /*
-        const renderer:IVisualElement = event.renderer;
-        if (renderer)
-            renderer.removeEventListener(MouseEvent.CLICK, item_clickHandler);
-        */
-    }
-
-    /**
-     *  @private
-     *  If the mouse is over the headerSeparator +/- the separatorAffordance,
-     *  return the index of the column to the left of the separator.
-     *  Otherwise return -1.
-     */
-    private function getHeaderSeparatorIndex(localPt:Point, columnIndex:int):int
-    {
-        // FIXME: For now assume header separator is 1 pixel wide and
-        // the columnGap is 0.
-        const bounds:Rectangle = grid.getColumnBounds(columnIndex);
-        if (bounds == null)
-            return -1;
-
-        if (localPt.x <= bounds.left + separatorAffordance)
-        {
-            if (columnIndex == 0)
-                return -1;
-
-            return columnIndex - 1;
-        }
-        else if (localPt.x >= bounds.right - separatorAffordance)
-        {
-            return columnIndex;
-        }
-
-        return -1;
-    }
-
-    /**
-     *  @private
-     */
-    private function header_mouseDownHandler(event:GridEvent):void
-    {
-        if (!enabled)
-            return;
-     }
-
-    /**
-     *  @private
-     */
-    private function header_rollOverHandler(event:GridEvent):void
-    {
-        if (!enabled)
-            return;
-
-        //column:GridColumn = event.column;
-        //const columnIndex:int = event.columnIndex;
-    }
-
-    /**
-     *  @private
-     */
-    private function header_rollOutHandler(event:GridEvent):void
-    {
-        if (!enabled)
-            return;
-    }
-
-    /**
-     *  @private
-     */
-    private function sep_mouseDownHandler(event:GridEvent):void
-    {
-        if (!enabled || !grid.resizableColumns)
-            return;
-
-        var column:GridColumn = event.column;
-        if (!column.resizable)
-            return;
-
-        const bounds:Rectangle = grid.getColumnBounds(event.columnIndex);
-
-        // FIXME: handle columnResizeIndictor = null
-        var resizeGraphic:IVisualElement =
-            columnResizeIndicator.newInstance() as IVisualElement;
-
-        // TBD: size resize graphic and put in initial position
-     }
-
-    /**
-     *  @private
-     */
-    private function sep_mouseUpHandler(event:GridEvent):void
-    {
-        if (!enabled || !grid.resizableColumns)
-            return;
-    }
-
-    /**
-     *  @private
-     */
-    private function sep_rollOverHandler(event:GridEvent):void
-    {
-        if (!enabled || !grid.resizableColumns)
-            return;
-
-        var column:GridColumn = event.column;
-
-        if (!column.resizable)
-            return;
-
-        // Uncomment when resize is implemented.
-
-        // Hide the mouse, attach and show the cursor
-        /*
-        var stretchCursorClass:Class = getStyle("stretchCursor");
-        resizeCursorID = cursorManager.setCursor(
-                                stretchCursorClass,
-                                CursorManagerPriority.HIGH, 0, 0);
-        */
-    }
-
-    /**
-     *  @private
-     */
-    private function sep_rollOutHandler(event:GridEvent):void
-    {
-        if (!enabled)
-            return;
-
-        // Uncomment when resize is implemented.
-        //cursorManager.removeCursor(resizeCursorID);
-    }
-
-    //--------------------------------------------------------------------------
-    //
-    //  GridEvents
-    //
-    //--------------------------------------------------------------------------
-
-    private var rollColumnIndex:int = -1;
-    private var mouseDownColumnIndex:int = -1;
-    private var resizeColumnIndex:int = -1;
-    private var dragSeparator:Boolean;
-
-    /**
-     *  This method is called when a MOUSE_DOWN event occurs within the column header bar and
-     *  for all subsequent MOUSE_MOVE events until the button is released (even if the
-     *  mouse leaves the column header bar).  The last event in such a "down drag up" gesture is
-     *  always a MOUSE_UP.  By default this method dispatches GRID_MOUSE_DOWN,
-     *  GRID_MOUSE_DRAG, or a GRID_MOUSE_UP event in response to the the corresponding
-     *  mouse event on a column header or SEPARATOR_MOUSE_DOWN, SEPARATOR_MOUSE_DRAG,
-     *  or a SEPARATOR_MOUSE_UP event in response to the the corresponding
-     *  mouse event on a column header separator.
-     *
-     * .The GridEvent's columnIndex, column, item, and itemRenderer
-     *  properties correspond to the grid cell under the mouse.
-     *
-     *  @param event A MOUSE_DOWN, MOUSE_MOVE, or MOUSE_UP MouseEvent from a
-     *  down/move/up gesture initiated within the column header bar.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
      *  @playerversion AIR 2.0
      *  @productversion Flex 4.5
-     */
-    protected function chb_mouseDownDragUpHandler(event:MouseEvent):void
-    {
-        const eventStageXY:Point = new Point(event.stageX, event.stageY);
-        const eventHeaderBarXY:Point = globalToLocal(eventStageXY);
-
-        const eventColumnIndex:int =
-            grid.getColumnIndexAt(eventHeaderBarXY.x, 0);
-
-        var gridEventType:String;
-        switch(event.type)
-        {
-            case MouseEvent.MOUSE_MOVE:
-                if (dragSeparator)
-                    gridEventType = GridEvent.SEPARATOR_MOUSE_DRAG;
-                else
-                    gridEventType = GridEvent.GRID_MOUSE_DRAG;
-                break;
-            case MouseEvent.MOUSE_UP:
-                if (dragSeparator)
-                    gridEventType = GridEvent.SEPARATOR_MOUSE_UP;
-                else
-                    gridEventType = GridEvent.GRID_MOUSE_UP;
-                break;
-            case MouseEvent.MOUSE_DOWN:
-                // Is the mouseDown on a separator or a header?
-                const headerIndex:int =
-                    getHeaderSeparatorIndex(eventHeaderBarXY, eventColumnIndex);
-                dragSeparator = headerIndex != -1;
-                if (dragSeparator)
-                {
-                    gridEventType = GridEvent.SEPARATOR_MOUSE_DOWN;
-                    mouseDownColumnIndex = headerIndex;
-                }
-                else
-                {
-                    gridEventType = GridEvent.GRID_MOUSE_DOWN;
-                    mouseDownColumnIndex = eventColumnIndex;
-                }
-                break;
-        }
-
-        dispatchGridEvent(event, gridEventType, eventHeaderBarXY, eventColumnIndex);
-    }
-
-    /**
-     *  This method is called whenever a MOUSE_MOVE occurs on either a
-     *  header in the column header bar or on one of the column header bar
-     *  separators without the button pressed.
-     *
-     *  By default it dispatches a GRID_ROLL_OVER for the first
-     *  MOUSE_MOVE GridEvent whose location is within a column header, and a
-     *  GRID_ROLL_OUT GridEvent when the mouse leaves the column_header and
-     *  it dispatches a SEPARATOR_ROLL_OVER for the first MOUSE_MOVE
-     *  GridEvent whose location is over a column header separator +/- the
-     *  column header separator affordance, and a SEPARATOR_ROLL_OUT
-     *  GridEvent when the mouse leaves the separator affordance.
-     *  Listeners are guaranteed to receive a GRID_ROLL_OUT event for every
-     *  GRID_ROLL_OVER event and to receive a SEPARATOR_ROLL_OUT event for
-     *  every SEPARATOR_ROLL_OVER event.
-     *
-     *  @param event A MOUSE_MOVE MouseEvent within the column header bar,
-     *  without the button pressed.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    protected function chb_mouseMoveHandler(event:MouseEvent):void
-    {
-        const eventStageXY:Point = new Point(event.stageX, event.stageY);
-        const eventHeaderBarXY:Point = globalToLocal(eventStageXY);
-        const eventColumnIndex:int = grid.getColumnIndexAt(eventHeaderBarXY.x, 0);
-
-        var headerIndex:int =
-            getHeaderSeparatorIndex(eventHeaderBarXY, eventColumnIndex);
-
-        // Figure out if this roll over is over one of the header separators
-        // or over the header itself.  The ends of the header that are
-        // within the separatorAffordance are considered part of the
-        // seperator, not part of the header.
-
-        if (headerIndex != -1)
-        {
-            if (rollColumnIndex != -1)
-            {
-                dispatchGridEvent(event, GridEvent.GRID_ROLL_OUT, eventHeaderBarXY, rollColumnIndex);
-                rollColumnIndex = -1;
-            }
-            if (headerIndex != resizeColumnIndex)
-            {
-                if (resizeColumnIndex != -1 && headerIndex != resizeColumnIndex)
-                    dispatchGridEvent(event, GridEvent.SEPARATOR_ROLL_OUT, eventHeaderBarXY, resizeColumnIndex);
-                if (eventColumnIndex != resizeColumnIndex)
-                    dispatchGridEvent(event, GridEvent.SEPARATOR_ROLL_OVER, eventHeaderBarXY, headerIndex);
-                resizeColumnIndex = headerIndex;
-            }
-        }
-        else
-        {
-            if (resizeColumnIndex != -1)
-            {
-                dispatchGridEvent(event, GridEvent.SEPARATOR_ROLL_OUT, eventHeaderBarXY, resizeColumnIndex);
-                resizeColumnIndex = -1;
-            }
-            if (eventColumnIndex != rollColumnIndex)
-            {
-                if (rollColumnIndex != -1)
-                    dispatchGridEvent(event, GridEvent.GRID_ROLL_OUT, eventHeaderBarXY, rollColumnIndex);
-                if (eventColumnIndex != -1)
-                    dispatchGridEvent(event, GridEvent.GRID_ROLL_OVER, eventHeaderBarXY, eventColumnIndex);
-                rollColumnIndex = eventColumnIndex;
-            }
-        }
-     }
-
-    /**
-     *  This method is called whenever a ROLL_OUT occurs on either a
-     *  header in the column header bar or on one of the column header bar
-     *  separators.
-     *
-     *  By default it dispatches either a GRID_ROLL_OUT or a
-     *  SEPARATOR_ROLL_OUT event.
-     *
-     *  @param event A ROLL_OUT MouseEvent from the column header bar.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    protected function chb_mouseRollOutHandler(event:MouseEvent):void
-    {
-        const eventStageXY:Point = new Point(event.stageX, event.stageY);
-        const eventHeaderBarXY:Point = globalToLocal(eventStageXY);
-
-        // Is the rollout for a column seperator or is it for the column?
-
-        if (resizeColumnIndex != -1)
-        {
-            dispatchGridEvent(event, GridEvent.SEPARATOR_ROLL_OUT, eventHeaderBarXY, resizeColumnIndex);
-            resizeColumnIndex = -1;
-        }
-        else if (rollColumnIndex != -1)
-        {
-            dispatchGridEvent(event, GridEvent.GRID_ROLL_OUT, eventHeaderBarXY, rollColumnIndex);
-            rollColumnIndex = -1;
-        }
-    }
-
-    /**
-     *  This method is called whenever a CLICK MouseEvent occurs on the
-     *  column header bar if both the corresponding down and up events occur
-     *  within the same column header cell. By default it dispatches a
-     *  GRID_CLICK event.
-     *
-     *  @param event A CLICK MouseEvent from the column header bar.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    protected function chb_clickHandler(event:MouseEvent):void
-    {
-        const eventStageXY:Point = new Point(event.stageX, event.stageY);
-        const eventHeaderBarXY:Point = globalToLocal(eventStageXY);
-        const eventColumnIndex:int = grid.getColumnIndexAt(eventHeaderBarXY.x, 0);
-
-        var headerIndex:int =
-            getHeaderSeparatorIndex(eventHeaderBarXY, eventColumnIndex);
-
-        if (headerIndex != -1)
-        {
-            // Should be able to go down on one side of the separator and
-            // up on the other side even though this spans columns.
-            if (headerIndex == resizeColumnIndex)
-                dispatchGridEvent(event, GridEvent.SEPARATOR_CLICK, eventHeaderBarXY, headerIndex);
-        }
-        else
-        {
-            if (eventColumnIndex == mouseDownColumnIndex)
-                dispatchGridEvent(event, GridEvent.GRID_CLICK, eventHeaderBarXY, eventColumnIndex);
-        }
-    }
-
-    /**
-     *  This method is called whenever a DOUBLE_CLICK MouseEvent occurs on
-     *  the column header bar if the corresponding sequence of down and up
-     *  events occur within the same column header cell.
-     *  By default it dispatches a GRID_DOUBLE_CLICK event.
-     *
-     *  @param event A DOUBLE_CLICK MouseEvent from the column header bar.
-     *
-     *  @see flash.display.InteractiveObject#doubleClickEnabled
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.0
-     *  @productversion Flex 4.5
-     */
-    protected function chb_doubleClickHandler(event:MouseEvent):void
-    {
-        const eventStageXY:Point = new Point(event.stageX, event.stageY);
-        const eventHeaderBarXY:Point = globalToLocal(eventStageXY);
-        const gridDimensions:GridDimensions = dataGrid.grid.gridDimensions;
-        const eventColumnIndex:int = grid.getColumnIndexAt(eventHeaderBarXY.x, 0);
-
-        // This isn't stricly adequate, since the mouse might have been on a different cell for
-        // the first click.  It's not clear that the extra checking would be worthwhile.
-
-        // TBD: separator double click
-
-        if (eventColumnIndex == mouseDownColumnIndex)
-            dispatchGridEvent(event, GridEvent.GRID_DOUBLE_CLICK, eventHeaderBarXY, eventColumnIndex);
-    }
-
-    /**
-     *  @private
-     *  Return itemRenderer["excludedEventTargets"] contains event.target.id,
-     *  where itemRenderer is the item renderer ancestor of event.target.
-     */
-    private function isEventTargetExcluded(event:Event):Boolean
-    {
-        const eventTarget:UIComponent = event.target as UIComponent;
-        const eventTargetID:String = (eventTarget) ? eventTarget.id : null;
-        if (!eventTargetID)
-            return false;
-
-        // Find the eventTarget's ancestor whose parent is the Grid.  That's the
-        // item renderer.  If it has an excludedEventTargets array that contains
-        // event.target.id, then this event is to be excluded.
-
-        for (var elt:IVisualElement = eventTarget; elt && (elt != this); elt = elt.parent as IVisualElement)
-            if (elt.parent == this)  // then elt is an item renderer
-            {
-                if ("excludedGridEventTargets" in Object(elt))
-                {
-                    const excludedTargets:Array = Object(elt)["excludedGridEventTargets"] as Array;
-                    return excludedTargets.indexOf(eventTargetID) != -1;
-                }
-                return false;
-            }
-
-        return false;
-    }
-
-    /**
-     *  @private
-     */
-    private function dispatchGridEvent(mouseEvent:MouseEvent, type:String, gridXY:Point, columnIndex:int):void
-    {
-        //trace("dispatchGridEvent", mouseEvent.type, type, gridXY, columnIndex);
-
-        // ToDo: what is this?  what about the separators?  are they excluded?
-        if (isEventTargetExcluded(mouseEvent))
-            return;
-
-        const column:GridColumn = getDataProviderItem(columnIndex) as GridColumn;
-        const item:Object = null;
-        const itemRenderer:IVisualElement = dataGroup.getElementAt(columnIndex);
-        const bubbles:Boolean = mouseEvent.bubbles;
-        const cancelable:Boolean = mouseEvent.cancelable;
-        const relatedObject:InteractiveObject = mouseEvent.relatedObject;
-        const ctrlKey:Boolean = mouseEvent.ctrlKey;
-        const altKey:Boolean = mouseEvent.altKey;
-        const shiftKey:Boolean = mouseEvent.shiftKey;
-        const buttonDown:Boolean = mouseEvent.buttonDown;
-        const delta:int = mouseEvent.delta;
-
-        const event:GridEvent = new GridEvent(
-            type, bubbles, cancelable,
-            gridXY.x, gridXY.y, -1, columnIndex, column, item, itemRenderer,
-            relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta);
-        dispatchEvent(event);
-    }
+     */
+    public function getHeaderRendererAt(columnIndex:int):IGridItemRenderer
+    {
+        return ColumnHeaderBarLayout(layout).getHeaderRendererAt(columnIndex);
+    }
+
+}
 }
-}


Need more tolerant name compare for assets swfs

--- mustella/as3/src/mustella/CompareBitmap.as
+++ mustella/as3/src/mustella/CompareBitmap.as
@@ -1389,7 +1389,7 @@
         var d:int;

         c = a.length;
-        for (var i:int = c - 1;i > 0; i--)
+        for (var i:int = c - 1;i >= 0; i--)
         {
             var ch:String = a.charAt(i);
             if ((ch >= '0' && ch <= '9') || ch == '_')
@@ -1467,7 +1467,7 @@
                 // inconsistent behavior around StaticText
                 return false;
             }
-            else
+            else if (!oneMoreNameCompare(sn, tn))
             {
                 trace("tag name mismatch: cur=", sn, "xml=", tn);
                 retval = true;
@@ -1575,6 +1575,22 @@
         return retval;
     }

+	private function oneMoreNameCompare(a:String, b:String):Boolean
+	{
+		var aParts:Array = a.split("_");
+		var bParts:Array = b.split("_");
+		var i:int;
+		var n:int;
+		n = aParts.length;
+		for (i = 0; i < n; i++)
+			aParts[i] = trimName(aParts[i]);
+		n = bParts.length;
+		for (i = 0; i < n; i++)
+			bParts[i] = trimName(bParts[i]);
+		a = aParts.join("_");
+		b = bParts.join("_");
+		return a == b;
+	}
 }

 }


replace class Version by core.version

replace class Version by core.version

--- tests/GAv4/com/google/analytics/utils/FakeEnvironment.as
+++ tests/GAv4/com/google/analytics/utils/FakeEnvironment.as
@@ -1,18 +1,19 @@

 package com.google.analytics.utils
 {
+    import core.version;

     public class FakeEnvironment extends Environment
     {
         private var _appName:String;
-        private var _appVersion:Version;
+        private var _appVersion:version;
         private var _url:String;
         private var _referrer:String;
         private var _documentTitle:String;
         private var _domainName:String;
         private var _locationPath:String;
         private var _locationSearch:String;
-        private var _flashVersion:Version;
+        private var _flashVersion:version;
         private var _language:String;
         private var _languageEncoding:String;
         private var _operatingSystem:String;
@@ -26,11 +27,11 @@
         private var _isInHTML:Boolean;
         private var _isAIR:Boolean;

-        public function FakeEnvironment( appName:String = "", appVersion:Version = null,
+        public function FakeEnvironment( appName:String = "", appVersion:version = null,
                                        url:String = "", referrer:String = "",
                                        documentTitle:String = "", domainName:String = "",
                                        locationPath:String = "", locationSearch:String = "",
-                                       flashVersion:Version = null, language:String = "",
+                                       flashVersion:version = null, language:String = "",
                                        languageEncoding:String = "", operatingSystem:String = "",
                                        playerType:String = "", platform:String = "",
                                        protocol:String = null, screenWidth:Number = NaN,
@@ -74,12 +75,12 @@
             _appName = value;
         }

-        public override function get appVersion():Version
+        public override function get appVersion():version
         {
             return _appVersion;
         }

-        public override function set appVersion( value:Version ):void
+        public override function set appVersion( value:version ):void
         {
             _appVersion = value;
         }
@@ -119,7 +120,7 @@
             return _locationSearch;
         }

-        public override function get flashVersion():Version
+        public override function get flashVersion():version
         {
             return _flashVersion;
         }


Revert back partial changes in the Editor.

--- Bin/Data/Scripts/Editor/EditorNodeWindow.as
+++ Bin/Data/Scripts/Editor/EditorNodeWindow.as
@@ -118,7 +118,11 @@

     // If full update delete all containers and added them back as necessary
     if (fullUpdate)
+    {
         DeleteAllContainers();
+        AddNodeContainer();
+        AddComponentContainer();
+    }

     Text@ nodeTitle = nodeContainer.GetChild("TitleText");
     String nodeType;


--- src/flash/geom/PerspectiveProjection.as
+++ src/flash/geom/PerspectiveProjection.as
@@ -1,29 +1,44 @@
 package flash.geom
 {
-   [Version("10")]
    public class PerspectiveProjection extends Object
    {
-
+	   private var _fieldOfView:Number = 55;
+	   private var _projectionCenter:Point = new Point(250, 250);
       public function PerspectiveProjection()
       {
-         super();
-         this.ctor();
       }

      private function ctor() : void{}

-     public function get fieldOfView() : Number{return 0}
+     public function get fieldOfView() : Number{return _fieldOfView}

-     public function set fieldOfView(param1:Number) : void{}
+     public function set fieldOfView(param1:Number) : void{
+		 _fieldOfView = param1;
+	 }

-     public function get projectionCenter() : Point{return null}
+     public function get projectionCenter() : Point{return _projectionCenter}

-     public function set projectionCenter(param1:Point) : *{return null}
+     public function set projectionCenter(param1:Point) : void{
+		 _projectionCenter = param1;
+	 }

-     public function get focalLength() : Number{return 0}
+     public function get focalLength() : Number{
+		return 1 / Math.tan(_fieldOfView / 2 * Math.PI / 180) * 250;
+	 }

-     public function set focalLength(param1:Number) : void{}
+     public function set focalLength(param1:Number) : void{
+		 _fieldOfView=Math.atan(250 / param1) * 2 * 180 / Math.PI;
+	 }

-     public function toMatrix3D() : Matrix3D{return null}
+     public function toMatrix3D() : Matrix3D{
+		 var m:Matrix3D = new Matrix3D();
+		 m.rawData=Vector.<Number>([
+				focalLength,0,0,0,
+			0,focalLength,0,0,
+			0,0,1,1,
+			0,0,0,0
+			]);
+			return m;
+	 }
    }
 }


Changed CSS property 'selectable' to inheritable and removed outdated text-related properties

--- src/reprise/css/propertyparsers/Font.as
+++ src/reprise/css/propertyparsers/Font.as
@@ -40,9 +40,7 @@
 			leading : {parser : strToIntProperty, inheritable : true},
 			multiline : {parser : strToBoolProperty, transition : BooleanTransitionVO},
 			wordWrap : {parser : strToStringProperty},
-			selectable : {parser : strToBoolProperty, transition : BooleanTransitionVO},
-			fontVariant : {parser : strToStringProperty},
-			fixLineEndings : {parser : parseFixLineEndings},
+			selectable : {parser : strToBoolProperty, inheritable : true, transition : BooleanTransitionVO},
 			lineHeight : {parser : strToIntProperty}
 		};