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 2018/08/28 22:04:22 UTC
[royale-asjs] branch develop updated: avoid listeners to remain
when change dataProvider
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 b32d34d avoid listeners to remain when change dataProvider
b32d34d is described below
commit b32d34d1822c2b169a26a9534fa574a05705d165
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Wed Aug 29 00:04:18 2018 +0200
avoid listeners to remain when change dataProvider
---
.../src/main/royale/TablePlayGround.mxml | 2 +-
.../AddTableItemRendererForArrayListData.as | 20 ++++-----
.../RemoveListItemRendererForArrayListData.as | 7 +++-
.../RemoveTableItemRendererForArrayListData.as | 49 ++++++++++------------
.../UpdateListItemRendererForArrayListData.as | 9 +++-
.../UpdateTableItemRendererForArrayListData.as | 41 +++++++-----------
.../royale/jewel/itemRenderers/ListItemRenderer.as | 2 +-
.../jewel/itemRenderers/TableItemRenderer.as | 2 +-
8 files changed, 63 insertions(+), 69 deletions(-)
diff --git a/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml b/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
index 05b9d9e..72acba0 100644
--- a/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
@@ -240,7 +240,7 @@ limitations under the License.
public function removeItemAt():void
{
- (table.dataProvider as ArrayList).removeAll();
+ (table.dataProvider as ArrayList).removeItemAt(0);
// tablesModel.guitarrists.removeItemAt(0);
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableItemRendererForArrayListData.as
index 1b489c5..1150310 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableItemRendererForArrayListData.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableItemRendererForArrayListData.as
@@ -62,11 +62,8 @@ package org.apache.royale.jewel.beads.itemRenderers
public function AddTableItemRendererForArrayListData()
{
}
-
+
protected var _strand:IStrand;
-
- protected var labelField:String;
-
/**
* @copy org.apache.royale.core.IStrand
*
@@ -80,7 +77,11 @@ package org.apache.royale.jewel.beads.itemRenderers
_strand = value;
IEventDispatcher(value).addEventListener("initComplete", initComplete);
}
+
+ protected var labelField:String;
+ protected var model:TableModel;
+
/**
* finish setup
*
@@ -132,8 +133,7 @@ package org.apache.royale.jewel.beads.itemRenderers
{
var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
var column:TableColumn;
- var tbody:TBodyContentArea = itemRendererParent as TBodyContentArea;
- var ir:ITextItemRenderer;
+ var ir:ITextItemRenderer;
var index:int = event.index * model.columns.length;
for(var j:int = 0; j < model.columns.length; j++)
@@ -145,7 +145,7 @@ package org.apache.royale.jewel.beads.itemRenderers
ir = column.itemRenderer.newInstance() as ITextItemRenderer;
} else
{
- ir = itemRendererFactory.createItemRenderer(tbody) as ITextItemRenderer;
+ ir = itemRendererFactory.createItemRenderer(itemRendererParent) as ITextItemRenderer;
}
labelField = column.dataField;
@@ -163,11 +163,11 @@ package org.apache.royale.jewel.beads.itemRenderers
}
// update the index values in the itemRenderers to correspond to their shifted positions.
- var n:int = tbody.numElements;
+ var n:int = itemRendererParent.numElements;
var d:DataItemRenderer;
for (var i:int = event.index; i < n; i++)
{
- d = tbody.getItemRendererForIndex(i) as DataItemRenderer;
+ d = itemRendererParent.getItemRendererForIndex(i) as DataItemRenderer;
d.index = i;
}
@@ -213,8 +213,6 @@ package org.apache.royale.jewel.beads.itemRenderers
return _itemRendererFactory;
}
- protected var model:TableModel;
-
/**
* @private
*/
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
index 9c280d7..e2c2da0 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
@@ -88,12 +88,17 @@ package org.apache.royale.jewel.beads.itemRenderers
dataProviderChangeHandler(null);
}
+ private var dp:IEventDispatcher;
/**
* @private
*/
protected function dataProviderChangeHandler(event:Event):void
{
- var dp:IEventDispatcher = dataProviderModel.dataProvider as IEventDispatcher;
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ITEM_REMOVED, handleItemRemoved);
+ }
+ dp = dataProviderModel.dataProvider as IEventDispatcher;
if (!dp)
return;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveTableItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveTableItemRendererForArrayListData.as
index 837d1df..bdfcf44 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveTableItemRendererForArrayListData.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveTableItemRendererForArrayListData.as
@@ -29,6 +29,7 @@ package org.apache.royale.jewel.beads.itemRenderers
import org.apache.royale.events.CollectionEvent;
import org.apache.royale.events.Event;
import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.jewel.beads.models.TableModel;
/**
* Handles the removal of an itemRenderer in a Table component once the corresponding
@@ -54,7 +55,6 @@ package org.apache.royale.jewel.beads.itemRenderers
}
private var _strand:IStrand;
-
/**
* @copy org.apache.royale.core.IStrand
*
@@ -68,6 +68,10 @@ package org.apache.royale.jewel.beads.itemRenderers
_strand = value;
IEventDispatcher(value).addEventListener("initComplete", initComplete);
}
+
+ protected var labelField:String;
+
+ protected var model:TableModel;
/**
* finish setup
@@ -81,19 +85,26 @@ package org.apache.royale.jewel.beads.itemRenderers
{
IEventDispatcher(_strand).removeEventListener("initComplete", initComplete);
- _dataProviderModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
- dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
+ model = _strand.getBeadByType(ISelectionModel) as TableModel;
+ labelField = model.labelField;
+
+ model.addEventListener("dataProviderChanged", dataProviderChangeHandler);
// invoke now in case "dataProviderChanged" has already been dispatched.
dataProviderChangeHandler(null);
}
+ private var dp:IEventDispatcher;
/**
- * @private
+ * @private
*/
protected function dataProviderChangeHandler(event:Event):void
{
- var dp:IEventDispatcher = dataProviderModel.dataProvider as IEventDispatcher;
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ITEM_REMOVED, handleItemRemoved);
+ }
+ dp = model.dataProvider as IEventDispatcher;
if (!dp)
return;
@@ -112,9 +123,14 @@ package org.apache.royale.jewel.beads.itemRenderers
protected function handleItemRemoved(event:CollectionEvent):void
{
var parent:UIBase = itemRendererParent as UIBase;
- var ir:ISelectableItemRenderer = parent.getElementAt(event.index) as ISelectableItemRenderer;
- itemRendererParent.removeItemRenderer(ir);
+ var ir:ISelectableItemRenderer;
+ // for(var j:int = 0; j < model.columns.length; j++)
+ // {
+ ir = 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++)
@@ -126,25 +142,6 @@ package org.apache.royale.jewel.beads.itemRenderers
(_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.3
- */
- public function get dataProviderModel(): IDataProviderModel
- {
- if (_dataProviderModel == null) {
- _dataProviderModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
- }
- return _dataProviderModel;
- }
-
private var _itemRendererParent: IItemRendererParent;
/**
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateListItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateListItemRendererForArrayListData.as
index 53a7f0b..b3203a0 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateListItemRendererForArrayListData.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateListItemRendererForArrayListData.as
@@ -91,12 +91,17 @@ package org.apache.royale.jewel.beads.itemRenderers
dataProviderChangeHandler(null);
}
+ private var dp:IEventDispatcher;
/**
- * @private
+ * @private
*/
protected function dataProviderChangeHandler(event:Event):void
{
- var dp:IEventDispatcher = dataProviderModel.dataProvider as IEventDispatcher;
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ITEM_UPDATED, handleItemUpdated);
+ }
+ dp = dataProviderModel.dataProvider as IEventDispatcher;
if (!dp)
return;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateTableItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateTableItemRendererForArrayListData.as
index c6eb3ee..3675c4f 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateTableItemRendererForArrayListData.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateTableItemRendererForArrayListData.as
@@ -28,6 +28,7 @@ package org.apache.royale.jewel.beads.itemRenderers
import org.apache.royale.events.CollectionEvent;
import org.apache.royale.events.Event;
import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.jewel.beads.models.TableModel;
/**
* Handles the update of an itemRenderer in a Table component once the corresponding
@@ -52,10 +53,8 @@ package org.apache.royale.jewel.beads.itemRenderers
{
}
+
protected var _strand:IStrand;
-
- protected var labelField:String;
-
/**
* @copy org.apache.royale.core.IStrand
*
@@ -69,7 +68,11 @@ package org.apache.royale.jewel.beads.itemRenderers
_strand = value;
IEventDispatcher(value).addEventListener("initComplete", initComplete);
}
+
+ protected var labelField:String;
+ protected var model:TableModel;
+
/**
* finish setup
*
@@ -82,21 +85,26 @@ package org.apache.royale.jewel.beads.itemRenderers
{
IEventDispatcher(_strand).removeEventListener("initComplete", initComplete);
- _dataProviderModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
- labelField = _dataProviderModel.labelField;
+ model = _strand.getBeadByType(ISelectionModel) as TableModel;
+ labelField = model.labelField;
- dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
+ model.addEventListener("dataProviderChanged", dataProviderChangeHandler);
// invoke now in case "dataProviderChanged" has already been dispatched.
dataProviderChangeHandler(null);
}
+ private var dp:IEventDispatcher;
/**
* @private
*/
protected function dataProviderChangeHandler(event:Event):void
{
- var dp:IEventDispatcher = dataProviderModel.dataProvider as IEventDispatcher;
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ITEM_UPDATED, handleItemUpdated);
+ }
+ dp = model.dataProvider as IEventDispatcher;
if (!dp)
return;
@@ -121,25 +129,6 @@ package org.apache.royale.jewel.beads.itemRenderers
(_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.3
- */
- public function get dataProviderModel():IDataProviderModel
- {
- if (_dataProviderModel == null) {
- _dataProviderModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
- }
- return _dataProviderModel;
- }
-
private var _itemRendererParent: IItemRendererParent;
/**
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
index a08a4b4..7d16c2f 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
@@ -109,7 +109,7 @@ package org.apache.royale.jewel.itemRenderers
COMPILE::JS
override protected function createElement():WrappedHTMLElement
{
- addElementToWrapper(this,'li');
+ addElementToWrapper(this, 'li');
if(MXMLDescriptor == null)
{
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TableItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TableItemRenderer.as
index 76a2346..92cb397 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TableItemRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TableItemRenderer.as
@@ -86,7 +86,7 @@ package org.apache.royale.jewel.itemRenderers
COMPILE::JS
override protected function createElement():WrappedHTMLElement
{
- addElementToWrapper(this,'div');
+ addElementToWrapper(this, 'div');
if(MXMLDescriptor == null)
{