You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by hu...@apache.org on 2021/11/21 14:51:04 UTC

[royale-asjs] branch develop updated: New bead to apply invisibility to Jewel DataGrid columns marked as invisible

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new fc36b0f  New bead to apply invisibility to Jewel DataGrid columns marked as invisible
fc36b0f is described below

commit fc36b0fe671d85db17ca2fe33f9907fb62e1bbb1
Author: Hugo Ferreira <hf...@solidsoft.pt>
AuthorDate: Sun Nov 21 14:51:20 2021 +0000

    New bead to apply invisibility to Jewel DataGrid columns marked as invisible
---
 .../Jewel/src/main/resources/jewel-manifest.xml    |  1 +
 ...LockedColumn.as => DataGridColumnVisibility.as} | 30 ++++++++--------------
 .../controls/datagrid/DataGridLockedColumn.as      |  4 ++-
 3 files changed, 15 insertions(+), 20 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index 963350c..c19b3f9 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -62,6 +62,7 @@
     <component id="DataGridSort" class="org.apache.royale.jewel.beads.controls.datagrid.DataGridSort"/>
     <component id="DataGridLockedHeader" class="org.apache.royale.jewel.beads.controls.datagrid.DataGridLockedHeader"/>
     <component id="DataGridLockedColumn" class="org.apache.royale.jewel.beads.controls.datagrid.DataGridLockedColumn"/>
+    <component id="DataGridColumnVisibility" class="org.apache.royale.jewel.beads.controls.datagrid.DataGridColumnVisibility"/>
 
     <component id="ButtonBarItemRenderer" class="org.apache.royale.jewel.itemRenderers.ButtonBarItemRenderer"/>
     <component id="IconButtonBarItemRenderer" class="org.apache.royale.jewel.itemRenderers.IconButtonBarItemRenderer"/>
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridLockedColumn.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridColumnVisibility.as
similarity index 71%
copy from frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridLockedColumn.as
copy to frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridColumnVisibility.as
index 1d70738..01bbbc6 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridLockedColumn.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridColumnVisibility.as
@@ -28,25 +28,26 @@ package org.apache.royale.jewel.beads.controls.datagrid
     import org.apache.royale.jewel.supportClasses.datagrid.DataGridListArea;
     import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumnList;
     import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumnWidth;
+    import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn;
     import org.apache.royale.jewel.itemRenderers.DatagridHeaderRenderer;
     import org.apache.royale.jewel.beads.views.DataGridView;
 
 	/**
-	 *  The DataGridLockedColumn bead class is a specialty bead that can be use with a Jewel DataGrid control
-	 *  when need to lock the columns
+	 *  The DataGridColumnVisibility bead class is a specialty bead that can be use with a Jewel DataGrid control
+	 *  when need to hide columns
 	 *  
 	 *  @langversion 3.0
 	 *  @playerversion Flash 10.2
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.9.9
 	 */
-	public class DataGridLockedColumn implements IBead
+	public class DataGridColumnVisibility implements IBead
 	{
         private var view:IDataGridView;
 
-        public var columnCount:int;
+        public var hide:Boolean = true;
 
-		public function DataGridLockedColumn()
+		public function DataGridColumnVisibility()
 		{
 			super();
 		}
@@ -61,26 +62,17 @@ package org.apache.royale.jewel.beads.controls.datagrid
 		 */
         public function set strand(value:IStrand):void
 		{
-            if (columnCount == 0)
-                return;
-
-            var dg:IDataGrid = value as IDataGrid;
-
-            view = (dg as UIBase).view as DataGridView;
-            (view.header as DataGridButtonBar).style = "overflow: visible";
-            (view.listArea as DataGridListArea).style = "overflow: visible";
+            view = (value as UIBase).view as DataGridView;
             view.header.addEventListener("headerLayout", headerLayoutHandler);
 		}
 
         private function headerLayoutHandler(event:Event):void
         {
-            var left:int = 0;
-            for (var i:int = 0; i < columnCount; i++)
+            for (var i:int = 0; i < view.columnLists.length; i++)
             {
-                var width:int = ((view.header as DataGridButtonBar).buttonWidths[i] as DataGridColumnWidth).value;
-                ((view.header as DataGridButtonBar).getElementAt(i) as DatagridHeaderRenderer).style = "position: sticky; left: " + left + "px; z-index: 100; width: " + width + "px;";
-                (view.columnLists[i] as DataGridColumnList).style = "position: sticky; left: " + left + "px; z-index: 50;";
-                left += width;
+                var display:String = ((view.columnLists[i] as DataGridColumnList).columnInfo as DataGridColumn).visible ? "block" : "none";
+                ((view.header as DataGridButtonBar).getElementAt(i) as DatagridHeaderRenderer).style = "display: " + display;
+                (view.columnLists[i] as DataGridColumnList).style = "display: " + display;
             }
         }
 	}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridLockedColumn.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridLockedColumn.as
index 1d70738..ea61f76 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridLockedColumn.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridLockedColumn.as
@@ -28,6 +28,7 @@ package org.apache.royale.jewel.beads.controls.datagrid
     import org.apache.royale.jewel.supportClasses.datagrid.DataGridListArea;
     import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumnList;
     import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumnWidth;
+    import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn;
     import org.apache.royale.jewel.itemRenderers.DatagridHeaderRenderer;
     import org.apache.royale.jewel.beads.views.DataGridView;
 
@@ -80,7 +81,8 @@ package org.apache.royale.jewel.beads.controls.datagrid
                 var width:int = ((view.header as DataGridButtonBar).buttonWidths[i] as DataGridColumnWidth).value;
                 ((view.header as DataGridButtonBar).getElementAt(i) as DatagridHeaderRenderer).style = "position: sticky; left: " + left + "px; z-index: 100; width: " + width + "px;";
                 (view.columnLists[i] as DataGridColumnList).style = "position: sticky; left: " + left + "px; z-index: 50;";
-                left += width;
+                if (((view.columnLists[i] as DataGridColumnList).columnInfo as DataGridColumn).visible)
+                    left += width;
             }
         }
 	}