update copy

update copy

--- src/model/CopyDataProxy.as
+++ src/model/CopyDataProxy.as
@@ -12,6 +12,7 @@
 	import dragonBones.objects.Node;
 	import dragonBones.objects.SkeletonData;
 	import dragonBones.objects.XMLDataParser;
+	import dragonBones.textures.NativeTextureAtlas;
 	import dragonBones.utils.ConstValues;
 	import dragonBones.utils.TransformUtils;
 	import dragonBones.utils.dragonBones_internal;
@@ -38,11 +39,9 @@
 		private var _skeletonData:SkeletonData;
 		private var _copyFactory:BaseFactory;

-
 		//controlled by view
 		private var _selectedSourceArmature:XML;
 		private var _selectedDestinationArmature:XML;
-

 		//for view displaying
 		public var selectedSourceBoneList:XMLList;
@@ -58,14 +57,11 @@
 		private var _selectedMultipleSourceBehaviors:Vector.<Object>;
 		private var _selectedMultipleDestinationBehaviors:Vector.<Object>;

-
 		public var boneCopyable:Boolean;
 		public var behaviorCopyable:Boolean;
 		public var behaviorDeletable:Boolean;

 		private var _sharedBoneNames:Vector.<String>;
-
-

 		public function get selectedMultipleDestinationBehaviors():Vector.<Object>
 		{
@@ -275,11 +271,51 @@

 		public function save():void
 		{
+
 			waitingForSavingBehaviors = calculateChangedArmatures().children();
 			savingIndex = 0;
+
 			MessageDispatcher.dispatchEvent(MessageDispatcher.SAVE_ANIMATION_START);
-			MessageDispatcher.addEventListener(JSFLProxy.COPY_MOVEMENT, saveOneBehavior);
-			saveOneBehavior(null);
+
+			var armatureXMLList:XMLList = _copySkeletonXML.descendants(ConstValues.ARMATURE);
+
+			for each(var armatureXML:XML in armatureXMLList)
+			{
+				var armatureName:String = armatureXML.@[ConstValues.A_NAME];
+				var originArmatureXML:XML = ImportDataProxy.getInstance().skeletonXMLProxy.getArmatureXML(armatureName);
+				if(originArmatureXML != armatureXML)
+				{
+					var isBoneTreeChange:Boolean = true;
+					if(!ImportDataProxy.getInstance().isExportedSource)
+					{
+						JSFLProxy.getInstance().changeArmatureConnection(armatureName, armatureXML);
+					}
+				}
+			}
+
+			if(isBoneTreeChange || waitingForSavingBehaviors.length() > 0)
+			{
+				ImportDataProxy.getInstance().skeletonXMLProxy.skeletonXML = _copySkeletonXML.copy();
+
+				var textureAtlas:NativeTextureAtlas = ImportDataProxy.getInstance().textureAtlas;
+
+				ImportDataProxy.getInstance().setData(
+					ImportDataProxy.getInstance().skeletonXMLProxy,
+					ImportDataProxy.getInstance().textureBytes,
+					textureAtlas.movieClip || textureAtlas.bitmapData.clone(),
+					ImportDataProxy.getInstance().isExportedSource
+				);
+			}
+
+			if(!ImportDataProxy.getInstance().isExportedSource)
+			{
+				MessageDispatcher.addEventListener(JSFLProxy.COPY_MOVEMENT, saveOneBehavior);
+				saveOneBehavior(null);
+			}
+			else
+			{
+				MessageDispatcher.dispatchEvent(MessageDispatcher.SAVE_ANIMATION_COMPLETE);
+			}
 		}

 		public function calculateChangedArmatures():XML
@@ -327,11 +363,9 @@

 		public function executeBoneCopy():void
 		{
-			trace(_sharedBoneNames);
 			var sourceBones:XMLList = selectedSourceBoneList;
 			var destinationBones:XMLList = selectedDestinaionBonelist.copy();
 			var plattenDestinationBones:XMLList = copyBones(sourceBones, destinationBones, _sharedBoneNames);
-			trace(plattenDestinationBones);
 			var destinationName:String = selectedDestinationArmature.@[ConstValues.A_NAME];
 			//update _copySkeletonXML;
 			applyCopiedBoneToSkeletonXML(plattenDestinationBones, destinationName);
@@ -341,7 +375,6 @@
 			selectedDestinationArmature.appendChild(boneTree);
 			selectedDestinaionBonelist = boneTree.copy();

-
 			resetDestinationSkeletonData();
 			//occur to update
 			var temp:XML = selectedDestinationArmature;
@@ -354,7 +387,6 @@
 		{
 			var copiedDestinationBehaviors:XMLList = copyBehaviors(_selectedSourceArmatureName, selectedMultipleSourceBehaviors, _sourceAnimationData, selectedDestinaionBehaviorList, _sharedBoneNames, _plattenDestinationBoneList);
 			var destinationName:String = selectedDestinationArmature.@[ConstValues.A_NAME];
-

 			var container:XML = <{ConstValues.ANIMATION}/>;
 			container.@[ConstValues.A_NAME] = destinationName;
@@ -421,7 +453,6 @@
 		{
 			_skeletonData = XMLDataParser.parseSkeletonData(_copySkeletonXML);
 			_copyFactory.addSkeletonData(_skeletonData);
-			return;
 		}

 		private function checkBonesCopyable():void
@@ -564,7 +595,6 @@
 			return boneName;
 		}

-
 		private static function plattenBones(treeBones:XMLList):XMLList
 		{
 			var container:XML = <container/>;


Transferred from the Adobe Open Source Subversion Repository

Revision: 10376
Author:   rfrishbe@adobe.com
Date:     2009-09-18T02:45:26.180200Z

Log Message:
-----------
Two AIR bug fixes around Window.open().

1.  When open() is called on a closed window, nothing happens.  We decided this is NAB, so I’m just clarifying the docs.
2.  Adding a WINDOW_CREATING event for automation.  The WINDOW_CREATE event happens too late in the game for them (this is thrown in the enterFrameHandler).  They wanted something more synchronous so they could catch what was happening based on the user-interaction more immediately.

QE notes: -
Doc notes: -
Bugs: SDK-23137, SDK-14440
Reviewer: Darrell
Tests run: checkintests, ran a small subset of AIR halo and spark Window tests
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/Window.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/events/WindowExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/spark/components/Window.as</path>

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

--- frameworks/projects/airframework/src/mx/core/Window.as
+++ frameworks/projects/airframework/src/mx/core/Window.as
@@ -2791,10 +2791,10 @@
         if (sm.isTopLevel())
         {
             focusManager = new FocusManager(this);
-			var awm:IActiveWindowManager =
-				IActiveWindowManager(sm.getImplementation("mx.managers::IActiveWindowManager"));
-			if (awm)
-           		awm.activate(this);
+            var awm:IActiveWindowManager =
+                IActiveWindowManager(sm.getImplementation("mx.managers::IActiveWindowManager"));
+            if (awm)
+                   awm.activate(this);
             else
                 focusManager.activate();

@@ -2905,6 +2905,10 @@

     /**
      *  Creates the underlying NativeWindow and opens it.
+     *
+     *  After being closed, the Window object is still a valid reference, but
+     *  accessing most properties and methods will not work.
+     *  Closed windows cannot be reopened.
      *
      *  @param  openWindowActive specifies whether the Window opens
      *  activated (that is, whether it has focus). The default value
@@ -2916,6 +2920,15 @@
      */
     public function open(openWindowActive:Boolean = true):void
     {
+        // Event for Automation so we know when windows
+        // are created or destroyed.
+        if (FlexGlobals.topLevelApplication)
+        {
+            FlexGlobals.topLevelApplication.dispatchEvent(
+                new WindowExistenceEvent(WindowExistenceEvent.WINDOW_CREATING,
+                    false, false, this));
+        }
+
         flagForOpen = true;
         openActive = openWindowActive;
         commitProperties();


Transferred from the Adobe Open Source Subversion Repository

Revision: 15886
Author:   cframpto@adobe.com
Date:     2010-05-04T16:42:05.109868Z

Log Message:
-----------
Initial submit of Hans's grid code.  Added copyrights and included Version.as.  Added Grid, GridColumn, and GridItemRenderer components to the spark manifest.

Modified Paths:
--------------
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/Grid.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridItemRenderer.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridSelection.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridDimensions.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/ITreeAdapter.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/flex4_5/frameworks/spark-manifest.xml</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridColumn.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/ListTreeView.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/GridEvent.as</path>
<path kind="file" action="A">/private/flex/sdk/branches/flex4_5/frameworks/projects/spark/src/spark/components/supportClasses/ObjectTreeAdapter.as</path>

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

--- frameworks/projects/spark/src/spark/components/Grid.as
+++ frameworks/projects/spark/src/spark/components/Grid.as
@@ -0,0 +1,676 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2010 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.components
+{
+import flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
+import flash.events.Event;
+import flash.events.IEventDispatcher;
+import flash.events.MouseEvent;
+import flash.geom.Point;
+import flash.geom.Rectangle;
+import flash.utils.Dictionary;
+
+import mx.collections.IList;
+import mx.core.IFactory;
+import mx.core.IVisualElement;
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+import mx.events.CollectionEvent;
+import mx.events.SandboxMouseEvent;
+import mx.graphics.SolidColor;
+import mx.utils.MatrixUtil;
+
+import spark.components.Button;
+import spark.components.Group;
+import spark.components.supportClasses.GridColumn;
+import spark.components.supportClasses.GridDimensions;
+import spark.components.supportClasses.GridEvent;
+import spark.components.supportClasses.GridLayout;
+import spark.components.supportClasses.GridSelection;
+import spark.components.supportClasses.GroupBase;
+import spark.components.supportClasses.ItemRenderer;
+import spark.primitives.Rect;
+
+use namespace mx_internal;
+
+
+public class Grid extends Group
+{
+    include "../core/Version.as";
+
+    // TBD(hmuller): not clear where this belongs yet..
+    public var gridSelection:GridSelection = new GridSelection();
+
+
+    public var backgroundGroup:Group;
+    public var selectionGroup:Group;
+    public var itemRendererGroup:Group;
+    public var overlayGroup:Group;
+
+    private var inUpdateDisplayList:Boolean = false;
+
+    public function Grid()
+    {
+        super();
+        layout = new GridLayout();
+
+        backgroundGroup = new Group();
+        backgroundGroup.layout = new NullLayout();
+        addElement(backgroundGroup);
+
+        selectionGroup = new Group();
+        selectionGroup.layout = new NullLayout();
+        addElement(selectionGroup);
+
+        itemRendererGroup = this;
+
+        overlayGroup = new Group();
+        overlayGroup.layout = new NullLayout();
+        addElement(overlayGroup);
+
+        addDownDragUpHandler(this, grid_mouseDownDragUpHandler);
+        addEventListener(MouseEvent.MOUSE_MOVE, grid_mouseMoveHandler);
+        addEventListener(MouseEvent.ROLL_OUT, grid_mouseRollOutHandler);
+
+        addEventListener(GridEvent.GRID_MOUSE_DOWN, gridMouseDownHandler);
+        addEventListener(GridEvent.GRID_ROLL_OVER, gridRollOverHandler);
+        addEventListener(GridEvent.GRID_ROLL_OUT, gridRollOutHandler);
+    }
+
+    private function get gridLayout():GridLayout
+    {
+        return layout as GridLayout;
+    }
+
+    private function get gridDimensions():GridDimensions
+    {
+        return gridLayout.gridDimensions;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  dataProvider
+    //----------------------------------
+
+    private var _dataProvider:IList = null;
+
+    [Bindable("dataProviderChanged")]
+
+    /**
+     *  A list of items that correspond to the rows in the grid.   The grid's columns
+     *  select different item properties to display in grid cells.
+     *
+     *  @default null
+     *
+     *  @see columns
+     */
+    public function get dataProvider():IList
+    {
+        return _dataProvider;
+    }
+
+    /**
+     *  @private
+     */
+    public function set dataProvider(value:IList):void
+    {
+        if (_dataProvider == value)
+            return;
+
+        const oldDataProvider:IList = dataProvider;
+        if (oldDataProvider)
+            oldDataProvider.removeEventListener(CollectionEvent.COLLECTION_CHANGE, dataProvider_collectionChangeHandler);
+
+        _dataProvider = value;
+
+        // The listener is a local method, so creating a weak reference to it (last addEventListener
+        // parameter) is safe, since the listener's lifetime is the same as this object.
+
+        const newDataProvider:IList = dataProvider;
+        if (newDataProvider)
+            newDataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, dataProvider_collectionChangeHandler, false, 0, true);
+
+        invalidateSize();
+        invalidateDisplayList();
+
+        //TBD: clear selection and dimnsions
+
+        dispatchEvent(new Event("dataProviderChanged"));
+    }
+
+    //----------------------------------
+    //  columns
+    //----------------------------------
+
+    private var _columns:IList = null; // list of GridColumns
+
+    [Bindable("columnsChanged")]
+
+    /**
+     *  The list of GridColumns displayed by this grid.  Each column
+     *  selects different dataProvider item properties to display in grid cells.
+     *
+     *  @default null
+     *
+     *  @see dataProvider
+     */
+    public function get columns():IList
+    {
+        return _columns;
+    }
+
+    /**
+     *  @private
+     */
+    public function set columns(value:IList):void
+    {
+        if (_columns == value)
+            return;
+
+        // Remove the old column listener, and set each column's grid=null, columnIndex=-1.
+
+        const oldColumns:IList = columns;
+        if (oldColumns)
+        {
+            oldColumns.removeEventListener(CollectionEvent.COLLECTION_CHANGE, columns_collectionChangeHandler);
+            for (var index:int = 0; index < oldColumns.length; index++)
+            {
+                var oldColumn:GridColumn = GridColumn(oldColumns.getItemAt(index));
+                oldColumn.setGrid(null);
+                oldColumn.setColumnIndex(-1);
+            }
+        }
+
+        _columns = value;
+
+        // Add the new columns listener, and set their grid,columnIndex properties.
+        // The listener is a local method, so creating a weak reference to it (last
+        // addEventListener parameter) is safe, since the listener's lifetime is the
+        // same as this object.
+
+        const newColumns:IList = columns;
+        if (newColumns)
+        {
+            newColumns.addEventListener(CollectionEvent.COLLECTION_CHANGE, columns_collectionChangeHandler, false, 0, true);
+            for (index = 0; index < newColumns.length; index++)
+            {
+                var newColumn:GridColumn = GridColumn(newColumns.getItemAt(index));
+                newColumn.setGrid(this);
+                newColumn.setColumnIndex(index);
+            }
+        }
+
+        invalidateSize();
+        invalidateDisplayList();
+
+        //TBD: clear selection and dimnsions
+
+        dispatchEvent(new Event("columnsChanged"));
+    }
+
+
+    //----------------------------------
+    //  hoverRowIndex
+    //----------------------------------
+
+    private var _hoverRowIndex:int = -1;
+
+    public function get hoverRowIndex():int
+    {
+        return _hoverRowIndex;
+    }
+
+    public function set hoverRowIndex(value:int):void
+    {
+        if (value == _hoverRowIndex)
+            return;
+
+        _hoverRowIndex = value;
+        if (hoverIndicator)
+            invalidateDisplayList();
+    }
+
+    //----------------------------------
+    //  hoverColumnIndex
+    //----------------------------------
+
+    public var hoverColumnIndex:int = -1;
+
+    //----------------------------------
+    //  caretRowIndex
+    //----------------------------------
+
+    private var _caretRowIndex:int = -1;
+
+    public function get caretRowIndex():int
+    {
+        return _caretRowIndex;
+    }
+
+    public function set caretRowIndex(value:int):void
+    {
+        if (value == _caretRowIndex)
+            return;
+
+        _caretRowIndex = value;
+        if (caretIndicator)
+            invalidateDisplayList();
+    }
+
+    //----------------------------------
+    //  caretColumnIndex
+    //----------------------------------
+
+    public var caretColumnIndex:int = -1;
+
+
+    //----------------------------------
+    //  caretIndicator
+    //----------------------------------
+
+    //[SkinPart(required="false", type="flash.display.DisplayObject")]
+
+    public var caretIndicator:IFactory;
+
+    //----------------------------------
+    //  hoverIndicator
+    //----------------------------------
+
+    //[SkinPart(required="false", type="flash.display.DisplayObject")]
+
+    public var hoverIndicator:IFactory;
+
+
+    //----------------------------------
+    //  selectionIndicator
+    //----------------------------------
+
+    //[SkinPart(required="false", type="flash.display.DisplayObject")]
+
+    public var selectionIndicator:IFactory;
+
+
+    //----------------------------------
+    //  columnSeparator
+    //----------------------------------
+
+    //[SkinPart(required="false", type="mx.core.IVisualElement")]
+
+    public var columnSeparator:IFactory;
+
+    //----------------------------------
+    //  rowSeparator
+    //----------------------------------
+
+    //[SkinPart(required="false", type="mx.core.IVisualElement")]
+
+    public var rowSeparator:IFactory;
+
+
+    //----------------------------------
+    //  rowBackground
+    //----------------------------------
+
+    //[SkinPart(required="false", type="mx.core.IVisualElement")]
+
+    public var rowBackground:IFactory;
+
+
+    //----------------------------------
+    //  columnBackground
+    //----------------------------------
+
+    //[SkinPart(required="false", type="mx.core.IVisualElement")]
+
+    public var columnBackground:IFactory;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Method Overrides
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  During virtual layout updateDisplayList() eagerly validates lazily
+     *  created (or recycled) IRs.   We don't want changes to those IRs to
+     *  invalidate the size of the Grid.
+     */
+    override public function invalidateSize():void
+    {
+        if (!inUpdateDisplayList)
+            super.invalidateSize();
+    }
+
+    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+    {
+        inUpdateDisplayList = true;
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+        inUpdateDisplayList = false;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Internal Grid Access
+    //
+    //--------------------------------------------------------------------------
+
+    private function getGridColumn(columnIndex:int):GridColumn
+    {
+        const columns:IList = columns;
+        if ((columns == null) || (columnIndex >= columns.length))
+            return null;
+
+        return columns.getItemAt(columnIndex) as GridColumn;
+    }
+
+    private function getDataProviderItem(rowIndex:int):Object
+    {
+        const dataProvider:IList = dataProvider;
+        if ((dataProvider == null) || (rowIndex >= dataProvider.length))
+            return null;
+
+        return dataProvider.getItemAt(rowIndex);
+    }
+
+    private function getVisibleItemRenderer(rowIndex:int, columnIndex:int):IVisualElement
+    {
+        const layout:GridLayout = layout as GridLayout;
+        if (!layout)
+            return null;
+
+        return layout.getVisibleItemRenderer(rowIndex, columnIndex);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  GridEvents
+    //
+    //--------------------------------------------------------------------------
+
+    private var rollRowIndex:int = -1;
+    private var rollColumnIndex:int = -1;
+
+    protected function grid_mouseDownDragUpHandler(event:MouseEvent):void
+    {
+        const eventStageXY:Point = new Point(event.stageX, event.stageY);
+        const eventGridXY:Point = globalToLocal(eventStageXY);
+        const gridDimensions:GridDimensions = GridLayout(layout).gridDimensions;
+        const eventRowIndex:int = gridDimensions.getRowIndexAt(eventGridXY.x, eventGridXY.y);
+        const eventColIndex:int = gridDimensions.getColumnIndexAt(eventGridXY.x, eventGridXY.y);
+
+        var gridEventType:String;
+        switch(event.type)
+        {
+            case MouseEvent.MOUSE_MOVE: gridEventType = GridEvent.GRID_MOUSE_DRAG; break;
+            case MouseEvent.MOUSE_DOWN: gridEventType = GridEvent.GRID_MOUSE_DOWN; break;
+            case MouseEvent.MOUSE_UP:   gridEventType = GridEvent.GRID_MOUSE_UP; break;
+        }
+
+        dispatchGridEvent(event, gridEventType, eventGridXY, eventRowIndex, eventColIndex);
+    }
+
+    protected function grid_mouseMoveHandler(event:MouseEvent):void
+    {
+        const eventStageXY:Point = new Point(event.stageX, event.stageY);
+        const eventGridXY:Point = globalToLocal(eventStageXY);
+        const gridDimensions:GridDimensions = GridLayout(layout).gridDimensions;
+        const eventRowIndex:int = gridDimensions.getRowIndexAt(eventGridXY.x, eventGridXY.y);
+        const eventColIndex:int = gridDimensions.getColumnIndexAt(eventGridXY.x, eventGridXY.y);
+
+        if ((eventRowIndex != rollRowIndex) || (eventColIndex != rollColumnIndex))
+        {
+            if ((rollRowIndex != -1) || (rollColumnIndex != -1))
+                dispatchGridEvent(event, GridEvent.GRID_ROLL_OUT, eventGridXY, rollRowIndex, rollColumnIndex);
+            if ((eventRowIndex != -1) || (eventColIndex != -1))
+                dispatchGridEvent(event, GridEvent.GRID_ROLL_OVER, eventGridXY, eventRowIndex, eventColIndex);
+            rollRowIndex = eventRowIndex;
+            rollColumnIndex = eventColIndex;
+        }
+    }
+
+    protected function grid_mouseRollOutHandler(event:MouseEvent):void
+    {
+        if ((rollRowIndex != -1) || (rollColumnIndex != -1))
+        {
+            const eventStageXY:Point = new Point(event.stageX, event.stageY);
+            const eventGridXY:Point = globalToLocal(eventStageXY);
+            dispatchGridEvent(event, GridEvent.GRID_ROLL_OUT, eventGridXY, rollRowIndex, rollColumnIndex);
+            rollRowIndex = -1;
+            rollColumnIndex = -1;
+        }
+    }
+
+    /**
+     *  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 function dispatchGridEvent(mouseEvent:MouseEvent, type:String, gridXY:Point, rowIndex:int, columnIndex:int):void
+    {
+        if (isEventTargetExcluded(mouseEvent))
+            return;
+
+        const column:GridColumn = getGridColumn(columnIndex);
+        const item:Object = getDataProviderItem(rowIndex);
+        const itemRenderer:IVisualElement = getVisibleItemRenderer(rowIndex, columnIndex);
+        const bubbles:Boolean = mouseEvent.bubbles;
+        const cancelable:Boolean = mouseEvent.cancelable;
+        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, rowIndex, columnIndex, column, item, itemRenderer,
+            ctrlKey, altKey, shiftKey, buttonDown, delta);
+        dispatchEvent(event);
+    }
+
+    protected function gridRollOverHandler(event:GridEvent):void
+    {
+        hoverRowIndex = event.rowIndex;
+        hoverColumnIndex = event.columnIndex;
+    }
+
+    protected function gridRollOutHandler(event:GridEvent):void
+    {
+        hoverRowIndex = -1;
+        hoverColumnIndex = -1;
+    }
+
+    protected function gridMouseDownHandler(event:GridEvent):void
+    {
+        const rowIndex:int = event.rowIndex;
+        const colIndex:int = event.columnIndex;
+
+        if (event.ctrlKey)
+        {
+            if (gridSelection.containsRow(rowIndex))
+                gridSelection.removeRow(rowIndex);
+            else
+                gridSelection.addRow(rowIndex);
+            caretRowIndex = rowIndex;
+            caretColumnIndex = colIndex;
+        }
+        else if (event.shiftKey && (caretRowIndex != -1) && (caretColumnIndex != -1))
+        {
+            const startRowIndex:int = Math.min(rowIndex, caretRowIndex);
+            const endRowIndex:int = Math.max(rowIndex, caretRowIndex);
+            const rowIndices:Vector.<int> = new Vector.<int>(1 + (endRowIndex - startRowIndex), true);
+            for (var selectedRowIndex:int = startRowIndex; selectedRowIndex <= endRowIndex; selectedRowIndex++)
+                rowIndices[selectedRowIndex - startRowIndex] = selectedRowIndex;
+            gridSelection.setRows(rowIndices);
+        }
+        else
+        {
+            gridSelection.setRow(rowIndex);
+            caretRowIndex = rowIndex;
+            caretColumnIndex = colIndex;
+        }
+
+        invalidateDisplayList();
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Down-Drag-Up Mouse Handling
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  This listener is runs in the capture phase (before any other MouseEvent listeners)
+     *  so that it can redispatch a cancelable=true copy of the event.
+     */
+    private static function redispatchMouseDownHandler(e:MouseEvent):void
+    {
+        if (e.cancelable)
+            return;
+
+        e.stopImmediatePropagation();
+        const cancelableEvent:MouseEvent =
+            new MouseEvent(e.type, e.bubbles, true, e.localX, e.localY, e.relatedObject,
+                e.ctrlKey, e.altKey, e.shiftKey, e.buttonDown, e.delta);
+        e.target.dispatchEvent(cancelableEvent);
+    }
+
+    private static function addDownDragUpHandler(target:UIComponent, handler:Function):void
+    {
+        var f:Function = function(e:Event):void
+        {
+            var sbr:IEventDispatcher;
+            switch(e.type)
+            {
+                case MouseEvent.MOUSE_DOWN:
+                    if (e.isDefaultPrevented())
+                        break;
+                    handler(e);
+                    sbr = target.systemManager.getSandboxRoot();
+                    sbr.addEventListener(MouseEvent.MOUSE_MOVE, f, true);
+                    sbr.addEventListener(MouseEvent.MOUSE_UP, f, true );
+                    sbr.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, f, true);
+                    break;
+                case MouseEvent.MOUSE_MOVE:
+                    handler(e);
+                    break;
+                case MouseEvent.MOUSE_UP:
+                    handler(e);
+                    sbr = target.systemManager.getSandboxRoot();
+                    sbr.removeEventListener(MouseEvent.MOUSE_MOVE, f, true);
+                    sbr.removeEventListener(MouseEvent.MOUSE_UP, f, true);
+                    sbr.removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, f, true);
+                    break;
+                case "removeHandler":
+                    target.removeEventListener("removeHandler", f);
+                    target.removeEventListener(MouseEvent.MOUSE_DOWN, f);
+                    sbr = target.systemManager.getSandboxRoot();
+                    sbr.removeEventListener(MouseEvent.MOUSE_MOVE, f, true);
+                    sbr.removeEventListener(MouseEvent.MOUSE_UP, f, true);
+                    sbr.removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, f, true);
+                    break;
+            }
+        }
+        target.addEventListener(MouseEvent.MOUSE_DOWN, f);
+        target.addEventListener("removeHandler", f);
+    }
+
+    private static function removeDownDragUpHandler(target:UIComponent, handler:Function):void
+    {
+        target.dispatchEvent(new RemoveHandlerEvent(handler));
+    }
+
+
+    //--------------------------------------------------------------------------
+    //
+    //  IList listeners: columns, dataProvider
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private function dataProvider_collectionChangeHandler(event:CollectionEvent):void
+    {
+        gridDimensions.dataProviderCollectionChanged(event);
+        gridLayout.dataProviderCollectionChanged(event);
+        gridSelection.dataProviderCollectionChanged(event);
+
+        // TBD: hover and caretIndex
+
+        invalidateSize();
+        invalidateDisplayList();
+    }
+
+
+
+    /**
+     *  @private
+     */
+    private function columns_collectionChangeHandler(event:CollectionEvent):void
+    {
+        // TBD
+    }
+}
+}
+
+import spark.layouts.supportClasses.LayoutBase;
+
+class RemoveHandlerEvent extends flash.events.Event
+{
+    public var handler:Function;
+    public function RemoveHandlerEvent(handler:Function)
+    {
+        this.handler = handler;
+        super("removeHandler");
+    }
+}
+
+class NullLayout extends LayoutBase
+{
+    public function NullLayout()
+    {
+        super();
+    }
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 3243
Author:   rfrishbe@adobe.com
Date:     2008-09-17T16:14:14.399661Z

Log Message:
-----------
DataGroup/Group split work.  DataGroup is for holding data items that may require item rendering. Group only holds visual items now.  The Group APIs stay the same (numItems, addItem, etc...).  DataGroup uses the IList APIs through its dataProvider.  So the equivalent methods are now dataProvider.length, dataProvider, addItem, etc...  This is just the initial split work as there's more to come to get the files up to spec.  We will also have to visit how we deal with graphic elements in DataGroup vs. Group.  For now the implementations are roughly the same.

QE: Yes - tests may break.  please update them.
Doc: Yes
Bugs: -
Reviewer: Glenn

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/BasicLayout.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/DataComponent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/DataComponentSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/PanelSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/Flex4Classes.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/events/FlexEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/mxml-2009-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/ItemsComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/gumbo-manifest.xml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/graphics/Graphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/ListSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/manifest.xml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/DataGroup.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/component/Selector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/SelectorSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/core/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/intf/ILayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/flex4test.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/flex/skin/ComplexPanelSkin.mxml</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -55,20 +55,6 @@
     //--------------------------------------------------------------------------

     /**
-     *  Flag that determines if the items in a list are rendered directly or
-     *  wrapped by an item renderer.
-     *
-     *
For example, a list may contain Image components. In this case, you want
-     *  the images to be wrapped by the item renderer so highlighting and
-     *  selection works correctly. Another list may have ToggleButtons as items.
-     *  In this case, the buttons themselves are the renderers, and do not
-     *  need to be wrapped.

-     *
-     *  @default false
-     */
-    public var itemsAreRenderers:Boolean = false;
-
-    /**
      *  Flag that determines if the list supports multiple selection.
      *
      *  TODO: description of how single selection properties
@@ -179,7 +165,7 @@
             var count:int = selectedIndices.length;

             for (var i:int = 0; i < count; i++)
-                result[i] = getItemAt(selectedIndices[i]);
+                result[i] = dataProvider.getItemAt(selectedIndices[i]);
         }

         return result;
@@ -196,7 +182,7 @@
             var count:int = value.length;

             for (var i:int = 0; i < count; i++)
-                indices[i] = getItemIndex(value[i]);
+                indices[i] = dataProvider.getItemIndex(value[i]);
         }

         selectedIndices = value;
@@ -227,25 +213,11 @@
      */
     override protected function itemSelected(item:Object, selected:Boolean):void
     {
-        var item:* = currentContentGroup.getItemSkin(item);
+        var item:* = dataGroup.getItemSkin(item);

         if (item)
             item.selected = selected;
     }
-
-    /**
-     *  Called when a skin part has been added or assigned.
-     *  This method sets the "alwaysUseItemRenderer" flag on the
-     *  contentGroup part.
-     */
-    override protected function partAdded(partName:String, instance:*):void
-    {
-        super.partAdded(partName, instance);
-
-        if (instance == contentGroup && !itemsAreRenderers)
-            contentGroup.alwaysUseItemRenderer = true;
-    }
-

     //--------------------------------------------------------------------------
     //
@@ -316,7 +288,7 @@
             count = removedItems.length;
             for (i = 0; i < count; i++)
             {
-                itemSelected(getItemAt(removedItems[i]), false);
+                itemSelected(dataProvider.getItemAt(removedItems[i]), false);
             }
         }

@@ -326,7 +298,7 @@
             count = addedItems.length;
             for (i = 0; i < count; i++)
             {
-                itemSelected(getItemAt(addedItems[i]), true);
+                itemSelected(dataProvider.getItemAt(addedItems[i]), true);
             }
         }
     }
@@ -341,11 +313,11 @@
      *  @private
      *  Called when an item has been added to this component.
      */
-    override protected function itemAddedHandler(event:ItemExistenceChangedEvent):void
-    {
-        super.itemAddedHandler(event);
-
-        var skin:* = currentContentGroup.getItemSkin(event.relatedObject);
+    override protected function itemAddedHandler(item:*, index:int):void
+    {
+        super.itemAddedHandler(item, index);
+
+        var skin:* = dataGroup.getItemSkin(item);

         if (skin)
             skin.addEventListener("click", item_clickHandler);
@@ -355,11 +327,11 @@
      *  @private
      *  Called when an item has been removed from this component.
      */
-    override protected function itemRemovedHandler(event:ItemExistenceChangedEvent):void
-    {
-        super.itemRemovedHandler(event);
-
-        var skin:* = currentContentGroup.getItemSkin(event.relatedObject);
+    override protected function itemRemovedHandler(item:*, index:int):void
+    {
+        super.itemRemovedHandler(item, index);
+
+        var skin:* = dataGroup.getItemSkin(item);

         if (skin)
             skin.removeEventListener("click", item_clickHandler);
@@ -373,7 +345,7 @@
     {
         // Multiple selection needs to be added here....

-        selectedItem = currentContentGroup.getSkinItem(DisplayObject(event.currentTarget));
+        selectedItem = dataGroup.getSkinItem(DisplayObject(event.currentTarget));
     }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 22564
Author:   tkraikit@adobe.com
Date:     2011-09-14T19:50:07.656843Z

Log Message:
-----------
Update ASDoc "@productversion Flex 4.5.2" => "@productversion Flex 4.6"

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/OnDemandDataProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DateSpinnerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/graphics/BitmapScaleMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ContentBackgroundAppearance.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/framework/src/mx/core/FlexVersion.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ArrowDirection.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/FormatPattern.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentNavigationButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/DropDownController.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/core/ISoftKeyboardHintClient.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/CalloutArrow.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutButton.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutActionBarSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/YearProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/calendarClasses/DateSelectorDisplayMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/ToggleSwitch.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledBackButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListScrollerSkin.mxml</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/ScrollSnappingMode.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/supportClasses/StageTextSkinBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultTransparentActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextAreaSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/ToggleSwitchSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateAndTimeProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutViewNavigatorSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/SpinnerListContainerSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/CalloutPosition.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImageSource.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/DataGroup.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/SkinnablePopUpContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SplitViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/Callout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/StageTextInputSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/collections/NumericDataProvider.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/preloaders/SplashScreenImage.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/calendarClasses/DateSpinnerItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerList.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/DateSpinner.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/CalendarDate.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/CalloutSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobiletheme/src/spark/skins/mobile/DefaultBeveledActionButtonSkin.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/SpinnerListItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/globalization/supportClasses/DateTimeFormatterEx.as</path>

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

--- frameworks/projects/spark/src/spark/components/List.as
+++ frameworks/projects/spark/src/spark/components/List.as
@@ -1056,7 +1056,7 @@
      *
      *  @langversion 3.0
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public function get pageScrollingEnabled():Boolean
     {
@@ -1097,7 +1097,7 @@
      *
      *  @langversion 3.0
      *  @playerversion AIR 3
-     *  @productversion Flex 4.5.2
+     *  @productversion Flex 4.6
      */
     public function get scrollSnappingMode():String
     {


Transferred from the Adobe Open Source Subversion Repository

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

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

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

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

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

 package spark.primitives
 {


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

--- frameworks/projects/advancedgrids/src/mx/skins/halo/AdvancedDataGridHeaderHorizontalSeparator.as
+++ frameworks/projects/advancedgrids/src/mx/skins/halo/AdvancedDataGridHeaderHorizontalSeparator.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.skins.halo
 {


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

--- frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/ChartBaseAutomationImpl.as
+++ frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/ChartBaseAutomationImpl.as
@@ -0,0 +1,463 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.automation.delegates.charts
+{
+
+
+	import flash.display.DisplayObject;
+	import flash.events.Event;
+	import flash.events.KeyboardEvent;
+	import flash.events.MouseEvent;
+	import flash.geom.Point;
+	import flash.ui.Keyboard;
+
+	import mx.automation.Automation;
+	import mx.automation.IAutomationManager;
+	import mx.automation.IAutomationObject;
+	import mx.automation.IAutomationObjectHelper;
+	import mx.automation.delegates.DragManagerAutomationImpl;
+	import mx.automation.delegates.core.UIComponentAutomationImpl;
+	import mx.automation.events.AutomationDragEvent;
+	import mx.automation.events.ChartSelectionChangeEvent;
+	import mx.automation.tabularData.ChartBaseTabularData;
+	import mx.charts.ChartItem;
+	import mx.charts.HitData;
+	import mx.charts.chartClasses.ChartBase;
+	import mx.charts.chartClasses.Series;
+	import mx.charts.events.ChartItemEvent;
+	import mx.charts.events.ChartEvent;
+	import mx.core.EventPriority;
+
+	[Mixin]
+	/**
+	 *
+	 *  Defines the methods and properties required to perform instrumentation for the
+	 *  ChartBase base class.
+	 *
+	 *  @see mx.charts.chartClasses.ChartBase
+	 *
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	public class ChartBaseAutomationImpl extends UIComponentAutomationImpl
+	{
+		include "../../../core/Version.as";
+
+		//--------------------------------------------------------------------------
+		//
+		//  Class methods
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Registers the delegate class for a component class with automation manager.
+		 *
+		 *  @param root The SystemManger of the application.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public static function init(root:DisplayObject):void
+		{
+			Automation.registerDelegateClass(ChartBase, ChartBaseAutomationImpl);
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Constructor
+		//
+		//--------------------------------------------------------------------------
+
+		/**
+		 *  Constructor.
+		 *  @param obj ChartBase object to be automated.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 9
+		 *  @playerversion AIR 1.1
+		 *  @productversion Flex 3
+		 */
+		public function ChartBaseAutomationImpl(obj:ChartBase)
+		{
+			super(obj);
+
+			chartBase = obj;
+			obj.addEventListener(ChartItemEvent.ITEM_CLICK, chartItemClickHandler, false, 0, true);
+			obj.addEventListener(ChartItemEvent.ITEM_DOUBLE_CLICK, chartItemDoubleClickHandler, false, 0, true);
+			obj.addEventListener(ChartItemEvent.CHANGE, chartItemChangeHandler, false, 0, true);
+			obj.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler1, false, EventPriority.DEFAULT-10, true);
+
+			// we are not listening to mouse events as we have special events from chart
+			// the special events are needed to take care of the snesitiviy based triggering of the events
+			// on the item and on the chart. i.e even if the mouse is on the chart, the event will be the
+			// item click if htis point is within the sensitivity range of that datapoint.
+			// it is not possible to differentiate this from outside. Hence charts gave a new event as chartClick
+			// which will be triggered only if the hitdata set is empty.
+			obj.addEventListener(ChartEvent.CHART_CLICK, chartClickHandler, false, 0, true);
+
+
+
+			// we are not getting the double click event at all
+			// hence this portion is commented
+			//obj.addEventListener(ChartEvent.CHART_DOUBLE_CLICK, chartClickHandler, false, 0, true);
+
+			// we are not listening to mouse events refer the comments of ChartEvent.CHART_CLICK for details
+			//obj.addEventListener(MouseEvent.CLICK, mouseClickHandler, false, 0, true);
+			//obj.addEventListener(MouseEvent.DOUBLE_CLICK, mouseClickHandler, false, 0, true);
+
+
+		}
+
+		//--------------------------------------------------------------------------
+		//
+		//  Variables
+		//
+		//--------------------------------------------------------------------------
+
+		//----------------------------------
+		//  chartBase
+		//----------------------------------
+
+		/**
+		 *  @private
+		 *  storage for the owner component
+		 */
+		private var chartBase:ChartBase;
+
+
+		/**
+		 *  @private
+		 */
+		override public function createAutomationIDPart(child:IAutomationObject):Object
+		{
+			var help:IAutomationObjectHelper = Automation.automationObjectHelper;
+			return help.helpCreateIDPart(uiAutomationObject, child);
+		}
+
+		override public function createAutomationIDPartWithRequiredProperties(child:IAutomationObject, properties:Array):Object
+		{
+			var help:IAutomationObjectHelper = Automation.automationObjectHelper;
+			return (help
+				? help.helpCreateIDPartWithRequiredProperties(uiAutomationObject, child,properties): null);
+		}
+
+
+		/**
+		 *  @private
+		 */
+		override public function resolveAutomationIDPart(part:Object):Array
+		{
+			var help:IAutomationObjectHelper = Automation.automationObjectHelper;
+			return help.helpResolveIDPart(uiAutomationObject, part);
+		}
+
+		/**
+		 *  @private
+		 */
+		override public function getAutomationChildAt(index:int):IAutomationObject
+		{
+			return chartBase.series[index] ;
+		}
+
+		/**
+		 *  @private
+		 */
+		override public function getAutomationChildren():Array
+		{
+			var childList:Array = new Array();
+
+			var tempArray1:Array = chartBase.series;
+			if (tempArray1)
+			{
+				var n:int = tempArray1.length;
+				for(var i:int = 0; i < n ; i++)
+				{
+					childList.push(tempArray1[i]);
+				}
+			}
+			return  childList;
+		}
+
+		/**
+		 *  @private
+		 */
+		override public function get numAutomationChildren():int
+		{
+			return chartBase.series.length;
+		}
+
+		/**
+		 *  @private
+		 */
+		override public function get automationTabularData():Object
+		{
+			return new ChartBaseTabularData(uiAutomationObject);
+		}
+
+
+		/**
+		 *  @private
+		 */
+		override public function getLocalPoint(inPoint:Point, targetObj:DisplayObject):Point
+		{
+			// in the mousedown handler of the event dispatches the coordinates
+			// on the series. Replaying of event has actual dragged item which is the same
+			// series as target. So we need not convert this point. We can return the same
+			// point.
+
+			return inPoint;
+		}
+
+		/**
+		 *  @private
+		 */
+		override public function isDragEventPositionBased():Boolean
+		{
+			// for almost all components it is not.
+			// however for compoents like chart it is coordinate based
+			return true;
+		}
+		//--------------------------------------------------------------------------
+		//
+		//  Event handlers
+		//
+		//--------------------------------------------------------------------------
+
+
+		/**
+		 *  @private
+		 */
+		override protected function keyDownHandler(event:KeyboardEvent):void
+		{
+			// as of now this will be called only if it is the enter key
+			// dont record this event
+			return;
+
+		}
+
+
+		/**
+		 * @private
+		 */
+		private function chartClickHandler(event:ChartEvent):void
+		{
+
+			// check whether the event is coming from the chart base
+			if(event.target is ChartBase)
+			{
+				var am:IAutomationManager = Automation.automationManager;
+				var ao:IAutomationObject = event.target as IAutomationObject;
+				if (ao)
+				{
+					var newMouseEvent:MouseEvent = null;
+
+					if (event.type==  ChartEvent.CHART_CLICK)
+						newMouseEvent = new MouseEvent(MouseEvent.CLICK);
+
+					newMouseEvent.shiftKey=event.shiftKey;
+					newMouseEvent.altKey=event.altKey;
+					newMouseEvent.ctrlKey=event.ctrlKey;
+					am.recordAutomatableEvent(ao, newMouseEvent,true);
+
+				}
+			}
+		}
+		/**
+		 *  @private
+		 */
+		protected function keyDownHandler1(event:KeyboardEvent):void
+		{
+			if (event.keyCode == Keyboard.ENTER)
+				return;
+			// as of now this will be called only if it is the enter key
+			// dont record this event
+
+		}
+
+
+		/**
+		 * @private
+		 */
+		private function chartItemClickHandler(event:ChartItemEvent):void
+		{
+			var am:IAutomationManager = Automation.automationManager;
+			var itemCount:int = event.hitSet.length;
+
+			event.localX = int(event.localX);
+			event.localY = int(event.localY);
+
+			for (var i:int = 0; i < itemCount; ++i)
+			{
+				var data:HitData = event.hitSet[i];
+				var ao:IAutomationObject = data.element as IAutomationObject;
+				if (ao)
+					am.recordAutomatableEvent(ao, event,true);
+			}
+		}
+
+		/**
+		 * @private
+		 */
+		private function chartItemDoubleClickHandler(event:ChartItemEvent):void
+		{
+			var am:IAutomationManager = Automation.automationManager;
+			var itemCount:int = event.hitSet.length;
+
+			for (var i:int = 0; i < itemCount; ++i)
+			{
+				var data:HitData = event.hitSet[i];
+				var ao:IAutomationObject = data.element as IAutomationObject;
+				if (ao)
+					am.recordAutomatableEvent(ao, event,true);
+			}
+		}
+
+
+
+		/**
+		 *  @private
+		 */
+		private function chartItemChangeHandler(event:ChartItemEvent):void
+		{
+
+			var am:IAutomationManager = Automation.automationManager;
+
+			var selectedIndices:Array =((event.currentTarget)as ChartBase).selectedChartItems;
+			var selectionDetails:Array = new Array;
+			// var chartItemIndices:Array = new Array;
+			var n:int = selectedIndices.length;
+			for (var index:int=0; index < n ; index ++)
+			{
+				// get the item index - the selected item has the index datamember
+				var chartItemIndex:int = (((((event.currentTarget)as ChartBase).selectedChartItems)[index]) as ChartItem).index;
+				var chartSeries:Array = ((event.currentTarget)as ChartBase).series;
+				var selecteditems:Array = ((event.currentTarget)as ChartBase).selectedChartItems;
+				var seriesIndex:int = chartSeries.indexOf((selecteditems[index]).element);
+				var autoName:String = (chartSeries[seriesIndex] as Series).automationName;
+
+				if (autoName != null )
+					autoName = autoName.replace(";",",");
+				else
+					autoName = "  ";
+
+				var selection:String = ("[" + autoName + " - " );
+				selection = selection.concat( String (chartItemIndex) + ":" + String (seriesIndex) + " ] ");
+
+				selectionDetails= selectionDetails.concat(selection);
+			}
+			if (selectedIndices.length == 0)
+			{
+				// this case happens if there were previus selections and then the user
+				//clicks on an empty area.
+				// in this case, we need to clear the current selection
+				selection= "clear";
+				selectionDetails= selectionDetails.concat(selection);
+			}
+
+			var chartEvent:ChartSelectionChangeEvent = new ChartSelectionChangeEvent(event.type,selectionDetails );
+
+
+			//var data:ChartItem = ((event.currentTarget)as ChartBase).selectedChartItems[0];
+			//var ao:IAutomationObject = data.element as IAutomationObject;
+			var data:ChartBase = ((event.currentTarget)as ChartBase);
+			var ao:IAutomationObject = data as IAutomationObject;
+			if (ao)
+				am.recordAutomatableEvent(ao, chartEvent);
+		}
+
+
+
+		/**
+		 *  @private
+		 */
+		override public function replayAutomatableEvent(event:Event):Boolean
+		{
+			var help:IAutomationObjectHelper = Automation.automationObjectHelper;
+
+			if (event is ChartSelectionChangeEvent)
+			{
+				var selectEvent:ChartSelectionChangeEvent = event as ChartSelectionChangeEvent;
+				var selectionInfoDetails:Array = selectEvent.selectionInfo;
+
+				// clear all the series selected Items
+				var seriesCount:Number= chartBase.series.length;
+				var emptyArray:Array = [];
+				chartBase.clearSelection();
+
+				if (( selectionInfoDetails.length == 1) && (selectionInfoDetails[0]=="clear"))
+					return true;
+				// the selection needs to be cleared.
+				// since this is already done, it is not necessary to do this again, hence
+
+				var prevSeriesIndex:int = -1;
+				var n:int = selectionInfoDetails.length;
+				for (var index:int=0; index < n ; index++)
+				{
+
+					var currentSelection:String = selectionInfoDetails[index];
+					// split the string to get the itemIndex and seriedIndex
+					// each element will look like [Country,Silver - 1:0 ]
+					var tempArray:Array= currentSelection.split("-");
+					if( tempArray.length > 1)
+					{
+						var data:String = tempArray[1];
+						// data is now 1:0 ]
+						data = data.replace("]","");
+						tempArray = data.split(":");
+
+						if (tempArray.length > 1)
+						{
+							//series.selectedIndices += itemIndex;
+							var seriesIndex:Number = Number(tempArray[1]);
+							var itemIndex:Number = Number(tempArray[0]);
+							if (prevSeriesIndex != seriesIndex)
+							{
+								if (prevSeriesIndex != -1)
+									(chartBase.series[prevSeriesIndex]).selectedIndices = selectedItems;
+
+								prevSeriesIndex = seriesIndex;
+								var selectedItems:Array = [];
+							}
+							// get the series with the current series item
+							selectedItems.push(itemIndex);
+						}
+
+						// the last series assignment
+						(chartBase.series[seriesIndex]).selectedIndices = selectedItems;
+					}
+				}
+
+				return true;
+			}
+			if (event is AutomationDragEvent)
+			{
+				var prevSlectionMode:String= chartBase.selectionMode;
+				chartBase.selectionMode="none";
+
+				DragManagerAutomationImpl.replayAutomatableEvent(uiAutomationObject,
+					event);
+				chartBase.selectionMode=prevSlectionMode;
+				return true;
+			}
+
+			return super.replayAutomatableEvent(event);
+		}
+
+
+
+	}
+}


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

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

 package mx.core
 {


Added spark.skins.ios7 variation

Added spark.skins.ios7 variation

Signed-off-by: Erik de Bruin <c195b508e6f0c57aeafdb5e96947e2b79e6a4b40@ixsoftware.nl>

--- frameworks/projects/mobiletheme/src/MobileThemeClasses.as
+++ frameworks/projects/mobiletheme/src/MobileThemeClasses.as
@@ -107,5 +107,37 @@
 		import spark.skins.android4.VScrollBarThumbSkin; spark.skins.android4.VScrollBarThumbSkin;
 		import spark.skins.android4.supportClasses.CalloutArrow; spark.skins.android4.supportClasses.CalloutArrow;

+		//iOS7+ skins
+		import spark.skins.ios7.ActionBarSkin; spark.skins.ios7.ActionBarSkin;
+		import spark.skins.ios7.BusyIndicatorSkin; spark.skins.ios7.BusyIndicatorSkin;
+		import spark.skins.ios7.ButtonBarFirstButtonSkin; spark.skins.ios7.ButtonBarFirstButtonSkin;
+		import spark.skins.ios7.ButtonBarMiddleButtonSkin; spark.skins.ios7.ButtonBarMiddleButtonSkin;
+		import spark.skins.ios7.ButtonBarSkin; spark.skins.ios7.ButtonBarSkin;
+		import spark.skins.ios7.ButtonSkin; spark.skins.ios7.ButtonSkin;
+		import spark.skins.ios7.CalloutSkin; spark.skins.ios7.CalloutSkin;
+		import spark.skins.ios7.CheckBoxSkin; spark.skins.ios7.CheckBoxSkin;
+		import spark.skins.ios7.HScrollBarSkin; spark.skins.ios7.HScrollBarSkin;
+		import spark.skins.ios7.HScrollBarThumbSkin; spark.skins.ios7.HScrollBarThumbSkin;
+		import spark.skins.ios7.HSliderSkin; spark.skins.ios7.HSliderSkin;
+		import spark.skins.ios7.HSliderThumbSkin; spark.skins.ios7.HSliderThumbSkin;
+		import spark.skins.ios7.HSliderTrackSkin; spark.skins.ios7.HSliderTrackSkin;
+		import spark.skins.ios7.RadioButtonSkin; spark.skins.ios7.RadioButtonSkin;
+		import spark.skins.ios7.SpinnerListContainerSkin; spark.skins.ios7.SpinnerListContainerSkin;
+		import spark.skins.ios7.SpinnerListScrollerSkin; spark.skins.ios7.SpinnerListScrollerSkin;
+		import spark.skins.ios7.SpinnerListSkin; spark.skins.ios7.SpinnerListSkin;
+		import spark.skins.ios7.StageTextAreaSkin; spark.skins.ios7.StageTextAreaSkin;
+		import spark.skins.ios7.StageTextInputSkin; spark.skins.ios7.StageTextInputSkin;
+		import spark.skins.ios7.TabbedViewNavigatorTabBarSkin; spark.skins.ios7.TabbedViewNavigatorTabBarSkin;
+		import spark.skins.ios7.TextAreaSkin; spark.skins.ios7.TextAreaSkin;
+		import spark.skins.ios7.TextInputSkin; spark.skins.ios7.TextInputSkin;
+		import spark.skins.ios7.ToggleSwitchSkin; spark.skins.ios7.ToggleSwitchSkin;
+		import spark.skins.ios7.TransparentActionButtonSkin; spark.skins.ios7.TransparentActionButtonSkin;
+		import spark.skins.ios7.TransparentNavigationButtonSkin; spark.skins.ios7.TransparentNavigationButtonSkin;
+		import spark.skins.ios7.ViewMenuItemSkin; spark.skins.ios7.ViewMenuItemSkin;
+		import spark.skins.ios7.ViewMenuSkin; spark.skins.ios7.ViewMenuSkin;
+		import spark.skins.ios7.VScrollBarSkin; spark.skins.ios7.VScrollBarSkin;
+		import spark.skins.ios7.VScrollBarThumbSkin; spark.skins.ios7.VScrollBarThumbSkin;
+		import spark.skins.ios7.supportClasses.CalloutArrow; spark.skins.ios7.supportClasses.CalloutArrow;
+
 	}
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 12973
Author:   hmuller@adobe.com
Date:     2009-12-15T23:59:25.427033Z

Log Message:
-----------
Added DataGroup/getItemIndicesInView() method and fixed a DataGroup virtual ItemRenderer leak.

Removed an obsolete FIXME from Spinner.

QE notes:
Doc notes:
Bugs: sdk-24702, sdk-24704
Reviewer: Evtim
Tests run: DataGroup
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Spinner.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DataGroup.as</path>

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

--- frameworks/projects/spark/src/spark/components/Spinner.as
+++ frameworks/projects/spark/src/spark/components/Spinner.as
@@ -353,7 +353,6 @@
     {
 		super.partAdded(partName, instance);

-        // FIXME (hmuller): autoRepeat as a property on Spinner?
         if (instance == incrementButton)
         {
             incrementButton.focusEnabled = false;


Transferred from the Adobe Open Source Subversion Repository

Revision: 14869
Author:   cframpto@adobe.com
Date:     2010-03-19T02:24:27.434644Z

Log Message:
-----------
Merge mirroring changes 14728-14730, 14772-14775, 14806 from 4.x to trunk.

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/MenuBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/HSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/HScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/mx/core/UIFTETextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/PopUpAnchor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flash-integration/src/mx/flash/UIMovieClip.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airspark/src/spark/components/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/Menu.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/VSlider.as</path>
<path kind="dir" action="M">/flex/sdk/trunk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UITextField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/ColorPicker.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/DateField.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/sliderClasses/Slider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/sparkskins/src/mx/skins/spark/CheckBoxSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridHeader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/core/WindowedApplication.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Scroller.as</path>

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

--- frameworks/projects/spark/src/spark/components/VSlider.as
+++ frameworks/projects/spark/src/spark/components/VSlider.as
@@ -17,6 +17,7 @@
 import flash.geom.Rectangle;

 import mx.core.IDataRenderer;
+import mx.core.LayoutDirection;

 import spark.components.supportClasses.SliderBase;

@@ -161,7 +162,9 @@
             var tipBounds:Rectangle = tipAsDisplayObject.getBounds(tipAsDisplayObject.parent);
             var relY:Number = thumb.getLayoutBoundsY() +
                             (thumb.getLayoutBoundsHeight() - tipAsDisplayObject.height) / 2;
-            var relX:Number = layoutDirection == "rtl" ? initialPosition.x + tipBounds.width : initialPosition.x;
+            var relX:Number = layoutDirection == LayoutDirection.RTL ?
+                              initialPosition.x + tipBounds.width :
+                              initialPosition.x;
             var o:Point = new Point(relX, relY);
             var r:Point = thumb.parent.localToGlobal(o);


Transferred from the Adobe Open Source Subversion Repository

Revision: 8483
Author:   smgilson@adobe.com
Date:     2009-07-09T17:52:48.367800Z

Log Message:
-----------
Second checkin to update the namespace in ASDoc MXML syntax descriptions for Spark components

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

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/EaseInOutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Fade.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/MotionPath.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/ColorMatrixFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Power.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/BlurFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/DisplacementMapFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/ShaderFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/DropShadowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/CallAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientBevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateColor.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Animate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransitionShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AddAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Scale.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Graphic.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Rotate.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Resize.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform3D.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Wipe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Sine.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/Move.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/ConvolutionFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/easing/Linear.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/animation/Keyframe.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientGlowFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/SetAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/RemoveAction.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/BevelFilter.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/filters/GradientFilter.as</path>

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

--- frameworks/projects/spark/src/spark/effects/CallAction.as
+++ frameworks/projects/spark/src/spark/effects/CallAction.as
@@ -38,7 +38,7 @@
  *  and adds the following tag attributes:

  *
  *

- *  <mx:CallAction
+ *  <s:CallAction
  *    Properties
  *    id="ID"
  *    functionName="no default"


Transferred from the Adobe Open Source Subversion Repository

Revision: 4170
Author:   egeorgie@adobe.com
Date:     2008-11-23T21:12:27.092823Z

Log Message:
-----------
1.	mx.layout.ILayoutItem gets renamed to mx.layout.ILayoutElement
2.	get actualPosition() -> getLayoutPositionX(postTransform:Boolean=true):Number, getLayoutPositionY(postTransform:Boolean=true):Number
3.	get actualSize() -> getLayoutWidth(postTransform:Boolean=true):Number, getLayoutHeight(postTransform:Boolean=true):Number
4.	get preferredSize() -> getPreferredWidth(postTransform:Boolean=true):Number, getPreferredHeight(postTransform:Boolean=true):Number
5.	get minSize() -> getMinWidth(postTransform:Boolean=true):Number, getMinHeight(postTransform:Boolean=true):Number
6.	get maxSize() -> getMaxWidth(postTransform:Boolean=true):Number, getMaxHeight(postTransform:Boolean=true):Number
7.	setActualSize() -> setlayoutSize(width:Number=NaN, height:Number=NaN, postTransform:Boolean=true):void
8.	setActualPosition() -> setLayoutPosition(width:Number=NaN, height:Number=NaN, postTransform:Boolean=true):void
10.     Add support for custom 3D layouts by exposing access to transform matrices through the ILayoutElement interface.

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer: Hans
tests: checkintests, mustella (gumbo/components)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/layout/layout_tester.mxml</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutItemHelper.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutItemUIC.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHSlider.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/ILayoutItem.as" copyfrom-rev="4137" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimate3DInstance.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/ILayoutItem.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/tests/graphics/GraphicTags_checkintests.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/skins/spark/FxScrollerSkin.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/effects/effectClasses/FxAnimateInstance.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVSlider.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/Path.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutItemFactory.as" copyfrom-rev="4137" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutElementFactory.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/Ellipse.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButton.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutItemFactory.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutItemFDO.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutItemHelper.as" copyfrom-rev="4137" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutElementHelper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/graphics/graphicsClasses/GraphicElement.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutItemUIC.as" copyfrom-rev="4137" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutElementUIC.as</path>

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

--- frameworks/projects/spark/src/spark/primitives/Ellipse.as
+++ frameworks/projects/spark/src/spark/primitives/Ellipse.as
@@ -129,38 +129,43 @@

     /**
-     *  method description
-     *
-     *  @param width
-     *
-     *  @param height
-     *
-     *  @param actualMatrix
-     *
-     *  @return Returns the transformed size. Transformation is this element's
-     *  transformation matrix.
+     *  @private
      */
-    override protected function transformSizeForLayout(width:Number, height:Number,
-                                                       actualMatrix:Boolean):Point
+    override protected function transformWidthForLayout(width:Number,
+                                                        height:Number,
+                                                        postTransform:Boolean=true):Number
     {
-        var size:Point = new Point(width, height);
-        var m:Matrix = computeMatrix(actualMatrix);
-        if (m)
+        if (postTransform)
         {
-            var bbox:Rectangle = getBBox(width / 2, height / 2, m);
-            size.x = bbox.width;
-            size.y = bbox.height;
+            var m:Matrix = computeMatrix();
+            if (m)
+                width = getBBox(width / 2, height / 2, m).width;
         }

         // Take stroke into account
-        var strokeExtents:Point = getStrokeExtents();
-        size.x += strokeExtents.x;
-        size.y += strokeExtents.y;
-        return size;
+        return width + getStrokeExtents().x;
     }
-
+
     /**
-     *  @inheritDoc
+     *  @private
+     */
+    override protected function transformHeightForLayout(width:Number,
+                                                         height:Number,
+                                                         postTransform:Boolean=true):Number
+    {
+        if (postTransform)
+        {
+            var m:Matrix = computeMatrix();
+            if (m)
+                height = getBBox(width / 2, height / 2, m).height;
+        }
+
+        // Take stroke into account
+        return height + getStrokeExtents().y;
+    }
+
+    /**
+     *  @private
      */
     override protected function computeTopLeft(topLeft:Point, width:Number, height:Number, m:Matrix):Point
     {


Layout code fix.

Layout code fix.


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

--- frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/LegendItemAutomationImpl.as
+++ frameworks/projects/automation_dmv/src/mx/automation/delegates/charts/LegendItemAutomationImpl.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.
 //
 ////////////////////////////////////////////////////////////////////////////////


M getPropertyChangedSignal is now public! (allow lights to listen to camera changes)

--- src/aerys/minko/type/data/DataBindings.as
+++ src/aerys/minko/type/data/DataBindings.as
@@ -210,7 +210,7 @@
 			return clone;
 		}

-		minko_render function getPropertyChangedSignal(property : String) : Signal
+		public function getPropertyChangedSignal(property : String) : Signal
 		{
 			var signal : Signal = _propertyChanged[property];


Let's allow localChat() without being connected. If nothing else it'll make 'standalone' game debugging easier.

git-svn-id: a3e1eb16dde062992de22c830ed8045c8013209a@269 c613c5cb-e716-0410-b11b-feb51c14d237

--- src/as/com/threerings/ezgame/client/GameControlBackend.as
+++ src/as/com/threerings/ezgame/client/GameControlBackend.as
@@ -286,7 +286,6 @@

     public function localChat_v1 (msg :String) :void
     {
-        validateConnected();
         validateChat(msg);
         // The sendChat() messages will end up being routed
         // through this method on each client.


Clean up the fuse script.

Clean up the fuse script.


git-svn-id: http://svn.rails2u.com/as3rails2u/trunk@19 96db6a20-122f-0410-8d9f-89437bbe4005

--- src/com/rails2u/utils/DrawUtil.as
+++ src/com/rails2u/utils/DrawUtil.as
@@ -2,7 +2,8 @@
     import flash.display.Graphics;

     public class DrawUtil {
-        public static function drawStar(graphics:Graphics,                                                                                xPos:Number = 0,
+        public static function drawStar(graphics:Graphics,
+                xPos:Number = 0,
                 yPos:Number = 0,
                 sides:uint = 5,
                 innerRadius:Number = 20,
@@ -21,8 +22,8 @@
                     }
                 }
                 if (type == 'curve') {
-                    graphics.curveTo(                                                                                outerRadius * Math.cos(theta) + xPos, outerRadius * Math.sin(theta) + yPos,                                                       innerRadius * Math.cos(theta + halfIncr) + xPos, innerRadius * Math.sin(theta + halfIncr) + yPos
-                            );
+                    graphics.curveTo(outerRadius * Math.cos(theta) + xPos, outerRadius * Math.sin(theta) + yPos,
+                    innerRadius * Math.cos(theta + halfIncr) + xPos, innerRadius * Math.sin(theta + halfIncr) + yPos);
                 } else {
                     graphics.lineTo(outerRadius * Math.cos(theta) + xPos, outerRadius * Math.sin(theta) + yPos);
                     graphics.lineTo(innerRadius * Math.cos(theta + halfIncr) + xPos, innerRadius * Math.sin(theta + halfIncr) + yPos);
@@ -30,5 +31,38 @@
                 theta += incr;
             }
         }
+
+
+        public static function drawStarLight(graphics:Graphics,
+                xPos:Number = 0,
+                yPos:Number = 0,
+                sides:uint = 10,
+                innerRadius:Number = 10,
+                outerRadius:Number = 30,
+                type:String = 'line',
+                sizePercent:Number = 4/5
+                ):void {
+            var theta:Number = 0.0;
+            var incr:Number = Math.PI * 2.0 / sides;
+            var halfIncr:Number = incr / 2.0;
+            for (var i:uint = 0; i <= sides; i++) {
+                var rOuterRadius:Number = MathUtil.randomBetween(outerRadius * sizePercent, outerRadius);
+                if(i == 0) {
+                    if (type == 'curve') {
+                        graphics.moveTo(innerRadius * Math.cos(theta + halfIncr) + xPos, innerRadius * Math.sin(theta + halfIncr) + yPos);
+                    } else {
+                        graphics.moveTo(rOuterRadius * Math.cos(theta) + xPos, rOuterRadius * Math.sin(theta) + yPos);
+                    }
+                }
+                if (type == 'curve') {
+                    graphics.curveTo(rOuterRadius * Math.cos(theta) + xPos, rOuterRadius * Math.sin(theta) + yPos,
+                    innerRadius * Math.cos(theta + halfIncr) + xPos, innerRadius * Math.sin(theta + halfIncr) + yPos);
+                } else {
+                    graphics.lineTo(rOuterRadius * Math.cos(theta) + xPos, rOuterRadius* Math.sin(theta) + yPos);
+                    graphics.lineTo(innerRadius * Math.cos(theta + halfIncr) + xPos, innerRadius * Math.sin(theta + halfIncr) + yPos);
+                }
+                theta += incr;
+            }
+        }
     }
 }


Update src/aerys/minko/scene/SceneIterator.as

Fixes issue #52

--- src/aerys/minko/scene/SceneIterator.as
+++ src/aerys/minko/scene/SceneIterator.as
@@ -11,8 +11,6 @@
 	import flash.utils.describeType;
 	import flash.utils.flash_proxy;
 	import flash.utils.getQualifiedClassName;
-
-	import mx.messaging.channels.StreamingAMFChannel;

 	public dynamic class SceneIterator extends Proxy
 	{


Agh. Fix import order (and my precommit hook)

--- exporter/src/main/as/flump/export/XflLoader.as
+++ exporter/src/main/as/flump/export/XflLoader.as
@@ -3,15 +3,10 @@

 package flump.export {

+import flash.filesystem.File;
+
 import com.adobe.crypto.MD5;
 import com.adobe.crypto.MD5Stream;
-import com.threerings.util.F;
-import com.threerings.util.Log;
-import com.threerings.util.Set;
-import com.threerings.util.Sets;
-import com.threerings.util.XmlUtil;
-
-import flash.filesystem.File;

 import flump.bytesToXML;
 import flump.executor.Executor;
@@ -24,6 +19,10 @@
 import flump.xfl.XflMovie;
 import flump.xfl.XflTexture;
 import flump.xfl.XmlConverter;
+
+import com.threerings.util.F;
+import com.threerings.util.Log;
+import com.threerings.util.XmlUtil;

 public class XflLoader
 {