This is an automated email from the ASF dual-hosted git repository.

carlosrovira 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 8835228  jewel-arrayselectionmodel: fix update from collection and 
refactor to use refresh() (a.k.a COLLECTION_CHANGE) in DataGridSort. Removed 
"sortChanged" event. Added setDataProvider__NoCheck() to 
IJewelSelectionModel/ArrayListSelectionModel
8835228 is described below

commit 8835228669680482358f8a7c6e40813748862da7
Author: Carlos Rovira <[email protected]>
AuthorDate: Mon Dec 21 22:10:56 2020 +0100

    jewel-arrayselectionmodel: fix update from collection and refactor to use 
refresh() (a.k.a COLLECTION_CHANGE) in DataGridSort. Removed "sortChanged" 
event. Added setDataProvider__NoCheck() to 
IJewelSelectionModel/ArrayListSelectionModel
---
 .../jewel/beads/controls/datagrid/DataGridSort.as  | 34 +++++++++++++++------
 .../jewel/beads/models/ArrayListSelectionModel.as  | 27 +++++++----------
 .../jewel/beads/models/IJewelSelectionModel.as     |  2 ++
 .../royale/jewel/beads/views/DataGridView.as       | 35 ++++++++++++----------
 4 files changed, 58 insertions(+), 40 deletions(-)

diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridSort.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridSort.as
index 1a688f5..1e349ee 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridSort.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datagrid/DataGridSort.as
@@ -21,13 +21,15 @@ package org.apache.royale.jewel.beads.controls.datagrid
        import org.apache.royale.collections.IArrayListView;
        import org.apache.royale.collections.Sort;
        import org.apache.royale.collections.SortField;
-       import org.apache.royale.core.IBead;
        import org.apache.royale.core.IDataGrid;
        import org.apache.royale.core.IDataGridHeader;
+       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.MouseEvent;
+       import org.apache.royale.html.beads.EasyDataProviderChangeNotifier;
        import org.apache.royale.jewel.beads.views.DataGridView;
        import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumn;
 
@@ -42,7 +44,7 @@ package org.apache.royale.jewel.beads.controls.datagrid
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.9.8
         */
-       public class DataGridSort implements IBead
+       public class DataGridSort extends EasyDataProviderChangeNotifier
        {
                public function DataGridSort()
                {
@@ -51,7 +53,7 @@ package org.apache.royale.jewel.beads.controls.datagrid
                
         private var dg:IDataGrid;
         private var header:IDataGridHeader;
-
+               private var dgView:DataGridView;
                private var descending:Boolean;
         
                /**                             
@@ -62,10 +64,12 @@ package org.apache.royale.jewel.beads.controls.datagrid
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.8
                 */
-               public function set strand(value:IStrand):void
+               override public function set strand(value:IStrand):void
                {
+                       super.strand = value;
+
             dg = value as IDataGrid;
-                       var dgView:DataGridView = (dg as UIBase).view as 
DataGridView;
+                       dgView = (dg as UIBase).view as DataGridView;
                        header = dgView.header;
                        header.addEventListener(MouseEvent.CLICK, 
mouseClickHandler, false);
                }
@@ -96,11 +100,23 @@ package org.apache.royale.jewel.beads.controls.datagrid
                                sort.fields = [ sortField ];
                                collection.sort = sort;
 
-                               // force redraw of column headers
                                collection.refresh();
-                               
-                               dg.model.dispatchEvent(new 
Event("sortChanged"));
-                               header.model.dispatchEvent(new 
Event("dataProviderChanged"));
+                               // header.model.dispatchEvent(new 
Event("dataProviderChanged"));
+                       }
+               }
+
+               /**
+                *      @royaleignorecoercion 
org.apache.royale.core.ISelectionModel
+                */
+               override protected function 
handleDataProviderChanges(event:Event):void
+               {
+                       if(event.type == CollectionEvent.COLLECTION_CHANGED)
+                       {
+                               var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+                               selectionModel.dispatchEvent(event.cloneEvent() 
as Event);
+                       } else
+                       {
+                               super.handleDataProviderChanges(event);
                        }
                }
        }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
index 136b534..51e8404 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/ArrayListSelectionModel.as
@@ -166,6 +166,17 @@ package org.apache.royale.jewel.beads.models
                 dispatchChange("selectionChanged");
                        }
         }
+               
+        public function setDataProvider__NoCheck(value:Object):void
+               {
+            const oldIndex:int = _selectedIndex;
+            var itemChanged:Boolean = setDataProvider(value);
+
+            dispatchChange("dataProviderChanged");
+                       if (itemChanged || oldIndex != _selectedIndex) {
+                dispatchChange("selectionChanged");
+                       }
+        }
 
         /**
          *  @private
@@ -201,22 +212,6 @@ package org.apache.royale.jewel.beads.models
             return itemChanged;
                }
 
-        /**
-         *  @private
-         */
-        [Bindable("sortChanged")]
-               public function sortChangedHandler(value:Object):void
-               {
-            const oldIndex:int = _selectedIndex;
-            var itemChanged:Boolean = setDataProvider(value);
-
-            dispatchChange("dataProviderChanged");
-                       if (itemChanged || oldIndex != _selectedIndex) {
-                dispatchChange("selectionChanged");
-                       }
-            dispatchChange("shortChanged");
-        }
-
                protected var _selectedIndex:int = -1;
                private var _rollOverIndex:int = -1;
                private var _labelField:String = null;
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
index cb62093..5729c6b 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/IJewelSelectionModel.as
@@ -38,5 +38,7 @@ package org.apache.royale.jewel.beads.models
         
         function get isItemClicked():Boolean;
         function set isItemClicked(value:Boolean):void;
+
+        function setDataProvider__NoCheck(value:Object):void
     }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
index 1dee93e..1591ec4 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DataGridView.as
@@ -31,9 +31,9 @@ package org.apache.royale.jewel.beads.views
        import org.apache.royale.core.IItemRendererProvider;
        import org.apache.royale.core.IParent;
        import org.apache.royale.core.IStrand;
-       import org.apache.royale.core.IStrandWithModel;
        import org.apache.royale.core.IUIBase;
        import org.apache.royale.core.StyledUIBase;
+       import org.apache.royale.core.UIBase;
        import org.apache.royale.core.ValuesManager;
        import org.apache.royale.events.CollectionEvent;
        import org.apache.royale.events.Event;
@@ -42,6 +42,7 @@ package org.apache.royale.jewel.beads.views
        import org.apache.royale.html.beads.IDataGridView;
        import org.apache.royale.html.beads.LabelFunction;
        import 
org.apache.royale.jewel.beads.models.DataGridColumnListPresentationModel;
+       import org.apache.royale.jewel.beads.models.IJewelSelectionModel;
        import org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumn;
        import 
org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList;
        import 
org.apache.royale.jewel.supportClasses.datagrid.IDataGridPresentationModel;
@@ -95,7 +96,6 @@ package org.apache.royale.jewel.beads.views
             // see if there is a presentation model already in place. if not, 
add one.
             sharedModel = _dg.model as IDataGridModel;
             
IEventDispatcher(sharedModel).addEventListener("dataProviderChanged", 
handleDataProviderChanged);
-            IEventDispatcher(sharedModel).addEventListener("sortChanged", 
handleSortChanged);
             
IEventDispatcher(sharedModel).addEventListener("selectedIndexChanged", 
handleSelectedIndexChanged);
 
             listenOnStrand("initComplete", initCompleteHandler);
@@ -338,16 +338,20 @@ package org.apache.royale.jewel.beads.views
             if(dp)
                        {
                                
dp.removeEventListener(CollectionEvent.ITEM_ADDED, handleItemAddedAndRemoved);
+                               
dp.removeEventListener(CollectionEvent.ITEM_UPDATED, handleItemAddedAndRemoved);
                                
dp.removeEventListener(CollectionEvent.ITEM_REMOVED, handleItemAddedAndRemoved);
                                
dp.removeEventListener(CollectionEvent.ALL_ITEMS_REMOVED, 
handleItemAddedAndRemoved);
+                               
dp.removeEventListener(CollectionEvent.COLLECTION_CHANGED, 
handleCollectionChanged);
                        }
                        dp = sharedModel.dataProvider as IEventDispatcher;
                        if (dp)
             {
                            // listen for individual items being added in the 
future.
                            dp.addEventListener(CollectionEvent.ITEM_ADDED, 
handleItemAddedAndRemoved);
+                           dp.addEventListener(CollectionEvent.ITEM_UPDATED, 
handleItemAddedAndRemoved);
                                
dp.addEventListener(CollectionEvent.ITEM_REMOVED, handleItemAddedAndRemoved);
                                
dp.addEventListener(CollectionEvent.ALL_ITEMS_REMOVED, 
handleItemAddedAndRemoved);
+                               
dp.addEventListener(CollectionEvent.COLLECTION_CHANGED, 
handleCollectionChanged);
             }
 
             for (var i:int=0; i < columnLists.length; i++)
@@ -367,27 +371,28 @@ package org.apache.royale.jewel.beads.views
             }
         }
 
+        private var layout:IBeadLayout;
+
         /**
-         * @private
-         * @royaleignorecoercion org.apache.royale.core.IDataGridModel
-         * @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList
-         */
-        protected function handleSortChanged(event:Event):void
-        {
+                *  Handles the itemAdded event by adding the item.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                *  @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.datagrid.IDataGridColumnList
+                */
+               protected function 
handleCollectionChanged(event:CollectionEvent):void
+               {
             for (var i:int=0; i < columnLists.length; i++)
             {
                 var list:IDataGridColumnList = columnLists[i] as 
IDataGridColumnList;
-                IStrandWithModel(list).model.sortChangedHandler(dp);
+                ((list as UIBase).model as 
IJewelSelectionModel).setDataProvider__NoCheck(dp);
             }
-            host.dispatchEvent(new Event("layoutNeeded"));
 
-            COMPILE::JS{
-                synchHScroll(null);
-            }
+            host.dispatchEvent(new Event("layoutNeeded"));
         }
 
-        private var layout:IBeadLayout;
-
         /**
                 *  Handles the itemAdded event by adding the item.
                 *

Reply via email to