You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ha...@apache.org on 2016/09/27 09:50:01 UTC

[16/28] git commit: [flex-asjs] [refs/heads/refactor-sprite] - Updated DataProviderChangeNotifier to listen for replacement of the dataProvider itself.

Updated DataProviderChangeNotifier to listen for replacement of the dataProvider itself.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/e0ac88c5
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/e0ac88c5
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/e0ac88c5

Branch: refs/heads/refactor-sprite
Commit: e0ac88c5a8efed5c26b4d3a08d772714617b9988
Parents: f9c4a01
Author: Peter Ent <pe...@apache.org>
Authored: Mon Sep 19 15:38:24 2016 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Mon Sep 19 15:38:24 2016 -0400

----------------------------------------------------------------------
 .../html/beads/DataProviderChangeNotifier.as    | 42 +++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e0ac88c5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataProviderChangeNotifier.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataProviderChangeNotifier.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataProviderChangeNotifier.as
index c639b90..a24810b 100644
--- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataProviderChangeNotifier.as
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataProviderChangeNotifier.as
@@ -19,9 +19,12 @@
 package org.apache.flex.html.beads
 {
 	import org.apache.flex.core.IBead;
+	import org.apache.flex.core.IBeadModel;
 	import org.apache.flex.core.IDocument;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.IEventDispatcher;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.collections.ArrayList;
 	
@@ -64,15 +67,30 @@ package org.apache.flex.html.beads
 		{
 			_strand = value;
 			
+			if (_strand[destinationPropertyName] == null) {
+				var model:IBeadModel = UIBase(_strand).model as IBeadModel;
+				IEventDispatcher(model).addEventListener(changeEventName, destinationChangedHandler);
+			}
+			else {
+				destinationChangedHandler(null);
+			}
+		}
+		
+		private function destinationChangedHandler(event:Event):void
+		{
 			if (_dataProvider == null) {
 				var object:Object = document[sourceID];
 				_dataProvider = object[propertyName] as ArrayList;
 			}
+			else {
+				_dataProvider.removeEventListener("itemAdded", handleItemAdded);
+				_dataProvider.removeEventListener("itemRemoved", handleItemRemoved);
+				_dataProvider.removeEventListener("itemUpdated", handleItemUpdated);
+			}
 			
 			_dataProvider.addEventListener("itemAdded", handleItemAdded);
 			_dataProvider.addEventListener("itemRemoved", handleItemRemoved);
 			_dataProvider.addEventListener("itemUpdated", handleItemUpdated);
-
 		}
 		
 		protected var document:Object;
@@ -85,6 +103,28 @@ package org.apache.flex.html.beads
 			this.document = document;
 		}
 		
+		private var _destinationPropertyName:String;
+		
+		public function get destinationPropertyName():String
+		{
+			return _destinationPropertyName;
+		}
+		public function set destinationPropertyName(value:String):void
+		{
+			_destinationPropertyName = value;
+		}
+		
+		private var _changeEventName:String;
+		
+		public function get changeEventName():String
+		{
+			return _changeEventName;
+		}
+		public function set changeEventName(value:String):void
+		{
+			_changeEventName = value;
+		}
+		
 		private var _sourceID:String;
 		
 		/**