You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/08/10 14:39:23 UTC

[royale-asjs] branch develop updated: jewel-datagrid: support LabelFunction at DataGrid level, still no support at column (DataGridColumnList) level

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

carlosrovira 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 9caf15f  jewel-datagrid: support LabelFunction at DataGrid level, still no support at column (DataGridColumnList) level
9caf15f is described below

commit 9caf15fb80c889d2e8512b125f8392bb185b3fb1
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Mon Aug 10 16:36:40 2020 +0200

    jewel-datagrid: support LabelFunction at DataGrid level, still no support at column (DataGridColumnList) level
---
 .../jewel/itemRenderers/DataGridItemRenderer.as    | 37 ++++++++++++++++++++++
 .../royale/jewel/itemRenderers/ListItemRenderer.as |  5 ++-
 .../supportClasses/datagrid/DataGridColumnList.as  |  2 +-
 3 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DataGridItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DataGridItemRenderer.as
index 22887f6..ebef955 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DataGridItemRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DataGridItemRenderer.as
@@ -18,6 +18,12 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.itemRenderers
 {
+    import org.apache.royale.core.IChild;
+    import org.apache.royale.core.ILabelFunction;
+    import org.apache.royale.core.IStrand;
+    import org.apache.royale.html.util.getLabelFromData;
+    import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumnList;
+
     /**
 	 *  The DataGridItemRenderer defines the basic Item Renderer for a Jewel DataGrid Component.
      *  For now is just a ListItemRenderer that populates some values from Jewel DataGridColumn.
@@ -35,5 +41,36 @@ package org.apache.royale.jewel.itemRenderers
 
 			typeNames = "jewel item datagrid";
         }
+
+		/**
+		 * Proxy the ILabelFunction bead if provided in the DataGrid to the DataGridListColumn
+		 */
+		override public function get labelFunctionBead():ILabelFunction {
+			if(!_labelFunctionBead) {
+				//itemRendererOwnerView.host is DataGridColumnList -> parent is DataGridListArea -> parent is DataGrid
+				_labelFunctionBead = ((itemRendererOwnerView.host.parent as IChild).parent as IStrand).getBeadByType(ILabelFunction) as ILabelFunction;
+			}
+			return _labelFunctionBead;
+		}
+
+		/**
+		 *  Sets the data value and uses the String version of the data for display.
+		 *  If the user provided a LabelFunction bead and set a custom labelFunction, then use it instead
+		 * 
+		 *  @param Object data The object being displayed by the itemRenderer instance.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.4
+		 */
+        override public function set data(value:Object):void
+        {
+			if(labelFunctionBead && labelFunctionBead.labelFunction)
+				text = labelFunctionBead.labelFunction(value, itemRendererOwnerView.host);
+			else
+            	text = getLabelFromData(this, value);
+            _data = value;
+        }
     }
 }
\ No newline at end of file
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
index 57feba3..7f02d1c 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
@@ -138,12 +138,11 @@ package org.apache.royale.jewel.itemRenderers
 		 */
         override public function set data(value:Object):void
         {
-			if(labelFunctionBead && labelFunctionBead.labelFunction) {
+			if(labelFunctionBead && labelFunctionBead.labelFunction)
 				text = labelFunctionBead.labelFunction(value);
-			}
 			else
             	text = getLabelFromData(this, value);
-            super.data = value;
+            _data = value;
         }
 
         /**
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
index 3a42af4..0fc28db 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/datagrid/DataGridColumnList.as
@@ -20,8 +20,8 @@ package org.apache.royale.jewel.supportClasses.datagrid
 {
     import org.apache.royale.jewel.DataGrid;
     import org.apache.royale.jewel.List;
-    import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList;
     import org.apache.royale.jewel.beads.models.ListPresentationModel;
+    import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList;
     
     //--------------------------------------
     //  Events