You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2022/01/27 03:19:34 UTC

[royale-asjs] 02/02: Trying to get more of DataGrid emulation aligned with the original Flex - using DataGridColumn.itemToLabel for DataGridListData.label

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

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

commit f4622aeb976b8bef9b1832ca1e71c59e8e02536c
Author: greg-dove <gr...@gmail.com>
AuthorDate: Thu Jan 27 16:19:20 2022 +1300

    Trying to get more of DataGrid emulation aligned with the original Flex - using DataGridColumn.itemToLabel for DataGridListData.label
---
 .../beads/DataGridItemRendererInitializer.as       | 16 +++++++----
 .../main/royale/mx/controls/beads/DataGridView.as  |  4 ++-
 .../mx/controls/dataGridClasses/DataGridColumn.as  | 32 ++++++++++++++--------
 3 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
index c3d1eb2..39314d2 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
@@ -22,6 +22,7 @@ package mx.controls.beads
 
 	import mx.controls.DataGrid;
 	import mx.controls.beads.models.DataGridColumnICollectionViewModel;
+	import mx.controls.dataGridClasses.DataGridColumn;
 	import mx.controls.dataGridClasses.DataGridColumnList;
 	import mx.controls.dataGridClasses.DataGridListData;
 	import mx.core.UIComponent;
@@ -55,6 +56,8 @@ package mx.controls.beads
 		/**
 		 *  @private
 		 *  @royaleignorecoercion org.apache.royale.core.HTMLElementWrapper
+		 *
+		 *  @royaleignorecoercion mx.controls.dataGridClasses.DataGridColumn
 		 */
 		override public function initializeIndexedItemRenderer(ir:IIndexedItemRenderer, data:Object, index:int):void
 		{
@@ -70,15 +73,18 @@ package mx.controls.beads
             var dgColumnListModel:DataGridColumnICollectionViewModel = dgColumnList.model as DataGridColumnICollectionViewModel;
 			var dg:DataGrid = (dgColumnList.grid as DataGrid);
 
-			var dataField:String = dg.columns[dgColumnListModel.columnIndex].dataField;
+			var dgColumn:DataGridColumn = dg.columns[dgColumnListModel.columnIndex] as DataGridColumn;
 			var text:String = "";
-			try {
-				text = data[dataField];
+
+			/*try {
+				text = dgColumn.labelFunction !=null ? dgColumn.labelFunction(data, dgColumn) : data[dgColumn.dataField];
 			} catch (e:Error)
 			{
-			}
+			}*/
+			text = dgColumn.itemToLabel(data);
+
 			// Set the listData with the depth of this item
-			var listData:DataGridListData = new DataGridListData(text, dataField, dgColumnListModel.columnIndex, "", (dgColumnList.grid as DataGrid), index);
+			var listData:DataGridListData = new DataGridListData(text, dgColumn.dataField, dgColumnListModel.columnIndex, "", dg, index);
 
 			(ir as IListDataItemRenderer).listData = listData;
         }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
index e271e45..106e9f4 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
@@ -355,11 +355,13 @@ COMPILE::JS{
          * @royaleignorecoercion mx.controls.listClasses.ListBase
          * @royaleignorecoercion mx.controls.dataGridClasses.DataGridColumnList
          * @royaleignorecoercion mx.controls.dataGridClasses.DataGridColumn
-         * @royaleignorecoercion org.apache.royale.core.UIBase;
+         * @royaleignorecoercion org.apache.royale.core.UIBase
+         * @royaleignorecoercion mx.controls.beads.models.DataGridColumnICollectionViewModel
          */
         override protected function onCreatedList(list:IDataGridColumnList, forColumn:IDataGridColumn):void{
             (list as DataGridColumnList).grid = _strand as ListBase;
             DataGridColumn(forColumn).list = list as UIBase;
+            ((list as DataGridColumnList).model as DataGridColumnICollectionViewModel).columnIndex = DataGridColumn(forColumn).colNum;
         }
 
         protected function preDestroyList(list:IDataGridColumnList):void{
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 c2fa17d..70dda04 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
@@ -207,7 +207,7 @@ import org.apache.royale.core.IHasLabelField;
  *  @playerversion AIR 1.1
  *  @productversion Flex 3
  */
-public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGridColumn implements IHasLabelField // IIMESupport
+public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGridColumn /*implements IHasLabelField */// IIMESupport
 {
     //--------------------------------------------------------------------------
     //
@@ -364,22 +364,29 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
     //  labelFunction
     //----------------------------------
 
+    /**
+     *
+     * @param data
+     * @return stringified value of data
+     *
+     * @royaleignorecoercion XML
+     * @royaleignorecoercion String
+     *
+     */
     public function itemToLabel(data:Object):String
     {
         if (data == null)
             return " ";
         
-        /*
-        if (labelFunction != null)
-            return labelFunction(data);
-        */
-        
+        if (_labelFunction != null)
+            return _labelFunction(data, this);
+
         if (data is XML)
         {
             try
             {
-                if ((data as XML)[labelField].length() != 0)
-                    data = (data as XML)[labelField];
+                if ((data as XML)[dataField].length() != 0)
+                    data = (data as XML)[dataField];
                 //by popular demand, this is a default XML labelField
                 //else if (data.@label.length() != 0)
                 //  data = data.@label;
@@ -392,8 +399,8 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
         {
             try
             {
-                if (data[labelField] != null)
-                    data = data[labelField];
+                if (data[dataField] != null)
+                    data = data[dataField];
             }
             catch(e:Error)
             {
@@ -414,7 +421,8 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
         return " ";
     }
 
-    private var _labelField:String;
+    //DataGridColumn does not have 'labelField'
+   /* private var _labelField:String;
     public function get labelField():String
     {
         return _labelField;
@@ -423,7 +431,7 @@ public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGr
     public function set labelField(value:String):void
     {
         _labelField = value;
-    }
+    }*/
 
     /**
      *  @private