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

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

commit e0bc3320629c048a2fe645c2a83f813756beca33
Author: Piotr Zarzycki <[email protected]>
AuthorDate: Sun Oct 27 15:35:29 2019 +0100

    ADG: Handle labelFunction in DataGridColumn trough item renderer
    
    (reference #472)
---
 .../MXRoyale/src/main/resources/defaults.css       |  2 +-
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |  1 +
 .../AdvancedDataGridItemRenderer.as                | 23 ++++++--
 ...actoryForICollectionViewAdvancedDataGridData.as | 28 ++++++----
 .../mx/controls/beads/AdvancedDataGridView.as      |  5 +-
 .../models/DataGridColumnICollectionViewModel.as   | 65 ++++++++++++++++++++++
 6 files changed, 106 insertions(+), 18 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css 
b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 6c246f0..1324dc6 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -95,7 +95,7 @@ AdvancedDataGrid
 }
 
 adg|AdvancedDataGridColumnList {
-       IBeadModel: 
ClassReference("mx.controls.beads.models.SingleSelectionICollectionViewModel");
+       IBeadModel: 
ClassReference("mx.controls.beads.models.DataGridColumnICollectionViewModel");
        IDataProviderItemRendererMapper: 
ClassReference("mx.controls.advancedDataGridClasses.DataItemRendererFactoryForICollectionViewAdvancedDataGridData");
        IBeadView:  
ClassReference("org.apache.royale.html.beads.VirtualListView");                 
    
        IBeadController: 
ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridSingleSelectionMouseController");
diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as 
b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index 5216039..625bb27 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -237,6 +237,7 @@ internal class MXRoyaleClasses
     import mx.controls.beads.models.ComboBoxModel; ComboBoxModel;
     
     import mx.controls.beads.models.SingleSelectionICollectionViewModel; 
SingleSelectionICollectionViewModel;
+       import mx.controls.beads.models.DataGridColumnICollectionViewModel; 
DataGridColumnICollectionViewModel;
     import mx.controls.beads.models.DataGridICollectionViewModel; 
DataGridICollectionViewModel;
     import mx.controls.beads.models.SingleSelectionIListModel; 
SingleSelectionIListModel;
     import mx.controls.buttonBarClasses.TextButtonDataGridColumnItemRenderer; 
TextButtonDataGridColumnItemRenderer;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as
index 94e782e..573568d 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as
@@ -27,7 +27,10 @@ import flash.utils.getQualifiedClassName;
 import flash.utils.getQualifiedSuperclassName; */
 
 //import mx.controls.AdvancedDataGrid;
-import mx.controls.listClasses.BaseListData;
+    import mx.controls.AdvancedDataGrid;
+    import mx.controls.beads.models.DataGridICollectionViewModel;
+    import mx.controls.dataGridClasses.DataGridColumn;
+    import mx.controls.listClasses.BaseListData;
 import mx.controls.listClasses.IDropInListItemRenderer;
 import mx.core.IDataRenderer;
 import mx.core.IFlexDisplayObject;
@@ -43,7 +46,7 @@ use namespace mx_internal;
 
 import org.apache.royale.utils.CSSUtils;
 import org.apache.royale.html.supportClasses.StringItemRenderer;
-import mx.core.UIComponent;
+import mx.core.UIComponent;
 
 //--------------------------------------
 //  Events
@@ -128,9 +131,20 @@ public class AdvancedDataGridItemRenderer extends 
StringItemRenderer
      */
     override public function set data(value:Object):void
     {
-        super.data = value;
-        
         var treeListData:AdvancedDataGridListData = listData as 
AdvancedDataGridListData;
+        var owner:AdvancedDataGrid = treeListData.owner as AdvancedDataGrid;
+        var adgModel:DataGridICollectionViewModel = 
owner.getBeadByType(DataGridICollectionViewModel) as 
DataGridICollectionViewModel;
+        var column:DataGridColumn = adgModel.columns[treeListData.columnIndex];
+
+        if (column.labelFunction)
+        {
+            super.data = column.labelFunction(value, column);
+        }
+        else
+        {
+            super.data = value;
+        }
+
         var indentSpace:String = "    ";
         var extraSpace:String = " ";
         
@@ -154,6 +168,7 @@ public class AdvancedDataGridItemRenderer extends 
StringItemRenderer
         COMPILE::JS {
             element.style.backgroundColor = 
CSSUtils.attributeFromColor(backgroundColor);
         }
+
         this.text = indent + this.text;
     }
 
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/DataItemRendererFactoryForICollectionViewAdvancedDataGridData.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/DataItemRendererFactoryForICollectionViewAdvancedDataGridData.as
index d56315a..49854dd 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/DataItemRendererFactoryForICollectionViewAdvancedDataGridData.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/DataItemRendererFactoryForICollectionViewAdvancedDataGridData.as
@@ -22,7 +22,8 @@ package mx.controls.advancedDataGridClasses
        import mx.collections.IViewCursor;
     import mx.collections.CursorBookmark;
        import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnList;
-       import mx.core.IUIComponent;
+    import mx.controls.beads.models.DataGridColumnICollectionViewModel;
+    import mx.core.IUIComponent;
        
        import org.apache.royale.collections.FlattenedList;
        import org.apache.royale.collections.HierarchicalData;
@@ -141,23 +142,26 @@ package mx.controls.advancedDataGridClasses
                 */
                protected function setData(ir:ISelectableItemRenderer, 
data:Object, index:int):void
                {
-            if (!(_strand as AdvancedDataGridColumnList).adg) return;
-            
-                       var depth:int = (_strand as 
AdvancedDataGridColumnList).adg.getDepth(data);
-                       var isOpen:Boolean = (_strand as 
AdvancedDataGridColumnList).adg.isItemOpen(data);
-                       var hasChildren:Boolean = (_strand as 
AdvancedDataGridColumnList).adg.hasChildren(data);
-            var listID:String = (_strand as AdvancedDataGridColumnList).id;
-            var firstColumn:Boolean =  listID == "dataGridColumn0";
-                       
+            var adgColumnList:AdvancedDataGridColumnList = _strand as 
AdvancedDataGridColumnList;
+
+            if (!adgColumnList.adg) return;
+
+            var adgColumnListModel:DataGridColumnICollectionViewModel = 
adgColumnList.getBeadByType(DataGridColumnICollectionViewModel) as 
DataGridColumnICollectionViewModel;
+
+                       var depth:int = adgColumnList.adg.getDepth(data);
+                       var isOpen:Boolean = adgColumnList.adg.isItemOpen(data);
+                       var hasChildren:Boolean = 
adgColumnList.adg.hasChildren(data);
+            var firstColumn:Boolean =  adgColumnListModel.columnIndex == 0;
+
                        // Set the listData with the depth of this item
-                       var treeListData:AdvancedDataGridListData = new 
AdvancedDataGridListData("", "", firstColumn ? 0 : 1, "", (_strand as 
AdvancedDataGridColumnList).adg, index);
+                       var treeListData:AdvancedDataGridListData = new 
AdvancedDataGridListData("", "", adgColumnListModel.columnIndex, "", 
adgColumnList.adg, index);
                        treeListData.depth = depth;
                        treeListData.open = isOpen;
                        treeListData.hasChildren = hasChildren;
                        
                        ir.listData = treeListData;
-            if (firstColumn && (_strand as 
AdvancedDataGridColumnList).adg.groupLabelField)
-                ir.labelField = (_strand as 
AdvancedDataGridColumnList).adg.groupLabelField;
+            if (firstColumn && adgColumnList.adg.groupLabelField)
+                ir.labelField = adgColumnList.adg.groupLabelField;
                        
                        ir.data = data;
             ir.index = index;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
index beef3b4..38764f6 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridView.as
@@ -18,6 +18,8 @@
 
////////////////////////////////////////////////////////////////////////////////
 package mx.controls.beads
 {
+    import mx.controls.beads.models.DataGridColumnICollectionViewModel;
+
     import org.apache.royale.core.IDataGrid;
     import org.apache.royale.core.IDataGridModel;
     import org.apache.royale.core.UIBase;
@@ -65,7 +67,6 @@ package mx.controls.beads
         
         private function handleColumnsInvalid(event:Event):void
         {
-            
             var host:IDataGrid = _strand as IDataGrid;
             var sharedModel:IDataGridModel = (host.model as IDataGridModel);
             
@@ -73,6 +74,8 @@ package mx.controls.beads
             for (var i:int=0; i < columnLists.length; i++)
             {
                 var list:AdvancedDataGridColumnList = columnLists[i] as 
AdvancedDataGridColumnList;
+                var adgColumnListModel:DataGridColumnICollectionViewModel = 
list.getBeadByType(DataGridColumnICollectionViewModel) as 
DataGridColumnICollectionViewModel;
+                adgColumnListModel.columnIndex = i;
                 list.visible = (sharedModel.columns[i] as 
AdvancedDataGridColumn).visible;
                 list.addEventListener(ItemClickEvent.ITEM_CLICK, 
itemClickHandler);
                 if (list.visible)
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/models/DataGridColumnICollectionViewModel.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/models/DataGridColumnICollectionViewModel.as
new file mode 100644
index 0000000..e0f1afd
--- /dev/null
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/models/DataGridColumnICollectionViewModel.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.models
+{
+    /**
+     *  The DataGridColumnICollectionViewModel class is a selection model for 
AdvancedDataGridColumn
+     *  which helps managing labelFunction
+        *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9.7
+     */
+       public class DataGridColumnICollectionViewModel extends 
SingleSelectionICollectionViewModel
+       {
+        /**
+         *  Constructor.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+               public function DataGridColumnICollectionViewModel()
+               {
+                       super();
+               }
+
+               private var _columnIndex:int;
+
+               /**
+                *  Indication to columnIndex
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function get columnIndex():int
+               {
+                       return _columnIndex;
+               }
+
+               public function set columnIndex(value:int):void
+               {
+                       _columnIndex = value;
+               }
+       }
+}

Reply via email to