This is an automated email from the ASF dual-hosted git repository.
pent 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 b59766e Added new DynamicRemoveItemRendererForArrayListData to
complement DynamicItemsRendererFactoryForArrayListData that will dynamically
remove items whenever the ArrayList dataProvider has items removed. The
hierarchical data item renderer factory changes to use the dynamic item
renderer factory to facilitate the open of nodes. ArrayList now includes the
index of the item being added, removed, or changed into the CollectionEvent
which has the index added as a new property.
b59766e is described below
commit b59766e2f17403574d3421ce8077fd9a4ba27c21
Author: Peter Ent <[email protected]>
AuthorDate: Fri Dec 8 09:48:59 2017 -0500
Added new DynamicRemoveItemRendererForArrayListData to complement
DynamicItemsRendererFactoryForArrayListData that will dynamically remove items
whenever the ArrayList dataProvider has items removed. The hierarchical data
item renderer factory changes to use the dynamic item renderer factory to
facilitate the open of nodes. ArrayList now includes the index of the item
being added, removed, or changed into the CollectionEvent which has the index
added as a new property.
---
.../Basic/src/main/resources/basic-manifest.xml | 1 +
.../projects/Basic/src/main/royale/BasicClasses.as | 13 +-
.../org/apache/royale/core/DataContainerBase.as | 19 +++
.../DataItemRendererFactoryForHierarchicalData.as | 8 +-
.../DynamicItemsRendererFactoryForArrayListData.as | 70 ++++++++---
.../DynamicRemoveItemRendererForArrayListData.as | 136 +++++++++++++++++++++
.../apache/royale/html/supportClasses/DataGroup.as | 19 +++
.../royale/charts/optimized/SVGChartDataGroup.as | 20 ++-
.../org/apache/royale/collections/ArrayList.as | 5 +
.../org/apache/royale/core/IItemRendererParent.as | 1 +
.../org/apache/royale/events/CollectionEvent.as | 12 +-
11 files changed, 267 insertions(+), 37 deletions(-)
diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
index 312b17d..4e5b9ad 100644
--- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
@@ -149,6 +149,7 @@
<component id="DataItemRendererFactoryForArrayData"
class="org.apache.royale.html.beads.DataItemRendererFactoryForArrayData" />
<component id="DataItemRendererFactoryForArrayList"
class="org.apache.royale.html.beads.DataItemRendererFactoryForArrayList" />
<component id="DynamicItemsRendererFactoryForArrayListData"
class="org.apache.royale.html.beads.DynamicItemsRendererFactoryForArrayListData"
/>
+ <component id="DynamicRemoveItemRendererForArrayListData"
class="org.apache.royale.html.beads.DynamicRemoveItemRendererForArrayListData"
/>
<component id="DataItemRendererFactoryForHierarchicalData"
class="org.apache.royale.html.beads.DataItemRendererFactoryForHierarchicalData"
/>
<component id="TextItemRendererFactoryForArrayData"
class="org.apache.royale.html.beads.TextItemRendererFactoryForArrayData" />
<component id="TextItemRendererFactoryForStringVectorData"
class="org.apache.royale.html.beads.TextItemRendererFactoryForStringVectorData"
/>
diff --git a/frameworks/projects/Basic/src/main/royale/BasicClasses.as
b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
index b67b03a..39c2538 100644
--- a/frameworks/projects/Basic/src/main/royale/BasicClasses.as
+++ b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
@@ -152,7 +152,7 @@ internal class BasicClasses
import org.apache.royale.html.beads.layouts.RemovableBasicLayout;
RemovableBasicLayout;
import
org.apache.royale.html.beads.layouts.OneFlexibleChildHorizontalLayout;
OneFlexibleChildHorizontalLayout;
import
org.apache.royale.html.beads.layouts.OneFlexibleChildVerticalLayout;
OneFlexibleChildVerticalLayout;
-
+
COMPILE::SWF
{
import org.apache.royale.html.beads.layouts.HScrollBarLayout;
HScrollBarLayout;
@@ -163,6 +163,7 @@ internal class BasicClasses
import org.apache.royale.html.beads.TextItemRendererFactoryForArrayData;
TextItemRendererFactoryForArrayData;
import
org.apache.royale.html.beads.DataItemRendererFactoryForArrayData;
DataItemRendererFactoryForArrayData;
import
org.apache.royale.html.beads.DynamicItemsRendererFactoryForArrayListData;
DynamicItemsRendererFactoryForArrayListData;
+ import
org.apache.royale.html.beads.DynamicRemoveItemRendererForArrayListData;
DynamicRemoveItemRendererForArrayListData;
import
org.apache.royale.html.beads.DataItemRendererFactoryForArrayList;
DataItemRendererFactoryForArrayList;
import
org.apache.royale.html.beads.DataItemRendererFactoryForHierarchicalData;
DataItemRendererFactoryForHierarchicalData;
import org.apache.royale.html.supportClasses.DataGroup; DataGroup;
@@ -200,7 +201,7 @@ internal class BasicClasses
import org.apache.royale.html.beads.WebBrowserView; WebBrowserView;
import org.apache.royale.html.beads.models.WebBrowserModel;
WebBrowserModel;
-
+
import org.apache.royale.core.ListBase; ListBase;
import org.apache.royale.core.Lookalike; Lookalike;
import org.apache.royale.core.FilledRectangle; FilledRectangle;
@@ -212,7 +213,7 @@ internal class BasicClasses
import org.apache.royale.core.SimpleApplication; SimpleApplication;
import org.apache.royale.svg.GraphicContainer; GraphicContainer;
import org.apache.royale.svg.DOMWrapper; DOMWrapper;
-
+
import org.apache.royale.svg.GraphicShape; GraphicShape;
import org.apache.royale.svg.Rect; Rect;
import org.apache.royale.svg.Ellipse; Ellipse;
@@ -233,9 +234,9 @@ internal class BasicClasses
import org.apache.royale.html.beads.VRuleView; VRuleView;
import org.apache.royale.html.beads.MultilineTextFieldView;
MultilineTextFieldView;
}
-
+
import org.apache.royale.html.SubAppLoader; SubAppLoader;
-
+
import org.apache.royale.html.Table; Table;
import org.apache.royale.html.TableRow; TableRow;
import org.apache.royale.html.TableCell; TableCell;
@@ -244,7 +245,7 @@ internal class BasicClasses
import org.apache.royale.html.beads.layouts.SimpleTableLayout;
SimpleTableLayout;
import org.apache.royale.html.beads.layouts.TableCellLayout;
TableCellLayout;
import org.apache.royale.html.beads.layouts.TableHeaderLayout;
TableHeaderLayout;
-
+
import org.apache.royale.css2.Cursors; Cursors;
COMPILE::SWF
{
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 2695971..b3e2464 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
@@ -194,6 +194,25 @@ package org.apache.royale.core
}
/**
+ * @copy
org.apache.royale.core.IItemRendererParent#addItemRendererAt()
+ * @private
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9
+ */
+ public function addItemRendererAt(renderer:IItemRenderer,
index:int):void
+ {
+ addElementAt(renderer, index, true);
+
+ 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/DataItemRendererFactoryForHierarchicalData.as
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForHierarchicalData.as
index 759025e..f55ab99 100644
---
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForHierarchicalData.as
+++
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForHierarchicalData.as
@@ -18,13 +18,14 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.html.beads
{
+ import org.apache.royale.collections.FlattenedList;
import org.apache.royale.core.IBead;
import org.apache.royale.core.IDataProviderItemRendererMapper;
+ import org.apache.royale.core.IDataProviderModel;
import org.apache.royale.core.IItemRendererClassFactory;
import org.apache.royale.core.IItemRendererParent;
import org.apache.royale.core.IListPresentationModel;
import org.apache.royale.core.ISelectableItemRenderer;
- import org.apache.royale.core.IDataProviderModel;
import org.apache.royale.core.IStrand;
import org.apache.royale.core.IUIBase;
import org.apache.royale.core.SimpleCSSStyles;
@@ -32,11 +33,10 @@ package org.apache.royale.html.beads
import org.apache.royale.core.ValuesManager;
import org.apache.royale.events.Event;
import org.apache.royale.events.EventDispatcher;
- import org.apache.royale.events.ItemRendererEvent;
import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.events.ItemRendererEvent;
import org.apache.royale.html.List;
import org.apache.royale.html.supportClasses.TreeListData;
- import org.apache.royale.collections.FlattenedList;
[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
@@ -52,7 +52,7 @@ package org.apache.royale.html.beads
* @playerversion AIR 2.6
* @productversion Royale 0.0
*/
- public class DataItemRendererFactoryForHierarchicalData extends
DataItemRendererFactoryForArrayList
+ public class DataItemRendererFactoryForHierarchicalData extends
DynamicItemsRendererFactoryForArrayListData
{
/**
* Constructor.
diff --git
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
index 97c9456..43bc59f 100644
---
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
+++
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
@@ -21,22 +21,22 @@ package org.apache.royale.html.beads
import org.apache.royale.collections.IArrayList;
import org.apache.royale.core.IBead;
import org.apache.royale.core.IDataProviderItemRendererMapper;
+ import org.apache.royale.core.IDataProviderModel;
import org.apache.royale.core.IItemRendererClassFactory;
import org.apache.royale.core.IItemRendererParent;
import org.apache.royale.core.IListPresentationModel;
+ import org.apache.royale.core.ISelectableItemRenderer;
+ import org.apache.royale.core.ISelectionModel;
import org.apache.royale.core.IStrand;
import org.apache.royale.core.SimpleCSSStyles;
import org.apache.royale.core.UIBase;
import org.apache.royale.core.ValuesManager;
import org.apache.royale.events.CollectionEvent;
-
+ import org.apache.royale.events.Event;
import org.apache.royale.events.EventDispatcher;
import org.apache.royale.events.IEventDispatcher;
import org.apache.royale.html.beads.IListView;
- import org.apache.royale.events.Event;
- import org.apache.royale.core.ISelectableItemRenderer;
- import org.apache.royale.core.ISelectionModel;
- import org.apache.royale.utils.loadBeadFromValuesManager;
+ import org.apache.royale.utils.loadBeadFromValuesManager;
[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
@@ -57,8 +57,6 @@ package org.apache.royale.html.beads
super(target);
}
- protected var dataProviderModel:ISelectionModel;
-
protected var labelField:String;
protected var _strand:IStrand;
@@ -89,19 +87,37 @@ package org.apache.royale.html.beads
{
IEventDispatcher(_strand).removeEventListener("initComplete",
initComplete);
- dataProviderModel = _strand.getBeadByType(ISelectionModel) as
ISelectionModel;
+ _dataProviderModel =
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
var listView:IListView = _strand.getBeadByType(IListView) as
IListView;
dataGroup = listView.dataGroup;
dataProviderModel.addEventListener("dataProviderChanged",
dataProviderChangeHandler);
- dataProviderModel.addEventListener(CollectionEvent.ITEM_ADDED,
itemAddedHandler);
+
+ // also listen for individual items being added to the
dataProvider itself.
+ var dataProvider:IEventDispatcher =
dataProviderModel.dataProvider as IEventDispatcher;
+ dataProvider.addEventListener(CollectionEvent.ITEM_ADDED,
itemAddedHandler);
labelField = dataProviderModel.labelField;
dataProviderChangeHandler(null);
}
+
+ protected var _dataProviderModel:ISelectionModel;
+
+ /**
+ * The model holding the dataProvider.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9
+ */
+ public function get dataProviderModel():IDataProviderModel
+ {
+ return _dataProviderModel;
+ }
private var _itemRendererFactory:IItemRendererClassFactory;
-
+
/**
* The org.apache.royale.core.IItemRendererClassFactory used
* to generate instances of item renderers.
@@ -138,6 +154,9 @@ package org.apache.royale.html.beads
*/
protected var dataGroup:IItemRendererParent;
+ /**
+ * @private
+ */
protected function dataProviderChangeHandler(event:Event):void
{
var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
@@ -159,28 +178,39 @@ package org.apache.royale.html.beads
IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
}
+ /**
+ * @private
+ */
protected function itemAddedHandler(event:CollectionEvent):void
{
var dp:IArrayList = dataProviderModel.dataProvider as IArrayList;
if (!dp)
return;
+
+ if (dataProviderModel is ISelectionModel) {
+ var model:ISelectionModel = dataProviderModel
as ISelectionModel;
+ model.selectedIndex = -1;
+ }
var presentationModel:IListPresentationModel =
_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
var ir:ISelectableItemRenderer =
itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
- fillRenderer(dp.length - 1, event.item, ir, presentationModel);
+ fillRenderer(event.index, event.item, ir, presentationModel);
- IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+ (_strand as IEventDispatcher).dispatchEvent(new
Event("itemsCreated"));
+ (_strand as IEventDispatcher).dispatchEvent(new
Event("layoutNeeded"));
}
+ /**
+ * @private
+ */
protected function fillRenderer(index:int,
item:Object,
itemRenderer:ISelectableItemRenderer,
presentationModel:IListPresentationModel):void
{
- dataGroup.addItemRenderer(itemRenderer);
+ dataGroup.addItemRendererAt(itemRenderer, index);
- itemRenderer.index = index;
itemRenderer.labelField = labelField;
if (presentationModel) {
@@ -190,7 +220,17 @@ package org.apache.royale.html.beads
UIBase(itemRenderer).height = presentationModel.rowHeight;
UIBase(itemRenderer).percentWidth = 100;
}
- itemRenderer.data = item;
+
+ setData(itemRenderer, item, index);
}
+
+ /**
+ * @private
+ */
+ protected function
setData(itemRenderer:ISelectableItemRenderer, data:Object, index:int):void
+ {
+ itemRenderer.index = index;
+ itemRenderer.data = data;
+ }
}
}
diff --git
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
new file mode 100644
index 0000000..e3c3d28
--- /dev/null
+++
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
@@ -0,0 +1,136 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.royale.html.beads
+{
+ import org.apache.royale.core.IBead;
+ import org.apache.royale.core.IDataProviderModel;
+ import org.apache.royale.core.IItemRendererParent;
+ import org.apache.royale.core.IList;
+ import org.apache.royale.core.ISelectableItemRenderer;
+ import org.apache.royale.core.ISelectionModel;
+ import org.apache.royale.core.IStrand;
+ import org.apache.royale.core.UIBase;
+ import org.apache.royale.events.CollectionEvent;
+ import org.apache.royale.events.Event;
+ import org.apache.royale.events.IEventDispatcher;
+
+ /**
+ * Handles the removal of an itemRenderer once the corresponding datum
has been removed
+ * from the IDataProviderModel.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.0
+ */
+ public class DynamicRemoveItemRendererForArrayListData implements IBead
+ {
+ /**
+ * Constructor
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.0
+ */
+ public function DynamicRemoveItemRendererForArrayListData()
+ {
+ }
+
+ private var _strand:IStrand;
+
+ /**
+ * @copy org.apache.royale.core.IStrand
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.0
+ */
+ public function set strand(value:IStrand):void
+ {
+ _strand = value;
+
+ var dataProvider:IEventDispatcher =
dataProviderModel.dataProvider as IEventDispatcher;
+ if (dataProvider) {
+ dataProvider.addEventListener("itemRemoved",
handleItemRemoved);
+ }
+ }
+
+ /**
+ * Handles the itemRemoved event by removing the item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.0
+ */
+ protected function handleItemRemoved(event:CollectionEvent):void
+ {
+ if (dataProviderModel is ISelectionModel) {
+ var model:ISelectionModel = dataProviderModel
as ISelectionModel;
+ model.selectedIndex = -1;
+ }
+ var parent:UIBase = itemRendererParent as UIBase;
+ var ir:ISelectableItemRenderer =
parent.getElementAt(event.index) as ISelectableItemRenderer;
+ itemRendererParent.removeItemRenderer(ir);
+
+ (_strand as IEventDispatcher).dispatchEvent(new
Event("layoutNeeded"));
+ }
+
+ private var _dataProviderModel: IDataProviderModel;
+
+ /**
+ * The org.apache.royale.core.IDataProviderModel that contains
the
+ * data source.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.0
+ */
+ public function get dataProviderModel(): IDataProviderModel
+ {
+ if (_dataProviderModel == null) {
+ _dataProviderModel =
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+ }
+ return _dataProviderModel;
+ }
+
+ private var _itemRendererParent: IItemRendererParent;
+
+ /**
+ * The org.apache.royale.core.IItemRendererParent used
+ * to generate instances of item renderers.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.0
+ */
+ public function get itemRendererParent():IItemRendererParent
+ {
+ if (_itemRendererParent == null) {
+ var list:IList = _strand as IList;
+ _itemRendererParent = list.dataGroup;
+ }
+ return _itemRendererParent;
+ }
+ }
+}
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 5c888c9..5c60482 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
@@ -80,6 +80,25 @@ package org.apache.royale.html.supportClasses
}
/**
+ * @copy
org.apache.royale.core.IItemRendererParent#addItemRendererAt()
+ * @private
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9
+ */
+ public function addItemRendererAt(renderer:IItemRenderer,
index:int):void
+ {
+ addElementAt(renderer, index, true);
+
+ var newEvent:ItemAddedEvent = new
ItemAddedEvent("itemAdded");
+ newEvent.item = renderer;
+
+ (host as IEventDispatcher).dispatchEvent(newEvent);
+ }
+
+ /**
* @copy
org.apache.royale.core.IItemRendererParent#removeItemRenderer()
* @private
*
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 13a9e11..93d564f 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
@@ -21,18 +21,16 @@ package org.apache.royale.charts.optimized
import org.apache.royale.charts.core.IChartDataGroup;
import org.apache.royale.charts.core.IChartItemRenderer;
import org.apache.royale.charts.core.IChartSeries;
- import org.apache.royale.core.IChild;
+ import org.apache.royale.core.IChild;
import org.apache.royale.core.IContentView;
import org.apache.royale.core.IItemRenderer;
import org.apache.royale.core.IItemRendererParent;
import org.apache.royale.core.IStrand;
import org.apache.royale.core.UIBase;
- import org.apache.royale.svg.CompoundGraphic;
import org.apache.royale.events.Event;
import org.apache.royale.geom.Point;
- import org.apache.royale.core.IItemRenderer;
- import org.apache.royale.core.IChild;
import org.apache.royale.html.supportClasses.DataItemRenderer;
+ import org.apache.royale.svg.CompoundGraphic;
/**
* The SVGChartDataGroup serves as the drawing canvas for SVG
itemRenderers. Rather than having
@@ -157,22 +155,22 @@ package org.apache.royale.charts.optimized
/**
* Overrides the addElementAt function to set the element into
an internal
- * list.
+ * list at a specific location.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
- * @productversion Royale 0.0
+ * @productversion Royale 0.9
*/
- public function addItemRendererAt(value:IChild, index:int,
dispatchEvent:Boolean = true):void
+ public function addItemRendererAt(renderer:IItemRenderer,
index:int):void
{
- if (index >= _children.length) _children.push(value);
- else _children.splice(index, 0, value);
+ if (index >= _children.length) _children.push(renderer);
+ else _children.splice(index, 0, renderer);
- var base:UIBase = value as UIBase;
+ var base:UIBase = renderer as UIBase;
base.addedToParent();
- super.addElementAt(value, index, dispatchEvent);
+ super.addElementAt(renderer, index, true);
}
/**
diff --git
a/frameworks/projects/Collections/src/main/royale/org/apache/royale/collections/ArrayList.as
b/frameworks/projects/Collections/src/main/royale/org/apache/royale/collections/ArrayList.as
index 7b27bc5..b7f1b98 100644
---
a/frameworks/projects/Collections/src/main/royale/org/apache/royale/collections/ArrayList.as
+++
b/frameworks/projects/Collections/src/main/royale/org/apache/royale/collections/ArrayList.as
@@ -255,6 +255,7 @@ package org.apache.royale.collections
var collectionEvent:CollectionEvent = new
CollectionEvent(CollectionEvent.ITEM_ADDED);
collectionEvent.item = item;
+ collectionEvent.index = index;
dispatchEvent(collectionEvent);
}
@@ -278,6 +279,7 @@ package org.apache.royale.collections
var collectionEvent:CollectionEvent = new
CollectionEvent(CollectionEvent.ITEM_UPDATED);
collectionEvent.item = item;
+ collectionEvent.index = index;
dispatchEvent(collectionEvent);
}
else {
@@ -338,6 +340,7 @@ package org.apache.royale.collections
var collectionEvent:CollectionEvent = new
CollectionEvent(CollectionEvent.ITEM_REMOVED);
collectionEvent.item = removed;
+ collectionEvent.index = index;
dispatchEvent(collectionEvent);
return removed;
@@ -376,6 +379,7 @@ package org.apache.royale.collections
{
var collectionEvent:CollectionEvent = new
CollectionEvent(CollectionEvent.ITEM_UPDATED);
collectionEvent.item = item;
+ collectionEvent.index = index;
dispatchEvent(collectionEvent);
}
}
@@ -392,6 +396,7 @@ package org.apache.royale.collections
{
var collectionEvent:CollectionEvent = new
CollectionEvent(CollectionEvent.ITEM_UPDATED);
collectionEvent.item = getItemAt(index);
+ collectionEvent.index = index;
dispatchEvent(collectionEvent);
}
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 9aa1501..d7cd5cc 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
@@ -46,6 +46,7 @@ package org.apache.royale.core
* @productversion Royale 0.0
*/
function addItemRenderer(renderer:IItemRenderer):void;
+ function addItemRendererAt(renderer:IItemRenderer,
index:int):void;
function removeItemRenderer(renderer:IItemRenderer):void;
function getItemRendererForIndex(index:int):IItemRenderer;
function removeAllItemRenderers():void;
diff --git
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/CollectionEvent.as
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/CollectionEvent.as
index cd19e9d..844fc9d 100644
---
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/CollectionEvent.as
+++
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/CollectionEvent.as
@@ -19,7 +19,6 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.events
{
-
/**
* The CollectionEvent class is used for dispatching an collection
events
*
@@ -55,6 +54,16 @@ package org.apache.royale.events
{
super(type, bubbles, cancelable);
}
+
+ /**
+ * The index of the item added, removed, or changed
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.0
+ */
+ public var index:int;
/**
* The item being removed/added/updated
@@ -81,6 +90,7 @@ package org.apache.royale.events
var collectionEvent:CollectionEvent = new CollectionEvent(type,
bubbles, cancelable);
collectionEvent.item = item;
collectionEvent.items = items;
+ collectionEvent.index = index;
return collectionEvent;
}
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].