You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2019/11/16 03:20:34 UTC

[royale-asjs] branch develop updated (694b6ee -> 88b19e6)

This is an automated email from the ASF dual-hosted git repository.

aharui pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git.


    from 694b6ee  examples: change Slider to HSlider references
     new 00dfa37  ADG column sorting
     new 88b19e6  column lines in ADG

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/royale/html/beads/DataGridLinesBead.as  |  44 +++++----
 .../main/royale/mx/controls/AdvancedDataGrid.as    |  44 ++++++++-
 .../AdvancedDataGridColumn.as                      |  26 +----
 ...{ToolTipBead.as => AdvancedDataGridSortBead.as} |  29 ++++--
 .../beads/DataGridLinesBeadForICollectionView.as   | 106 +++++++++++++++++++++
 .../TextButtonDataGridColumnItemRenderer.as        |  17 +++-
 .../mx/controls/dataGridClasses/DataGridColumn.as  |   9 +-
 .../mx/controls/listClasses/AdvancedListBase.as    |   3 +
 .../main/royale/mx/events/AdvancedDataGridEvent.as |   2 +-
 9 files changed, 223 insertions(+), 57 deletions(-)
 copy frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/{ToolTipBead.as => AdvancedDataGridSortBead.as} (60%)
 create mode 100644 frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridLinesBeadForICollectionView.as


[royale-asjs] 01/02: ADG column sorting

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 00dfa370873bee05c8cf9c3bd5125edcd46633d5
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Nov 15 18:11:47 2019 -0800

    ADG column sorting
---
 .../main/royale/mx/controls/AdvancedDataGrid.as    | 41 +++++++++++++-
 .../AdvancedDataGridColumn.as                      | 26 ++-------
 .../mx/controls/beads/AdvancedDataGridSortBead.as  | 65 ++++++++++++++++++++++
 .../TextButtonDataGridColumnItemRenderer.as        | 17 +++++-
 .../mx/controls/dataGridClasses/DataGridColumn.as  |  9 ++-
 .../mx/controls/listClasses/AdvancedListBase.as    |  3 +
 .../main/royale/mx/events/AdvancedDataGridEvent.as |  2 +-
 7 files changed, 137 insertions(+), 26 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
index a595918..f673182 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
@@ -45,9 +45,15 @@ package mx.controls
     import mx.collections.IHierarchicalCollectionViewCursor;
     import mx.collections.IHierarchicalData;
     import mx.collections.IViewCursor;
+    import mx.collections.ISort;
+    import mx.collections.Sort;
+    import mx.collections.SortField;
+    import mx.controls.beads.AdvancedDataGridSortBead;
+    import mx.controls.beads.AdvancedDataGridView;
     import mx.controls.dataGridClasses.DataGridColumn;
     import mx.controls.listClasses.AdvancedListBase;
     import mx.core.mx_internal;
+    import mx.events.AdvancedDataGridEvent;
     import mx.events.CollectionEvent;
     import mx.events.CollectionEventKind;
     
@@ -56,7 +62,8 @@ package mx.controls
     import org.apache.royale.core.IDataGridModel;
     import org.apache.royale.core.IDataGridPresentationModel;
     import org.apache.royale.core.ValuesManager;
-    import org.apache.royale.events.Event;
+    import org.apache.royale.events.Event;
+    import org.apache.royale.html.DataGridButtonBar;
 
 use namespace mx_internal;
 //--------------------------------------
@@ -9366,6 +9373,10 @@ public class AdvancedDataGrid extends AdvancedListBase implements IDataGrid
     public function set columns(value:Array):void
     {
         IDataGridModel(model).columns = value;
+        for each (var col:DataGridColumn in value)
+        {
+            col.owner = this;
+        }
     }
 
 	//----------------------------------
@@ -9712,6 +9723,34 @@ public class AdvancedDataGrid extends AdvancedListBase implements IDataGrid
 	
 	}
 	
+    override public function addedToParent():void
+    {
+        super.addedToParent();
+        
+        addBead(new AdvancedDataGridSortBead());            
+        addEventListener(AdvancedDataGridEvent.SORT, sortHandler);
+    }
+    
+    protected function sortHandler(event:AdvancedDataGridEvent):void
+    {
+        var oldSort:ISort = collection.sort;
+        
+        var sort:Sort = new Sort();
+        var sortField:SortField = new SortField();
+        sortField.name = event.dataField;
+        var column:DataGridColumn = columns[event.columnIndex] as DataGridColumn;
+        if (oldSort && oldSort.fields[0].name == sortField.name)
+            column.sortDescending = !column.sortDescending;
+        sortField.descending = column.sortDescending;
+        
+        sort.fields = [ sortField ];
+        collection.sort = sort;
+        collection.refresh();
+        // force redraw of column headers
+        ((view as AdvancedDataGridView).header as DataGridButtonBar).model.dispatchEvent(new Event("dataProviderChanged"));
+    }
+    
+
 }
 
 }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
index 3faccd6..505737f 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridColumn.as
@@ -23,26 +23,16 @@ package mx.controls.advancedDataGridClasses
 /* import flash.display.DisplayObject;
 import flash.events.Event;
  */
-import org.apache.royale.core.UIBase;
-import org.apache.royale.events.Event;
-
-import mx.controls.AdvancedDataGrid; //BaseEx;
+import mx.controls.AdvancedDataGrid;
 import mx.controls.TextInput;
-//import mx.controls.listClasses.IListItemRenderer;
+import mx.controls.dataGridClasses.DataGridColumn;
 import mx.core.ClassFactory;
-//import mx.core.ContextualClassFactory;
-//import mx.core.IEmbeddedFontRegistry;
 import mx.core.IFactory;
-//import mx.core.IFlexModuleFactory;
-//import mx.core.IIMESupport;
-//import mx.core.Singleton;
 import mx.core.mx_internal;
-//import mx.formatters.Formatter;
-//import mx.formatters.IFormatter;
-//import mx.styles.CSSStyleDeclaration;
 import mx.utils.StringUtil;
 
-import mx.controls.dataGridClasses.DataGridColumn;
+import org.apache.royale.core.UIBase;
+import org.apache.royale.events.Event;
 
 use namespace mx_internal;
 //--------------------------------------
@@ -295,12 +285,6 @@ public class AdvancedDataGridColumn extends DataGridColumn
     //
     //--------------------------------------------------------------------------
 
-    /**
-     *  @private
-     *  The AdvancedDataGrid that owns this column.
-     */
-    mx_internal var owner:AdvancedDataGrid; //BaseEx;
-
     mx_internal var list:UIBase; //BaseEx;
     
     /**
@@ -1185,7 +1169,7 @@ public class AdvancedDataGridColumn extends DataGridColumn
 
             if (owner)
             {
-                owner.columnsInvalid();
+                (owner as AdvancedDataGrid).columnsInvalid();
                 
                 //owner.invalidateProperties();
                 //owner.invalidateSize();
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridSortBead.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridSortBead.as
new file mode 100644
index 0000000..7692eeb
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridSortBead.as
@@ -0,0 +1,65 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.controls.beads
+{
+	import mx.controls.AdvancedDataGrid;
+	import mx.controls.beads.DataGridView;
+	import mx.events.AdvancedDataGridEvent;
+	
+	import org.apache.royale.core.IBead;
+	import org.apache.royale.core.IStrand;
+	import org.apache.royale.events.IEventDispatcher;
+	import org.apache.royale.events.MouseEvent;
+	import org.apache.royale.html.DataGridButtonBar;
+    
+	public class AdvancedDataGridSortBead implements IBead
+	{
+		public function AdvancedDataGridSortBead()
+		{
+			super();
+		}
+		
+        private var adg:AdvancedDataGrid;
+        
+		/**                         	
+		 *  @copy org.apache.royale.core.IBead#strand
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.0
+		 */
+		public function set strand(value:IStrand):void
+		{
+            adg = value as AdvancedDataGrid;
+			(adg.view as DataGridView).header.addEventListener(MouseEvent.CLICK, mouseClickHandler, false);
+		}
+		
+		/**
+		 * @private
+		 */
+		private function mouseClickHandler(event:MouseEvent):void
+		{
+            var adgEvent:AdvancedDataGridEvent = new AdvancedDataGridEvent(AdvancedDataGridEvent.SORT);
+            adgEvent.columnIndex = ((adg.view as DataGridView).header as DataGridButtonBar).selectedIndex;
+            adgEvent.dataField = adg.columns[adgEvent.columnIndex].dataField;
+            adg.dispatchEvent(adgEvent);
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/buttonBarClasses/TextButtonDataGridColumnItemRenderer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/buttonBarClasses/TextButtonDataGridColumnItemRenderer.as
index 9e0652e..39b035c 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/buttonBarClasses/TextButtonDataGridColumnItemRenderer.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/buttonBarClasses/TextButtonDataGridColumnItemRenderer.as
@@ -19,8 +19,13 @@
 
 package mx.controls.buttonBarClasses
 {
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+use namespace mx_internal;
+import mx.controls.beads.DataGridView;
 import mx.controls.dataGridClasses.DataGridColumn;
 
+import org.apache.royale.html.DataGridButtonBar;
 import org.apache.royale.html.supportClasses.TextButtonItemRenderer;
 
 /**
@@ -36,7 +41,17 @@ public class TextButtonDataGridColumnItemRenderer extends TextButtonItemRenderer
 {
     override protected function updateButtonLabelFromData():void
     {
-        text = data ? (data as DataGridColumn).headerText : "";
+        var s:String = data ? (data as DataGridColumn).headerText : "";
+        if (data)
+        {
+            var column:DataGridColumn = data as DataGridColumn;
+            var dg:UIComponent = column.owner;
+            if (index == ((dg.view as DataGridView).header as DataGridButtonBar).selectedIndex)
+            {
+                s += " " + (column.sortDescending ? "▼" : "▲");
+            }
+        }
+        text = s;
     }
 
 }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as
index fbee89e..e6bd987 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as
@@ -34,12 +34,14 @@ import mx.core.IFactory;
 import mx.core.IFlexModuleFactory;
 import mx.core.IIMESupport;
 import mx.core.Singleton;
-import mx.core.mx_internal;
 import mx.styles.StyleManager;
 import mx.utils.StringUtil;
 
-use namespace mx_internal;
 */
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+use namespace mx_internal;
+
 import org.apache.royale.html.supportClasses.DataGridColumn;
     
 //--------------------------------------
@@ -395,6 +397,9 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
         _width = value;
     }
 
+    public var sortDescending:Boolean = false;
+    
+    mx_internal var owner:UIComponent;
 }
 
 }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/AdvancedListBase.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/AdvancedListBase.as
index 189ef4c..0c929d7 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/AdvancedListBase.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/AdvancedListBase.as
@@ -87,6 +87,9 @@ import org.apache.royale.events.Event;
 import org.apache.royale.events.MouseEvent;
 import mx.events.ListEvent;
 import mx.collections.ICollectionView;
+import mx.collections.Sort;
+import mx.collections.SortField;
+import mx.controls.dataGridClasses.DataGridColumn;
 import mx.core.IFactory;
 import mx.core.UIComponent; 
 import mx.core.ScrollControlBase;
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/events/AdvancedDataGridEvent.as b/frameworks/projects/MXRoyale/src/main/royale/mx/events/AdvancedDataGridEvent.as
index 5e8b946..999f6b5 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/events/AdvancedDataGridEvent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/events/AdvancedDataGridEvent.as
@@ -720,7 +720,7 @@ public class AdvancedDataGridEvent extends Event
      *  @playerversion AIR 1.1
      *  @productversion Royale 0.9.3
      */
-    //public static const SORT:String = "sort";
+    public static const SORT:String = "sort";
 
     //--------------------------------------------------------------------------
     //


[royale-asjs] 02/02: column lines in ADG

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 88b19e62d8f026b602b93351acebad1cdbf5d88c
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Nov 15 19:20:11 2019 -0800

    column lines in ADG
---
 .../apache/royale/html/beads/DataGridLinesBead.as  |  44 +++++----
 .../main/royale/mx/controls/AdvancedDataGrid.as    |   3 +
 .../beads/DataGridLinesBeadForICollectionView.as   | 106 +++++++++++++++++++++
 3 files changed, 132 insertions(+), 21 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridLinesBead.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridLinesBead.as
index ccac610..9a044bd 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridLinesBead.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridLinesBead.as
@@ -32,6 +32,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.graphics.SolidColorStroke;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.html.beads.DataGridView;
 	import org.apache.royale.html.beads.models.DataGridPresentationModel;
 	import org.apache.royale.html.supportClasses.DataGridColumn;
 	
@@ -66,8 +67,10 @@ package org.apache.royale.html.beads
 			stroke = lineStroke;
 		}
 		
-		private var _strand:IStrand;
+		protected var _strand:IStrand;
 		
+        private var _view:DataGridView;
+        
 		/**
 		 * @copy org.apache.royale.core.UIBase#strand
 	     *  
@@ -79,10 +82,12 @@ package org.apache.royale.html.beads
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			
+            var host:UIBase = _strand as UIBase;
+            _view = host.view as DataGridView; // need to get its initComplete handler to run first
+
 			_overlay = new CompoundGraphic();
 			
-			IEventDispatcher(_strand).addEventListener("beadsAdded", handleBeadsAdded);
+			IEventDispatcher(_strand).addEventListener("initComplete", handleInitComplete);
 		}
 		
 		private var _stroke:IStroke;
@@ -104,8 +109,8 @@ package org.apache.royale.html.beads
 			_stroke = value;
 		}
 		
-		private var _overlay:CompoundGraphic;
-		private var _area:UIBase;
+		protected var _overlay:CompoundGraphic;
+		protected var _area:UIBase;
 		
 		/**
 		 * Invoked when all of the beads have been added to the DataGrid. This
@@ -118,18 +123,11 @@ package org.apache.royale.html.beads
 	     *  @playerversion AIR 2.6
 	     *  @productversion Royale 0.0
 		 */
-		private function handleBeadsAdded(event:Event):void
+		private function handleInitComplete(event:Event):void
 		{
 			var host:UIBase = _strand as UIBase;
-			var n:int = host.numElements;
-			for (var i:int=0; i < n; i++) {
-				var child:UIBase = host.getElementAt(i) as UIBase;
-				if (child.id == "dataGridListArea") {
-					_area = child;
-					_area.addElement(_overlay);
-					break;
-				}
-			}
+            _area = _view.listArea as UIBase;
+			_area.addElement(_overlay);
 			
 			// Now set up listeners to handle changes in the size of the DataGrid.
 			IEventDispatcher(_strand).addEventListener("sizeChanged", drawLines);
@@ -143,6 +141,13 @@ package org.apache.royale.html.beads
 			IEventDispatcher(model).addEventListener("dataProviderChanged", drawLines);
 		}
 		
+        protected function getDataProviderLength():int
+        {
+            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
+            var arrayList:ArrayList = sharedModel.dataProvider as ArrayList;
+            return arrayList.length;            
+        }
+        
 		/**
 		 * This event handler is invoked whenever something happens to the DataGrid. This
 		 * function draws the lines either using a default stroke or the one specified by
@@ -153,7 +158,7 @@ package org.apache.royale.html.beads
 	     *  @playerversion AIR 2.6
 	     *  @productversion Royale 0.0
 		 */
-		private function drawLines(event:Event):void
+		protected function drawLines(event:Event):void
 		{
 			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
 			var presentationModel:DataGridPresentationModel = _strand.getBeadByType(DataGridPresentationModel) as DataGridPresentationModel;
@@ -161,10 +166,9 @@ package org.apache.royale.html.beads
 			var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase;
 			
 			var columns:Array = sharedModel.columns;			
-			var arrayList:ArrayList = sharedModel.dataProvider as ArrayList;
 			var rowHeight:Number = presentationModel.rowHeight;
-			
-			var totalHeight:Number = arrayList.length * rowHeight;
+            var n:int = getDataProviderLength();
+			var totalHeight:Number = n * rowHeight;
 			var columnWidth:Number = _area.width / columns.length;
 			
 			// translate the stroke to a fill since rectangles are used for the grid
@@ -188,8 +192,6 @@ package org.apache.royale.html.beads
 				xpos += isNaN(columnWidth) ? _area.width / columns.length : columnWidth;
 			}
 			
-			var n:int = arrayList.length;
-			
 			// draw the horizontals
 			for (i=1; i < n+1; i++) {
 				_overlay.drawRect(0, i*rowHeight, _area.width, weight);
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
index f673182..c22b948 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
@@ -50,6 +50,7 @@ package mx.controls
     import mx.collections.SortField;
     import mx.controls.beads.AdvancedDataGridSortBead;
     import mx.controls.beads.AdvancedDataGridView;
+    import mx.controls.beads.DataGridLinesBeadForICollectionView;
     import mx.controls.dataGridClasses.DataGridColumn;
     import mx.controls.listClasses.AdvancedListBase;
     import mx.core.mx_internal;
@@ -650,6 +651,8 @@ public class AdvancedDataGrid extends AdvancedListBase implements IDataGrid
                          false, EventPriority.DEFAULT_HANDLER);
 
         addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler); */
+        
+        addBead(new DataGridLinesBeadForICollectionView());
     }
 
     //--------------------------------------------------------------------------
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridLinesBeadForICollectionView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridLinesBeadForICollectionView.as
new file mode 100644
index 0000000..0d6e02b
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridLinesBeadForICollectionView.as
@@ -0,0 +1,106 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mx.controls.beads
+{
+    import mx.collections.ICollectionView;
+    
+    import org.apache.royale.core.IBeadModel;
+    import org.apache.royale.core.IDataGridModel;
+    import org.apache.royale.core.ILayoutHost;
+    import org.apache.royale.core.IParentIUIBase;
+    import org.apache.royale.events.Event;
+    import org.apache.royale.graphics.SolidColor;
+    import org.apache.royale.graphics.SolidColorStroke;
+    import org.apache.royale.html.beads.DataGridLinesBead;
+    import org.apache.royale.html.beads.models.DataGridPresentationModel;
+    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
+    
+	public class DataGridLinesBeadForICollectionView extends DataGridLinesBead
+	{
+		public function DataGridLinesBeadForICollectionView()
+		{
+			super();
+		}
+		
+        override protected function getDataProviderLength():int
+        {
+            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
+            var arrayList:ICollectionView = sharedModel.dataProvider as ICollectionView;
+            return arrayList ? arrayList.length : 0;            
+        }
+        
+        /**
+         * This event handler is invoked whenever something happens to the DataGrid. This
+         * function draws the lines either using a default stroke or the one specified by
+         * the stroke property.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+        override protected function drawLines(event:Event):void
+        {
+            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
+            var presentationModel:DataGridPresentationModel = _strand.getBeadByType(DataGridPresentationModel) as DataGridPresentationModel;
+            var layoutParent:ILayoutHost = _area.getBeadByType(ILayoutHost) as ILayoutHost;
+            var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase;
+            
+            var columns:Array = sharedModel.columns;			
+            var rowHeight:Number = presentationModel.rowHeight;
+            var n:int = getDataProviderLength();
+            var totalHeight:Number = n * rowHeight;
+            
+            // translate the stroke to a fill since rectangles are used for the grid
+            // lines and not lines.
+            var lineFill:SolidColor = new SolidColor();
+            var weight:Number = 1;
+            lineFill.color = (stroke as SolidColorStroke).color;
+            lineFill.alpha = (stroke as SolidColorStroke).alpha;
+            weight = (stroke as SolidColorStroke).weight;
+            _overlay.fill = lineFill;
+            COMPILE::JS
+            {
+                _overlay.element.style.position = "absolute";        
+            }
+            
+            var xpos:Number = 0;
+            
+            _overlay.clear();
+            
+            // draw the verticals
+            for (var i:int=0; i < columns.length - 1; i++) {
+                var column:AdvancedDataGridColumn = columns[i] as AdvancedDataGridColumn;
+                if (column.visible)
+                {
+                    xpos += column.columnWidth;
+                    _overlay.drawRect(xpos - 1, 0, weight, totalHeight);
+                }
+            }
+            
+            /*
+            // draw the horizontals
+            for (i=1; i < n+1; i++) {
+                _overlay.drawRect(0, i*rowHeight, _area.width, weight);
+            }
+            */
+        }
+
+	}
+}
\ No newline at end of file