You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/12/21 21:11:06 UTC
[royale-asjs] branch develop updated: 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
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 <ca...@apache.org>
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.
*