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 e8faaac Fixes issue with retaining selection and rollover using the
Dynamic beads for ArrayList.
e8faaac is described below
commit e8faaac460de597cea4c3e119da78e84e0c0f525
Author: Peter Ent <[email protected]>
AuthorDate: Wed Jan 3 17:08:47 2018 -0500
Fixes issue with retaining selection and rollover using the Dynamic beads
for ArrayList.
---
.../DynamicAddItemRendererForArrayListData.as | 24 +++++++++++++---------
.../DynamicItemsRendererFactoryForArrayListData.as | 13 +++++++-----
.../DynamicRemoveItemRendererForArrayListData.as | 12 +++++++----
3 files changed, 30 insertions(+), 19 deletions(-)
diff --git
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
index d5a2185..e8f5ed4 100644
---
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
+++
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
@@ -20,19 +20,19 @@ package org.apache.royale.html.beads
{
import org.apache.royale.core.IBead;
import org.apache.royale.core.IDataProviderModel;
- import org.apache.royale.core.IItemRendererClassFactory;
- import org.apache.royale.core.IItemRendererParent;
+ import org.apache.royale.core.IItemRendererClassFactory;
+ import org.apache.royale.core.IItemRendererParent;
import org.apache.royale.core.IList;
+ 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.events.CollectionEvent;
import org.apache.royale.events.Event;
import org.apache.royale.events.IEventDispatcher;
- import org.apache.royale.core.IListPresentationModel;
- import org.apache.royale.utils.loadBeadFromValuesManager;
- import org.apache.royale.core.SimpleCSSStyles;
+ import org.apache.royale.utils.loadBeadFromValuesManager;
/**
* Handles the adding of an itemRenderer once the corresponding datum
has been added
@@ -119,15 +119,19 @@ package org.apache.royale.html.beads
*/
protected function handleItemAdded(event:CollectionEvent):void
{
- 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(itemRendererParent) as
ISelectableItemRenderer;
fillRenderer(event.index, event.item, ir, presentationModel);
+
+ // update the index values in the itemRenderers to
correspond to their shifted positions.
+ var dataGroup:UIBase = itemRendererParent as UIBase;
+ var n:int = dataGroup.numElements;
+ for (var i:int = event.index; i < n; i++)
+ {
+ ir = dataGroup.getElementAt(i) as
ISelectableItemRenderer;
+ ir.index = i;
+ }
(_strand as IEventDispatcher).dispatchEvent(new
Event("layoutNeeded"));
}
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 acf121c..1e97f4c 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
@@ -184,16 +184,19 @@ package org.apache.royale.html.beads
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(event.index, event.item, ir, presentationModel);
+
+ // update the index values in the itemRenderers to
correspond to their shifted positions.
+ var n:int = dataGroup.numElements;
+ for (var i:int = event.index; i < n; i++)
+ {
+ ir = dataGroup.getElementAt(i) as
ISelectableItemRenderer;
+ ir.index = i;
+ }
(_strand as IEventDispatcher).dispatchEvent(new
Event("itemsCreated"));
(_strand as IEventDispatcher).dispatchEvent(new
Event("layoutNeeded"));
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
index 2894bc3..e3f1a00 100644
---
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
@@ -111,13 +111,17 @@ package org.apache.royale.html.beads
*/
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);
+
+ // adjust the itemRenderers' index to adjust for the
shift
+ var n:int = parent.numElements;
+ for (var i:int = event.index; i < n; i++)
+ {
+ ir = parent.getElementAt(i) as
ISelectableItemRenderer;
+ ir.index = i;
+ }
(_strand as IEventDispatcher).dispatchEvent(new
Event("layoutNeeded"));
}
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].