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 14c8ea3  New bead to allow Jewel DataGrid to have locked columns
14c8ea3 is described below

commit 14c8ea3bf34b0eea06dd39fc32ce5e22ff158169
Author: Hugo Ferreira <[email protected]>
AuthorDate: Sun Nov 21 11:01:40 2021 +0000

    New bead to allow Jewel DataGrid to have locked columns
---
 .../Jewel/src/main/resources/jewel-manifest.xml    |  1 +
 .../controls/datagrid/DataGridLockedColumn.as      | 87 ++++++++++++++++++++++
 2 files changed, 88 insertions(+)

diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml 
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index d0add1a..963350c 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -61,6 +61,7 @@
     <component id="DataGridColumnLabelsChange" 
class="org.apache.royale.jewel.beads.controls.datagrid.DataGridColumnLabelsChange"/>
     <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="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/DataGridLockedColumn.as
new file mode 100644
index 0000000..1d70738
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridLockedColumn.as
@@ -0,0 +1,87 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.royale.jewel.beads.controls.datagrid
+{
+    import org.apache.royale.core.IBead;
+    import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IDataGrid;
+    import org.apache.royale.core.UIBase;
+    import org.apache.royale.events.Event;
+    import org.apache.royale.html.beads.IDataGridView;
+    import org.apache.royale.jewel.supportClasses.datagrid.DataGridButtonBar;
+    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.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
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.9
+        */
+       public class DataGridLockedColumn implements IBead
+       {
+        private var view:IDataGridView;
+
+        public var columnCount:int;
+
+               public function DataGridLockedColumn()
+               {
+                       super();
+               }
+        
+               /**                             
+                *  @copy org.apache.royale.core.IBead#strand
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.9
+                */
+        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.header.addEventListener("headerLayout", headerLayoutHandler);
+               }
+
+        private function headerLayoutHandler(event:Event):void
+        {
+            var left:int = 0;
+            for (var i:int = 0; i < columnCount; 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;
+            }
+        }
+       }
+}
\ No newline at end of file

Reply via email to