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]>'].

Reply via email to