This is an automated email from the ASF dual-hosted git repository. harbs pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit 4490c00ef0cc48d752011fff78deee790f1e0997 Author: Harbs <ha...@in-tools.com> AuthorDate: Wed Apr 11 11:54:32 2018 +0300 Simpler bulk adding of item renders --- .../src/main/royale/simple/IRFactoryForArrayData.as | 2 +- .../org/apache/royale/core/DataContainerBase.as | 17 ++++++++--------- .../html/beads/DataItemRendererFactoryForArrayData.as | 2 +- .../html/beads/DataItemRendererFactoryForArrayList.as | 6 ++---- .../beads/DataItemRendererFactoryForColumnData.as | 2 +- .../html/beads/TextItemRendererFactoryForArrayData.as | 2 +- .../TextItemRendererFactoryForStringVectorData.as | 4 +++- .../apache/royale/html/supportClasses/DataGroup.as | 19 +++++++++++-------- .../supportClasses/TreeGridControlItemRenderer.as | 4 ++-- .../royale/charts/beads/ChartItemRendererFactory.as | 2 +- .../DataItemRendererFactoryForSeriesArrayListData.as | 10 +++++++++- .../beads/DataItemRendererFactoryForSeriesData.as | 2 +- .../royale/charts/optimized/SVGChartDataGroup.as | 4 ++-- .../org/apache/royale/core/IItemRendererParent.as | 2 +- .../main/royale/org/apache/royale/mdl/DropDownList.as | 4 ++-- .../TabsDataItemRendererFactoryForArrayListData.as | 14 ++++++++++---- .../mdl/beads/TabsItemRendererFactoryForArrayData.as | 11 +++++++++-- 17 files changed, 65 insertions(+), 42 deletions(-) diff --git a/examples/royale/ListExample/src/main/royale/simple/IRFactoryForArrayData.as b/examples/royale/ListExample/src/main/royale/simple/IRFactoryForArrayData.as index 1b34829..f5418eb 100644 --- a/examples/royale/ListExample/src/main/royale/simple/IRFactoryForArrayData.as +++ b/examples/royale/ListExample/src/main/royale/simple/IRFactoryForArrayData.as @@ -155,7 +155,7 @@ package simple for (var i:int = 0; i < n; i++) { var ir:ISelectableItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer; - dataGroup.addItemRenderer(ir); + dataGroup.addItemRenderer(ir, false); ir.index = i; ir.labelField = list.labelField; if (presentationModel) { diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/DataContainerBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/DataContainerBase.as index af014c1..b2281e2 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/DataContainerBase.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/DataContainerBase.as @@ -172,14 +172,10 @@ package org.apache.royale.core * @playerversion AIR 2.6 * @productversion Royale 0.8 */ - public function addItemRenderer(renderer:IItemRenderer):void + public function addItemRenderer(renderer:IItemRenderer, dispatchAdded:Boolean):void { - addElement(renderer, true); - - var newEvent:ItemAddedEvent = new ItemAddedEvent("itemAdded"); - newEvent.item = renderer; - - dispatchEvent(newEvent); + addElement(renderer, dispatchAdded); + dispatchItemAdded(renderer); } /** @@ -194,13 +190,16 @@ package org.apache.royale.core public function addItemRendererAt(renderer:IItemRenderer, index:int):void { addElementAt(renderer, index, true); - + dispatchItemAdded(renderer); + } + + private function dispatchItemAdded(renderer:IItemRenderer):void + { var newEvent:ItemAddedEvent = new ItemAddedEvent("itemAdded"); newEvent.item = renderer; dispatchEvent(newEvent); } - /** * @copy org.apache.royale.core.IItemRendererParent#removeItemRenderer() * @private diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as index 6ae7281..dc1f1c4 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as @@ -184,7 +184,7 @@ package org.apache.royale.html.beads var ir:ISelectableItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer; var dataItemRenderer:DataItemRenderer = ir as DataItemRenderer; - dataGroup.addItemRenderer(ir); + dataGroup.addItemRenderer(ir, false); ir.index = i; ir.labelField = labelField; if (dataItemRenderer) diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as index 3060417..a24ede7 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as @@ -167,7 +167,7 @@ package org.apache.royale.html.beads var ir:ISelectableItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer; var dataItemRenderer:DataItemRenderer = ir as DataItemRenderer; - dataGroup.addItemRenderer(ir); + dataGroup.addItemRenderer(ir, false); if (presentationModel) { var style:SimpleCSSStyles = new SimpleCSSStyles(); style.marginBottom = presentationModel.separatorThickness; @@ -176,15 +176,13 @@ package org.apache.royale.html.beads UIBase(ir).percentWidth = 100; } - var data:Object = dp.getItemAt(i); - ir.index = i; ir.labelField = labelField; if (dataItemRenderer) { dataItemRenderer.dataField = dataField; } - setData(ir, data, i); + setData(ir, dp.getItemAt(i), i); var newEvent:ItemRendererEvent = new ItemRendererEvent(ItemRendererEvent.CREATED); newEvent.itemRenderer = ir; diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForColumnData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForColumnData.as index 8a0e169..3212bbf 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForColumnData.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForColumnData.as @@ -143,7 +143,7 @@ package org.apache.royale.html.beads for (var i:int = 0; i < n; i++) { var tf:DataItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as DataItemRenderer; - dataGroup.addItemRenderer(tf); + dataGroup.addItemRenderer(tf, false); tf.index = i; tf.labelField = view.column.dataField; tf.data = dp[i]; diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as index 9ab6424..1e3536d 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as @@ -155,7 +155,7 @@ package org.apache.royale.html.beads { var tf:ITextItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITextItemRenderer; tf.index = i; - dataGroup.addItemRenderer(tf); + dataGroup.addItemRenderer(tf, false); if (selectionModel.labelField) { tf.labelField = selectionModel.labelField; } diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as index 48e1b48..eceb5f3 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as @@ -145,7 +145,9 @@ package org.apache.royale.html.beads { var tf:ITextItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITextItemRenderer; tf.index = i; - dataGroup.addItemRenderer(tf); + //TODO There is no itemsCreated event being dispatched once all the item renderers are added. + // Not sure why, but that would require dispatching events as they are added. This should probably be fixed. + dataGroup.addItemRenderer(tf, true); tf.text = dp[i]; var newEvent:ItemRendererEvent = new ItemRendererEvent(ItemRendererEvent.CREATED); diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DataGroup.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DataGroup.as index 5c60482..c0f44bc 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DataGroup.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DataGroup.as @@ -69,14 +69,10 @@ package org.apache.royale.html.supportClasses * @playerversion AIR 2.6 * @productversion Royale 0.8 */ - public function addItemRenderer(renderer:IItemRenderer):void + public function addItemRenderer(renderer:IItemRenderer, dispatchAdded:Boolean):void { - addElement(renderer, true); - - var newEvent:ItemAddedEvent = new ItemAddedEvent("itemAdded"); - newEvent.item = renderer; - - (host as IEventDispatcher).dispatchEvent(newEvent); + addElement(renderer, dispatchAdded); + dispatchItemAdded(renderer); } /** @@ -91,7 +87,14 @@ package org.apache.royale.html.supportClasses public function addItemRendererAt(renderer:IItemRenderer, index:int):void { addElementAt(renderer, index, true); - + dispatchItemAdded(renderer); + } + + /** + * @royaleignorecoercion org.apache.royale.events.IEventDispatcher + */ + private function dispatchItemAdded(renderer:IItemRenderer):void + { var newEvent:ItemAddedEvent = new ItemAddedEvent("itemAdded"); newEvent.item = renderer; diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TreeGridControlItemRenderer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TreeGridControlItemRenderer.as index b18ee9a..513801d 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TreeGridControlItemRenderer.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TreeGridControlItemRenderer.as @@ -75,9 +75,9 @@ package org.apache.royale.html.supportClasses // IItemRendererParent implementation - public function addItemRenderer(renderer:IItemRenderer):void + public function addItemRenderer(renderer:IItemRenderer, dispatchAdded:Boolean):void { - this.addElement(renderer); + this.addElement(renderer, dispatchAdded); } public function addItemRendererAt(renderer:IItemRenderer, index:int):void diff --git a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/ChartItemRendererFactory.as b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/ChartItemRendererFactory.as index ae3ec68..02b818f 100644 --- a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/ChartItemRendererFactory.as +++ b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/ChartItemRendererFactory.as @@ -135,7 +135,7 @@ package org.apache.royale.charts.beads renderers.push(k); - dataGroup.addItemRenderer(k); + dataGroup.addItemRenderer(k, false); } _seriesRenderers.push(renderers); diff --git a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/DataItemRendererFactoryForSeriesArrayListData.as b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/DataItemRendererFactoryForSeriesArrayListData.as index c7a8269..084461b 100644 --- a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/DataItemRendererFactoryForSeriesArrayListData.as +++ b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/DataItemRendererFactoryForSeriesArrayListData.as @@ -97,6 +97,13 @@ package org.apache.royale.charts.beads /** * @private + * @royaleignorecoercion org.apache.royale.core.ISelectionModel + * @royaleignorecoercion org.apache.royale.html.beads.IListView + * @royaleignorecoercion org.apache.royale.events.IEventDispatcher + * @royaleignorecoercion org.apache.royale.charts.core.IChartDataGroup + * @royaleignorecoercion org.apache.royale.charts.core.IChartItemRenderer + * @royaleignorecoercion org.apache.royale.charts.core.IChartSeries + * @royaleemitcoercion org.apache.royale.collections.ArrayList */ private function dataProviderChangeHandler(event:Event):void { @@ -122,7 +129,7 @@ package org.apache.royale.charts.beads if (chartSeries.itemRenderer) { var ir:IChartItemRenderer = chartSeries.itemRenderer.newInstance() as IChartItemRenderer; - dataGroup.addItemRenderer(ir); + dataGroup.addItemRenderer(ir, false); ir.itemRendererParent = dataGroup; ir.index = i; ir.data = dp.getItemAt(i) @@ -133,6 +140,7 @@ package org.apache.royale.charts.beads } IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated")); + //TODO (Harbs) I think layoutNeeded is always dispatched when itemsCreated is handled. IEventDispatcher(_strand).dispatchEvent(new Event("layoutNeeded")); } } diff --git a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/DataItemRendererFactoryForSeriesData.as b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/DataItemRendererFactoryForSeriesData.as index 51b8c8c..4c61e52 100644 --- a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/DataItemRendererFactoryForSeriesData.as +++ b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/beads/DataItemRendererFactoryForSeriesData.as @@ -116,7 +116,7 @@ package org.apache.royale.charts.beads if (chartSeries.itemRenderer) { var ir:IChartItemRenderer = chartSeries.itemRenderer.newInstance() as IChartItemRenderer; - dataGroup.addItemRenderer(ir); + dataGroup.addItemRenderer(ir, false); ir.itemRendererParent = dataGroup; ir.index = i; ir.data = dp[i]; diff --git a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/optimized/SVGChartDataGroup.as b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/optimized/SVGChartDataGroup.as index 93d564f..a68db5d 100644 --- a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/optimized/SVGChartDataGroup.as +++ b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/optimized/SVGChartDataGroup.as @@ -143,14 +143,14 @@ package org.apache.royale.charts.optimized * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - public function addItemRenderer(value:IItemRenderer):void + public function addItemRenderer(value:IItemRenderer, dispatchAdded:Boolean):void { _children.push(value); var base:UIBase = value as UIBase; base.addedToParent(); - super.addElement(value, true); + super.addElement(value, dispatchAdded); } /** diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IItemRendererParent.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IItemRendererParent.as index d7cd5cc..96d7c81 100644 --- a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IItemRendererParent.as +++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IItemRendererParent.as @@ -45,7 +45,7 @@ package org.apache.royale.core * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - function addItemRenderer(renderer:IItemRenderer):void; + function addItemRenderer(renderer:IItemRenderer, dispatchAdded:Boolean):void; function addItemRendererAt(renderer:IItemRenderer, index:int):void; function removeItemRenderer(renderer:IItemRenderer):void; function getItemRendererForIndex(index:int):IItemRenderer; diff --git a/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/DropDownList.as b/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/DropDownList.as index a4d3369..89a68f7 100644 --- a/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/DropDownList.as +++ b/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/DropDownList.as @@ -185,11 +185,11 @@ package org.apache.royale.mdl } } - override public function addItemRenderer(renderer:IItemRenderer):void + override public function addItemRenderer(renderer:IItemRenderer, dispatchAdded:Boolean):void { COMPILE::JS { - dropDown.addElement(renderer); + dropDown.addElement(renderer, dispatchAdded); } var newEvent:ItemAddedEvent = new ItemAddedEvent("itemAdded"); diff --git a/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/beads/TabsDataItemRendererFactoryForArrayListData.as b/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/beads/TabsDataItemRendererFactoryForArrayListData.as index 4c9a3ad..c6b55ed 100644 --- a/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/beads/TabsDataItemRendererFactoryForArrayListData.as +++ b/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/beads/TabsDataItemRendererFactoryForArrayListData.as @@ -67,6 +67,14 @@ package org.apache.royale.mdl.beads super.initComplete(event); } + /** + * @royaleignorecoercion org.apache.royale.core.UIBase + * @royaleignorecoercion org.apache.royale.core.IList + * @royaleignorecoercion org.apache.royale.core.IListPresentationModel + * @royaleignorecoercion org.apache.royale.events.IEventDispatcher + * @royaleignorecoercion org.apache.royale.html.supportClasses.DataItemRenderer + * @royaleignorecoercion org.apache.royale.mdl.supportClasses.ITabItemRenderer + */ override protected function dataProviderChangeHandler(event:Event):void { var dp:IArrayList = dataProviderModel.dataProvider as IArrayList; @@ -87,7 +95,7 @@ package org.apache.royale.mdl.beads ir.tabIdField = tabsIdField; var dataItemRenderer:DataItemRenderer = ir as DataItemRenderer; - dataGroup.addItemRenderer(ir); + dataGroup.addItemRenderer(ir, false); if (presentationModel) { var style:SimpleCSSStyles = new SimpleCSSStyles(); @@ -97,15 +105,13 @@ package org.apache.royale.mdl.beads UIBase(ir).percentWidth = 100; } - var data:Object = dp.getItemAt(i); - ir.index = i; ir.labelField = labelField; if (dataItemRenderer) { dataItemRenderer.dataField = dataField; } - setData(ir, data, i); + setData(ir, dp.getItemAt(i), i); } IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated")); diff --git a/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/beads/TabsItemRendererFactoryForArrayData.as b/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/beads/TabsItemRendererFactoryForArrayData.as index c1cee24..1c4265c 100644 --- a/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/beads/TabsItemRendererFactoryForArrayData.as +++ b/frameworks/projects/MaterialDesignLite/src/main/royale/org/apache/royale/mdl/beads/TabsItemRendererFactoryForArrayData.as @@ -137,10 +137,17 @@ package org.apache.royale.mdl.beads */ protected var dataGroup:IItemRendererParent; + /** + * @royaleignorecoercion Array + * @royaleignorecoercion org.apache.royale.core.UIBase + * @royaleignorecoercion org.apache.royale.core.IListPresentationModel + * @royaleignorecoercion org.apache.royale.events.IEventDispatcher + * @royaleignorecoercion org.apache.royale.mdl.supportClasses.ITabItemRenderer + */ protected function dataProviderChangeHandler(event:Event):void { var dp:Array = dataProviderModel.dataProvider as Array; - if (!dp) + if (!(dp is Array)) { return; } @@ -153,7 +160,7 @@ package org.apache.royale.mdl.beads for (var i:int = 0; i < n; i++) { var ir:ITabItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ITabItemRenderer; - dataGroup.addItemRenderer(ir); + dataGroup.addItemRenderer(ir, false); ir.index = i; ir.labelField = labelField; ir.tabIdField = tabsIdField; -- To stop receiving notification emails like this one, please contact ha...@apache.org.