incubator-flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cframp...@apache.org
Subject svn commit: r1370028 [41/43] - in /incubator/flex/whiteboard/cframpton/adobe.next: ./ frameworks/ frameworks/projects/advancedgrids/src/mx/collections/ frameworks/projects/advancedgrids/src/mx/controls/ frameworks/projects/airframework/src/mx/managers/...
Date Mon, 06 Aug 2012 21:26:02 GMT
Added: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/MonthGridEvent.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/MonthGridEvent.as?rev=1370028&view=auto
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/MonthGridEvent.as (added)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/MonthGridEvent.as Mon Aug  6 21:25:54 2012
@@ -0,0 +1,538 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+//
+//      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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.events
+{
+import flash.display.InteractiveObject;
+import flash.events.Event;
+import flash.events.MouseEvent;
+
+import spark.components.DateChooser;
+import spark.components.MonthGrid;
+import spark.components.calendarClasses.IDateItemRenderer;
+
+[ExcludeClass]
+
+/**
+ *  The GridEvent class extends the MouseEvent class to includes additional 
+ *  grid specific information based on the event's location relative to a grid cell.
+ *  This information includes the following:
+ *
+ *  <ul>
+ *    <li>The row and column index of the cell.</li>
+ *    <li>The data provider item that corresponds to the row of the cell.</li>
+ *    <li>The monthGrid.</li>  
+ *    <li>The item renderer for the monthGrid.</li>  
+ *  </ul>
+ * 
+ *  <p>Grid events have a one-to-one correspondence with mouse events.  
+ *  They are dispatched in response to mouse events that have "bubbled" 
+ *  from some Grid descendant to the Grid itself.   
+ *  One significant difference is that event listeners for grid events 
+ *  are guaranteed to see an entire down-drag-up mouse gesture, 
+ *  even if the drag and up parts of the gesture do not occur over the grid.   
+ *  The <code>gridMouseDrag</code> event corresponds to a 
+ *  mouse move event with the button held down.</p> 
+ * 
+ *  @see spark.components.DataChooser
+ *  @see spark.components.calendarClasses.MonthGrid
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 11
+ *  @playerversion AIR 3.0
+ *  @productversion Flex 5.0
+ */
+public class MonthGridEvent extends MouseEvent
+{
+    include "../core/Version.as";    
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  The value of the <code>type</code> property for a <code>gridMouseDown</code> GridEvent.
+     *
+     *  <p>The properties of the event object have the following values:</p>
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>bubbles</code></td><td>false</td></tr>
+     *     <tr><td><code>cancelable</code></td><td>false</td></tr>
+     *     <tr><td><code>currentTarget</code></td><td>The Object that defines the 
+     *       event listener that handles the event. For example, if you use 
+     *       <code>myButton.addEventListener()</code> to register an event listener, 
+     *       myButton is the value of the <code>currentTarget</code>. </td></tr>
+     *     <tr><td><code>column</code></td><td>The column where the event occurred, 
+     *        or null if the event did not occur over a column.</td></tr>
+     *     <tr><td><code>columnIndex</code></td><td>The index of the column where 
+     *        the event occurred, or -1 if the event did not occur over a grid column.</td></tr>
+     *     <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr>
+     *     <tr><td><code>item</code></td><td>The data provider item for this row, 
+     *        or null if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed 
+     *       this cell, or null if the event did not occur over a visible cell.</td></tr>
+     *     <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, 
+     *        or -1 if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>target</code></td><td>The Object that dispatched the event; 
+     *        it is not always the Object listening for the event. 
+     *        Use the <code>currentTarget</code> property to always access the 
+     *        Object listening for the event.</td></tr>
+     *     <tr><td><code>type</code></td><td>GirdEvent.MONTH_GRID_MOUSE_DOWN</td></tr>
+     *  </table>
+     *
+     *  @eventType gridMouseDown
+     * 
+     *  @see flash.display.InteractiveObject#event:mouseDown
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */    
+    public static const MONTH_GRID_MOUSE_DOWN:String = "gridMouseDown";
+    
+    /**
+     *  The value of the <code>type</code> property for a <code>gridMouseDrag</code> GridEvent.  
+     *  This event is only dispatched when a listener has handled a <code>mouseDown</code> event, 
+     *  and then only while the mouse moves with the button held down.
+     *
+     *  <p>The properties of the event object have the following values:</p>
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>bubbles</code></td><td>false</td></tr>
+     *     <tr><td><code>cancelable</code></td><td>false</td></tr>
+     *     <tr><td><code>currentTarget</code></td><td>The Object that defines the 
+     *       event listener that handles the event. For example, if you use 
+     *       <code>myButton.addEventListener()</code> to register an event listener, 
+     *       myButton is the value of the <code>currentTarget</code>. </td></tr>
+     *     <tr><td><code>column</code></td><td>The column where the event occurred, 
+     *        or null if the event did not occur over a column.</td></tr>
+     *     <tr><td><code>columnIndex</code></td><td>The index of the column where 
+     *        the event occurred, or -1 if the event did not occur over a grid column.</td></tr>
+     *     <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr>
+     *     <tr><td><code>item</code></td><td>The data provider item for this row, 
+     *        or null if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed 
+     *       this cell, or null if the event did not occur over a visible cell.</td></tr>
+     *     <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, 
+     *        or -1 if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>target</code></td><td>The Object that dispatched the event; 
+     *        it is not always the Object listening for the event. 
+     *        Use the <code>currentTarget</code> property to always access the 
+     *        Object listening for the event.</td></tr>
+     *     <tr><td><code>type</code></td><td>GirdEvent.MONTH_GRID_MOUSE_DRAG</td></tr>
+     *  </table>
+     *
+     *  @eventType gridMouseDrag
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */    
+    public static const MONTH_GRID_MOUSE_DRAG:String = "gridMouseDrag";        
+    
+    /**
+     *  The value of the <code>type</code> property for a <code>gridMouseUp</code> GridEvent.
+     *
+     *  <p>The properties of the event object have the following values:</p>
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>bubbles</code></td><td>false</td></tr>
+     *     <tr><td><code>cancelable</code></td><td>false</td></tr>
+     *     <tr><td><code>currentTarget</code></td><td>The Object that defines the 
+     *       event listener that handles the event. For example, if you use 
+     *       <code>myButton.addEventListener()</code> to register an event listener, 
+     *       myButton is the value of the <code>currentTarget</code>. </td></tr>
+     *     <tr><td><code>column</code></td><td>The column where the event occurred, 
+     *        or null if the event did not occur over a column.</td></tr>
+     *     <tr><td><code>columnIndex</code></td><td>The index of the column where 
+     *        the event occurred, or -1 if the event did not occur over a grid column.</td></tr>
+     *     <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr>
+     *     <tr><td><code>item</code></td><td>The data provider item for this row, 
+     *        or null if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed 
+     *       this cell, or null if the event did not occur over a visible cell.</td></tr>
+     *     <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, 
+     *        or -1 if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>target</code></td><td>The Object that dispatched the event; 
+     *        it is not always the Object listening for the event. 
+     *        Use the <code>currentTarget</code> property to always access the 
+     *        Object listening for the event.</td></tr>
+     *     <tr><td><code>type</code></td><td>GirdEvent.MONTH_GRID_MOUSE_UP</td></tr>
+     *  </table>
+     *
+     *  @eventType gridMouseUp
+     * 
+     *  @see flash.display.InteractiveObject#event:mouseUp
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */    
+    public static const MONTH_GRID_MOUSE_UP:String = "gridMouseUp";
+    
+    /**
+     *  The value of the <code>type</code> property for a <code>gridClick</code> GridEvent.
+     *
+     *  <p>The properties of the event object have the following values:</p>
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>bubbles</code></td><td>false</td></tr>
+     *     <tr><td><code>cancelable</code></td><td>false</td></tr>
+     *     <tr><td><code>currentTarget</code></td><td>The Object that defines the 
+     *       event listener that handles the event. For example, if you use 
+     *       <code>myButton.addEventListener()</code> to register an event listener, 
+     *       myButton is the value of the <code>currentTarget</code>. </td></tr>
+     *     <tr><td><code>column</code></td><td>The column where the event occurred, 
+     *        or null if the event did not occur over a column.</td></tr>
+     *     <tr><td><code>columnIndex</code></td><td>The index of the column where 
+     *        the event occurred, or -1 if the event did not occur over a grid column.</td></tr>
+     *     <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr>
+     *     <tr><td><code>item</code></td><td>The data provider item for this row, 
+     *        or null if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed 
+     *       this cell, or null if the event did not occur over a visible cell.</td></tr>
+     *     <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, 
+     *        or -1 if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>target</code></td><td>The Object that dispatched the event; 
+     *        it is not always the Object listening for the event. 
+     *        Use the <code>currentTarget</code> property to always access the 
+     *        Object listening for the event.</td></tr>
+     *     <tr><td><code>type</code></td><td>GirdEvent.MONTH_GRID_CLICK</td></tr>
+     *  </table>
+     *
+     *  @eventType gridClick
+     * 
+     *  @see flash.display.InteractiveObject#event:click
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */    
+    public static const MONTH_GRID_CLICK:String = "gridClick";
+    
+    /**
+     *  The value of the <code>type</code> property for a <code>gridDoubleClick</code> GridEvent.
+     *
+     *  <p>The properties of the event object have the following values:</p>
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>bubbles</code></td><td>false</td></tr>
+     *     <tr><td><code>cancelable</code></td><td>false</td></tr>
+     *     <tr><td><code>currentTarget</code></td><td>The Object that defines the 
+     *       event listener that handles the event. For example, if you use 
+     *       <code>myButton.addEventListener()</code> to register an event listener, 
+     *       myButton is the value of the <code>currentTarget</code>. </td></tr>
+     *     <tr><td><code>column</code></td><td>The column where the event occurred, 
+     *        or null if the event did not occur over a column.</td></tr>
+     *     <tr><td><code>columnIndex</code></td><td>The index of the column where 
+     *        the event occurred, or -1 if the event did not occur over a grid column.</td></tr>
+     *     <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr>
+     *     <tr><td><code>item</code></td><td>The data provider item for this row, 
+     *        or null if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed 
+     *       this cell, or null if the event did not occur over a visible cell.</td></tr>
+     *     <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, 
+     *        or -1 if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>target</code></td><td>The Object that dispatched the event; 
+     *        it is not always the Object listening for the event. 
+     *        Use the <code>currentTarget</code> property to always access the 
+     *        Object listening for the event.</td></tr>
+     *     <tr><td><code>type</code></td><td>GirdEvent.MONTH_GRID_DOUBLE_CLICK</td></tr>
+     *  </table>
+     *
+     *  @eventType gridDoubleClick
+     * 
+     *  @see flash.display.InteractiveObject#event:doubleClick
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */    
+    public static const MONTH_GRID_DOUBLE_CLICK:String = "gridDoubleClick";     
+    
+    /**
+     *  The value of the <code>type</code> property for a <code>gridRollOver</code> GridEvent.
+     *
+     *  <p>The properties of the event object have the following values:</p>
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>bubbles</code></td><td>false</td></tr>
+     *     <tr><td><code>cancelable</code></td><td>false</td></tr>
+     *     <tr><td><code>currentTarget</code></td><td>The Object that defines the 
+     *       event listener that handles the event. For example, if you use 
+     *       <code>myButton.addEventListener()</code> to register an event listener, 
+     *       myButton is the value of the <code>currentTarget</code>. </td></tr>
+     *     <tr><td><code>column</code></td><td>The column where the event occurred, 
+     *        or null if the event did not occur over a column.</td></tr>
+     *     <tr><td><code>columnIndex</code></td><td>The index of the column where 
+     *        the event occurred, or -1 if the event did not occur over a grid column.</td></tr>
+     *     <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr>
+     *     <tr><td><code>item</code></td><td>The data provider item for this row, 
+     *        or null if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed 
+     *       this cell, or null if the event did not occur over a visible cell.</td></tr>
+     *     <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, 
+     *        or -1 if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>target</code></td><td>The Object that dispatched the event; 
+     *        it is not always the Object listening for the event. 
+     *        Use the <code>currentTarget</code> property to always access the 
+     *        Object listening for the event.</td></tr>
+     *     <tr><td><code>type</code></td><td>GirdEvent.MONTH_GRID_ROLL_OVER</td></tr>
+     *  </table>
+     *
+     *  @eventType gridRollOver
+     * 
+     *  @see flash.display.InteractiveObject#event:rollOver
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */    
+    public static const MONTH_GRID_ROLL_OVER:String = "gridRollOver";
+
+    /**
+     *  The value of the <code>type</code> property for a <code>gridRollOut</code> GridEvent.
+     *
+     *  <p>The properties of the event object have the following values:</p>
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>bubbles</code></td><td>false</td></tr>
+     *     <tr><td><code>cancelable</code></td><td>false</td></tr>
+     *     <tr><td><code>currentTarget</code></td><td>The Object that defines the 
+     *       event listener that handles the event. For example, if you use 
+     *       <code>myButton.addEventListener()</code> to register an event listener, 
+     *       myButton is the value of the <code>currentTarget</code>. </td></tr>
+     *     <tr><td><code>column</code></td><td>The column where the event occurred, 
+     *        or null if the event did not occur over a column.</td></tr>
+     *     <tr><td><code>columnIndex</code></td><td>The index of the column where 
+     *        the event occurred, or -1 if the event did not occur over a grid column.</td></tr>
+     *     <tr><td><code>grid</code></td><td>The Grid associated with this event.</td></tr>
+     *     <tr><td><code>item</code></td><td>The data provider item for this row, 
+     *        or null if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>itemRenderer</code></td><td>The The item renderer that displayed 
+     *       this cell, or null if the event did not occur over a visible cell.</td></tr>
+     *     <tr><td><code>rowIndex</code></td><td>The index of the row where the event occurred, 
+     *        or -1 if the event did not occur over a grid row.</td></tr>
+     *     <tr><td><code>target</code></td><td>The Object that dispatched the event; 
+     *        it is not always the Object listening for the event. 
+     *        Use the <code>currentTarget</code> property to always access the 
+     *        Object listening for the event.</td></tr>
+     *     <tr><td><code>type</code></td><td>GirdEvent.MONTH_GRID_ROLL_OUT</td></tr>
+     *  </table>
+     *
+     *  @eventType gridRollOut
+     * 
+     *  @see flash.display.InteractiveObject#event:rollOut
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */    
+    public static const MONTH_GRID_ROLL_OUT:String = "gridRollOut";
+        
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  GridEvents dispatched by the Grid class in response to mouse event are constructed with
+     *  the incoming mouse event's properties.   
+     *  The grid event's x,y location, meaning the value of
+     *  its <code>localX</code> and <code>localY</code> properties, 
+     *  is defined relative to the entire grid, not just the 
+     *  part of the grid that has been scrolled into view.   
+     *  Similarly, the event's row and column
+     *  indices might correspond to a cell that has not been scrolled into view.
+     *
+     *  @param type Distinguishes the mouse gesture that caused this event to be dispatched.
+     *
+     *  @param bubbles Specifies whether the event can bubble up the display list hierarchy.
+     *
+     *  @param cancelable Specifies whether the behavior associated with the event can be prevented.
+     * 
+     *  @param localX The event's x coordinate relative to grid.
+     * 
+     *  @param localY The event's y coordinate relative to grid.
+     * 
+     *  @param rowIndex The index of the row where the event occurred, or -1.
+     * 
+     *  @param columnIndex The index of the column where the event occurred, or -1.
+     * 
+     *  @param column The column where the event occurred, or null.
+     * 
+     *  @param item The data provider item at <code>rowIndex</code>.
+     * 
+     *  @param relatedObject The <code>relatedObject</code> property of the 
+     *  MouseEvent that triggered this GridEvent.
+     * 
+     *  @param itemRenderer The visible item renderer where the event occurred, or null.
+     * 
+     *  @param ctrlKey Whether the Control key is down.
+     * 
+     *  @param altKey Whether the Alt key is down.
+     * 
+     *  @param shiftKey Whether the Shift key is down.
+     * 
+     *  @param buttonDown Whether the Control key is down.
+     * 
+     *  @param delta Not used.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5 
+     */
+    public function MonthGridEvent(
+        type:String,
+        bubbles:Boolean = false,
+        cancelable:Boolean = false,
+        localX:Number = NaN,
+        localY:Number = NaN,
+        relatedObject:InteractiveObject = null,
+        ctrlKey:Boolean = false,
+        altKey:Boolean = false,
+        shiftKey:Boolean = false,
+        buttonDown:Boolean = false,
+        delta:int = 0,
+        rowIndex:int = -1,
+        columnIndex:int = -1,
+        itemRenderer:IDateItemRenderer = null)
+    {
+        super(type, bubbles, cancelable, localX, localY, 
+              relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta);
+   
+        this.rowIndex = rowIndex;
+        this.columnIndex = columnIndex;
+        this.itemRenderer = itemRenderer;
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  rowIndex
+    //----------------------------------
+    
+    /**
+     *  The index of the row where the event occurred, or -1 if the event
+     *  did not occur over a grid row.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5 
+     */
+    public var rowIndex:int;
+    
+    //----------------------------------
+    //  columnIndex
+    //----------------------------------
+    
+    /**
+     *  The index of the column where the event occurred, or -1 if the event 
+     *  did not occur over a grid column.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5 
+     */
+    public var columnIndex:int;
+        
+    //----------------------------------
+    //  monthGrid
+    //----------------------------------
+    
+    /**
+     *  The MonthGrid grid associated with this event.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5 
+     */
+    public function get monthGrid():MonthGrid
+    {
+        return target is MonthGrid ? MonthGrid(target) : null;
+    }
+    
+    //----------------------------------
+    //  itemRenderer
+    //----------------------------------
+    
+    /**
+     *  The date renderer that displayed this cell, or null if the event 
+     *  did not occur over a visible cell. 
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5 
+     */       
+    public var itemRenderer:IDateItemRenderer;
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: Event
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */
+    override public function clone():Event
+    {
+        var cloneEvent:MonthGridEvent = new MonthGridEvent(
+            type, bubbles, cancelable, 
+            localX, localY, 
+            relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta,
+            rowIndex, columnIndex, itemRenderer);
+        
+        cloneEvent.relatedObject = this.relatedObject;
+        
+        return cloneEvent;
+    }
+
+    /**
+     *  @private
+     */
+    override public function toString():String
+    {
+        return "MonthGridEvent{" + 
+            "type=\"" + type + "\"" +
+            " localX,Y=" + localX + "," + localY + 
+            " rowIndex,columnIndex=" + rowIndex + "," + columnIndex + 
+            "}";
+    }        
+}
+}

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/MonthGridEvent.as
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/MonthGridEvent.as
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEvent.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEvent.as?rev=1370028&view=auto
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEvent.as (added)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEvent.as Mon Aug  6 21:25:54 2012
@@ -0,0 +1,237 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+//
+//      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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.events
+{
+
+import flash.events.Event;
+
+/**
+ *  The TreeDataAdapterChangeEvent class represents events that are dispatched 
+ *  when the associated tree adapter changes.
+ * 
+ *  <p>The nature of the change is described by the value of the <code>kind</code> property,
+ *  whose valid values are defined in the TreeDataAdapterEventKind.
+ *  It also determines which properties in the event are used.
+ *  The following table shows the meaning of each property for each of the different values
+ *  of the <code>kind</code> property:</p>
+ *  
+ *  <table class="innertable">
+ *     <tr><th>Property</th><th>Add Event</th><th>Remove Event</th><th>Reset Event</th></tr>
+ *     <tr><td><code>kind</code></td><td><code>TreeDataAdapterChangeEventKind.ADD</code></td>
+ *       <td><code>TreeDataAdapterChangeEventKind.REMOVE</code></td>
+ *       <td><code>TreeDataAdapterChangeEventKind.RESET</code></td></tr>
+ *     <tr><td><code>nodes</code></td><td>A vector of the nodes that were added to the adapter</td>
+ *       <td>A vector of the nodes that were removed from the adapter</td>
+ *       <td>N/A, defaults to null</td></tr>
+ *     <tr><td><code>index</code></td><td>Index where the nodes were added</td>
+ *       <td>Index where the nodes were removed</td><td>N/A, defaults to -1</td></tr>
+ *     <tr><td><code>parent</code></td><td>The parent of the newly added nodes</td><td>The former
+ *       parent of the removed nodes</td><td>N/A, defaults to null</td></tr>
+ *  </table>
+ * 
+ *  @see TreeDataAdapterChangeEventKind
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 11
+ *  @playerversion AIR 3.0
+ *  @productversion Flex 5
+ */
+public class TreeDataAdapterChangeEvent extends Event
+{
+    include "../core/Version.as";
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  The <code>TreeDataAdapterChangeEvent.TREE_DATA_ADAPTER_CHANGE</code> constant
+     *  defines the value of the <code>type</code> property of the event
+     *  object for an event that is dispatched when a tree adapter has changed.
+     *
+     *  <p>The properties of the event object have the following values:</p>
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>bubbles</code></td><td>false</td></tr>
+     *     <tr><td><code>cancelable</code></td><td>false</td></tr>
+     *     <tr><td><code>currentTarget</code></td><td>The Object that defines the 
+     *       event listener that handles the event. For example, if you use 
+     *       <code>myButton.addEventListener()</code> to register an event listener, 
+     *       myButton is the value of the <code>currentTarget</code>. </td></tr>
+     *     <tr><td><code>kind</code></td><td>The kind of event.
+     *       The valid values are defined in the TreeDataAdapterChangeEventKind 
+     *       class as constants. This value determines which properties in
+     *       the event are used.</td></tr>
+     *     <tr><td><code>index</code></td><td>Index in the parent's children where the change
+     *       occurred.</td></tr>
+     *     <tr><td><code>nodes</code></td><td>A vector of nodes affected by the event.</td></tr>
+     *     <tr><td><code>parent</code></td><td>The parent of the nodes specified in the
+     *       <code>nodes</code> property.</td></tr>
+     *     <tr><td><code>target</code></td><td>The Object that dispatched the event; 
+     *       it is not always the Object listening for the event. 
+     *       Use the <code>currentTarget</code> property to always access the 
+     *       Object listening for the event.</td></tr>
+     *     <tr><td><code>type</code></td><td>TreeDataAdapterChangeEvent.TREE_DATA_ADAPTER_CHANGE</td></tr>
+     *  </table>
+     *   
+     *  @eventType treeDataAdapterChange
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public static const TREE_DATA_ADAPTER_CHANGE:String = "treeDataAdapterChange";
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  Constructor.
+     *
+     *  @param type The event type; indicates the action that caused the event.
+     *
+     *  @param bubbles Specifies whether the event can bubble
+     *  up the display list hierarchy.
+     *
+     *  @param cancelable Specifies whether the behavior
+     *  associated with the event can be prevented.
+     *
+     *  @param kind The kind of event. The valid values are defined in the
+     *  TreeDataAdapterChangeEventKind class as constants. This value determines which
+     *  properties in the event are used.
+     *  
+     *  @param nodes Vector of nodes that are affected by the change.
+     *  
+     *  @param index The zero-based index in the <code>parent</code>'s
+     *  children of where the change occured.
+     * 
+     *  @param parent The parent of the nodes specified by the <code>nodes</code>
+     *  property.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public function TreeDataAdapterChangeEvent(type:String, bubbles:Boolean = false,
+                                               cancelable:Boolean = false,
+                                               kind:String = null, nodes:Vector.<Object> = null,
+                                               index:int = -1, parent:Object = null)
+    {
+        super(type, bubbles, cancelable);
+        
+        this.kind = kind;
+        this.nodes = nodes;
+        this.index = index;
+        this.parent = parent;
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  kind
+    //----------------------------------
+    
+    /**
+     *  Indicates the kind of event that occurred.
+     *  The property value can be one of the values in the 
+     *  TreeDataAdapterChangeEventKind class, 
+     *  or <code>null</code>, which indicates that the kind is unknown.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public var kind:String;
+    
+    //----------------------------------
+    //  nodes
+    //----------------------------------
+    
+    /**
+     *  The tree adapter nodes that have been added or removed.
+     *  When <code>kind</code> is <code>TreeDataAdapterChangeEventKind.RESET</code>, nodes is null.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public var nodes:Vector.<Object>;
+    
+    //----------------------------------
+    //  index
+    //----------------------------------
+    
+    /**
+     *  The zero-based index in the <code>parent</code>'s children of where the change occured.
+     *  When <code>kind</code> is <code>TreeDataAdapterChangeEventKind.RESET</code>, index is -1.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public var index:int;
+    
+    //----------------------------------
+    //  parent
+    //----------------------------------
+    
+    /**
+     *  The parent or former parent of the nodes in the <code>nodes</code> property.
+     *  If parent is null, then the change occured at the root level.
+     *  When <code>kind</code> is <code>TreeDataAdapterChangeEventKind.RESET</code>,
+     *  parent is null.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public var parent:Object;
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: Event
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */
+    override public function clone():Event
+    {
+        return new TreeDataAdapterChangeEvent(type, bubbles, cancelable,
+            kind, nodes, index, parent);
+    }
+}
+}
\ No newline at end of file

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEvent.as
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEvent.as
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEventKind.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEventKind.as?rev=1370028&view=auto
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEventKind.as (added)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEventKind.as Mon Aug  6 21:25:54 2012
@@ -0,0 +1,111 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+//
+//      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.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package spark.events
+{
+
+/**
+ *  The TreeDataAdapterChangeEventKind class defines constants for the valid values 
+ *  of the spark.events.TreeDataAdapterChangeEvent class <code>kind</code> property.
+ *  These constants indicate the kind of change that was made to the ITreeDataAdapter.
+ *
+ *  @see spark.events.TreeDataAdapterChangeEvent#kind
+ *  @see spark.events.TreeDataAdapterChangeEvent
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 11
+ *  @playerversion AIR 3.0
+ *  @productversion Flex 5
+ */
+public final class TreeDataAdapterChangeEventKind
+{
+    include "../core/Version.as";
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Class constants
+    //
+    //--------------------------------------------------------------------------
+    
+    /** 
+     *  Indicates that the tree adapter has added a node
+     *  or nodes to the tree.
+     *  
+     *  <p>This kind of event should set the properties of its
+     *  <code>TreeDataAdapterChangeEvent</code> as follows:</p>
+     * 
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>nodes</code></td><td>A vector of the nodes that were
+     *       added to the adapter</td></tr>
+     *     <tr><td><code>index</code></td><td>Index where the nodes were added</td></tr>
+     *     <tr><td><code>parent</code></td><td>The parent of the newly added nodes</td></tr>
+     *  </table>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public static const ADD:String = "add";
+    
+    /** 
+     *  Indicates that the tree adapter has removed a node
+     *  or nodes from the tree.
+     * 
+     *  <p>This kind of event should set the properties of its
+     *  <code>TreeDataAdapterChangeEvent</code> as follows:</p>
+     * 
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>nodes</code></td><td>A vector of the nodes that were
+     *       removed from the adapter</td></tr>
+     *     <tr><td><code>index</code></td><td>Index where the nodes were removed from</td></tr>
+     *     <tr><td><code>parent</code></td><td>The former parent of the removed nodes</td></tr>
+     *  </table>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public static const REMOVE:String = "remove";
+    
+    /**
+     *  Indicates that the tree adapter has changed so drastically that
+     *  a reset is required by the listener.
+     * 
+     *  <p>This kind of event should set the properties of its
+     *  <code>TreeDataAdapterChangeEvent</code> as follows:</p>
+     * 
+     *  <table class="innertable">
+     *     <tr><th>Property</th><th>Value</th></tr>
+     *     <tr><td><code>nodes</code></td><td>null</td></tr>
+     *     <tr><td><code>index</code></td><td>-1</td></tr>
+     *     <tr><td><code>parent</code></td><td>null</td></tr>
+     *  </table>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 11
+     *  @playerversion AIR 3.0
+     *  @productversion Flex 5
+     */
+    public static const RESET:String = "reset";
+}
+}

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEventKind.as
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/events/TreeDataAdapterChangeEventKind.as
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as?rev=1370028&r1=1370027&r2=1370028&view=diff
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as (original)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as Mon Aug  6 21:25:54 2012
@@ -628,7 +628,7 @@ public class LayoutBase extends OnDemand
      * 
      *  @param index The index of the element that was added.
      * 
-     *  @see #elementRemoved()    
+     *  @see #elementRemoved()
      *
      *  @langversion 3.0
      *  @playerversion Flash 10
@@ -1645,34 +1645,34 @@ public class LayoutBase extends OnDemand
             // non-zero when the actual items haven't been added yet.
             if (rect != null)
             {
-                var elementPoint:Point = null;
-                switch (elementComparePoint)
-                {
-                    case "topLeft":
-                        elementPoint = rect.topLeft;
-                        break;
-                    case "bottomRight":
-                        elementPoint = rect.bottomRight;
-                        break;
-                    case "bottomLeft":
-                        elementPoint = new Point(rect.left, rect.bottom);
-                        break;
-                    case "topRight":
-                        elementPoint = new Point(rect.right, rect.top);
-                        break;
-                    case "center":
-                        elementPoint = new Point(rect.left + rect.width/2, rect.top + rect.height/2);
-                        break;
-                }
-                
-                dist = Point.distance(position, elementPoint); 
-                if (dist < minDistance)
-                {
-                    minDistance = dist;
-                    minDistanceElement = i;
-                }
+            var elementPoint:Point = null;
+            switch (elementComparePoint)
+            {
+                case "topLeft":
+                    elementPoint = rect.topLeft;
+                    break;
+                case "bottomRight":
+                    elementPoint = rect.bottomRight;
+                    break;
+                case "bottomLeft":
+                    elementPoint = new Point(rect.left, rect.bottom);
+                    break;
+                case "topRight":
+                    elementPoint = new Point(rect.right, rect.top);
+                    break;
+                case "center":
+                    elementPoint = new Point(rect.left + rect.width/2, rect.top + rect.height/2);
+                    break;
+            }
+            
+            dist = Point.distance(position, elementPoint); 
+            if (dist < minDistance)
+            {
+                minDistance = dist;
+                minDistanceElement = i;
             }
         }
+        }
         return minDistanceElement;
     }
     

Modified: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/modules/ModuleLoader.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/modules/ModuleLoader.as?rev=1370028&r1=1370027&r2=1370028&view=diff
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/modules/ModuleLoader.as (original)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/modules/ModuleLoader.as Mon Aug  6 21:25:54 2012
@@ -23,6 +23,7 @@ import flash.events.Event;
 import flash.system.ApplicationDomain;
 import flash.system.SecurityDomain;
 import flash.utils.ByteArray;
+
 import mx.core.ContainerCreationPolicy;
 import mx.core.FlexVersion;
 import mx.core.IDeferredContentOwner;
@@ -33,7 +34,9 @@ import mx.events.FlexEvent;
 import mx.events.ModuleEvent;
 import mx.modules.IModuleInfo;
 import mx.modules.ModuleManager;
+
 import spark.components.Group;
+import spark.core.ContainerDestructionPolicy;
 
 //--------------------------------------
 //  Events
@@ -351,27 +354,8 @@ public class ModuleLoader extends Group
         if (value == _url)
             return;
 
-        var wasLoaded:Boolean = false;
+        releaseModule();
         
-        if (module)
-        {
-            module.removeEventListener(ModuleEvent.PROGRESS,
-                                       moduleProgressHandler);
-            module.removeEventListener(ModuleEvent.SETUP, moduleSetupHandler);
-            module.removeEventListener(ModuleEvent.READY, moduleReadyHandler);
-            module.removeEventListener(ModuleEvent.ERROR, moduleErrorHandler);
-            module.removeEventListener(ModuleEvent.UNLOAD, moduleUnloadHandler);
-
-            module.release();
-            module = null;
-
-            if (child)
-            {
-                removeElement(child);
-                child = null;
-            }
-        }
-
         _url = value;
 
         dispatchEvent(new FlexEvent(FlexEvent.URL_CHANGED));
@@ -415,6 +399,7 @@ public class ModuleLoader extends Group
     // When set, the value of the backing store _creationPolicy
     // style is "auto" so descendants inherit the correct value.
     private var creationPolicyNone:Boolean = false;
+    private var _creationPolicy:String = ContainerCreationPolicy.AUTO;
     
     [Inspectable(enumeration="auto,all,none", defaultValue="auto")]
     
@@ -436,13 +421,20 @@ public class ModuleLoader extends Group
         // don't have this property (ie Group).
         // This style is an implementation detail and should be considered
         // private. Do not set it from CSS.
-        var result:String = getStyle("_creationPolicy");
-        
-        if (result == null)
-            result = ContainerCreationPolicy.AUTO;
-        
-        if (creationPolicyNone)
-            result = ContainerCreationPolicy.NONE;
+        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_5_0)
+        {
+            var result:String = getStyle("_creationPolicy");
+            
+            if (result == null)
+                result = ContainerCreationPolicy.AUTO;
+
+            if (creationPolicyNone)
+                result = ContainerCreationPolicy.NONE;
+        }
+        else
+        {
+            result = _creationPolicy;
+        }
         
         return result;
     }
@@ -452,20 +444,96 @@ public class ModuleLoader extends Group
      */
     public function set creationPolicy(value:String):void
     {
-        if (value == ContainerCreationPolicy.NONE)
+        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_5_0)
         {
-            // creationPolicy of none is not inherited by descendants.
-            // In this case, set the style to "auto" and set a local
-            // flag for subsequent access to the creationPolicy property.
-            creationPolicyNone = true;
-            value = ContainerCreationPolicy.AUTO;
+            if (value == ContainerCreationPolicy.NONE)
+            {
+                // creationPolicy of none is not inherited by descendants.
+                // In this case, set the style to "auto" and set a local
+                // flag for subsequent access to the creationPolicy property.
+                creationPolicyNone = true;
+                value = ContainerCreationPolicy.AUTO;
+            }
+            else
+            {
+                creationPolicyNone = false;
+            }
+            
+            setStyle("_creationPolicy", value);            
         }
         else
         {
-            creationPolicyNone = false;
+            _creationPolicy = value;
         }
-        
-        setStyle("_creationPolicy", value);
+    }
+    
+    /**
+     *  @private
+     */
+    private var _elementCreationPolicy:*;
+    
+    [Inspectable(enumeration="auto,all,none", defaultValue="auto")]
+    
+    /**
+     *  @inheritDoc
+     */
+    public function get elementCreationPolicy():String
+    {
+        // If elementCreationPolicy has been set then use it. Otherwise
+        // fallback to using the deprecated creationPolicy.
+        if (_elementCreationPolicy !== undefined)
+            return _elementCreationPolicy;
+        else
+            return _creationPolicy;
+    }
+    
+    /**
+     *  @private
+     */
+    public function set elementCreationPolicy(value:String):void
+    {
+        _elementCreationPolicy = value;
+    }
+    
+    //----------------------------------
+    //  elementDestructionPolicy
+    //----------------------------------
+    
+    /**
+     *  Defines the destruction policy for this component's content. When this 
+     *  component is no longer visible in its parent container the destruction 
+     *  policy is used to determine what to do with this component's children.
+     *  Each container may define what it means to be have a child visible. 
+     *  This property contains one of the values in 
+     *  <code>ContainerDestructionPolicy</code>.
+     *  
+     *  @default "never"
+     *
+     *  @see spark.core.ContainerDestructionPolicy
+     *
+     */    
+    /*  Default to "never" since releasing a module when it is no longer
+     *  visible is a new behavior and reloading the module may be time 
+     *  consuming.
+     */
+    private var _elementDestructionPolicy:String = ContainerDestructionPolicy.NEVER;
+    
+    [Inspectable(enumeration="always,auto,never", defaultValue="never")]
+    
+    /**
+     *  @inheritDoc
+     */
+    public function get elementDestructionPolicy():String
+    {
+        return _elementDestructionPolicy;
+    }
+    
+    /**
+     *  @private
+     */
+    public function set elementDestructionPolicy(value:String):void
+    {
+        _elementDestructionPolicy = value;
     }
     
     //----------------------------------
@@ -567,7 +635,7 @@ public class ModuleLoader extends Group
     
     //--------------------------------------------------------------------------
     //
-    //  Methods: INavigatorContent
+    //  Methods: IDeferredContentOwner
     //
     //--------------------------------------------------------------------------
 
@@ -588,7 +656,19 @@ public class ModuleLoader extends Group
         loadModule();
     }
 
-    //--------------------------------------------------------------------------
+    /**
+     *  @inheritDoc
+     */
+    public function removeDeferredContent(cache:Boolean = false):void
+    {
+        // Release the module and remove it from the display list. 
+        // ModuleManager will keep a weak reference to the module.
+        releaseModule();     
+        
+        loadRequested = false;
+    }
+
+	//--------------------------------------------------------------------------
     //
     //  Overridden Methods
     //
@@ -606,7 +686,7 @@ public class ModuleLoader extends Group
         {
             if (parent is IDeferredContentOwner)
             {
-                var parentCreationPolicy:String = IDeferredContentOwner(parent).creationPolicy;
+                var parentCreationPolicy:String = IDeferredContentOwner(parent).elementCreationPolicy;
                 creationPolicy = parentCreationPolicy == 
                     ContainerCreationPolicy.ALL ? ContainerCreationPolicy.ALL : 
                     ContainerCreationPolicy.NONE;
@@ -741,6 +821,31 @@ public class ModuleLoader extends Group
         }
     }
 
+    /**
+     *  @private
+     */ 
+    private function releaseModule():void
+    {
+        if (module)
+        {
+            module.removeEventListener(ModuleEvent.PROGRESS,
+                moduleProgressHandler);
+            module.removeEventListener(ModuleEvent.SETUP, moduleSetupHandler);
+            module.removeEventListener(ModuleEvent.READY, moduleReadyHandler);
+            module.removeEventListener(ModuleEvent.ERROR, moduleErrorHandler);
+            module.removeEventListener(ModuleEvent.UNLOAD, moduleUnloadHandler);
+            
+            module.release();
+            module = null;
+            
+            if (child)
+            {
+                removeElement(child);
+                child = null;
+            }
+        }
+    }
+
     //--------------------------------------------------------------------------
     //
     //  Event handlers

Modified: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/primitives/BitmapImage.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/primitives/BitmapImage.as?rev=1370028&r1=1370027&r2=1370028&view=diff
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/primitives/BitmapImage.as (original)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/primitives/BitmapImage.as Mon Aug  6 21:25:54 2012
@@ -226,7 +226,7 @@ public class BitmapImage extends Graphic
     //  bitmapData
     //----------------------------------
 
-    private var _bitmapData:BitmapData;
+    mx_internal var _bitmapData:BitmapData;
 
     /**
      *  Returns a copy of the BitmapData object representing
@@ -242,6 +242,8 @@ public class BitmapImage extends Graphic
      */
     public function get bitmapData():BitmapData
     {
+		//We return a copy because when the source of the data changes we destroy the bitmap
+		//If a developer is holding a reference to the actual bitmap they will have an invalid reference
         return _bitmapData ? _bitmapData.clone() : _bitmapData;
     }
 

Modified: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DataGridSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DataGridSkin.mxml?rev=1370028&r1=1370027&r2=1370028&view=diff
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DataGridSkin.mxml (original)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DataGridSkin.mxml Mon Aug  6 21:25:54 2012
@@ -33,6 +33,7 @@ columnHeaderGroup's headerRenderer prope
 and can be overridden by subclasses of this class: <code>alternatingRowColors</code>,
 <code>caretIndicator</code>, <code>columnSeparator</code>, <code>editorIndicator</code>, 
 <code>headerColumnSeparator</code>, <code>hoverIndicator</code>, 
+<code>lockedColumnsSeparator</code>, <code>lockedRowsSeparator</code>, 
 <code>rowSeparator</code>, <code>selectionIndicator</code>.  All of these 
 declarations define DataGrid skin parts except <code>headerColumnSeparator</code> and
 <code>headerRenderer</code> which are used for the values of the columnHeaderGroup's 
@@ -53,16 +54,17 @@ declarations define DataGrid skin parts 
     alpha.disabled="0.5" minWidth="89" minHeight="84">
     
     <fx:Metadata>
-    <![CDATA[
-        /** 
-        * @copy spark.skins.spark.ApplicationSkin#hostComponent
-          @langversion 3.0
-          @playerversion Flash 10
-          @playerversion AIR 1.5
-          @productversion Flex 4
-         */
-        [HostComponent("spark.components.DataGrid")]
-    ]]>
+        <![CDATA[
+            /** 
+             *  @copy spark.skins.spark.ApplicationSkin#hostComponent
+             *
+             *  @langversion 3.0
+             *  @playerversion Flash 10
+             *  @playerversion AIR 2.5
+             *  @productversion Flex 4.5
+             */
+            [HostComponent("spark.components.DataGrid")]
+        ]]>
     </fx:Metadata>
     
     <s:states>
@@ -74,7 +76,7 @@ declarations define DataGrid skin parts 
         <!--- @private -->        
         <fx:Component id="alternatingRowColorsBackground">
             <s:Rect implements="spark.components.gridClasses.IGridVisualElement">
-                <fx:Script>
+                <fx:Script fb:purpose="styling">
                     <![CDATA[
                         import spark.components.DataGrid;
                         import spark.components.Grid;
@@ -112,7 +114,7 @@ declarations define DataGrid skin parts 
         <!--- @private -->        
         <fx:Component id="caretIndicator">
             <s:Rect implements="spark.components.gridClasses.IGridVisualElement">
-                <fx:Script>
+                <fx:Script fb:purpose="styling">
                     <![CDATA[
                         import spark.components.DataGrid;
                         import spark.components.Grid;
@@ -148,6 +150,24 @@ declarations define DataGrid skin parts 
             </s:Line>
         </fx:Component>
         
+        <!--- 
+        Defines the appearance of the drop indicator.
+        The DataGrid's layout takes care to size and position the dropIndicator.
+        -->
+        <fx:Component id="dropIndicator">
+            <s:Group>
+                <s:Rect left="0" right="0" top="0" bottom="0">
+                    <s:fill>
+                        <!--- Defines the color of the background. -->
+                        <s:SolidColor color="0xBBBBBB" />
+                    </s:fill>
+                    <s:stroke>
+                        <s:SolidColorStroke color="0x868686" weight="1"/>
+                    </s:stroke>
+                </s:Rect>
+            </s:Group>
+        </fx:Component>
+        
         <!--- Defines the value of the columnSeparator property for the columnHeaderGroup. -->
         <fx:Component id="headerColumnSeparator">
             <s:Line>
@@ -155,7 +175,7 @@ declarations define DataGrid skin parts 
                     <s:SolidColorStroke color="0x696969" weight="1" caps="square"/>
                 </s:stroke>
             </s:Line>
-        </fx:Component>
+        </fx:Component>       
         
         <!--- Defines the value of the headerRenderer property for the columnHeaderGroup. 
               The default is spark.skins.spark.DefaultGridHeaderRenderer -->
@@ -166,7 +186,7 @@ declarations define DataGrid skin parts 
         <!--- @private -->
         <fx:Component id="hoverIndicator">
             <s:Rect implements="spark.components.gridClasses.IGridVisualElement">
-                <fx:Script>
+                <fx:Script fb:purpose="styling">
                     <![CDATA[
                         import spark.components.DataGrid;
                         import spark.components.Grid;
@@ -193,6 +213,29 @@ declarations define DataGrid skin parts 
             </s:Rect>
         </fx:Component>
         
+        
+        <!--- @private -->
+        <fx:Component id="lockedColumnsSeparator">
+            <s:Group>
+                <s:Line left="0" right="0" top="0" bottom="0">
+                    <s:stroke>
+                        <s:SolidColorStroke color="0x000000" weight="2" caps="square"/>
+                    </s:stroke>
+                </s:Line>
+            </s:Group>
+        </fx:Component>
+        
+        <!--- @private -->
+        <fx:Component id="lockedRowsSeparator">
+            <s:Group>
+                <s:Line left="0" right="0" top="0" bottom="0">
+                    <s:stroke>
+                        <s:SolidColorStroke color="0x000000" weight="2" caps="square"/>
+                    </s:stroke>
+                </s:Line>
+            </s:Group>
+        </fx:Component>           
+        
         <!--- @private -->
         <fx:Component id="rowSeparator">
             <s:Line>
@@ -205,7 +248,7 @@ declarations define DataGrid skin parts 
         <!--- @private -->
         <fx:Component id="selectionIndicator">
             <s:Rect implements="spark.components.gridClasses.IGridVisualElement">
-                <fx:Script>
+                <fx:Script fb:purpose="styling">
                     <![CDATA[
                         import spark.components.DataGrid;
                         import spark.components.Grid;
@@ -296,9 +339,13 @@ declarations define DataGrid skin parts 
     <!-- column header, content -->
     <s:VGroup horizontalAlign="justify" gap="0" left="0" right="0" top="0" bottom="0">
         
-        <!--- @private -->
-        <s:GridColumnHeaderGroup id="columnHeaderGroup"
-            paddingLeft="1" paddingTop="1" paddingRight="1" minHeight="21" 
+        <!--- @private
+            The GridColumnHeaderGroup's padding values are used to line it up with the Grid
+            which is inset by the Scroller's minViewportInset, which provides room for the 
+            DataGrid border - the last Rect element below.
+        -->
+        <s:GridColumnHeaderGroup id="columnHeaderGroup" minHeight="21"
+            paddingLeft="1" paddingRight="1" paddingTop="1"
             columnSeparator="{headerColumnSeparator}"
             headerRenderer="{headerRenderer}"/>
 
@@ -325,11 +372,17 @@ declarations define DataGrid skin parts 
                 <s:Scroller id="scroller" minViewportInset="1" hasFocusableChildren="false" height="100%">
                     <!--- @private -->
                     <s:Grid id="grid" itemRenderer="spark.skins.spark.DefaultGridItemRenderer">
-                        <s:GridLayer name="backgroundLayer"/>
-                        <s:GridLayer name="selectionLayer"/>
-                        <s:GridLayer name="editorIndicatorLayer"/>                            
-                        <s:GridLayer name="rendererLayer"/>
-                        <s:GridLayer name="overlayLayer"/>
+                        <s:gridView>
+                            <fx:Component>
+                                <s:GridView>
+                                    <s:GridLayer name="backgroundLayer"/>
+                                    <s:GridLayer name="selectionLayer"/>
+                                    <s:GridLayer name="editorIndicatorLayer"/>                            
+                                    <s:GridLayer name="rendererLayer"/>
+                                    <s:GridLayer name="overlayLayer"/>
+                                </s:GridView>
+                            </fx:Component>
+                        </s:gridView>
                     </s:Grid>                    
                 </s:Scroller>
             </s:VGroup>
@@ -347,4 +400,4 @@ declarations define DataGrid skin parts 
         </s:stroke>
     </s:Rect>    
 
-</s:SparkSkin>
+</s:SparkSkin>
\ No newline at end of file

Added: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListButtonSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListButtonSkin.mxml?rev=1370028&view=auto
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListButtonSkin.mxml (added)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListButtonSkin.mxml Mon Aug  6 21:25:54 2012
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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
+
+      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.
+-->
+
+
+<!--- The default skin class for the anchor button on a Spark DropDownList component.  
+
+      @see spark.components.DropDownList        
+      @see spark.skins.spark.DropDownListSkin
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="21" minHeight="21">
+    
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.Button")]
+    ]]>
+    </fx:Metadata> 
+    
+     <fx:Script fb:purpose="styling">
+         /* Define the skin elements that should not be colorized. 
+            For dropDownList buttons, the graphics are colorized but the arrow is not. */
+         static private const exclusions:Array = ["arrow"];
+
+         /**
+          * @private
+          */  
+         //override public function get colorizeExclusions():Array {return exclusions;}
+        
+         /* Define the symbol fill items that should be colored by the "symbolColor" style. */
+         static private const symbols:Array = ["arrowFill1", "arrowFill2"];
+
+         /**
+          * @private
+          */
+         //override public function get symbolItems():Array {return symbols};
+         
+         /**
+          * @private
+          */
+         override protected function initializationComplete():void
+         {
+             useChromeColor = true;
+             super.initializationComplete();
+         }
+         
+         /**
+          *  @private
+          */
+         override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
+         {
+             var cr:Number = getStyle("cornerRadius");
+             /*
+             if (cornerRadius != cr)
+             {
+                 cornerRadius = cr;
+                 shadow.radiusX = cornerRadius;
+                 fill.radiusX = cornerRadius;
+                 lowlight.radiusX = cornerRadius;
+                 highlight.radiusX = cornerRadius;
+                 border.radiusX = cornerRadius;
+             }
+             
+             if (highlightStroke) highlightStroke.radiusX = cornerRadius;
+             if (hldownstroke1) hldownstroke1.radiusX = cornerRadius;
+             if (hldownstroke2) hldownstroke2.radiusX = cornerRadius;
+             */
+             
+             super.updateDisplayList(unscaledWidth, unscaledHeight);
+         }
+     
+     private var cornerRadius:Number = 2;
+    </fx:Script>
+      
+    <!-- states -->
+    <s:states>
+        <s:State name="up" />
+        <s:State name="over" />
+        <s:State name="down" />
+        <s:State name="disabled" />
+    </s:states>
+    
+    <!--s:Rect x="0.5" y="0.5" width="70" height="22" alpha="0"-->
+    <s:Rect left="1" right="1" top="1" bottom="1" alpha="0">
+           <s:stroke>
+            <s:SolidColorStroke caps="none" color="#5C5C5C" joints="miter" miterLimit="4" weight="1"/>
+        </s:stroke>
+        <s:fill>
+            <s:SolidColor color="#FFFFFF"/>
+        </s:fill>
+    </s:Rect>
+    
+    <!--- @copy spark.components.DropDownList#labelDisplay -->
+    <s:Label id="labelDisplay" verticalAlign="middle" maxDisplayedLines="1" text="September"
+             mouseEnabled="false" mouseChildren="false"
+             left="1" right="1" top="2" bottom="2" verticalCenter="1"/> 
+    
+    <s:Line includeIn="down,over" left="0" right="0" bottom="1">
+        <s:stroke>
+            <s:SolidColorStroke caps="none" color="#5C5C5C" joints="miter" miterLimit="4" weight="1"/>
+        </s:stroke>
+    </s:Line>
+</s:SparkSkin>

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListButtonSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListButtonSkin.mxml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListSkin.mxml?rev=1370028&view=auto
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListSkin.mxml (added)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListSkin.mxml Mon Aug  6 21:25:54 2012
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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
+
+      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.
+-->
+<!--- The default skin class for the Spark DropDownList component. 
+      The skin for the anchor button for a DropDownList component 
+      is defined by the DropDownListButtonSkin class.  
+      
+      <p>In a custom skin class that uses transitions, set the 
+      <code>itemDestructionPolicy</code> property to <code>never</code>
+      for the PopUpAnchor defined by the popUp property.</p>      
+        
+      @see spark.components.DropDownList        
+      @see spark.skins.spark.DropDownListButtonSkin
+        
+      @langversion 3.0
+      @playerversion Flash 10
+      @playerversion AIR 1.5
+      @productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled=".5"> 
+
+    <!-- host component -->
+    <fx:Metadata>
+    <![CDATA[ 
+        /** 
+         * @copy spark.skins.spark.ApplicationSkin#hostComponent
+         */
+        [HostComponent("spark.components.DropDownList")]
+    ]]>
+    </fx:Metadata> 
+
+    <fx:Script fb:purpose="styling">
+        <![CDATA[            
+            /* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+            static private const contentFill:Array = ["bgFill"];
+            
+            /**
+             *  @private
+             */
+            override public function get contentItems():Array {return contentFill};
+             
+            /**
+             * @private
+             */
+            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+            {
+                if (getStyle("borderVisible") == false)
+                {
+                    if (border)
+                        border.visible = false;
+                    if (background)
+                    {
+                        background.left = background.top = background.right = background.bottom = 0;
+                    }
+                    if (scroller)
+                        scroller.minViewportInset = 0;
+                }
+                else
+                {
+                    if (border)
+                        border.visible = true;
+                    if (background)
+                    {
+                        background.left = background.top = background.right = background.bottom = 1;
+                    }
+                    if (scroller)
+                        scroller.minViewportInset = 1;
+                }
+                
+                if (dropShadow)
+                    dropShadow.visible = getStyle("dropShadowVisible");
+                
+                openButton.setStyle("cornerRadius", getStyle("cornerRadius"));
+                
+                if (borderStroke)
+                {
+                    borderStroke.color = getStyle("borderColor");
+                    borderStroke.alpha = getStyle("borderAlpha");
+                }
+                super.updateDisplayList(unscaledWidth, unscaledHeight);
+            }
+        ]]>
+    </fx:Script>
+ 
+    <fx:Script>
+        <![CDATA[
+            import mx.core.UIComponent;
+            import mx.events.FlexEvent;
+            
+            /**
+             *  @private
+             */
+//            override protected function initializationComplete():void
+//            {
+//                super.initializationComplete();
+//                openButton.skin.addEventListener(
+//                    FlexEvent.STATE_CHANGE_COMPLETE, 
+//                    openButtonSkin_stateChangeCompleteHandler);
+//            }
+            
+//            private function openButtonSkin_stateChangeCompleteHandler(event:FlexEvent):void
+//            {
+//                
+//                const currentState:String = event.target is UIComponent ? UIComponent(event.target).currentState : "";
+//                if (currentState == "down" || currentState == "over")
+//                    labelDisplayUnderline.visible = true;
+//                    //labelDisplay.setStyle("textDecoration", "underline");
+//                else
+//                    labelDisplayUnderline.visible = false;
+//                //labelDisplay.setStyle("textDecoration", "none");
+//            }
+            
+        ]]>
+    </fx:Script>
+
+    <s:states>
+        <s:State name="normal" />
+        <s:State name="open" />
+        <s:State name="disabled" />
+    </s:states>
+    
+    <!--- 
+        The PopUpAnchor control that opens the drop-down list. 
+        
+        <p>In a custom skin class that uses transitions, set the 
+        <code>itemDestructionPolicy</code> property to <code>never</code>.</p>
+    -->
+    <s:PopUpAnchor id="popUp"  displayPopUp.normal="false" displayPopUp.open="true" includeIn="open"
+        left="0" right="0" top="0" bottom="0" itemDestructionPolicy="auto"
+        popUpPosition="below" popUpWidthMatchesAnchorWidth="false">
+        
+        <!--- 
+              This includes borders, background colors, scrollers, and filters.
+              @copy spark.components.supportClasses.DropDownListBase#dropDown
+        -->
+        <s:Group id="dropDown">
+        
+            <!--- @private -->
+            <s:RectangularDropShadow id="dropShadow" blurX="20" blurY="20" alpha="0.45" distance="7" 
+                 angle="90" color="#000000" left="0" top="0" right="0" bottom="0"/>
+        
+            <!--- @private -->
+            <s:Rect id="border" left="0" right="0" top="0" bottom="0">
+                <s:stroke>
+                    <!--- border stroke @private -->
+                    <s:SolidColorStroke id="borderStroke" weight="1"/>
+                </s:stroke>
+            </s:Rect>
+
+            <!-- fill -->
+            <!--- Defines the appearance of drop-down list's background fill. -->
+            <s:Rect id="background" left="1" right="1" top="1" bottom="1" >
+                <s:fill>
+                <!---  
+                    The color of the drop down's background fill.
+                    The default color is 0xFFFFFF.
+                -->
+                    <s:SolidColor id="bgFill" color="0xFFFFFF" />
+                </s:fill>
+            </s:Rect>
+            
+            <!--- @private -->
+            <s:Scroller id="scroller" left="0" top="0" right="0" bottom="0" hasFocusableChildren="false" minViewportInset="1">
+                <!--- @copy spark.components.SkinnableDataContainer#dataGroup-->
+                <s:DataGroup id="dataGroup" itemRenderer="spark.skins.spark.DefaultItemRenderer">
+                    <s:layout>
+                        <s:VerticalLayout gap="0" horizontalAlign="contentJustify" requestedMinRowCount="1" requestedMaxRowCount="6"/>
+                    </s:layout>
+                </s:DataGroup> 
+            </s:Scroller>
+        </s:Group>
+    </s:PopUpAnchor>
+    
+    <!---  The default skin is DropDownListButtonSkin. 
+            @copy spark.components.supportClasses.DropDownListBase#openButton
+            @see spark.skins.spark.DropDownListButtonSkin -->
+    <s:Button id="openButton" left="0" right="0" top="0" bottom="0" 
+              focusEnabled="false" tabEnabled="false"
+              skinClass="spark.skins.spark.DateChooserMonthDropDownListButtonSkin"/>  
+        
+    <!--- @copy spark.components.DropDownList#labelDisplay -->
+    <s:Label id="labelDisplay" textAlign="center" verticalAlign="middle" maxDisplayedLines="1"
+        mouseEnabled="false" mouseChildren="false"
+        visible="false" includeInLayout="false" updateComplete="openButton.label=labelDisplay.text"
+        left="1" right="1" top="2" bottom="2" verticalCenter="1"/> 
+
+    <!-- underline for labelDisplay when openButton state is "down" or "over" -->
+    <!--s:Line id="labelDisplayUnderline" left="1" right="1" bottom="2">
+        <s:stroke>
+            <s:SolidColorStroke caps="none" color="#5C5C5C" joints="miter" miterLimit="4" weight="1"/>
+        </s:stroke>
+    </s:Line-->
+</s:SparkSkin>

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserMonthDropDownListSkin.mxml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserNextMonthButtonSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserNextMonthButtonSkin.mxml?rev=1370028&view=auto
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserNextMonthButtonSkin.mxml (added)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserNextMonthButtonSkin.mxml Mon Aug  6 21:25:54 2012
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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
+
+      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.
+-->
+<s:Skin xmlns:s="library://ns.adobe.com/flex/spark"
+		xmlns:fx="http://ns.adobe.com/mxml/2009"
+		xmlns:d="http://ns.adobe.com/fxg/2008/dt"
+		xmlns:flm="http://ns.adobe.com/flame/2008"
+		width="20" height="20">
+	<fx:Metadata>[HostComponent("spark.components.Button")]</fx:Metadata>
+	<s:states>
+		<s:State name="up"/>
+		<s:State name="over"/>
+		<s:State name="down"/>
+		<s:State name="disabled"/>
+	</s:states>
+	<s:Group d:id="49" x="0" y="0" flm:knockout="false"
+			 visible.disabled="false" alpha.disabled="0.25"
+			 visible.up="false">
+		<s:Rect x="0" y="0" width="20" height="20" radiusX="2.98741" radiusY="2.98741">
+			<s:fill>
+				<s:LinearGradient x="10" y="0.000488281" scaleX="20" rotation="90">
+					<s:GradientEntry ratio="0" color="#B4B7B9"/>
+					<s:GradientEntry ratio="1" color="#5F6162"/>
+				</s:LinearGradient>
+			</s:fill>
+		</s:Rect>
+	</s:Group>
+	<s:Group d:id="50" x="1" y="1" flm:knockout="false"
+			 visible.disabled="false" alpha.disabled="0.25"
+			 visible.up="false">
+		<s:Rect x="0" y="0" width="18" height="18" radiusX="1.9919" radiusY="1.9919">
+			<s:fill>
+				<s:LinearGradient x="9" y="0.000488281" scaleX="18" rotation="90">
+					<s:GradientEntry ratio="0" color="#FFFFFF"/>
+					<s:GradientEntry ratio="1" color="#CBCBCB"/>
+				</s:LinearGradient>
+			</s:fill>
+		</s:Rect>
+	</s:Group>
+	<s:Path x="8" y="6" data="M 0 0 L 0 8 L 5 4 L 0 0 Z" winding="nonZero"
+			alpha.disabled="0.25">
+		<s:fill>
+			<s:SolidColor color="#111111"/>
+		</s:fill>
+	</s:Path>
+</s:Skin>

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserNextMonthButtonSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserNextMonthButtonSkin.mxml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserPreviousMonthButtonSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserPreviousMonthButtonSkin.mxml?rev=1370028&view=auto
==============================================================================
--- incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserPreviousMonthButtonSkin.mxml (added)
+++ incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserPreviousMonthButtonSkin.mxml Mon Aug  6 21:25:54 2012
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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
+
+      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.
+-->
+<s:Skin xmlns:s="library://ns.adobe.com/flex/spark"
+		xmlns:fx="http://ns.adobe.com/mxml/2009"
+		xmlns:d="http://ns.adobe.com/fxg/2008/dt"
+		xmlns:flm="http://ns.adobe.com/flame/2008"
+		width="20" height="20">
+	<fx:Metadata>[HostComponent("spark.components.Button")]</fx:Metadata>
+	<s:states>
+		<s:State name="up"/>
+		<s:State name="over"/>
+		<s:State name="down"/>
+		<s:State name="disabled"/>
+	</s:states>
+	<s:Group d:id="47" x="0" y="0" flm:knockout="false"
+			 visible.disabled="false" alpha.disabled="0.25"
+			 visible.up="false">
+		<s:Rect x="0" y="0" width="20" height="20" radiusX="2.98741" radiusY="2.98741">
+			<s:fill>
+				<s:LinearGradient x="10" y="0" scaleX="20" rotation="90">
+					<s:GradientEntry ratio="0" color="#B4B7B9"/>
+					<s:GradientEntry ratio="1" color="#5F6162"/>
+				</s:LinearGradient>
+			</s:fill>
+		</s:Rect>
+	</s:Group>
+	<s:Group d:id="48" x="1" y="1" flm:knockout="false"
+			 visible.disabled="false" alpha.disabled="0.25"
+			 visible.up="false">
+		<s:Rect x="0" y="0" width="18" height="18" radiusX="1.9919" radiusY="1.9919">
+			<s:fill>
+				<s:LinearGradient x="9" y="0" scaleX="18" rotation="90">
+					<s:GradientEntry ratio="0" color="#FFFFFF"/>
+					<s:GradientEntry ratio="1" color="#CBCBCB"/>
+				</s:LinearGradient>
+			</s:fill>
+		</s:Rect>
+	</s:Group>
+	<s:Path x="7" y="6" data="M 5 0 L 5 8 L 0 4 L 5 0 Z" winding="nonZero"
+			alpha.disabled="0.25">
+		<s:fill>
+			<s:SolidColor color="#111111"/>
+		</s:fill>
+	</s:Path>
+</s:Skin>

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserPreviousMonthButtonSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/flex/whiteboard/cframpton/adobe.next/frameworks/projects/spark/src/spark/skins/spark/DateChooserPreviousMonthButtonSkin.mxml
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message