You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cf...@apache.org on 2012/12/21 19:05:22 UTC

svn commit: r1425063 [12/13] - in /incubator/flex/sdk/branches/develop: frameworks/ frameworks/projects/spark/ frameworks/projects/spark/src/ frameworks/projects/spark/src/spark/collections/ frameworks/projects/spark/src/spark/components/ frameworks/pr...

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_Properties_sortable.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_Properties_sortable.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_Properties_sortable.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_Properties_sortable.mxml Fri Dec 21 18:05:20 2012
@@ -58,24 +58,31 @@
                 public var tobeCheckedCells:ArrayList;
                 public var arrList:ArrayList;
                 public var rowsHolder:ArrayList=new ArrayList();
-		public var indices:Vector.<int>;
-		public var xmlListColl:XMLListCollection;
-		public var temp:String="";
-		public var vTemp:Vector.<int>=Vector.<int>([0,1,2]);
-		public var vTemp2:Vector.<int>;
-		public var newItem:Object={index:101, firstName:"New Name",lastName:"Earl",food:"Almonds",drink:"DrinkD",imageURL:"../../../../../Assets/Images/smallbluerect.jpg", numberValue:3, birthDay:"2004/08/08" };
+                public var indices:Vector.<int>;
+                public var xmlListColl:XMLListCollection;
+                public var temp:String="";
+                public var vTemp:Vector.<int>=Vector.<int>([0,1,2]);
+                public var vTemp2:Vector.<int>;
+                public var newItem:Object={index:101, firstName:"New Name",lastName:"Earl",food:"Almonds",drink:"DrinkD",imageURL:"../../../../../Assets/Images/smallbluerect.jpg", numberValue:3, birthDay:"2004/08/08" };
 
-               
-		
-		/**
-		* this method is to set a editorClass on a dataGrid based on columnIndex
-		*/
-		public function setCellEditorOnColumn(dg:DataGrid, editorClass:Class, index:int):void
-		{
-			var gc:GridColumn=(GridColumn)(dg.columns.getItemAt(index));
-			gc.itemEditor=new ClassFactory(editorClass);
-			gc.editable=true;
-		}
+                [Bindable]
+                private var firstNameX:int;
+                
+                /**
+                * this method is to set a editorClass on a dataGrid based on columnIndex
+                */
+                public function setCellEditorOnColumn(dg:DataGrid, editorClass:Class, index:int):void
+                {
+                    var gc:GridColumn=(GridColumn)(dg.columns.getItemAt(index));
+                    gc.itemEditor=new ClassFactory(editorClass);
+                    gc.editable=true;
+                }
+                
+                private function setFirstNameX():void
+                {
+                    firstNameX = FlexGlobals.topLevelApplication.dg2.grid.getColumnBounds(1).x + 10;
+                    //trace("setFirstNameX", firstNameX);
+                }                
             }
             
         ]]>
@@ -319,36 +326,36 @@
         </TestCase> 
         
         
-        <!-- regression sdk-28144 -->
-	<TestCase testID="CHG_invisibleColumn_test002" keywords="[DataGrid, GridColumn,visibility]" description="update dataGrid columns with invisible columns">
-             <setup>
-                 <ResetComponent target="dg1" className="components.DataGrid_sort_noData" waitEvent="updateComplete"/> 
-		 <RunCode code="FlexGlobals.topLevelApplication.dg1.dataProvider=FlexGlobals.topLevelApplication.dg1.dp3"  waitEvent="enterFrame" waitTarget="stage"/>
-		 <SetProperty target="dg1" propertyName="height" value="150" waitEvent="updateComplete" />
-		 <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="1"/>
-             	
-             </setup>
-             <body>
-             	 <CompareBitmap target="dg1" url="../Properties/Baselines/$testID.png" numColorVariances="20" ignoreMaxColorVariance="true"/>
-		
-             	 <SetProperty target="dg1" propertyName="columns" valueExpression="value=FlexGlobals.topLevelApplication.dg1.columnsUpdate2" />
-		 <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="1"/>
-             	 <SetProperty target="dg1" propertyName="columns" valueExpression="value=FlexGlobals.topLevelApplication.dg1.columnsUpdate1" />
-		 <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="1"/>		 
-		 
-		 <AssertMethodValue method="value=GridColumn(FlexGlobals.topLevelApplication.dg1.columns.getItemAt(1)).visible" value="true"/>
-		
-		 <CompareBitmap target="dg1" url="../Properties/Baselines/$testID_c1visible.png" numColorVariances="20" ignoreMaxColorVariance="true"/>
-		 
- 		<!-- enable the column -->
- 		<RunCode code="GridColumn(FlexGlobals.topLevelApplication.dg1.columns.getItemAt(1)).visible=false" />
-		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
- 		
- 		<!-- check the bitmap -->
- 		<CompareBitmap target="dg1" url="../Properties/Baselines/$testID_c1invisible.png" numColorVariances="20" ignoreMaxColorVariance="true"/>
- 		
-             </body>
-        </TestCase>  
+    <!-- regression sdk-28144 -->
+    <TestCase testID="CHG_invisibleColumn_test002" keywords="[DataGrid, GridColumn,visibility]" description="update dataGrid columns with invisible columns">
+        <setup>
+            <ResetComponent target="dg1" className="components.DataGrid_sort_noData" waitEvent="updateComplete"/> 
+            <RunCode code="FlexGlobals.topLevelApplication.dg1.dataProvider=FlexGlobals.topLevelApplication.dg1.dp3"  waitEvent="enterFrame" waitTarget="stage"/>
+            <SetProperty target="dg1" propertyName="height" value="150" waitEvent="updateComplete" />
+            <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="1"/>
+            
+        </setup>
+        <body>
+            <CompareBitmap target="dg1" url="../Properties/Baselines/$testID.png" numColorVariances="20" ignoreMaxColorVariance="true"/>
+            
+            <SetProperty target="dg1" propertyName="columns" valueExpression="value=FlexGlobals.topLevelApplication.dg1.columnsUpdate2" />
+            <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="1"/>
+            <SetProperty target="dg1" propertyName="columns" valueExpression="value=FlexGlobals.topLevelApplication.dg1.columnsUpdate1" />
+            <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="1"/>		 
+            
+            <AssertMethodValue method="value=GridColumn(FlexGlobals.topLevelApplication.dg1.columns.getItemAt(1)).visible" value="true"/>
+            
+            <CompareBitmap target="dg1" url="../Properties/Baselines/$testID_c1visible.png" numColorVariances="20" ignoreMaxColorVariance="true"/>
+            
+            <!-- enable the column -->
+            <RunCode code="GridColumn(FlexGlobals.topLevelApplication.dg1.columns.getItemAt(1)).visible=false" />
+            <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
+            
+            <!-- check the bitmap -->
+            <CompareBitmap target="dg1" url="../Properties/Baselines/$testID_c1invisible.png" numColorVariances="20" ignoreMaxColorVariance="true"/>
+        
+        </body>
+    </TestCase>  
         
 	<TestCase testID="Sort_invisibleColumn_test001" keywords="[DataGrid, Property, Sortable]" description="sort an invisible column, then make the column visible, verify the data is sorted correctly">
              <setup>
@@ -967,33 +974,37 @@
 		<AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg1.selectionContainsCell(4,1)" value="false"/>
 		
              </body>
-        </TestCase> 
-   	<TestCase testID="column_withRenderer_test001" keywords="[DataGrid, Property, Sortable]" description="verify after sorting, column with renderer should show updated, sorted data">
-	     <setup>
-		<ResetComponent target="dg3" className="components.DataGrid_Custom_IRs2" waitEvent="updateComplete"/> 
-	     </setup>
-	     <body>
-		<DispatchMouseClickEvent target="dg3.columnHeaderGroup" localX="200" localY="10" waitEvent="click" waitTarget="dg3"/>
-		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="4"/>
-		<CompareBitmap url="../Properties/baselines/$testID_page1.png" numColorVariances="20" maxColorVariance="20"  target="dg3" />
-		
-		<RunCode code="FlexGlobals.topLevelApplication.dg3.ensureCellIsVisible(FlexGlobals.topLevelApplication.dg3.dataProvider.length-1)" />
- 	   	<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="4"/>
-		<CompareBitmap url="../Properties/baselines/$testID_lastPage.png" numColorVariances="20" maxColorVariance="20"  target="dg3" />
-		
-		<!-- reverse sort -->
-		<DispatchMouseClickEvent target="dg3.columnHeaderGroup" localX="200" localY="10" waitEvent="click" waitTarget="dg3"/>
-		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="4"/>
-		
-		<!-- sort again, back to the first sort state-->
-		<DispatchMouseClickEvent target="dg3.columnHeaderGroup" localX="200" localY="10" waitEvent="click" waitTarget="dg3"/>
-		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="4"/>
-		
-		<RunCode code="FlexGlobals.topLevelApplication.dg3.ensureCellIsVisible(FlexGlobals.topLevelApplication.dg3.dataProvider.length-1)" />
-		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="4"/>
-		<CompareBitmap url="../Properties/baselines/$testID_lastPage.png" numColorVariances="20" maxColorVariance="20"  target="dg3" />
-		
-             </body>
+        </TestCase>
+        
+        <TestCase testID="column_withRenderer_test001" keywords="[DataGrid, Property, Sortable]" description="verify after sorting, column with renderer should show updated, sorted data">
+            <setup>
+                <ResetComponent target="dg3" className="components.DataGrid_Custom_IRs2" waitEvent="updateComplete"/>
+            </setup>
+            <body>
+                <!-- click on columnIndex=1 to sort -->
+		        <DispatchMouseClickEvent target="dg3.columnHeaderGroup" localX="200" localY="10" waitEvent="sortChange" waitTarget="dg3"/>
+ 	   	        <WaitForLayoutManager/>
+                <CompareBitmap url="../Properties/baselines/$testID_page1.png" numColorVariances="20" maxColorVariance="20"  target="dg3" />
+                
+                <!-- ensure last row is visible -->
+                <RunCode code="FlexGlobals.topLevelApplication.dg3.ensureCellIsVisible(FlexGlobals.topLevelApplication.dg3.dataProvider.length-1)" />
+ 	   	        <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="4"/>
+                <WaitForLayoutManager/>
+                <CompareBitmap url="../Properties/baselines/$testID_lastPage.png" numColorVariances="20" maxColorVariance="20"  target="dg3" />
+                
+                <!-- click on columnIndex=1 to reverse sort -->
+		        <DispatchMouseClickEvent target="dg3.columnHeaderGroup" localX="200" localY="10" waitEvent="sortChange" waitTarget="dg3"/>
+                <WaitForLayoutManager/>
+                
+                <!-- click on columnIndex=1 again, to sort back to the first sort state-->
+		        <DispatchMouseClickEvent target="dg3.columnHeaderGroup" localX="200" localY="10" waitEvent="sortChange" waitTarget="dg3"/>
+                <WaitForLayoutManager/>
+                
+                <!-- ensure last row is visible -->
+                <RunCode code="FlexGlobals.topLevelApplication.dg3.ensureCellIsVisible(FlexGlobals.topLevelApplication.dg3.dataProvider.length-1)" />
+                <WaitForLayoutManager/>
+                <CompareBitmap url="../Properties/baselines/$testID_lastPage.png" numColorVariances="20" maxColorVariance="20"  target="dg3" />            
+            </body>
         </TestCase>
         
         
@@ -1076,53 +1087,42 @@
 
 	     </body>
         </TestCase> 
-  	<TestCase testID="Sort_sortableFalse_test001" keywords="[DataGrid, Property, Sortable]" description="dataGrid has sortable toggled, verify interacting the dataGrid for sort is toggled as well">
-               <setup>
-                  <ResetComponent target="dg2" className="components.DataGrid_no_explicit_columns" waitEvent="updateComplete"/> 
-              </setup>
-              <body>
-              	
-              	  
-              	<!-- click on columnHeader column=firstName which is sortable -->
-              	<RunCode code="FlexGlobals.topLevelApplication.dg2.setFocus()" waitEvent="focusIn" waitTarget="dg2"/>
-                 <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="188" localY="10" waitEvent="click" waitTarget="dg2"/>
-  		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
-  		
- 		<AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="JamFN"/>
- 		<!-- disable sortable on the column -->
- 		<RunCode code="((GridColumn)(FlexGlobals.topLevelApplication.dg2.columns.getItemAt(2))).sortable=false"  waitEvent="enterFrame" waitTarget="stage"/>
- 		
- 		<!-- sort on the column -->
-  	        <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="188" localY="10" waitEvent="click" waitTarget="dg2"/>
-  	        <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
-  	        <!-- verify sort is disabled, no data update -->
-  	        <AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="RicFN"/>
-  	        
-  	        <!-- enable the column sortable again -->
-  	        <RunCode code="((GridColumn)(FlexGlobals.topLevelApplication.dg2.columns.getItemAt(2))).sortable=true"  waitEvent="enterFrame" waitTarget="stage"/>
- 		<DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="188" localY="10" waitEvent="click" waitTarget="dg2"/>
- 		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
- 		<!-- verify sort is enabled,data is updated-->
- 		<AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="JamFN"/>
- 
-  	        <!-- disable sortable on DataGrid level -->
-  	        <SetProperty target="dg2" propertyName="sortableColumns" value="false"  waitEvent="enterFrame" waitTarget="stage"/>
-  	        
-  	        <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="188" localY="10" waitEvent="click" waitTarget="dg2"/>
- 		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
-  	        <!-- verify sort is disabled, no data update -->
- 		<AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="JamFN"/>
-  	       
-  	       <!-- verify sort is disabled, no data updated -->
- 		<SetProperty target="dg2" propertyName="sortableColumns" value="true"  waitEvent="enterFrame" waitTarget="stage"/>
-  	       
-  	        <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="188" localY="10" waitEvent="click" waitTarget="dg2"/>
- 		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
-  	        <!-- verify sort is enabled, data is updated -->
- 		<AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="RicFN"/>
-  	               
- 	    </body>
-        </TestCase>  
+        
+    <TestCase testID="Sort_sortableFalse_test001" keywords="[DataGrid, Property, Sortable]" description="dataGrid has sortable toggled, verify interacting the dataGrid for sort is toggled as well">
+        <setup>
+            <ResetComponent target="dg2" className="components.DataGrid_no_explicit_columns" waitEvent="updateComplete"/> 
+        </setup>
+        <body>
+            <RunCode code="FlexGlobals.topLevelApplication.dg2.setFocus()" waitEvent="focusIn" waitTarget="dg2"/>
+            <RunCode code="setFirstNameX()"/>
+
+            <!-- click on columnHeader column=firstName which is sortable -->
+            <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="{firstNameX}" localY="10" waitEvent="sortChange" waitTarget="dg2"/>
+            <AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="JamFN"/>
+            
+            <!-- disable sortable on the column - verify sort is disabled, no data update -->
+            <RunCode code="((GridColumn)(FlexGlobals.topLevelApplication.dg2.columns.getItemAt(1))).sortable=false"  waitEvent="enterFrame" waitTarget="stage"/>
+            <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="{firstNameX}" localY="10" waitEvent="click" waitTarget="dg2"/>
+            <!--AssertNoEvent target="dg2" eventName="sortChange" eventClass="spark.events::GridSortEvent" /-->
+            <AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="JamFN"/>
+            
+            <!-- enable the column sortable again - verify sort is enabled,data is updated -->
+            <RunCode code="((GridColumn)(FlexGlobals.topLevelApplication.dg2.columns.getItemAt(1))).sortable=true"  waitEvent="enterFrame" waitTarget="stage"/>
+            <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="{firstNameX}" localY="10" waitEvent="sortChange" waitTarget="dg2"/>
+            <AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="RonFN"/>
+            
+            <!-- disable sortable on DataGrid level - verify sort is disabled, no data update-->
+            <SetProperty target="dg2" propertyName="sortableColumns" value="false" waitEvent="sortableColumnsChanged" waitTarget="dg2"/>            
+            <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="{firstNameX}" localY="10" waitEvent="click" waitTarget="dg2"/>
+            <!--AssertNoEvent target="dg2" eventName="sortChange" eventClass="spark.events::GridSortEvent" /-->
+            <AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="RonFN"/>
+            
+            <!-- enable sortable on DataGrid level - verify sort is enabled, data is updated -->
+            <SetProperty target="dg2" propertyName="sortableColumns" value="true" waitEvent="sortableColumnsChanged" waitTarget="dg2"/>            
+            <DispatchMouseClickEvent target="dg2.columnHeaderGroup" localX="{firstNameX}" localY="10" waitEvent="sortChange" waitTarget="dg2"/>
+            <AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg2.dataProvider.getItemAt(0).firstName" value="JamFN"/>        
+        </body>
+    </TestCase>  
                
     <TestCase testID="Sort_XMLCollection_test001" keywords="[DataGrid, Property, Sortable]" description="dataGrid with XMLListCollection dataProvider, verify sort is handled correctly">
              <setup>
@@ -1448,4 +1448,4 @@
 	      </body>
 	</TestCase>    
     </testCases>
-</UnitTester>
\ No newline at end of file
+</UnitTester>

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_Properties_visible.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_Properties_visible.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_Properties_visible.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_Properties_visible.mxml Fri Dec 21 18:05:20 2012
@@ -53,15 +53,17 @@
 		<TestCase testID="DataGrid_Properties_col1VisibleFalse" keywords="[DataGrid, Property, column, visible]" description="Test the width and appearance of the DataGrid when column visibility is set to false and true">			
 			<setup>
 				<ResetComponent target="myComp1" className="components.basicDG" waitEvent="updateComplete" />
-				<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>				
+				<WaitForLayoutManager/>				
 			</setup>
 			<body>				
 				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="250"/>
 				<SetProperty target="myComp1.c1_1" propertyName="visible" value="false" waitEvent="enterFrame" waitTarget="stage"/>
-				<CompareBitmap target="myComp1.dataGrid1" url="../Properties/Baselines/$testID_1.png" numColorVariances="15" ignoreMaxColorVariance="true"/>
-				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="250"/>
+				<!--CompareBitmap target="myComp1.dataGrid1" url="../Properties/Baselines/$testID_1.png" numColorVariances="15" ignoreMaxColorVariance="true"/-->
+				
+				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="212"/>
 				<SetProperty target="myComp1.c1_1" propertyName="visible" value="true" waitEvent="enterFrame" waitTarget="stage"/>
-				<CompareBitmap target="myComp1.dataGrid1" url="../Properties/Baselines/$testID_2.png" numColorVariances="15" ignoreMaxColorVariance="true"/>
+				<!--CompareBitmap target="myComp1.dataGrid1" url="../Properties/Baselines/$testID_2.png" numColorVariances="15" ignoreMaxColorVariance="true"/-->
+				
 				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="250"/>
 			</body>
 		</TestCase>
@@ -69,30 +71,38 @@
 		<TestCase testID="DataGrid_Properties_col1col2VisibleFalse" keywords="[DataGrid, Property, column, visible]" description="Test the width and appears of the DataGrid when two columns have their visibility set to false">			
 			<setup>
 				<ResetComponent target="myComp1" className="components.basicDG" waitEvent="updateComplete" />
-				<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>				
+				<WaitForLayoutManager/>				
 			</setup>
 			<body>				
 				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="250"/>
+                
+                <!-- column 1 is 38 and column 2 is 46 -->
 				<SetProperty target="myComp1.c1_1" propertyName="visible" value="false" waitEvent="enterFrame" waitTarget="stage"/>
+				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="212"/>
+				
 				<SetProperty target="myComp1.c1_2" propertyName="visible" value="false" waitEvent="enterFrame" waitTarget="stage"/>
+				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="166"/>
+
 				<CompareBitmap target="myComp1.dataGrid1" url="../Properties/Baselines/$testID.png" numColorVariances="15" ignoreMaxColorVariance="true"/>
-				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="250"/>
 			</body>
 		</TestCase>		
 
 		<TestCase testID="DataGrid_Properties_colResizeVisibleFalse" keywords="[DataGrid, Property, column, visible]" description="Test changing the width of a column at runtime and ensure it is preserved after visibility is toggled">			
 			<setup>
 				<ResetComponent target="myComp1" className="components.basicDG" waitEvent="updateComplete" />
-				<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>				
+				<WaitForLayoutManager/>			
 			</setup>
 			<body>				
 				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="250"/>
 				<AssertMethodValue method="value=FlexGlobals.topLevelApplication.myComp1.dataGrid1.grid.getColumnBounds(0).width" value="38"/>
-				<SetProperty target="myComp1.c1_1" propertyName="width" value="100" waitEvent="enterFrame" waitTarget="stage"/>
-				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="312"/>
+				
+				<SetProperty target="myComp1.c1_1" propertyName="width" value="100" waitEvent="enterFrame" waitTarget="stage"/>				
 				<AssertMethodValue method="value=FlexGlobals.topLevelApplication.myComp1.dataGrid1.grid.getColumnBounds(0).width" value="100"/>
-				<SetProperty target="myComp1.c1_1" propertyName="visible" value="false" waitEvent="enterFrame" waitTarget="stage"/>
 				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="312"/>
+
+				<SetProperty target="myComp1.c1_1" propertyName="visible" value="false" waitEvent="enterFrame" waitTarget="stage"/>
+				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="212"/>
+				
 				<SetProperty target="myComp1.c1_1" propertyName="visible" value="true" waitEvent="enterFrame" waitTarget="stage"/>
 				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="312"/>
 				<AssertMethodValue method="value=FlexGlobals.topLevelApplication.myComp1.dataGrid1.grid.getColumnBounds(0).width" value="100"/>
@@ -102,15 +112,17 @@
 		<TestCase testID="DataGrid_Properties_colResizeVisibleFalse2" keywords="[DataGrid, Property, column, visible]" description="Test setting the width of a non-visible column on DataGrid">			
 			<setup>
 				<ResetComponent target="myComp1" className="components.basicDG" waitEvent="updateComplete" />
-				<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>				
+				<WaitForLayoutManager/>			
 			</setup>
 			<body>				
 				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="250"/>
 				<AssertMethodValue method="value=FlexGlobals.topLevelApplication.myComp1.dataGrid1.grid.getColumnBounds(0).width" value="38"/>
+				
 				<SetProperty target="myComp1.c1_1" propertyName="visible" value="false" waitEvent="enterFrame" waitTarget="stage"/>
 				<SetProperty target="myComp1.c1_1" propertyName="width" value="100" waitEvent="enterFrame" waitTarget="stage"/>
 				<AssertMethodValue method="value=FlexGlobals.topLevelApplication.myComp1.dataGrid1.grid.getColumnBounds(0).width" value="0"/>								
-				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="250"/>								
+				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="212"/>
+												
 				<SetProperty target="myComp1.c1_1" propertyName="visible" value="true" waitEvent="enterFrame" waitTarget="stage"/>						
 				<AssertPropertyValue target="myComp1.dataGrid1" propertyName="width" value="312"/>				
 				<AssertMethodValue method="value=FlexGlobals.topLevelApplication.myComp1.dataGrid1.grid.getColumnBounds(0).width" value="100"/>				
@@ -311,4 +323,4 @@
 		</TestCase>	
 				
     </testCases>
-</UnitTester>
\ No newline at end of file
+</UnitTester>

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_dataProvider_test002.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_dataProvider_test002.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_dataProvider_test002.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Properties/DataGrid_dataProvider_test002.mxml Fri Dec 21 18:05:20 2012
@@ -119,22 +119,21 @@
            </body>
         </TestCase>
 
- 	<TestCase testID="dataProvider_nodata_test5" keywords="[DataGrid, Property, dataProvider]" description="dataprovider isn't set, requiredSelection=true">
-            <setup>
-		<ResetComponent target="dg7" className="spark.components.DataGrid" waitEvent="updateComplete" />
-		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
-		<SetProperty target="dg7" propertyName="requireSelection" value="true" />
-		<SetProperty target="dg7" propertyName="variableRowHeight" value="true" />
-		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
-	    </setup>           
-            <body>
-            	<AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg7.requireSelection" value="true" />
-            	<RunCode code="FlexGlobals.topLevelApplication.insertItems(FlexGlobals.topLevelApplication.dg7,0)"/>
-		<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="2"/>
-            	 <CompareBitmap url="../Properties/baselines/$testID.png" numColorVariances="20" maxColorVariance="20"  target="dg7" />
-            
-           </body>
-        </TestCase>
+    <TestCase testID="dataProvider_nodata_test5" keywords="[DataGrid, Property, dataProvider]" description="dataprovider isn't set, requiredSelection=true">
+        <setup>
+            <ResetComponent target="dg7" className="spark.components.DataGrid" waitEvent="updateComplete" />
+            <SetProperty target="dg7" propertyName="requireSelection" value="true" />
+            <SetProperty target="dg7" propertyName="variableRowHeight" value="true"/>
+        </setup>           
+        <body>
+            <AssertMethodValue method="value=FlexGlobals.topLevelApplication.dg7.requireSelection" value="true" />
+            <!-- since no typical item is specified it is the first one added to the dataProvider -->
+            <RunCode code="FlexGlobals.topLevelApplication.insertItems(FlexGlobals.topLevelApplication.dg7,0)"/>
+            <WaitForLayoutManager/>
+            <CompareBitmap url="../Properties/baselines/$testID.png" numColorVariances="20" maxColorVariance="20"  target="dg7" />        
+        </body>
+    </TestCase>
+
  	<TestCase testID="dataProvider_columnNodata_test1" keywords="[DataGrid, Property, dataProvider]" description="dataGrid has a column not data mapping">
  	    <setup>
  	    	<ResetComponent target="dg6" className="components.DataGrid_dp_columns" waitEvent="updateComplete" />
@@ -624,4 +623,4 @@
  			</body>
         </TestCase>
     </testCases>
-</UnitTester>
\ No newline at end of file
+</UnitTester>

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_basic_001.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_basic_001.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_basic_001.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_basic_001.mxml Fri Dec 21 18:05:20 2012
@@ -66,19 +66,23 @@
 			embedAsCFF: false;
 		}				
 
-
-		s|DataGrid s|GridColumnHeaderGroup{
+        mx|ColorPicker {
+		    fontFamily: MyVeraHalo;
+		    fontAntiAliasType: normal;
+			fontLookup: "embeddedCFF";		
+        }
+        
+		s|DataGrid s|GridColumnHeaderGroup {
 			fontAntiAliasType: "normal";
 			fontFamily: MyVera;
-			 fontLookup: "embeddedCFF";		
+			fontLookup: "embeddedCFF";		
 		}
 
-
 		global{
 		    fontFamily: MyVera;
 		    fontAntiAliasType: normal;
 		    kerning: "off";
-        	}
+        }
 	 		
 	</fx:Style>
 	
@@ -577,4 +581,4 @@
 		<comps:DataGrid_sort_locale id="dg5" />
 	</s:HGroup>
 		
-</s:Application>
\ No newline at end of file
+</s:Application>

Added: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_itemEditor.compile
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_itemEditor.compile?rev=1425063&view=auto
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_itemEditor.compile (added)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_itemEditor.compile Fri Dec 21 18:05:20 2012
@@ -0,0 +1 @@
+-show-binding-warnings=false

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_itemEditor.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_itemEditor.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_itemEditor.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/DataGrid_itemEditor.mxml Fri Dec 21 18:05:20 2012
@@ -453,4 +453,4 @@
 	<comps:DataGrid_multiline_lineBreakStyle id="dataGrid6" includeIn="setOne"/>
 	<comps:DataGrid_ComboBoxEditor id="dataGrid7" includeIn="setTwo" />
 	
-</s:Application>
\ No newline at end of file
+</s:Application>

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridLargeGridLinesSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridLargeGridLinesSkin.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridLargeGridLinesSkin.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridLargeGridLinesSkin.mxml Fri Dec 21 18:05:20 2012
@@ -33,11 +33,17 @@ 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>
-which is used as the value of the columnHeaderGroup's columnSeparator property.</p>
+declarations define DataGrid skin parts except <code>headerColumnSeparator</code> and
+<code>headerRenderer</code> which are used for the values of the columnHeaderGroup's 
+<code>columnSeparator</code> and <code>headerRenderer</code> properties.</p>
 
 @see spark.components.DataGrid
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 2.5
+@productversion Flex 4.5
 -->
 
 <s:SparkSkin 
@@ -48,7 +54,17 @@ which is used as the value of the column
     alpha.disabled="0.5" minWidth="89" minHeight="84">
     
     <fx:Metadata>
-        [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>
@@ -60,14 +76,14 @@ which is used as the value of the column
         <!--- @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;
                         
                         /**
                          * @private
-                         */                        
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -89,6 +105,7 @@ which is used as the value of the column
                     ]]>
                 </fx:Script>  
                 <s:fill>
+                    <!--- @private -->   
                     <s:SolidColor id="rowBackgroundFillColor" color="0xFFFFFF"/>
                 </s:fill>
             </s:Rect>
@@ -97,11 +114,14 @@ which is used as the value of the column
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -115,6 +135,7 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:stroke>
+                    <!--- @private -->
                     <s:SolidColorStroke id="caretIndicatorFill" color="0x0167FF" weight="1"/>
                 </s:stroke>
             </s:Rect>
@@ -129,23 +150,50 @@ which is used as the value of the column
             </s:Line>
         </fx:Component>
         
-        <!--- @private -->
+        <!--- 
+        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>
                 <s:stroke>
                     <s:SolidColorStroke color="0x696969" weight="1" caps="square"/>
                 </s:stroke>
             </s:Line>
+        </fx:Component>       
+        
+        <!--- Defines the value of the headerRenderer property for the columnHeaderGroup. 
+              The default is spark.skins.spark.DefaultGridHeaderRenderer -->
+        <fx:Component id="headerRenderer">
+            <s:DefaultGridHeaderRenderer />
         </fx:Component>
         
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -159,11 +207,35 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:fill>
+                    <!--- @private -->
                     <s:SolidColor id="hoverIndicatorFill" color="0xCEDBEF"/>
                 </s:fill>
             </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>
@@ -176,11 +248,14 @@ which is used as the value of the column
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -194,6 +269,7 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:fill>
+                    <!--- @private -->
                     <s:SolidColor id="selectionIndicatorFill" color="0xA8C6EE"/>
                 </s:fill>                
             </s:Rect>
@@ -211,7 +287,8 @@ which is used as the value of the column
     </fx:Declarations>
     
     <fx:Script fb:purpose="styling">
-        static private const exclusions:Array = ["scroller", "background"];
+    <![CDATA[
+        static private const exclusions:Array = ["scroller", "background", "columnHeaderGroup"];
         static private const contentFill:Array = ["bgFill"];
         
         /**
@@ -256,16 +333,21 @@ which is used as the value of the column
             
             super.updateDisplayList(unscaledWidth, unscaledHeight);
         }
+    ]]>
     </fx:Script>
     
     <!-- 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="spark.skins.spark.DefaultGridHeaderRenderer"/>
+            headerRenderer="{headerRenderer}"/>
 
         <s:Group height="100%">
             
@@ -289,13 +371,19 @@ which is used as the value of the column
                 <!--- @private -->
                 <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:Grid>                  
+                    <s:Grid id="grid" itemRenderer="spark.skins.spark.DefaultGridItemRenderer">
+                        <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>
             

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridLiveScrollingFalseSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridLiveScrollingFalseSkin.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridLiveScrollingFalseSkin.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridLiveScrollingFalseSkin.mxml Fri Dec 21 18:05:20 2012
@@ -33,11 +33,17 @@ 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>
-which is used as the value of the columnHeaderGroup's columnSeparator property.</p>
+declarations define DataGrid skin parts except <code>headerColumnSeparator</code> and
+<code>headerRenderer</code> which are used for the values of the columnHeaderGroup's 
+<code>columnSeparator</code> and <code>headerRenderer</code> properties.</p>
 
 @see spark.components.DataGrid
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 2.5
+@productversion Flex 4.5
 -->
 
 <s:SparkSkin 
@@ -48,7 +54,17 @@ which is used as the value of the column
     alpha.disabled="0.5" minWidth="89" minHeight="84">
     
     <fx:Metadata>
-        [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>
@@ -60,14 +76,14 @@ which is used as the value of the column
         <!--- @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;
                         
                         /**
                          * @private
-                         */                        
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -89,6 +105,7 @@ which is used as the value of the column
                     ]]>
                 </fx:Script>  
                 <s:fill>
+                    <!--- @private -->   
                     <s:SolidColor id="rowBackgroundFillColor" color="0xFFFFFF"/>
                 </s:fill>
             </s:Rect>
@@ -97,11 +114,14 @@ which is used as the value of the column
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -115,6 +135,7 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:stroke>
+                    <!--- @private -->
                     <s:SolidColorStroke id="caretIndicatorFill" color="0x0167FF" weight="1"/>
                 </s:stroke>
             </s:Rect>
@@ -129,23 +150,50 @@ which is used as the value of the column
             </s:Line>
         </fx:Component>
         
-        <!--- @private -->
+        <!--- 
+        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>
                 <s:stroke>
                     <s:SolidColorStroke color="0x696969" weight="1" caps="square"/>
                 </s:stroke>
             </s:Line>
+        </fx:Component>       
+        
+        <!--- Defines the value of the headerRenderer property for the columnHeaderGroup. 
+              The default is spark.skins.spark.DefaultGridHeaderRenderer -->
+        <fx:Component id="headerRenderer">
+            <s:DefaultGridHeaderRenderer />
         </fx:Component>
         
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -159,11 +207,35 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:fill>
+                    <!--- @private -->
                     <s:SolidColor id="hoverIndicatorFill" color="0xCEDBEF"/>
                 </s:fill>
             </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>
@@ -176,11 +248,14 @@ which is used as the value of the column
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -194,6 +269,7 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:fill>
+                    <!--- @private -->
                     <s:SolidColor id="selectionIndicatorFill" color="0xA8C6EE"/>
                 </s:fill>                
             </s:Rect>
@@ -211,7 +287,8 @@ which is used as the value of the column
     </fx:Declarations>
     
     <fx:Script fb:purpose="styling">
-        static private const exclusions:Array = ["scroller", "background"];
+    <![CDATA[
+        static private const exclusions:Array = ["scroller", "background", "columnHeaderGroup"];
         static private const contentFill:Array = ["bgFill"];
         
         /**
@@ -256,16 +333,21 @@ which is used as the value of the column
             
             super.updateDisplayList(unscaledWidth, unscaledHeight);
         }
+    ]]>
     </fx:Script>
     
     <!-- 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="spark.skins.spark.DefaultGridHeaderRenderer"/>
+            headerRenderer="{headerRenderer}"/>
 
         <s:Group height="100%">
             
@@ -289,13 +371,19 @@ which is used as the value of the column
                 <!--- @private -->
                 <s:Scroller id="scroller" minViewportInset="1" hasFocusableChildren="false" height="100%" liveScrolling="false">
                     <!--- @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:Grid>                  
+                    <s:Grid id="grid" itemRenderer="spark.skins.spark.DefaultGridItemRenderer">
+                        <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>
             
@@ -312,4 +400,4 @@ which is used as the value of the column
         </s:stroke>
     </s:Rect>    
 
-</s:SparkSkin>
+</s:SparkSkin>
\ No newline at end of file

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridNoGridLinesSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridNoGridLinesSkin.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridNoGridLinesSkin.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridNoGridLinesSkin.mxml Fri Dec 21 18:05:20 2012
@@ -33,11 +33,17 @@ 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>
-which is used as the value of the columnHeaderGroup's columnSeparator property.</p>
+declarations define DataGrid skin parts except <code>headerColumnSeparator</code> and
+<code>headerRenderer</code> which are used for the values of the columnHeaderGroup's 
+<code>columnSeparator</code> and <code>headerRenderer</code> properties.</p>
 
 @see spark.components.DataGrid
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 2.5
+@productversion Flex 4.5
 -->
 
 <s:SparkSkin 
@@ -48,7 +54,17 @@ which is used as the value of the column
     alpha.disabled="0.5" minWidth="89" minHeight="84">
     
     <fx:Metadata>
-        [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>
@@ -60,14 +76,14 @@ which is used as the value of the column
         <!--- @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;
                         
                         /**
                          * @private
-                         */                        
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -89,6 +105,7 @@ which is used as the value of the column
                     ]]>
                 </fx:Script>  
                 <s:fill>
+                    <!--- @private -->   
                     <s:SolidColor id="rowBackgroundFillColor" color="0xFFFFFF"/>
                 </s:fill>
             </s:Rect>
@@ -97,11 +114,14 @@ which is used as the value of the column
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -115,28 +135,56 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:stroke>
+                    <!--- @private -->
                     <s:SolidColorStroke id="caretIndicatorFill" color="0x0167FF" weight="1"/>
                 </s:stroke>
             </s:Rect>
         </fx:Component>
-                
-        <!--- @private -->
+        
+        <!--- 
+        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>
                 <s:stroke>
                     <s:SolidColorStroke color="0x696969" weight="1" caps="square"/>
                 </s:stroke>
             </s:Line>
+        </fx:Component>       
+        
+        <!--- Defines the value of the headerRenderer property for the columnHeaderGroup. 
+              The default is spark.skins.spark.DefaultGridHeaderRenderer -->
+        <fx:Component id="headerRenderer">
+            <s:DefaultGridHeaderRenderer />
         </fx:Component>
         
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -150,19 +198,46 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:fill>
+                    <!--- @private -->
                     <s:SolidColor id="hoverIndicatorFill" color="0xCEDBEF"/>
                 </s:fill>
             </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="selectionIndicator">
             <s:Rect implements="spark.components.gridClasses.IGridVisualElement">
-                <fx:Script>
+                <fx:Script fb:purpose="styling">
                     <![CDATA[
                         import spark.components.DataGrid;
                         import spark.components.Grid;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -176,6 +251,7 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:fill>
+                    <!--- @private -->
                     <s:SolidColor id="selectionIndicatorFill" color="0xA8C6EE"/>
                 </s:fill>                
             </s:Rect>
@@ -193,7 +269,8 @@ which is used as the value of the column
     </fx:Declarations>
     
     <fx:Script fb:purpose="styling">
-        static private const exclusions:Array = ["scroller", "background"];
+    <![CDATA[
+        static private const exclusions:Array = ["scroller", "background", "columnHeaderGroup"];
         static private const contentFill:Array = ["bgFill"];
         
         /**
@@ -238,16 +315,21 @@ which is used as the value of the column
             
             super.updateDisplayList(unscaledWidth, unscaledHeight);
         }
+    ]]>
     </fx:Script>
     
     <!-- 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="spark.skins.spark.DefaultGridHeaderRenderer"/>
+            headerRenderer="{headerRenderer}"/>
 
         <s:Group height="100%">
             
@@ -271,13 +353,19 @@ which is used as the value of the column
                 <!--- @private -->
                 <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:Grid>                    
+                    <s:Grid id="grid" itemRenderer="spark.skins.spark.DefaultGridItemRenderer">
+                        <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>
             
@@ -294,4 +382,4 @@ which is used as the value of the column
         </s:stroke>
     </s:Rect>    
 
-</s:SparkSkin>
+</s:SparkSkin>
\ No newline at end of file

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridselLyrTopSkin.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridselLyrTopSkin.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridselLyrTopSkin.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/assets/skins/CustomDataGridselLyrTopSkin.mxml Fri Dec 21 18:05:20 2012
@@ -33,11 +33,17 @@ 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>
-which is used as the value of the columnHeaderGroup's columnSeparator property.</p>
+declarations define DataGrid skin parts except <code>headerColumnSeparator</code> and
+<code>headerRenderer</code> which are used for the values of the columnHeaderGroup's 
+<code>columnSeparator</code> and <code>headerRenderer</code> properties.</p>
 
 @see spark.components.DataGrid
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 2.5
+@productversion Flex 4.5
 -->
 
 <s:SparkSkin 
@@ -48,7 +54,17 @@ which is used as the value of the column
     alpha.disabled="0.5" minWidth="89" minHeight="84">
     
     <fx:Metadata>
-        [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>
@@ -60,14 +76,14 @@ which is used as the value of the column
         <!--- @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;
                         
                         /**
                          * @private
-                         */                        
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -89,6 +105,7 @@ which is used as the value of the column
                     ]]>
                 </fx:Script>  
                 <s:fill>
+                    <!--- @private -->   
                     <s:SolidColor id="rowBackgroundFillColor" color="0xFFFFFF"/>
                 </s:fill>
             </s:Rect>
@@ -97,11 +114,14 @@ which is used as the value of the column
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -115,6 +135,7 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:stroke>
+                    <!--- @private -->
                     <s:SolidColorStroke id="caretIndicatorFill" color="0x0167FF" weight="1"/>
                 </s:stroke>
             </s:Rect>
@@ -129,23 +150,50 @@ which is used as the value of the column
             </s:Line>
         </fx:Component>
         
-        <!--- @private -->
+        <!--- 
+        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>
                 <s:stroke>
                     <s:SolidColorStroke color="0x696969" weight="1" caps="square"/>
                 </s:stroke>
             </s:Line>
+        </fx:Component>       
+        
+        <!--- Defines the value of the headerRenderer property for the columnHeaderGroup. 
+              The default is spark.skins.spark.DefaultGridHeaderRenderer -->
+        <fx:Component id="headerRenderer">
+            <s:DefaultGridHeaderRenderer />
         </fx:Component>
         
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -159,11 +207,35 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:fill>
+                    <!--- @private -->
                     <s:SolidColor id="hoverIndicatorFill" color="0xCEDBEF"/>
                 </s:fill>
             </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>
@@ -176,11 +248,14 @@ which is used as the value of the column
         <!--- @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;
                         
+                        /**
+                         * @private
+                         */
                         public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                         {
                             const dataGrid:DataGrid = grid.dataGrid;
@@ -194,6 +269,7 @@ which is used as the value of the column
                 </fx:Script>
                 
                 <s:fill>
+                    <!--- @private -->
                     <s:SolidColor id="selectionIndicatorFill" color="0xA8C6EE"/>
                 </s:fill>                
             </s:Rect>
@@ -211,7 +287,8 @@ which is used as the value of the column
     </fx:Declarations>
     
     <fx:Script fb:purpose="styling">
-        static private const exclusions:Array = ["scroller", "background"];
+    <![CDATA[
+        static private const exclusions:Array = ["scroller", "background", "columnHeaderGroup"];
         static private const contentFill:Array = ["bgFill"];
         
         /**
@@ -256,16 +333,21 @@ which is used as the value of the column
             
             super.updateDisplayList(unscaledWidth, unscaledHeight);
         }
+    ]]>
     </fx:Script>
     
     <!-- 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="spark.skins.spark.DefaultGridHeaderRenderer"/>
+            headerRenderer="{headerRenderer}"/>
 
         <s:Group height="100%">
             
@@ -289,13 +371,19 @@ which is used as the value of the column
                 <!--- @private -->
                 <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="editorIndicatorLayer"/>                            
-						<s:GridLayer name="rendererLayer"/>
-						<s:GridLayer name="overlayLayer"/>
-						<s:GridLayer name="selectionLayer"/>
-					</s:Grid>                                        
+                    <s:Grid id="grid" itemRenderer="spark.skins.spark.DefaultGridItemRenderer">
+                        <s:gridView>
+                            <fx:Component>
+                                <s:GridView>
+                                    <s:GridLayer name="backgroundLayer"/>
+                                    <s:GridLayer name="editorIndicatorLayer"/>                            
+                                    <s:GridLayer name="rendererLayer"/>
+                                    <s:GridLayer name="overlayLayer"/>
+                                    <s:GridLayer name="selectionLayer"/>
+                                </s:GridView>
+                            </fx:Component>
+                        </s:gridView>
+                    </s:Grid>                    
                 </s:Scroller>
             </s:VGroup>
             
@@ -312,4 +400,4 @@ which is used as the value of the column
         </s:stroke>
     </s:Rect>    
 
-</s:SparkSkin>
+</s:SparkSkin>
\ No newline at end of file

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/components/DataGrid_editable_size.mxml
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/components/DataGrid_editable_size.mxml?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
--- incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/components/DataGrid_editable_size.mxml (original)
+++ incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/SWFs/components/DataGrid_editable_size.mxml Fri Dec 21 18:05:20 2012
@@ -166,6 +166,8 @@ xmlns:s="library://ns.adobe.com/flex/spa
 										import spark.components.gridClasses.GridColumn;
 										import flash.events.FocusEvent;
 										 
+										// This renderer seems like a very poor design.  It is not a good test!
+										// The change is not saved since just setting data doesn't do it.
 										
 										protected function itemIdInput_focusOutHandler(event:FocusEvent):void
 										{
@@ -192,4 +194,4 @@ xmlns:s="library://ns.adobe.com/flex/spa
 			<s:DataItem country="ABCDEFGHIJKL0123456789" product="ProductFx" firstName="MNOPQRSTUVW" lastName="XYZ" />
 		</s:typicalItem>
 		
-	</s:DataGrid>
\ No newline at end of file
+	</s:DataGrid>

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_AlternatingRowColor_test.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_AlternatingRowColor_test.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_addRemoveRow_test_addFirstRow.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_addRemoveRow_test_addFirstRow.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_addRemoveRow_test_removeFirstRow.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_addRemoveRow_test_removeFirstRow.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_getsetter_test.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_getsetter_test.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_property_test.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_property_test.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_skin_rowChange_test.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_skin_rowChange_test.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_skin_rowChange_test_addRow.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_skin_rowChange_test_addRow.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_skin_test.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_skin_test.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_update_test.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/rowBackground_update_test.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/style_borderAlpha_test001_zero.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/style_borderAlpha_test001_zero.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/style_borderAlpha_test002_half.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/style_borderAlpha_test002_half.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/style_borderVisible_test001_hide.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/style_borderVisible_test001_hide.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/style_direction_locale_IR_test001.png
URL: http://svn.apache.org/viewvc/incubator/flex/sdk/branches/develop/mustella/tests/gumbo/components/DataGrid/Styles/Baselines/style_direction_locale_IR_test001.png?rev=1425063&r1=1425062&r2=1425063&view=diff
==============================================================================
Binary files - no diff available.