You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by pi...@apache.org on 2019/10/27 14:35:47 UTC
[royale-asjs] 01/01: ADG: Handle labelFunction in DataGridColumn
trough item renderer
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 <pi...@gmail.com>
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;
+ }
+ }
+}