This is an automated email from the ASF dual-hosted git repository. aharui pushed a commit to branch has in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit d58f7a9345ec640956b1f074ef5a6d30391f66ce Author: Alex Harui <[email protected]> AuthorDate: Sun Feb 16 20:14:51 2020 -0800 MX ADG --- ...ta.as => VirtualDataItemRendererFactoryBase.as} | 14 +- .../VirtualDataItemRendererFactoryForArrayData.as | 168 +-------------------- .../MXRoyale/src/main/resources/defaults.css | 5 +- .../MXRoyale/src/main/royale/MXRoyaleClasses.as | 4 +- .../AdvancedDataGridItemRenderer.as | 16 +- .../AdvancedDataGridSelectableItemRendererBead.as | 29 +++- ...actoryForICollectionViewAdvancedDataGridData.as | 63 +------- ... => AdvancedDataGridItemRendererInitializer.as} | 53 ++++--- .../controls/beads/TreeItemRendererInitializer.as | 8 +- 9 files changed, 88 insertions(+), 272 deletions(-) diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryBase.as similarity index 95% copy from frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as copy to frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryBase.as index 91a9057..40ecf87 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryBase.as @@ -60,7 +60,7 @@ package org.apache.royale.html.beads * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - public class VirtualDataItemRendererFactoryForArrayData extends EventDispatcher implements IBead, IDataProviderVirtualItemRendererMapper + public class VirtualDataItemRendererFactoryBase extends EventDispatcher implements IBead, IDataProviderVirtualItemRendererMapper { /** * Constructor. @@ -70,7 +70,7 @@ package org.apache.royale.html.beads * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - public function VirtualDataItemRendererFactoryForArrayData(target:Object=null) + public function VirtualDataItemRendererFactoryBase(target:Object=null) { super(target); } @@ -160,10 +160,6 @@ package org.apache.royale.html.beads */ protected function dataProviderChangeHandler(event:Event):void { - var dp:Array = dataProviderModel.dataProvider as Array; - if (!dp) - return; - var view:IListView = (_strand as IStrandWithModelView).view as IListView; var dataGroup:IItemRendererOwnerView = view.dataGroup; @@ -219,8 +215,6 @@ package org.apache.royale.html.beads protected var rendererMap:Object = {}; - private var dp:Array; - /** * Get an item renderer for a given index. * @@ -236,8 +230,6 @@ package org.apache.royale.html.beads var ir:IIndexedItemRenderer = rendererMap[index]; if (ir) return ir; - dp = dataProviderModel.dataProvider as Array; - ir = itemRendererFactory.createItemRenderer() as IIndexedItemRenderer; var view:IListView = (_strand as IStrandWithModelView).view as IListView; @@ -256,7 +248,7 @@ package org.apache.royale.html.beads public function getItemAt(index:int):Object { - return dp[index]; + return null; // must be overridden } } } diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as index 91a9057..c09acda 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as @@ -60,7 +60,7 @@ package org.apache.royale.html.beads * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - public class VirtualDataItemRendererFactoryForArrayData extends EventDispatcher implements IBead, IDataProviderVirtualItemRendererMapper + public class VirtualDataItemRendererFactoryForArrayData extends VirtualDataItemRendererFactoryBase { /** * Constructor. @@ -74,78 +74,6 @@ package org.apache.royale.html.beads { super(target); } - - protected var dataProviderModel:IDataProviderModel; - protected var dataFieldProvider:DataFieldProviderBead; - - protected var labelField:String; - protected var dataField:String; - - protected var _strand:IStrand; - - /** - * @copy org.apache.royale.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.0 - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("initComplete",finishSetup); - } - - /** - * @private - */ - private function finishSetup(event:Event):void - { - dataProviderModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel; - dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler); - labelField = dataProviderModel.labelField; - - dataFieldProvider = _strand.getBeadByType(DataFieldProviderBead) as DataFieldProviderBead; - if (dataFieldProvider) - { - dataField = dataFieldProvider.dataField; - } - - // if the host component inherits from DataContainerBase, the itemRendererClassFactory will - // already have been loaded by DataContainerBase.addedToParent function. - if(!_itemRendererFactory) - _itemRendererFactory = loadBeadFromValuesManager(IItemRendererClassFactory, "iItemRendererClassFactory", _strand) as IItemRendererClassFactory; - - dataProviderChangeHandler(null); - } - - private var _itemRendererFactory:IItemRendererClassFactory; - - /** - * The org.apache.royale.core.IItemRendererClassFactory used - * to generate instances of item renderers. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.0 - */ - public function get itemRendererFactory():IItemRendererClassFactory - { - if(!_itemRendererFactory) - _itemRendererFactory = loadBeadFromValuesManager(IItemRendererClassFactory, "iItemRendererClassFactory", _strand) as IItemRendererClassFactory; - - return _itemRendererFactory; - } - - /** - * @private - */ - public function set itemRendererFactory(value:IItemRendererClassFactory):void - { - _itemRendererFactory = value; - } /** * The org.apache.royale.core.IItemRendererOwnerView that will @@ -158,103 +86,19 @@ package org.apache.royale.html.beads * @royaleignorecoercion org.apache.royale.core.IStrandWithModelView * @royaleignorecoercion org.apache.royale.html.beads.IListView */ - protected function dataProviderChangeHandler(event:Event):void + override protected function dataProviderChangeHandler(event:Event):void { - var dp:Array = dataProviderModel.dataProvider as Array; + dp = dataProviderModel.dataProvider as Array; if (!dp) return; - var view:IListView = (_strand as IStrandWithModelView).view as IListView; - var dataGroup:IItemRendererOwnerView = view.dataGroup; - - dataGroup.removeAllItemRenderers(); + super.dataProviderChangeHandler(event); } - - private var _itemRendererInitializer:IItemRendererInitializer; - - /** - * The org.apache.royale.core.IItemRendererInitializer used - * to initialize instances of item renderers. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.8 - * @royaleignorecoercion org.apache.royale.core.IItemRendererInitializer - */ - public function get itemRendererInitializer():IItemRendererInitializer - { - if(!_itemRendererInitializer) - _itemRendererInitializer = loadBeadFromValuesManager(IItemRendererInitializer, "iItemRendererInitializer", _strand) as IItemRendererInitializer; - - return _itemRendererInitializer; - } - - /** - * @private - */ - public function set itemRendererInitializer(value:IItemRendererInitializer):void - { - _itemRendererInitializer = value; - } - - /** - * Free an item renderer for a given index. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.9.0 - * @royaleignorecoercion org.apache.royale.core.IStrandWithModelView - * @royaleignorecoercion org.apache.royale.html.beads.IListView - */ - public function freeItemRendererForIndex(index:int):void - { - var ir:IIndexedItemRenderer = rendererMap[index]; - var view:IListView = (_strand as IStrandWithModelView).view as IListView; - var dataGroup:IItemRendererOwnerView = view.dataGroup; - dataGroup.removeItemRenderer(ir); - delete rendererMap[index]; - } - - protected var rendererMap:Object = {}; - + private var dp:Array; - /** - * Get an item renderer for a given index. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.9.0 - * @royaleignorecoercion org.apache.royale.core.IStrandWithModelView - * @royaleignorecoercion org.apache.royale.html.beads.IListView - */ - public function getItemRendererForIndex(index:int, elementIndex:int):IIndexedItemRenderer - { - var ir:IIndexedItemRenderer = rendererMap[index]; - if (ir) return ir; - - dp = dataProviderModel.dataProvider as Array; - - ir = itemRendererFactory.createItemRenderer() as IIndexedItemRenderer; - - var view:IListView = (_strand as IStrandWithModelView).view as IListView; - var dataGroup:IItemRendererOwnerView = view.dataGroup; - dataGroup.addItemRendererAt(ir, elementIndex); - var data:Object = getItemAt(index); - (itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir as IIndexedItemRenderer, data, index); - rendererMap[index] = ir; - ir.data = data; - - var newEvent:ItemRendererEvent = new ItemRendererEvent(ItemRendererEvent.CREATED); - newEvent.itemRenderer = ir; - dispatchEvent(newEvent); - return ir; - } - public function getItemAt(index:int):Object + override public function getItemAt(index:int):Object { return dp[index]; } diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css index 7459188..577fcf0 100644 --- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css +++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css @@ -116,9 +116,10 @@ adg|AdvancedDataGridColumnList { IBeadView: ClassReference("mx.containers.beads.AdvancedDataGridListVirtualListView"); IBeadController: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridSingleSelectionMouseController"); IBeadLayout: ClassReference("mx.controls.beads.layouts.AdvancedDataGridVirtualListVerticalLayout"); - IItemRendererClassFactory: ClassReference("org.apache.royale.core.ItemRendererClassFactory"); + IItemRendererClassFactory: ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory"); IItemRenderer: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer"); - IItemRendererInitializer: ClassReference("org.apache.royale.html.beads.ListItemRendererInitializer"); + IItemRendererInitializer: ClassReference("mx.controls.beads.AdvancedDataGridItemRendererInitializer"); + ISelectableItemRenderer: ClassReference("mx.controls.advancedDataGridClasses.AdvancedDataGridSelectableItemRendererBead"); IViewport: ClassReference("org.apache.royale.html.supportClasses.Viewport"); IViewportModel: ClassReference("org.apache.royale.html.beads.models.ViewportModel"); border-style: none; diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as index 84cfd87..e9dddff 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as +++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as @@ -85,7 +85,6 @@ internal class MXRoyaleClasses import mx.controls.listClasses.VirtualDataItemRendererFactoryForIListData; VirtualDataItemRendererFactoryForIListData; import mx.controls.treeClasses.DataItemRendererFactoryForICollectionViewHierarchicalData; DataItemRendererFactoryForICollectionViewHierarchicalData; import mx.controls.advancedDataGridClasses.DataItemRendererFactoryForICollectionViewAdvancedDataGridData; DataItemRendererFactoryForICollectionViewAdvancedDataGridData; - import mx.controls.advancedDataGridClasses.AdvancedDataGridSelectableItemRendererBead; AdvancedDataGridSelectableItemRendererBead; import mx.charts.chartClasses.RenderData; RenderData; import mx.effects.EffectInstance; EffectInstance; import mx.effects.effectClasses.CompositeEffectInstance; CompositeEffectInstance; @@ -172,6 +171,7 @@ internal class MXRoyaleClasses import mx.controls.advancedDataGridClasses.AdvancedDataGridButtonBar; AdvancedDataGridButtonBar; import mx.controls.advancedDataGridClasses.AdvancedDataGridListArea; AdvancedDataGridListArea; import mx.controls.advancedDataGridClasses.AdvancedDataGridSingleSelectionMouseController; AdvancedDataGridSingleSelectionMouseController; + import mx.controls.advancedDataGridClasses.AdvancedDataGridSelectableItemRendererBead; AdvancedDataGridSelectableItemRendererBead; import mx.controls.dataGridClasses.DataGridColumnList; DataGridColumnList; import mx.controls.dataGridClasses.DataGridListArea; DataGridListArea; import mx.controls.beads.AdvancedDataGridView; AdvancedDataGridView; @@ -241,6 +241,8 @@ internal class MXRoyaleClasses import mx.controls.dateFieldClasses.DateFieldDateChooser; DateFieldDateChooser; import mx.controls.beads.controllers.MenuBarMouseController; MenuBarMouseController; import mx.controls.beads.controllers.CascadingMenuSelectionMouseController; CascadingMenuSelectionMouseController; + import mx.controls.beads.TreeItemRendererInitializer; TreeItemRendererInitializer; + import mx.controls.beads.AdvancedDataGridItemRendererInitializer; AdvancedDataGridItemRendererInitializer; import mx.containers.PanelTitleBar; PanelTitleBar; import mx.containers.beads.PanelView; PanelView; 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 ef348eb..218693a 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 @@ -50,6 +50,7 @@ import mx.core.UIComponent; import mx.collections.IHierarchicalData; import mx.events.ListEvent; import org.apache.royale.core.ISelectableItemRenderer; +import org.apache.royale.core.IListDataItemRenderer; //-------------------------------------- // Events @@ -70,7 +71,7 @@ import org.apache.royale.core.ISelectableItemRenderer; * @playerversion AIR 1.1 * @productversion Royale 0.9.3 */ -//[Event(name="dataChange", type="mx.events.FlexEvent")] +[Event(name="dataChange", type="mx.events.FlexEvent")] /** * The AdvancedDataGridItemRenderer class defines the default item renderer for a AdvancedDataGrid control. @@ -89,7 +90,7 @@ import org.apache.royale.core.ISelectableItemRenderer; * @productversion Royale 0.9.3 */ public class AdvancedDataGridItemRenderer extends StringItemRenderer - implements IDataRenderer,IDropInListItemRenderer + implements IDataRenderer,IDropInListItemRenderer,IListDataItemRenderer { /* extends UITextField implements IDataRenderer, @@ -169,16 +170,6 @@ public class AdvancedDataGridItemRenderer extends StringItemRenderer indent += (treeListData.hasChildren ? (treeListData.open ? "▼" : "▶") : "") + extraSpace; } - var selectionBead:ISelectableItemRenderer = getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer; - if ((treeListData.owner as AdvancedDataGrid).selectedIndices.indexOf(treeListData.rowIndex) != -1) - { - selectionBead.selected = true; - } - else if ((treeListData.owner as AdvancedDataGrid).selectedIndex == treeListData.rowIndex) - { - selectionBead.selected = true; - } - if (column.labelFunction) { this.text = column.labelFunction(value, column); @@ -187,6 +178,7 @@ public class AdvancedDataGridItemRenderer extends StringItemRenderer { this.text = indent + this.text; } + dispatchEvent(new FlexEvent("dataChange")); } private var _listData:Object; diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridSelectableItemRendererBead.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridSelectableItemRendererBead.as index c6ea607..fef44fb 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridSelectableItemRendererBead.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridSelectableItemRendererBead.as @@ -21,10 +21,15 @@ package mx.controls.advancedDataGridClasses { import mx.controls.AdvancedDataGrid; +import mx.controls.advancedDataGridClasses.AdvancedDataGridListData; import mx.core.UIComponent; import org.apache.royale.utils.CSSUtils; +import org.apache.royale.core.IListDataItemRenderer; import org.apache.royale.core.ISelectableItemRenderer; +import org.apache.royale.core.IStrand; +import org.apache.royale.events.Event; +import org.apache.royale.events.IEventDispatcher; import org.apache.royale.html.beads.SelectableItemRendererBeadBase; /** @@ -56,6 +61,12 @@ public class AdvancedDataGridSelectableItemRendererBead extends SelectableItemRe //-------------------------------------------------------------------------- + override public function set strand(value:IStrand):void + { + super.strand = value; + (value as IEventDispatcher).addEventListener("dataChange", dataChangeHandler); + } + //-------------------------------------------------------------------------- // // Properties @@ -70,7 +81,7 @@ public class AdvancedDataGridSelectableItemRendererBead extends SelectableItemRe */ override public function updateRenderer():void { - var ir:AdvancedDataGridItemRenderer = _strand as AdvancedDataGridItemRenderer; + var ir:IListDataItemRenderer = _strand as IListDataItemRenderer; var treeListData:AdvancedDataGridListData = ir.listData as AdvancedDataGridListData; var owner:AdvancedDataGrid = treeListData.owner as AdvancedDataGrid; var bgColors:Array = owner.getStyle("alternatingItemColors"); @@ -108,6 +119,22 @@ public class AdvancedDataGridSelectableItemRendererBead extends SelectableItemRe } } + private function dataChangeHandler(event:Event):void + { + var ir:IListDataItemRenderer = _strand as IListDataItemRenderer; + var treeListData:AdvancedDataGridListData = ir.listData as AdvancedDataGridListData; + var owner:AdvancedDataGrid = treeListData.owner as AdvancedDataGrid; + if (owner.selectedIndices.indexOf(treeListData.rowIndex) != -1) + { + selected = true; + } + else if (owner.selectedIndex == treeListData.rowIndex) + { + selected = true; + } + else + selected = false; + } } } 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 9c9b8b0..498a638 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 @@ -52,7 +52,7 @@ package mx.controls.advancedDataGridClasses import org.apache.royale.events.ItemRendererEvent; import org.apache.royale.html.List; import org.apache.royale.html.beads.IListView; - import org.apache.royale.html.beads.VirtualDataItemRendererFactoryForArrayData; + import org.apache.royale.html.beads.VirtualDataItemRendererFactoryBase; import org.apache.royale.html.supportClasses.DataItemRenderer; import org.apache.royale.html.supportClasses.TreeListData; @@ -68,7 +68,7 @@ package mx.controls.advancedDataGridClasses * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - public class DataItemRendererFactoryForICollectionViewAdvancedDataGridData extends VirtualDataItemRendererFactoryForArrayData + public class DataItemRendererFactoryForICollectionViewAdvancedDataGridData extends VirtualDataItemRendererFactoryBase { /** * Constructor. @@ -116,43 +116,9 @@ package mx.controls.advancedDataGridClasses private var cursor:IViewCursor; private var currentIndex:int; - /** - * Sets the itemRenderer's data with additional tree-related data. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.0 - */ - protected function setData(ir:IIndexedItemRenderer, data:Object, index:int):void - { - 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("", "", adgColumnListModel.columnIndex, "", adgColumnList.adg, index); - treeListData.depth = depth; - treeListData.open = isOpen; - treeListData.hasChildren = hasChildren; - - (ir as IListDataItemRenderer).listData = treeListData; - if (firstColumn && adgColumnList.adg.groupLabelField) - (ir as ILabelFieldItemRenderer).labelField = adgColumnList.adg.groupLabelField; - - ir.data = data; - ir.index = index; - } /** - * Get an item renderer for a given index. + * Get a item for a given index. * * @langversion 3.0 * @playerversion Flash 10.2 @@ -161,20 +127,8 @@ package mx.controls.advancedDataGridClasses * @royaleignorecoercion org.apache.royale.core.IStrandWithModelView * @royaleignorecoercion org.apache.royale.html.beads.IListView */ - override public function getItemRendererForIndex(index:int, elementIndex:int):IIndexedItemRenderer + override public function getItemAt(index:int):Object { - var ir:IIndexedItemRenderer = rendererMap[index]; - if (ir) return ir; - - var dp:ICollectionView = dataProviderModel.dataProvider as ICollectionView; - - ir = itemRendererFactory.createItemRenderer() as IIndexedItemRenderer; - - var view:IListView = (_strand as IStrandWithModelView).view as IListView; - var dataGroup:IItemRendererOwnerView = view.dataGroup; - dataGroup.addItemRendererAt(ir, elementIndex); - rendererMap[index] = ir; - var delta:int = index - currentIndex; if (currentIndex == -1) { @@ -193,14 +147,7 @@ package mx.controls.advancedDataGridClasses cursor.seek(CursorBookmark.CURRENT, delta); } currentIndex = index; - - var data:Object = cursor.current; - (itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, index); - - var newEvent:ItemRendererEvent = new ItemRendererEvent(ItemRendererEvent.CREATED); - newEvent.itemRenderer = ir; - dispatchEvent(newEvent); - return ir; + return cursor.current; } } } diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererInitializer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridItemRendererInitializer.as similarity index 53% copy from frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererInitializer.as copy to frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridItemRendererInitializer.as index 7fcb51a..ecebb99 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererInitializer.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridItemRendererInitializer.as @@ -16,7 +16,7 @@ // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// -package org.apache.royale.html.beads +package mx.controls.beads { import org.apache.royale.collections.TreeData; @@ -25,16 +25,19 @@ package org.apache.royale.html.beads import org.apache.royale.core.IIndexedItemRenderer; import org.apache.royale.core.IIndexedItemRendererInitializer; import org.apache.royale.core.IItemRenderer; - import org.apache.royale.core.IItemRendererOwnerView; import org.apache.royale.core.IListDataItemRenderer; + import org.apache.royale.core.ILabelFieldItemRenderer; import org.apache.royale.core.IStrand; import org.apache.royale.core.IUIBase; import org.apache.royale.core.SimpleCSSStyles; import org.apache.royale.core.UIBase; - import mx.controls.treeClasses.TreeListData; + import org.apache.royale.html.beads.ListItemRendererInitializer; + import mx.controls.advancedDataGridClasses.AdvancedDataGridListData; + import mx.controls.advancedDataGridClasses.AdvancedDataGridColumnList; + import mx.controls.beads.models.DataGridColumnICollectionViewModel; /** - * The TreeItemRendererInitializer class initializes item renderers + * The AdvancedDataGridItemRendererInitializer class initializes item renderers * in tree classes. * * @langversion 3.0 @@ -42,7 +45,7 @@ package org.apache.royale.html.beads * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - public class TreeItemRendererInitializer extends ListItemRendererInitializer + public class AdvancedDataGridItemRendererInitializer extends ListItemRendererInitializer { /** * constructor. @@ -52,7 +55,7 @@ package org.apache.royale.html.beads * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - public function TreeItemRendererInitializer() + public function AdvancedDataGridItemRendererInitializer() { } @@ -60,26 +63,34 @@ package org.apache.royale.html.beads * @private * @royaleignorecoercion org.apache.royale.core.HTMLElementWrapper */ - override public function initializeIndexedItemRenderer(ir:IIndexedItemRenderer, data:Object, ownerView:IItemRendererOwnerView, index:int):void + override public function initializeIndexedItemRenderer(ir:IIndexedItemRenderer, data:Object, index:int):void { if (!dataProviderModel) return; - super.initializeItemRenderer(ir, data, ownerView, index); - - var treeData:TreeData = dataProviderModel.dataProvider as TreeData; - var depth:int = treeData.getDepth(data); - var isOpen:Boolean = treeData.isOpen(data); - var hasChildren:Boolean = treeData.hasChildren(data); - - // Set the listData with the depth of this item - var treeListData:TreeListData = new TreeListData(); - treeListData.depth = depth; - treeListData.isOpen = isOpen; - treeListData.hasChildren = hasChildren; - - (ir as IListDataItemRenderer).listData = treeListData; + super.initializeIndexedItemRenderer(ir, data, index); + 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("", "", adgColumnListModel.columnIndex, "", adgColumnList.adg, index); + treeListData.depth = depth; + treeListData.open = isOpen; + treeListData.hasChildren = hasChildren; + + (ir as IListDataItemRenderer).listData = treeListData; + if (firstColumn && adgColumnList.adg.groupLabelField) + (ir as ILabelFieldItemRenderer).labelField = adgColumnList.adg.groupLabelField; + } } diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererInitializer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererInitializer.as index 7fcb51a..b5103de 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererInitializer.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererInitializer.as @@ -16,7 +16,7 @@ // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// -package org.apache.royale.html.beads +package mx.controls.beads { import org.apache.royale.collections.TreeData; @@ -25,12 +25,12 @@ package org.apache.royale.html.beads import org.apache.royale.core.IIndexedItemRenderer; import org.apache.royale.core.IIndexedItemRendererInitializer; import org.apache.royale.core.IItemRenderer; - import org.apache.royale.core.IItemRendererOwnerView; import org.apache.royale.core.IListDataItemRenderer; import org.apache.royale.core.IStrand; import org.apache.royale.core.IUIBase; import org.apache.royale.core.SimpleCSSStyles; import org.apache.royale.core.UIBase; + import org.apache.royale.html.beads.ListItemRendererInitializer; import mx.controls.treeClasses.TreeListData; /** @@ -60,12 +60,12 @@ package org.apache.royale.html.beads * @private * @royaleignorecoercion org.apache.royale.core.HTMLElementWrapper */ - override public function initializeIndexedItemRenderer(ir:IIndexedItemRenderer, data:Object, ownerView:IItemRendererOwnerView, index:int):void + override public function initializeIndexedItemRenderer(ir:IIndexedItemRenderer, data:Object, index:int):void { if (!dataProviderModel) return; - super.initializeItemRenderer(ir, data, ownerView, index); + super.initializeItemRenderer(ir, data, index); var treeData:TreeData = dataProviderModel.dataProvider as TreeData; var depth:int = treeData.getDepth(data);
