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 <[email protected]> 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 ([email protected]() != 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
