You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/08/30 07:30:42 UTC

[01/11] git commit: [flex-asjs] [refs/heads/develop] - [IMPROVEMENT] Added support for static bindings (SWF only, JS works after a separate jx compiler update)

Repository: flex-asjs
Updated Branches:
  refs/heads/develop 6d4521d9a -> a939eb93d


[IMPROVEMENT] Added support for static bindings (SWF only, JS works after a separate jx compiler update)


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

Branch: refs/heads/develop
Commit: 275e13ea6f3d444f17dbf37d240cc45c874fd346
Parents: 670bbaa
Author: greg-dove <gr...@gmail.com>
Authored: Sat Aug 20 10:09:29 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Sat Aug 20 10:26:19 2016 +1200

----------------------------------------------------------------------
 .../org/apache/flex/binding/PropertyWatcher.as  |  32 +-
 .../org/apache/flex/binding/SimpleBinding.as    | 379 ++++++++++---------
 .../org/apache/flex/binding/ViewDataBinding.as  |  12 +-
 3 files changed, 237 insertions(+), 186 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/275e13ea/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as
index 983c8a7..7da6c5b 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as
@@ -52,11 +52,24 @@ package org.apache.flex.binding
                                             getterFunction:Function)
 		{
             this.source = source;
+            this.dispatcher = source;
             this.propertyName = propertyName;
             this.getterFunction = getterFunction;
             this.eventNames = eventNames;
             
 		}
+
+        /**
+         *  The event dispatcher that dispatches an event
+         *  when the source property changes. This can
+         *  be different from the source (example: static bindables)
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        protected var dispatcher:Object;
 		
         /**
          *  The object who's property we are watching.
@@ -139,7 +152,7 @@ package org.apache.flex.binding
          */                
         override public function parentChanged(parent:Object):void
         {
-            if (source && source is IEventDispatcher)
+            if (dispatcher && dispatcher is IEventDispatcher)
                 removeEventListeners();
 
             if (parent is PropertyWatcher)
@@ -147,8 +160,12 @@ package org.apache.flex.binding
             else
                 source = parent;
             
-            if (source && source is IEventDispatcher)
-                addEventListeners();
+            if (source) {
+                if (source is IEventDispatcher) dispatcher = source;
+                else if (source is Class && source['staticEventDispatcher']!=null) dispatcher = source.staticEventDispatcher;
+            }
+
+            if (dispatcher) addEventListeners();
             
             // Now get our property.
             wrapUpdate(updateProperty);
@@ -159,7 +176,7 @@ package org.apache.flex.binding
         private function addEventListeners():void
         {
             if (eventNames is String)
-                source.addEventListener(eventNames as String, changeHandler);
+                dispatcher.addEventListener(eventNames as String, changeHandler);
             else if (eventNames is Array)
             {
                 var arr:Array = eventNames as Array;
@@ -167,7 +184,7 @@ package org.apache.flex.binding
                 for (var i:int = 0; i < n; i++)
                 {
                     var eventName:String = eventNames[i];
-                    source.addEventListener(eventName, changeHandler);           
+                    dispatcher.addEventListener(eventName, changeHandler);
                 }
             }
         }
@@ -175,7 +192,7 @@ package org.apache.flex.binding
         private function removeEventListeners():void
         {
             if (eventNames is String)
-                source.removeEventListener(eventNames as String, changeHandler);
+                dispatcher.removeEventListener(eventNames as String, changeHandler);
             else if (eventNames is Array)
             {
                 var arr:Array = eventNames as Array;
@@ -183,9 +200,10 @@ package org.apache.flex.binding
                 for (var i:int = 0; i < n; i++)
                 {
                     var eventName:String = eventNames[i];
-                    source.removeEventListener(eventName, changeHandler);           
+                    dispatcher.removeEventListener(eventName, changeHandler);
                 }
             }
+            dispatcher = null;
         }
         
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/275e13ea/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as
index 7aa3225..1d8bdfc 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as
@@ -17,190 +17,219 @@
 //
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.binding
-{	
-	import org.apache.flex.core.IBead;
-	import org.apache.flex.core.IStrand;
-	import org.apache.flex.core.IDocument;
-    import org.apache.flex.events.IEventDispatcher;
-    import org.apache.flex.events.Event;    
-    import org.apache.flex.events.ValueChangeEvent;
-
-    /**
-     *  The SimpleBinding class is lightweight data-binding class that
-     *  is optimized for simple assignments of one object's property to
-     *  another object's property.
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.6
-     *  @productversion FlexJS 0.0
-     */
-	public class SimpleBinding implements IBead, IDocument
+{
+import org.apache.flex.core.IBead;
+import org.apache.flex.core.IStrand;
+import org.apache.flex.core.IDocument;
+import org.apache.flex.events.IEventDispatcher;
+import org.apache.flex.events.Event;
+import org.apache.flex.events.ValueChangeEvent;
+
+/**
+ *  The SimpleBinding class is lightweight data-binding class that
+ *  is optimized for simple assignments of one object's property to
+ *  another object's property.
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.2
+ *  @playerversion AIR 2.6
+ *  @productversion FlexJS 0.0
+ */
+public class SimpleBinding implements IBead, IDocument
+{
+	/**
+	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public function SimpleBinding()
+	{
+	}
+
+	/**
+	 *  The event dispatcher that dispatches an event
+	 *  when the source property changes. This can
+	 *  be different from the source (example: static bindables)
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	protected var dispatcher:IEventDispatcher;
+
+
+	/**
+
+	 *  The source object that dispatches an event
+	 *  when the property changes
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	protected var source:Object;
+
+	/**
+	 *  The host mxml document for the source and
+	 *  destination objects.  The source object
+	 *  is either this document for simple bindings
+	 *  like {foo} where foo is a property on
+	 *  the mxml documnet, or found as document[sourceID]
+	 *  for simple bindings like {someid.someproperty}
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	protected var document:Object;
+
+
+	/**
+	 *  The destination object.  It is always the same
+	 *  as the strand.  SimpleBindings are attached to
+	 *  the strand of the destination object.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public var destination:Object;
+
+	/**
+	 *  If not null, the id of the mxml tag who's property
+	 *  is being watched for changes.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public var sourceID:String;
+
+	/**
+	 *  If not null, the name of a property on the
+	 *  mxml document that is being watched for changes.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public var sourcePropertyName:String;
+
+	/**
+	 *  The event name that is dispatched when the source
+	 *  property changes.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public var eventName:String;
+
+	/**
+	 *  The name of the property on the strand that
+	 *  is set when the source property changes.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public var destinationPropertyName:String;
+
+
+
+	/**
+	 *  @copy org.apache.flex.core.IBead#strand
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public function set strand(value:IStrand):void
 	{
-        /**
-         *  Constructor.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public function SimpleBinding()
+		if (dispatcher) dispatcher.removeEventListener(eventName, changeHandler);
+		if (destination == null)
+			destination = value;
+		if (sourceID != null)
 		{
+			source = dispatcher = document[sourceID] as IEventDispatcher;
+			if (source == null)
+			{
+				document.addEventListener("valueChange",
+						sourceChangeHandler);
+				return;
+			}
 		}
-		
-        /**
-         *  The source object that dispatches an event
-         *  when the property changes
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		protected var source:IEventDispatcher;
-
-        /**
-         *  The host mxml document for the source and
-         *  destination objects.  The source object
-         *  is either this document for simple bindings
-         *  like {foo} where foo is a property on
-         *  the mxml documnet, or found as document[sourceID]
-         *  for simple bindings like {someid.someproperty}
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        protected var document:Object;
-
-        /**
-         *  The destination object.  It is always the same
-         *  as the strand.  SimpleBindings are attached to
-         *  the strand of the destination object.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public var destination:Object;
-
-        /**
-         *  If not null, the id of the mxml tag who's property
-         *  is being watched for changes.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public var sourceID:String;
-
-        /**
-         *  If not null, the name of a property on the
-         *  mxml document that is being watched for changes.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-        public var sourcePropertyName:String;
-        
-        /**
-         *  The event name that is dispatched when the source
-         *  property changes.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public var eventName:String;
-        
-        /**
-         *  The name of the property on the strand that
-         *  is set when the source property changes.
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public var destinationPropertyName:String;
-		
-        /**
-         *  @copy org.apache.flex.core.IBead#strand
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public function set strand(value:IStrand):void
+		else {
+			if (sourcePropertyName in document)
+			{
+				source = dispatcher = document as IEventDispatcher;
+			}
+			else if (sourcePropertyName in document.constructor)
+			{
+				source = document.constructor;
+				dispatcher = source.staticEventDispatcher as IEventDispatcher;
+			}
+		}
+
+		dispatcher.addEventListener(eventName, changeHandler);
+		try
 		{
-			if (destination == null)
-                destination = value;
-            if (sourceID != null)
-            {
-    			source = document[sourceID] as IEventDispatcher;
-                if (source == null)
-                {
-                    document.addEventListener("valueChange", 
-                        sourceChangeHandler);
-                    return;
-                }
-            }
-            else
-                source = document as IEventDispatcher;
-			source.addEventListener(eventName, changeHandler);
-            try 
-            {
-    			destination[destinationPropertyName] = source[sourcePropertyName];
-            }
-            catch (e:Error) {}
+			destination[destinationPropertyName] = source[sourcePropertyName];
 		}
-		
-        /**
-         *  @copy org.apache.flex.core.IDocument#setDocument()
-         *
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion FlexJS 0.0
-         */
-		public function setDocument(document:Object, id:String = null):void
+		catch (e:Error) {}
+
+	}
+
+	/**
+	 *  @copy org.apache.flex.core.IDocument#setDocument()
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public function setDocument(document:Object, id:String = null):void
+	{
+		this.document = document;
+	}
+
+	private function changeHandler(event:Event):void
+	{
+		if (event.type == ValueChangeEvent.VALUE_CHANGE)
 		{
-			this.document = document;
+			var vce:ValueChangeEvent = event as ValueChangeEvent;
+			if (vce.propertyName != sourcePropertyName)
+				return;
 		}
-		
-		private function changeHandler(event:Event):void
+		destination[destinationPropertyName] = source[sourcePropertyName];
+	}
+
+	private function sourceChangeHandler(event:ValueChangeEvent):void
+	{
+		if (event.propertyName != sourceID)
+			return;
+
+		if (dispatcher)
+			dispatcher.removeEventListener(eventName, changeHandler);
+
+		source = dispatcher = document[sourceID] as IEventDispatcher;
+		if (source)
 		{
-            if (event.type == ValueChangeEvent.VALUE_CHANGE)
-            {
-                var vce:ValueChangeEvent = event as ValueChangeEvent;
-                if (vce.propertyName != sourcePropertyName)
-                    return;
-            }
+			dispatcher.addEventListener(eventName, changeHandler);
 			destination[destinationPropertyName] = source[sourcePropertyName];
 		}
-        
-        private function sourceChangeHandler(event:ValueChangeEvent):void
-        {
-            if (event.propertyName != sourceID)
-                return;
-            
-            if (source)
-                source.removeEventListener(eventName, changeHandler);
-            
-            source = document[sourceID] as IEventDispatcher;
-            if (source)
-            {
-                source.addEventListener(eventName, changeHandler);
-                destination[destinationPropertyName] = source[sourcePropertyName];
-            }
-        }
 	}
 }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/275e13ea/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as
index ac2cbdf..55a39bd 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as
@@ -147,12 +147,12 @@ package org.apache.flex.binding
                                 {
                                     if (destObject)
                                     {
-                                        sb.destination = destObject;
-                                        _strand.addBead(sb);
+                                        cb.destination = destObject;
+                                        _strand.addBead(cb);
                                     }
                                     else
                                     {
-                                        deferredBindings[binding.destination[0]] = sb;
+                                        deferredBindings[binding.destination[0]] = cb;
                                         IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
                                     }
                                 }
@@ -222,8 +222,11 @@ package org.apache.flex.binding
                 if (isValidWatcher)
                 {
                     var type:String = watcher.type;
+					var parentObj:Object = _strand;
                     switch (type)
                     {
+						case "static":
+                            parentObj = watcher.parentObj;
                         case "property":
                         {
                             var pw:PropertyWatcher = new PropertyWatcher(this, 
@@ -234,7 +237,7 @@ package org.apache.flex.binding
                             if (parentWatcher)
                                 pw.parentChanged(parentWatcher.value);
                             else
-                                pw.parentChanged(_strand);
+                                pw.parentChanged(parentObj);
                             if (parentWatcher)
                                 parentWatcher.addChild(pw);
                             if (watcher.children == null)
@@ -242,6 +245,7 @@ package org.apache.flex.binding
                             foundWatcher = true;
                             break;
                         }
+
                     }
                     if (watcher.children)
                     {


[09/11] git commit: [flex-asjs] [refs/heads/develop] - [EXAMPLE] updated the test examples with the latest status on the binding variants

Posted by ah...@apache.org.
[EXAMPLE] updated the test examples with the latest status on the binding variants


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

Branch: refs/heads/develop
Commit: a1b5d318a504b9832bdb059ab723e761bfa6f95d
Parents: 12a1976
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 15:31:46 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Aug 29 15:31:46 2016 +1200

----------------------------------------------------------------------
 .../DataBindingTestbed/src/MyInitialView.mxml   | 31 ++++++++++----------
 1 file changed, 16 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a1b5d318/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
index 3bc2ce5..1ed9853 100644
--- a/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
+++ b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
@@ -182,58 +182,59 @@ limitations under the License.
         </js:beads>
 		<js:Label id="testExplanation" text="These examples are mostly intended for FlexJS dev team to verify various binding functionality" />
         <js:Label id="expressionTest" text="model expression binding [WORKS](5 sec timer) {MyModel(applicationModel).modelInstanceTime}" />
-		<!--<js:Label id="timerDemo2" width="300" text="{'test local static expression '+timerText}" />-->
-		<!--<js:Label id="timerDemo" width="300" text="{'test external static expression '+StaticTimer.static_timerText}" />-->
+		<js:Label text="[WORKS] 2 examples of binding expressions with static vars:"/>
+		<js:Label id="timerDemo2" width="300" text="{'test local static expression '+timerText}" />
+		<js:Label id="timerDemo" width="300" text="{'test external static expression '+StaticTimer.static_timerText}" />
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB1" text="test local static simplebinding [BROKEN]" />
-			<!--<js:Label id="timerDemoSB2" text="{timerText}" />-->
+			<js:Label id="timerDemoSB1" text="[WORKS] test local static simplebinding" />
+			<js:Label id="timerDemoSB2" text="{timerText}" />
 		</js:Container>		
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB3"  text="test external static simplebinding [BROKEN]" />
-			<!--<js:Label id="timerDemoSB4"  text="{StaticTimer.static_timerText}" />-->
+			<js:Label id="timerDemoSB3"  text="[WORKS] test external static simplebinding " />
+			<js:Label id="timerDemoSB4"  text="{StaticTimer.static_timerText}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB5"  text="test internal instance simplebinding [WORKS]" />
+			<js:Label id="timerDemoSB5"  text="[WORKS] test internal instance simplebinding" />
 			<js:Label id="timerDemoSB6"  text="{instanceTimerText}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
-			<js:Label text="[BROKEN] 3 examples of binding into local and external static constants"/>
-			<!--<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
+			<js:Label text="[WORKS] 3 examples of binding into local and external static constants"/>
+			<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
 			<js:Label id="staticConstDemo2"  text="{STATIC_PUBLIC_CONST}" />
-			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />-->
+			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
-			<js:Label text="[BROKEN] 2 examples of binding into local instance constants"/>
-			<!--<js:Label id="instConstDemo1"  text="{INSTANCE_PRIVATE_CONST}" />
-			<js:Label id="instConstDemo2"  text="{INSTANCE_PUBLIC_CONST}" />-->
+			<js:Label text="[WORKS] 2 examples of binding into local instance constants"/>
+			<js:Label id="instConstDemo1"  text="{INSTANCE_PRIVATE_CONST}" />
+			<js:Label id="instConstDemo2"  text="{INSTANCE_PUBLIC_CONST}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB7"  text="test nested instance timercount [BROKEN]" />
+			<js:Label id="timerDemoSB7"  text="[WORKS] test nested instance timercount " />
 			<js:Label id="timerDemoSB8"  text="{instTimer.timerCount}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
-			<js:Label text="[BROKEN] 2 examples of binding into an Unbindable parent (compiler warning, one const binding):"/>
+			<js:Label text="[WORKS] 2 examples of binding into an Unbindable parent (compiler warning, one const binding):"/>
 			<js:Label id="unbindableParentDemo1"  text="{unbindableParentInstance.unbindableField}" />
 			<js:Label id="unbindableParentDemo1b"  text="{unbindableParentInstance.unbindableField2}" />
 			<js:Label id="unbindableParentDemo2"  text="{unbindableParentInstance.UNBINDABLE_CONST_FIELD}" />


[04/11] git commit: [flex-asjs] [refs/heads/develop] - Added compiler directives for explicitly defining the framework bindable dispatcher event-related classes

Posted by ah...@apache.org.
Added compiler directives for explicitly defining the framework bindable dispatcher event-related classes


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

Branch: refs/heads/develop
Commit: 674d97faf2bd5d4dc6803ae33d00539ddb111c50
Parents: 95af7f0
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 12:15:04 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Aug 29 12:15:04 2016 +1200

----------------------------------------------------------------------
 examples/build_example.xml | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/674d97fa/examples/build_example.xml
----------------------------------------------------------------------
diff --git a/examples/build_example.xml b/examples/build_example.xml
index 988ef1a..4f30c8e 100644
--- a/examples/build_example.xml
+++ b/examples/build_example.xml
@@ -117,6 +117,9 @@
             <arg value="-compiler.binding-value-change-event=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-kind=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-type=valueChange" />
+			<arg value="-compiler.binding-event-handler-interface=org.apache.flex.events.IEventDispatcher" />
+			<arg value="-compiler.binding-event-handler-class=org.apache.flex.events.EventDispatcher" />
+			<arg value="-compiler.binding-event-handler-event=org.apache.flex.events.Event" />
             <arg value="+playerglobal.version=${playerglobal.version}" />
             <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
         </mxmlc>
@@ -166,6 +169,9 @@
             <arg value="-compiler.binding-value-change-event=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-kind=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-type=valueChange" />
+			<arg value="-compiler.binding-event-handler-interface=org.apache.flex.events.IEventDispatcher" />
+			<arg value="-compiler.binding-event-handler-class=org.apache.flex.events.EventDispatcher" />
+			<arg value="-compiler.binding-event-handler-event=org.apache.flex.events.Event" />
             <arg value="+playerglobal.version=${playerglobal.version}" />
             <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
         </mxmlc>
@@ -203,6 +209,9 @@
             <arg value="-compiler.binding-value-change-event=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-kind=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-type=valueChange" />
+			<arg value="-compiler.binding-event-handler-interface=org.apache.flex.events.IEventDispatcher" />
+			<arg value="-compiler.binding-event-handler-class=org.apache.flex.events.EventDispatcher" />
+			<arg value="-compiler.binding-event-handler-event=org.apache.flex.events.Event" />
             <arg value="+playerglobal.version=${playerglobal.version}" />
             <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
         </mxmlc>
@@ -240,6 +249,9 @@
             <arg value="-compiler.binding-value-change-event=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-kind=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-type=valueChange" />
+			<arg value="-compiler.binding-event-handler-interface=org.apache.flex.events.IEventDispatcher" />
+			<arg value="-compiler.binding-event-handler-class=org.apache.flex.events.EventDispatcher" />
+			<arg value="-compiler.binding-event-handler-event=org.apache.flex.events.Event" />
             <arg value="+playerglobal.version=${playerglobal.version}" />
             <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
             <arg value="${extlib_arg}" />
@@ -284,6 +296,9 @@
             <arg value="-compiler.binding-value-change-event=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-kind=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-type=valueChange" />
+			<arg value="-compiler.binding-event-handler-interface=org.apache.flex.events.IEventDispatcher" />
+			<arg value="-compiler.binding-event-handler-class=org.apache.flex.events.EventDispatcher" />
+			<arg value="-compiler.binding-event-handler-event=org.apache.flex.events.Event" />
             <arg value="+playerglobal.version=${playerglobal.version}" />
             <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
             <arg value="${extlib_arg}" />
@@ -329,6 +344,9 @@
             <arg value="-compiler.binding-value-change-event=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-kind=org.apache.flex.events.ValueChangeEvent" />
             <arg value="-compiler.binding-value-change-event-type=valueChange" />
+			<arg value="-compiler.binding-event-handler-interface=org.apache.flex.events.IEventDispatcher" />
+			<arg value="-compiler.binding-event-handler-class=org.apache.flex.events.EventDispatcher" />
+			<arg value="-compiler.binding-event-handler-event=org.apache.flex.events.Event" />
             <arg value="+playerglobal.version=${playerglobal.version}" />
             <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
             <arg value="${extlib_arg}" />


[06/11] git commit: [flex-asjs] [refs/heads/develop] - [EXAMPLE] Added new example for databinding tests

Posted by ah...@apache.org.
[EXAMPLE] Added new example for databinding tests


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

Branch: refs/heads/develop
Commit: c62b3ab270198c5163e4975e6605f175f9937f5b
Parents: 6d4521d
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 13:53:53 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Aug 29 13:53:53 2016 +1200

----------------------------------------------------------------------
 examples/flexjs/DataBindingTestbed/README.txt   |  51 +++++
 examples/flexjs/DataBindingTestbed/build.xml    |  46 ++++
 examples/flexjs/DataBindingTestbed/pom.xml      |  68 ++++++
 .../src/DataBindingTestbed.mxml                 |  40 ++++
 .../DataBindingTestbed/src/MyInitialView.mxml   | 211 +++++++++++++++++++
 .../src/bindables/BindableBaseVO.as             |  31 +++
 .../src/bindables/BindableSubVO1.as             |  33 +++
 .../src/bindables/BindableSubVO2.as             |  33 +++
 .../src/bindables/BindableSubVO3.as             |  33 +++
 .../src/bindables/InstanceTimer.as              |  69 ++++++
 .../src/bindables/StaticTimer.as                |  61 ++++++
 .../src/bindables/UnbindableBaseVO.as           |  31 +++
 .../src/bindables/UnbindableIntermediateVO.as   |  31 +++
 .../DataBindingTestbed/src/models/MyModel.as    |  47 +++++
 .../src/unbindable/UnbindableParent.as          |  38 ++++
 15 files changed, 823 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/README.txt
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/README.txt b/examples/flexjs/DataBindingTestbed/README.txt
new file mode 100644
index 0000000..2ab7094
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/README.txt
@@ -0,0 +1,51 @@
+\ufeff////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+DESCRIPTION
+
+The DataBindingTestbed shows a Flex application that is simply a test application
+for a range of Databinding variations. Its primary purpose is to demonstrate to the
+development team examples of bindings that do not currently work or do not work well,
+as well as what currently works, and therefore serves to demonstrate what areas
+require attention for improvements or bugfixes.
+
+This Flex application may be run as a Flash SWF or cross-compiled (using Falcon JX)
+into JavaScript and HTML and run without Flash.
+
+The DataBindingTestbed is primarily for development purposes, but also shows 
+simple examples of a range of binding types that might be useful as examples for
+FlexJS developers to see how things work (or what currently does not work).
+The examples in the code that are commented out are very likely things that need
+attention or fixes. If you encounter any bugs in binding that are not currently
+represented in this example, please contact the dev team via the mailing list 
+   web view : https://lists.apache.org/list.html?dev@flex.apache.org
+  subscribe : dev-subscribe@flex.apache.org
+participate : dev@flex.apache.org
+
+
+COMPONENTS and BEADS
+
+- Container
+- Label
+
+
+NOTES
+
+The cross-compilation to JavaScript often results in non-fatal warnings. Some of these warnings
+should be addressed in future releases of the Falcon JX compiler.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/build.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/build.xml b/examples/flexjs/DataBindingTestbed/build.xml
new file mode 100644
index 0000000..6713be4
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/build.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<project name="databindingexample" default="main" basedir=".">
+    <property name="FLEXJS_HOME" location="../../.."/>
+    <property name="example" value="DataBindingTestbed" />
+    
+    <property file="${FLEXJS_HOME}/env.properties"/>
+    <property environment="env"/>
+    <property file="${FLEXJS_HOME}/build.properties"/>
+    <property name="FLEX_HOME" value="${FLEXJS_HOME}"/>
+    <property name="opt1_arg" value="-js-output-optimization=skipAsCoercions" />
+
+    <include file="${basedir}/../../build_example.xml" />
+    
+    <target name="main" depends="clean,build_example.compile,build_example.compilejs" description="Clean build of ${example}">
+    </target>
+    
+    <target name="clean">
+        <delete dir="${basedir}/bin" failonerror="false" />
+        <delete dir="${basedir}/bin-debug" failonerror="false" />
+        <delete dir="${basedir}/bin-release" failonerror="false" />
+        <delete dir="${basedir}/target" failonerror="false" />
+    </target>
+
+    
+    
+</project>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/pom.xml
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/pom.xml b/examples/flexjs/DataBindingTestbed/pom.xml
new file mode 100644
index 0000000..66f3199
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.flex.flexjs.examples</groupId>
+    <artifactId>examples-flexjs</artifactId>
+    <version>0.7.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>DataBindingTestbed</artifactId>
+  <version>0.7.0-SNAPSHOT</version>
+  <packaging>swf</packaging>
+
+  <name>Apache Flex - FlexJS: Examples: FlexJS: DataBindingTestbed</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.flex.flexjs.compiler</groupId>
+        <artifactId>flexjs-maven-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <mainClass>DataBindingTestbed.mxml</mainClass>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.adobe.flash.framework</groupId>
+      <artifactId>playerglobal</artifactId>
+      <version>${flash.version}</version>
+      <type>swc</type>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/DataBindingTestbed.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/DataBindingTestbed.mxml b/examples/flexjs/DataBindingTestbed/src/DataBindingTestbed.mxml
new file mode 100644
index 0000000..6857198
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/DataBindingTestbed.mxml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
+                   xmlns:local="*"
+                   xmlns:js="library://ns.apache.org/flexjs/basic" 
+                   xmlns:models="models.*" 
+                   xmlns:controllers="controllers.*"
+                   
+                   >
+    <js:valuesImpl>
+        <js:SimpleCSSValuesImpl />
+    </js:valuesImpl>
+    <js:initialView>
+        <local:MyInitialView />
+    </js:initialView>
+    <js:model>
+        <models:MyModel />
+    </js:model>
+    <js:beads>
+        <js:CSSFontFaceBead />
+        <js:ViewSourceContextMenuOption />
+    </js:beads>
+</js:Application>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
new file mode 100644
index 0000000..07493f6
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<js:View xmlns:fx="http://ns.adobe.com/mxml/2009"
+				xmlns:js="library://ns.apache.org/flexjs/basic"
+			    initComplete="initControls()">
+    <fx:Script>
+        <![CDATA[
+			import models.MyModel;
+			import bindables.StaticTimer;
+			import bindables.InstanceTimer;
+			import bindables.*;
+			import unbindable.UnbindableParent;
+			
+			import org.apache.flex.events.CustomEvent;
+			import org.apache.flex.utils.Timer;
+			import org.apache.flex.events.ValueChangeEvent;
+			private static var timer:Timer;
+			
+			private static const STATIC_PRIVATE_CONST :* = "STATIC_PRIVATE_CONST_VAL";
+			public static const STATIC_PUBLIC_CONST :String = "STATIC_PUBLIC_CONST_VAL";
+			
+			private const INSTANCE_PRIVATE_CONST :* = "INSTANCE_PRIVATE_CONST_VAL";
+			public const INSTANCE_PUBLIC_CONST :String = "INSTANCE_PUBLIC_CONST_VAL";
+			
+			[Bindable]
+			private static var timerText:String="1";
+			
+			public static function get altTimerText():String {
+				return timerText;
+			}
+						
+			private static var _inited:Boolean;
+			
+			private static function updateTimer(e:Event=null):void{
+				var val:uint = uint(timerText);
+				val++;
+				timerText = val.toString();
+			//	trace('updateTimer',val, timerText);
+	
+			}
+			
+			private static function initStaticTimer():void{
+			if (!_inited) {
+				timer = new Timer(1000);
+				timer.addEventListener(Timer.TIMER,updateTimer);
+				timer.start();
+				_inited = true;
+				trace('initStaticTimer');
+			}
+			}
+			
+			public static var staticMM:MyModel;
+			
+			[Bindable]
+			public static var staticMMBindable:MyModel;
+			
+			
+			private  var inst_timer:Timer;
+			
+			[Bindable]
+            public var instanceTimerText:String ="1";
+			
+			private  function updateInstTimer(e:Event=null):void{
+				var val:uint = uint(instanceTimerText);
+				val++;
+				instanceTimerText = val.toString();
+			//	trace('updateTimer',val, timerText);
+	
+			}
+			
+            
+		
+			private function initControls():void
+			{
+					
+					initStaticTimer();
+					trace('initControls');
+					inst_timer = new Timer(1500);
+				inst_timer.addEventListener(Timer.TIMER,updateInstTimer);
+				inst_timer.start();
+				
+				StaticTimer.initStaticTimer();
+				instTimer = new InstanceTimer();
+			}
+			
+			[Bindable]
+			public var instTimer:InstanceTimer ;// = InstanceTimer.getInstance();
+            
+			
+			[Bindable]
+			public var unbindableParentInstance:UnbindableParent = new UnbindableParent();
+			
+			
+			public var subVO1:BindableSubVO1;
+			public var subVO2:BindableSubVO2;
+			public var subVO3:BindableSubVO3;
+		]]>
+    </fx:Script>
+	<fx:Style>
+		@namespace basic "library://ns.apache.org/flexjs/basic";
+		
+		.output {
+			font-size: 20px;
+		}
+
+        .topContainer {
+            padding: 10px;
+            
+        }
+        .leftSide {
+            vertical-align: top;
+            margin-right: 10px;
+        }
+        
+        .rightSide {
+            vertical-align: top;
+            margin-left: 10px;
+            padding-left: 10px;
+        }
+        
+        .quoteButton {
+            margin-top: 10px;
+            margin-bottom: 10px;
+        }
+	</fx:Style>
+    <js:states>
+        <js:State name="hideAll" />        
+        <js:State name="showAll" />        
+    </js:states>
+    <js:beads>
+        <js:ViewDataBinding/>
+    </js:beads>
+    <js:Container x="0" y="0" className="topContainer" >
+        <js:beads>
+            <js:VerticalLayout />
+        </js:beads>
+		<js:Label id="testExplanation" text="These examples are mostly intended for FlexJS dev team to verify various binding functionality" />
+        <js:Label id="expressionTest" text="model expression binding (5 sec timer) {MyModel(applicationModel).modelInstanceTime}" />
+		<js:Label id="timerDemo2" width="300" text="{'test local static expression '+timerText}" />
+		<js:Label id="timerDemo" width="300" text="{'test external static expression '+StaticTimer.static_timerText}" />
+		<js:Container width="500">
+			<js:beads>
+				<js:HorizontalLayout />
+			</js:beads>
+			<js:Label id="timerDemoSB1" text="test local static simplebinding" />
+			<js:Label id="timerDemoSB2" text="{timerText}" />
+		</js:Container>		
+		<js:Container width="500">
+			<js:beads>
+				<js:HorizontalLayout />
+			</js:beads>
+			<js:Label id="timerDemoSB3"  text="test external static simplebinding" />
+			<js:Label id="timerDemoSB4"  text="{StaticTimer.static_timerText}" />
+		</js:Container>
+		<js:Container width="500">
+			<js:beads>
+				<js:HorizontalLayout />
+			</js:beads>
+			<js:Label id="timerDemoSB5"  text="test internal instance simplebinding" />
+			<js:Label id="timerDemoSB6"  text="{instanceTimerText}" />
+		</js:Container>
+		<js:Container width="500">
+			<js:beads>
+				<js:VerticalLayout />
+			</js:beads>
+			<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
+			<js:Label id="staticConstDemo2"  text="{STATIC_PUBLIC_CONST}" />
+			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />
+		</js:Container>
+		<js:Container width="500">
+			<js:beads>
+				<js:VerticalLayout />
+			</js:beads>
+			<js:Label id="instConstDemo1"  text="{INSTANCE_PRIVATE_CONST}" />
+			<js:Label id="instConstDemo2"  text="{INSTANCE_PUBLIC_CONST}" />
+		</js:Container>
+		<js:Container width="500">
+			<js:beads>
+				<js:HorizontalLayout />
+			</js:beads>
+			<js:Label id="timerDemoSB7"  text="test nested instance timercount" />
+			<js:Label id="timerDemoSB8"  text="{instTimer.timerCount}" />
+		</js:Container>
+		<js:Container width="500">
+			<js:beads>
+				<js:VerticalLayout />
+			</js:beads>
+			<js:Label id="unbindableParentDemo1"  text="{unbindableParentInstance.unbindableField}" />
+			<js:Label id="unbindableParentDemo1b"  text="{unbindableParentInstance.unbindableField2}" />
+			<js:Label id="unbindableParentDemo2"  text="{unbindableParentInstance.UNBINDABLE_CONST_FIELD}" />
+			
+		</js:Container>
+    </js:Container>	
+</js:View>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/bindables/BindableBaseVO.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/bindables/BindableBaseVO.as b/examples/flexjs/DataBindingTestbed/src/bindables/BindableBaseVO.as
new file mode 100644
index 0000000..a53f3b7
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/bindables/BindableBaseVO.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bindables
+{
+
+	public class BindableBaseVO
+	{
+			
+
+			
+			[Bindable]
+			public var fieldOfBindableBaseVO:String = "fieldOfBindableBaseVO_value";
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO1.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO1.as b/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO1.as
new file mode 100644
index 0000000..740b579
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO1.as
@@ -0,0 +1,33 @@
+0.////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bindables
+{
+
+	public class BindableSubVO1 extends BindableBaseVO
+	{
+			
+
+			
+			[Bindable]
+			public var fieldOfBindableSubVO1:String = "fieldOfBindableSubVO1_value";
+			
+
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO2.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO2.as b/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO2.as
new file mode 100644
index 0000000..43392c4
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO2.as
@@ -0,0 +1,33 @@
+0.////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bindables
+{
+
+	public class BindableSubVO2 extends UnbindableBaseVO
+	{
+			
+
+			
+			[Bindable]
+			public var fieldofBindableSubVO2:String = "fieldofBindableSubVO2_value";
+			
+
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO3.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO3.as b/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO3.as
new file mode 100644
index 0000000..7f6d082
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/bindables/BindableSubVO3.as
@@ -0,0 +1,33 @@
+0.////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bindables
+{
+
+	public class BindableSubVO3 extends UnbindableIntermediateVO
+	{
+			
+
+			
+			[Bindable]
+			public var fieldofBindableSubVO3:String = "fieldofBindableSubVO3_value";
+			
+
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/bindables/InstanceTimer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/bindables/InstanceTimer.as b/examples/flexjs/DataBindingTestbed/src/bindables/InstanceTimer.as
new file mode 100644
index 0000000..4a67b44
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/bindables/InstanceTimer.as
@@ -0,0 +1,69 @@
+0.////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bindables
+{
+	import org.apache.flex.events.Event;
+
+				import org.apache.flex.utils.Timer;
+			
+	public class InstanceTimer
+	{
+			
+			public function InstanceTimer(){
+				initTimer(1500);
+			}
+			
+			
+			private static var _inst:InstanceTimer;
+			
+			public static function getInstance():InstanceTimer {
+				return _inst || (_inst = new InstanceTimer());
+			
+			}
+			
+			
+			
+			
+			private var timer:Timer;
+						
+			
+			
+			private function updateTimer(e:Event=null):void{
+				timerCount++
+			//	trace('updateTimer',timerCount);
+	
+			}
+			
+			private  function initTimer(val:uint):void{
+
+				timer = new Timer(val);
+				timer.addEventListener(Timer.TIMER,updateTimer);
+				timer.start();
+				trace('init InstanceTimer');
+
+			}
+			
+			[Bindable]
+			public var timerCount:uint = 0;
+			
+			[Bindable]
+			public static var stimerCount:uint = 0;
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/bindables/StaticTimer.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/bindables/StaticTimer.as b/examples/flexjs/DataBindingTestbed/src/bindables/StaticTimer.as
new file mode 100644
index 0000000..2f9ab70
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/bindables/StaticTimer.as
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bindables
+{
+	import org.apache.flex.events.Event;
+
+				import org.apache.flex.utils.Timer;
+	public class StaticTimer
+	{
+	
+			public static const EXTERNAL_STATIC_CONST:String = "EXTERNAL_STATIC_CONST_VAL";
+
+			public function StaticTimer() {
+			//trace("STATICTIMER");
+			}
+			
+			private static var timer:Timer;
+						
+			private static var _inited:Boolean;
+			
+			private static function updateTimer(e:Event=null):void{
+				var val:uint = uint(static_timerText);
+				val++;
+				static_timerText = val.toString();
+			//	trace('updateTimer',val, static_timerText);
+	
+			}
+			
+			public static function initStaticTimer():void{
+			if (!_inited) {
+				timer = new Timer(1000);
+				timer.addEventListener(Timer.TIMER,updateTimer);
+				timer.start();
+				_inited = true;
+				trace('initStaticTimer');
+			}
+			}
+			//[Bindable]
+			public var instBindable:String;
+			
+			[Bindable]
+			public static var static_timerText:String="1";
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/bindables/UnbindableBaseVO.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/bindables/UnbindableBaseVO.as b/examples/flexjs/DataBindingTestbed/src/bindables/UnbindableBaseVO.as
new file mode 100644
index 0000000..31fcf79
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/bindables/UnbindableBaseVO.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bindables
+{
+
+	public class UnbindableBaseVO
+	{
+			
+
+			
+			public var fieldOfUnbindableBaseVO:String = "fieldOfUnbindableBaseVO_value";
+			
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/bindables/UnbindableIntermediateVO.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/bindables/UnbindableIntermediateVO.as b/examples/flexjs/DataBindingTestbed/src/bindables/UnbindableIntermediateVO.as
new file mode 100644
index 0000000..3e03a8a
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/bindables/UnbindableIntermediateVO.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package bindables
+{
+
+	public class UnbindableIntermediateVO extends BindableBaseVO
+	{
+			
+
+			
+			public var fieldOfUnbindableIntermediateVO:String = "fieldOfUnbindableIntermediateVO_value";
+			
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/models/MyModel.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/models/MyModel.as b/examples/flexjs/DataBindingTestbed/src/models/MyModel.as
new file mode 100644
index 0000000..3f66e35
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/models/MyModel.as
@@ -0,0 +1,47 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package models
+{
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.EventDispatcher;
+	import org.apache.flex.utils.Timer;
+	
+	public class MyModel extends EventDispatcher
+	{
+		public function MyModel()
+		{
+			timer = new Timer(5000);
+			timer.addEventListener(Timer.TIMER, updateInstanceTime);
+			timer.start();
+		}
+		
+		private var timer:Timer;
+		
+		[Bindable]
+		public var modelInstanceTime:uint = 0;
+	
+		
+		private function updateInstanceTime(e:Event):void{
+			modelInstanceTime++;
+		}
+		
+		
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c62b3ab2/examples/flexjs/DataBindingTestbed/src/unbindable/UnbindableParent.as
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/unbindable/UnbindableParent.as b/examples/flexjs/DataBindingTestbed/src/unbindable/UnbindableParent.as
new file mode 100644
index 0000000..1fce4cf
--- /dev/null
+++ b/examples/flexjs/DataBindingTestbed/src/unbindable/UnbindableParent.as
@@ -0,0 +1,38 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package unbindable
+{
+
+	public class UnbindableParent
+	{
+	
+			
+			
+			public static var unbindableStaticField:String = "unbindableStaticField_value";
+			
+			
+			public var unbindableField:String = "unbindableField_value";
+			
+			public var unbindableField2:String = "unbindableField2_value";
+			
+			public const UNBINDABLE_CONST_FIELD:String="UNBINDABLE_CONST_FIELD_VALUE";
+			
+
+	}
+}
\ No newline at end of file


[03/11] git commit: [flex-asjs] [refs/heads/develop] - [IMPROVEMENTS] Cumulative improvements across binding framework classes: - Support in some classes added for static bindings - removed n-2 check in _bindings loop because the extra null appended to t

Posted by ah...@apache.org.
[IMPROVEMENTS] Cumulative improvements across binding framework classes:
- Support in some classes added for static bindings
- removed n-2 check in _bindings loop because the extra null appended to the _bindings array by falcon-jx has now gone
- when a child watcher is not found (e.g. last part of binding chain is not bindable, update the value. This might need more attention


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

Branch: refs/heads/develop
Commit: 95af7f023d7dc5130d9d7bb50041ca50fbcf3865
Parents: 2c21ebc
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 12:13:14 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Aug 29 12:13:14 2016 +1200

----------------------------------------------------------------------
 .../flex/binding/ApplicationDataBinding.as      |   5 +-
 .../apache/flex/binding/ContainerDataBinding.as |   5 +-
 .../org/apache/flex/binding/GenericBinding.as   |  27 ++-
 .../flex/binding/MXMLBeadViewDataBinding.as     |   5 +-
 .../org/apache/flex/binding/PropertyWatcher.as  |   9 +-
 .../org/apache/flex/binding/SimpleBinding.as    |  41 ++---
 .../org/apache/flex/binding/ViewDataBinding.as  | 164 +++++++++++--------
 7 files changed, 150 insertions(+), 106 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/95af7f02/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ApplicationDataBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ApplicationDataBinding.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ApplicationDataBinding.as
index 2974ea5..94da494 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ApplicationDataBinding.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ApplicationDataBinding.as
@@ -270,10 +270,7 @@ package org.apache.flex.binding
             var n:int = bindingData.length;
             var index:int = 0;
             var watcherData:Object;
-            // FalconJX adds an extra null to the data so make sure
-            // we have enough data for a complete watcher otherwise
-            // say we are done
-            while (index < n - 2)
+            while (index < n - 1)
             {
                 var watcherIndex:int = bindingData[index++];
                 var type:int = bindingData[index++];

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/95af7f02/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ContainerDataBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ContainerDataBinding.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ContainerDataBinding.as
index 751f235..156aa69 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ContainerDataBinding.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ContainerDataBinding.as
@@ -316,10 +316,7 @@ package org.apache.flex.binding
             var n:int = bindingData.length;
             var index:int = 0;
             var watcherData:Object;
-            // FalconJX adds an extra null to the data so make sure
-            // we have enough data for a complete watcher otherwise
-            // say we are done
-            while (index < n - 2)
+            while (index < n - 1)
             {
                 var watcherIndex:int = bindingData[index++];
                 var type:int = bindingData[index++];

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/95af7f02/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/GenericBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/GenericBinding.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/GenericBinding.as
index 72a2b4b..6ad75c8 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/GenericBinding.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/GenericBinding.as
@@ -46,7 +46,8 @@ package org.apache.flex.binding
 		public function GenericBinding()
 		{
 		}
-		
+
+
         /**
          *  The mxml document for the
          *  binding expression.  If you bind to
@@ -107,6 +108,20 @@ package org.apache.flex.binding
          *  @productversion FlexJS 0.0
          */
         public var destinationFunction:Function;
+
+
+        /**
+         *  Flag used to indicate that the document
+         *  value refers to a Class with a static
+         *  bindable source
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public var isStatic:Boolean;
+        public var staticRoot:Object
 		
         /**
          *  @copy org.apache.flex.core.IBead#strand
@@ -135,7 +150,13 @@ package org.apache.flex.binding
             {
                 var arr:Array = source as Array;
                 var n:int = arr.length;
-                var obj:Object = document[arr[0]];
+                var obj:Object;
+                if (isStatic) {
+                    //ignore first element in the array, it is text representation of
+                    //staticRoot which here refers to the class
+                    obj=staticRoot;
+                } else obj = document[arr[0]];
+
                 if (obj == null)
                     return null;
                 for (var i:int = 1; i < n; i++)
@@ -154,7 +175,7 @@ package org.apache.flex.binding
             }
             else if (source is String)
             {
-                obj = document[source];
+                obj = isStatic ? staticRoot[source] : document[source];
                 return obj;
             }
             return null;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/95af7f02/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/MXMLBeadViewDataBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/MXMLBeadViewDataBinding.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/MXMLBeadViewDataBinding.as
index 7ec1dac..54168d5 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/MXMLBeadViewDataBinding.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/MXMLBeadViewDataBinding.as
@@ -265,10 +265,7 @@ package org.apache.flex.binding
             var n:int = bindingData.length;
             var index:int = 0;
             var watcherData:Object;
-            // FalconJX adds an extra null to the data so make sure
-            // we have enough data for a complete watcher otherwise
-            // say we are done
-            while (index < n - 2)
+            while (index < n - 1)
             {
                 var watcherIndex:int = bindingData[index++];
                 var type:int = bindingData[index++];

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/95af7f02/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as
index 7da6c5b..98015dc 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/PropertyWatcher.as
@@ -37,7 +37,7 @@ package org.apache.flex.binding
          *  Constructor.
          *  
          *  @param source The object who's property we are watching.
-         *  @param proeprtyName The name of the property we are watching.
+         *  @param propertyName The name of the property we are watching.
          *  @param eventNames The name or array of names of events that get
          *  dispatched when the property changes.
          *  @param getterFunction  A function to call to get the value
@@ -52,7 +52,6 @@ package org.apache.flex.binding
                                             getterFunction:Function)
 		{
             this.source = source;
-            this.dispatcher = source;
             this.propertyName = propertyName;
             this.getterFunction = getterFunction;
             this.eventNames = eventNames;
@@ -69,7 +68,7 @@ package org.apache.flex.binding
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.0
          */
-        protected var dispatcher:Object;
+        protected var dispatcher:IEventDispatcher;
 		
         /**
          *  The object who's property we are watching.
@@ -152,7 +151,7 @@ package org.apache.flex.binding
          */                
         override public function parentChanged(parent:Object):void
         {
-            if (dispatcher && dispatcher is IEventDispatcher)
+            if (dispatcher)
                 removeEventListeners();
 
             if (parent is PropertyWatcher)
@@ -161,7 +160,7 @@ package org.apache.flex.binding
                 source = parent;
             
             if (source) {
-                if (source is IEventDispatcher) dispatcher = source;
+                if (source is IEventDispatcher) dispatcher = IEventDispatcher(source);
                 else if (source is Class && source['staticEventDispatcher']!=null) dispatcher = source.staticEventDispatcher;
             }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/95af7f02/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as
index 1d8bdfc..1fef25f 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/SimpleBinding.as
@@ -45,10 +45,13 @@ public class SimpleBinding implements IBead, IDocument
 	 *  @playerversion AIR 2.6
 	 *  @productversion FlexJS 0.0
 	 */
-	public function SimpleBinding()
+	public function SimpleBinding(isStatic:Boolean=false)
 	{
+		_isStatic = isStatic;
 	}
 
+	private var _isStatic:Boolean;
+
 	/**
 	 *  The event dispatcher that dispatches an event
 	 *  when the source property changes. This can
@@ -81,6 +84,8 @@ public class SimpleBinding implements IBead, IDocument
 	 *  like {foo} where foo is a property on
 	 *  the mxml documnet, or found as document[sourceID]
 	 *  for simple bindings like {someid.someproperty}
+	 *  It may be the document class for local static
+	 *  bindables (e.g. from a script block)
 	 *
 	 *  @langversion 3.0
 	 *  @playerversion Flash 10.2
@@ -161,28 +166,24 @@ public class SimpleBinding implements IBead, IDocument
 		if (dispatcher) dispatcher.removeEventListener(eventName, changeHandler);
 		if (destination == null)
 			destination = value;
-		if (sourceID != null)
-		{
-			source = dispatcher = document[sourceID] as IEventDispatcher;
-			if (source == null)
+		if (_isStatic) {
+			source = document;
+			dispatcher = source.staticEventDispatcher as IEventDispatcher;
+		} else {
+			if (sourceID != null)
 			{
-				document.addEventListener("valueChange",
-						sourceChangeHandler);
-				return;
-			}
-		}
-		else {
-			if (sourcePropertyName in document)
-			{
-				source = dispatcher = document as IEventDispatcher;
-			}
-			else if (sourcePropertyName in document.constructor)
-			{
-				source = document.constructor;
-				dispatcher = source.staticEventDispatcher as IEventDispatcher;
-			}
+				source = dispatcher = document[sourceID] as IEventDispatcher;
+				if (source == null)
+				{
+					document.addEventListener("valueChange",
+							sourceChangeHandler);
+					return;
+				}
+			} else
+			source = dispatcher = document as IEventDispatcher;
 		}
 
+
 		dispatcher.addEventListener(eventName, changeHandler);
 		try
 		{

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/95af7f02/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as
index 55a39bd..0612b1d 100644
--- a/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as
+++ b/frameworks/projects/Binding/src/main/flex/org/apache/flex/binding/ViewDataBinding.as
@@ -75,6 +75,7 @@ package org.apache.flex.binding
         private function initCompleteHandler(event:Event):void
         {
             var fieldWatcher:Object;
+            var isStatic:Boolean;
             var sb:SimpleBinding;
             if (!("_bindings" in _strand))
                 return;
@@ -96,81 +97,57 @@ package org.apache.flex.binding
             for (i = 0; i < n; i++)
             {
                     binding = bindings[i];
-                if (binding.source is Array)
+                var destination:IStrand;
+                if (binding.source is String)
                 {
-                    if (binding.source[0] == "applicationModel")
+                    fieldWatcher = watchers.watcherMap[binding.source];
+                    if (!fieldWatcher) makeConstantBinding(binding, _strand);
+                    else if (fieldWatcher.eventNames is String)
                     {
-                        if (binding.source.length == 2 && binding.destination.length == 2)
+                        isStatic = fieldWatcher.type == "static";
+                        sb = new SimpleBinding(isStatic);
+                        sb.destinationPropertyName = binding.destination[1];
+                        sb.eventName = fieldWatcher.eventNames as String;
+                        sb.sourcePropertyName = binding.source;
+                        if (isStatic)
+                            sb.setDocument(fieldWatcher.parentObj);
+                        else sb.setDocument(_strand);
+                        destObject = _strand[binding.destination[0]];
+                        destination = destObject as IStrand;
+                        if (destination)
+                            destination.addBead(sb);
+                        else
                         {
-                            var destination:IStrand;
-                            // can be simplebinding or constantbinding
-                            var modelWatcher:Object = watchers.watcherMap["applicationModel"];
-                            fieldWatcher = modelWatcher.children.watcherMap[binding.source[1]];
-                            if (fieldWatcher.eventNames is String)
+                            if (destObject)
                             {
-                                sb = new SimpleBinding();
-                                sb.destinationPropertyName = binding.destination[1];
-                                sb.eventName = fieldWatcher.eventNames as String;
-                                sb.sourceID = binding.source[0];
-                                sb.sourcePropertyName = binding.source[1];
-                                sb.setDocument(_strand);
-                                destObject = _strand[binding.destination[0]];                                
-                                destination = destObject as IStrand;
-                                if (destination)
-                                    destination.addBead(sb);
-                                else
-                                {
-                                    if (destObject)
-                                    {
-                                        sb.destination = destObject;
-                                        _strand.addBead(sb);
-                                    }
-                                    else
-                                    {
-                                        deferredBindings[binding.destination[0]] = sb;
-                                        IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
-                                    }
-                                }
+                                sb.destination = destObject;
+                                _strand.addBead(sb);
                             }
-                            else if (fieldWatcher.eventNames == null)
+                            else
                             {
-                                var cb:ConstantBinding = new ConstantBinding();
-                                cb.destinationPropertyName = binding.destination[1];
-                                cb.sourceID = binding.source[0];
-                                cb.sourcePropertyName = binding.source[1];
-                                cb.setDocument(_strand);
-                                destObject = _strand[binding.destination[0]];                                
-                                destination = destObject as IStrand;
-                                if (destination)
-                                    destination.addBead(cb);
-                                else
-                                {
-                                    if (destObject)
-                                    {
-                                        cb.destination = destObject;
-                                        _strand.addBead(cb);
-                                    }
-                                    else
-                                    {
-                                        deferredBindings[binding.destination[0]] = cb;
-                                        IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
-                                    }
-                                }
+                                deferredBindings[binding.destination[0]] = sb;
+                                IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
                             }
                         }
                     }
                 }
-                else if (binding.source is String)
+                else
+                if (binding.source is Array
+                        && binding.source[0] == "applicationModel"
+                        && binding.source.length == 2 && binding.destination.length == 2)
                 {
-                    fieldWatcher = watchers.watcherMap[binding.source];
+                    // can be simplebinding or constantbinding
+                    var modelWatcher:Object = watchers.watcherMap["applicationModel"];
+                    fieldWatcher = modelWatcher.children.watcherMap[binding.source[1]];
                     if (fieldWatcher.eventNames is String)
                     {
                         sb = new SimpleBinding();
                         sb.destinationPropertyName = binding.destination[1];
                         sb.eventName = fieldWatcher.eventNames as String;
-                        sb.sourcePropertyName = binding.source;
+                        sb.sourceID = binding.source[0];
+                        sb.sourcePropertyName = binding.source[1];
                         sb.setDocument(_strand);
-                        destObject = _strand[binding.destination[0]];                                
+                        destObject = _strand[binding.destination[0]];
                         destination = destObject as IStrand;
                         if (destination)
                             destination.addBead(sb);
@@ -188,6 +165,31 @@ package org.apache.flex.binding
                             }
                         }
                     }
+                    else if (fieldWatcher.eventNames == null)
+                    {
+                        var cb:ConstantBinding = new ConstantBinding();
+                        cb.destinationPropertyName = binding.destination[1];
+                        cb.sourceID = binding.source[0];
+                        cb.sourcePropertyName = binding.source[1];
+                        cb.setDocument(_strand);
+                        destObject = _strand[binding.destination[0]];
+                        destination = destObject as IStrand;
+                        if (destination)
+                            destination.addBead(cb);
+                        else
+                        {
+                            if (destObject)
+                            {
+                                cb.destination = destObject;
+                                _strand.addBead(cb);
+                            }
+                            else
+                            {
+                                deferredBindings[binding.destination[0]] = cb;
+                                IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                            }
+                        }
+                    }
                 }
                 else
                 {
@@ -196,6 +198,36 @@ package org.apache.flex.binding
             }
         }
 
+        private function makeConstantBinding(binding:Object,strand:IStrand):void{
+            var cb:ConstantBinding = new ConstantBinding();
+            cb.destinationPropertyName = binding.destination[1];
+            if (binding.source is String) {
+                cb.sourcePropertyName = binding.source;
+            } else {
+                cb.sourceID = binding.source[0];
+                cb.sourcePropertyName = binding.source[1];
+            }
+            cb.setDocument(strand);
+            var destObject:Object = strand[binding.destination[0]];
+            var destination:IStrand = destObject as IStrand;
+            if (destination)
+                destination.addBead(cb);
+            else
+            {
+                if (destObject)
+                {
+                    cb.destination = destObject;
+                    strand.addBead(cb);
+                }
+                else
+                {
+                    deferredBindings[binding.destination[0]] = cb;
+                    IEventDispatcher(strand).addEventListener("valueChange", deferredBindingsHandler);
+                }
+            }
+
+        }
+
         private function makeGenericBinding(binding:Object, index:int, watchers:Object):void
         {
             var gb:GenericBinding = new GenericBinding();
@@ -227,6 +259,8 @@ package org.apache.flex.binding
                     {
 						case "static":
                             parentObj = watcher.parentObj;
+                            gb.staticRoot = parentObj;
+                            gb.isStatic = true;
                         case "property":
                         {
                             var pw:PropertyWatcher = new PropertyWatcher(this, 
@@ -253,11 +287,12 @@ package org.apache.flex.binding
                     }
                 }
             }
-            if (!foundWatcher && parentWatcher == null)
-            {
+            if (!foundWatcher )            {
                 // might be a binding to a function that doesn't have change events
-                // so just force an update
-                gb.valueChanged(null);
+                // so just force an update via parentWatcher (if it is set, null if not)
+                if (parentWatcher) gb.valueChanged(parentWatcher.value);
+                else gb.valueChanged(null);
+
             }
         }
         
@@ -268,10 +303,7 @@ package org.apache.flex.binding
             var n:int = bindingData.length;
             var index:int = 0;
             var watcherData:Object;
-            // FalconJX adds an extra null to the data so make sure
-            // we have enough data for a complete watcher otherwise
-            // say we are done
-            while (index < n - 2)
+            while (index < n - 1)
             {
                 var watcherIndex:int = bindingData[index++];
                 var type:int = bindingData[index++];


[05/11] git commit: [flex-asjs] [refs/heads/develop] - Merge branch 'develop' into static_binding_fix

Posted by ah...@apache.org.
Merge branch 'develop' into static_binding_fix


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

Branch: refs/heads/develop
Commit: d24d195ccc6277b3bd3d3dd045ce70a07c57e262
Parents: 674d97f 6d4521d
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 12:17:06 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Aug 29 12:17:06 2016 +1200

----------------------------------------------------------------------
 ApproveFlexJS.xml                               | 45 +++++++++++---------
 .../CordovaCameraExample-app.xml                |  2 +-
 examples/flexjs/DesktopMap/DesktopMap-app.xml   |  2 +-
 examples/flexjs/MapSearch/MapSearch-app.xml     |  2 +-
 .../StorageExample/StorageExample-app.xml       |  2 +-
 .../org/apache/flex/createjs/Application.as     |  2 +-
 6 files changed, 29 insertions(+), 26 deletions(-)
----------------------------------------------------------------------



[10/11] git commit: [flex-asjs] [refs/heads/develop] - Backported to support review and extra info about variants against current develop branch All commented out labels in MyIntialView represent errors or non-functioning bindings. This closes #12

Posted by ah...@apache.org.
Backported to support review and extra info about variants against current develop branch
All commented out labels in MyIntialView represent errors or non-functioning bindings.
This closes #12


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

Branch: refs/heads/develop
Commit: b59c4cb6cee85dc2bba458bff4a13ead9ffe2842
Parents: c62b3ab
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 14:55:31 2016 +1200
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Aug 29 14:46:52 2016 -0700

----------------------------------------------------------------------
 .../DataBindingTestbed/src/MyInitialView.mxml   | 80 +++++++++++++++-----
 1 file changed, 59 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b59c4cb6/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
index 07493f6..3bc2ce5 100644
--- a/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
+++ b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
@@ -31,6 +31,7 @@ limitations under the License.
 			import org.apache.flex.events.CustomEvent;
 			import org.apache.flex.utils.Timer;
 			import org.apache.flex.events.ValueChangeEvent;
+			import org.apache.flex.html.Label;
 			private static var timer:Timer;
 			
 			private static const STATIC_PRIVATE_CONST :* = "STATIC_PRIVATE_CONST_VAL";
@@ -52,7 +53,6 @@ limitations under the License.
 				var val:uint = uint(timerText);
 				val++;
 				timerText = val.toString();
-			//	trace('updateTimer',val, timerText);
 	
 			}
 			
@@ -81,7 +81,6 @@ limitations under the License.
 				var val:uint = uint(instanceTimerText);
 				val++;
 				instanceTimerText = val.toString();
-			//	trace('updateTimer',val, timerText);
 	
 			}
 			
@@ -93,15 +92,45 @@ limitations under the License.
 					initStaticTimer();
 					trace('initControls');
 					inst_timer = new Timer(1500);
-				inst_timer.addEventListener(Timer.TIMER,updateInstTimer);
-				inst_timer.start();
-				
-				StaticTimer.initStaticTimer();
-				instTimer = new InstanceTimer();
+					inst_timer.addEventListener(Timer.TIMER,updateInstTimer);
+					inst_timer.start();
+					
+					StaticTimer.initStaticTimer();
+					try{
+					  instTimer = new InstanceTimer();
+					} catch (e:Error) {
+						addErrorReport("problem instantiating InstanceTimer ",e);
+					}
+					
+					try {
+						var test:Object = new BindableSubVO1()
+					} catch (e:Error) {
+						addErrorReport("problem instantiating BindableSubVO1 ",e);
+					}
+					try {
+					   test = new BindableSubVO2()
+					} catch (e:Error) {
+						addErrorReport("problem instantiating BindableSubVO2 ",e);
+					}
+					try {
+						test = new BindableSubVO3()
+					} catch (e:Error) {
+						addErrorReport("problem instantiating BindableSubVO3 ",e);
+					}
+					
+					
+			}
+			
+			
+			private function addErrorReport(desc:String,e:Error):void{
+				var label:Label = new Label();
+				label.text = desc +"["+e+"]";
+				errorReporter.addElement(label);
+			
 			}
 			
 			[Bindable]
-			public var instTimer:InstanceTimer ;// = InstanceTimer.getInstance();
+			public var instTimer:InstanceTimer ;
             
 			
 			[Bindable]
@@ -152,60 +181,69 @@ limitations under the License.
             <js:VerticalLayout />
         </js:beads>
 		<js:Label id="testExplanation" text="These examples are mostly intended for FlexJS dev team to verify various binding functionality" />
-        <js:Label id="expressionTest" text="model expression binding (5 sec timer) {MyModel(applicationModel).modelInstanceTime}" />
-		<js:Label id="timerDemo2" width="300" text="{'test local static expression '+timerText}" />
-		<js:Label id="timerDemo" width="300" text="{'test external static expression '+StaticTimer.static_timerText}" />
+        <js:Label id="expressionTest" text="model expression binding [WORKS](5 sec timer) {MyModel(applicationModel).modelInstanceTime}" />
+		<!--<js:Label id="timerDemo2" width="300" text="{'test local static expression '+timerText}" />-->
+		<!--<js:Label id="timerDemo" width="300" text="{'test external static expression '+StaticTimer.static_timerText}" />-->
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB1" text="test local static simplebinding" />
-			<js:Label id="timerDemoSB2" text="{timerText}" />
+			<js:Label id="timerDemoSB1" text="test local static simplebinding [BROKEN]" />
+			<!--<js:Label id="timerDemoSB2" text="{timerText}" />-->
 		</js:Container>		
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB3"  text="test external static simplebinding" />
-			<js:Label id="timerDemoSB4"  text="{StaticTimer.static_timerText}" />
+			<js:Label id="timerDemoSB3"  text="test external static simplebinding [BROKEN]" />
+			<!--<js:Label id="timerDemoSB4"  text="{StaticTimer.static_timerText}" />-->
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB5"  text="test internal instance simplebinding" />
+			<js:Label id="timerDemoSB5"  text="test internal instance simplebinding [WORKS]" />
 			<js:Label id="timerDemoSB6"  text="{instanceTimerText}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
-			<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
+			<js:Label text="[BROKEN] 3 examples of binding into local and external static constants"/>
+			<!--<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
 			<js:Label id="staticConstDemo2"  text="{STATIC_PUBLIC_CONST}" />
-			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />
+			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />-->
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
-			<js:Label id="instConstDemo1"  text="{INSTANCE_PRIVATE_CONST}" />
-			<js:Label id="instConstDemo2"  text="{INSTANCE_PUBLIC_CONST}" />
+			<js:Label text="[BROKEN] 2 examples of binding into local instance constants"/>
+			<!--<js:Label id="instConstDemo1"  text="{INSTANCE_PRIVATE_CONST}" />
+			<js:Label id="instConstDemo2"  text="{INSTANCE_PUBLIC_CONST}" />-->
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB7"  text="test nested instance timercount" />
+			<js:Label id="timerDemoSB7"  text="test nested instance timercount [BROKEN]" />
 			<js:Label id="timerDemoSB8"  text="{instTimer.timerCount}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
+			<js:Label text="[BROKEN] 2 examples of binding into an Unbindable parent (compiler warning, one const binding):"/>
 			<js:Label id="unbindableParentDemo1"  text="{unbindableParentInstance.unbindableField}" />
 			<js:Label id="unbindableParentDemo1b"  text="{unbindableParentInstance.unbindableField2}" />
 			<js:Label id="unbindableParentDemo2"  text="{unbindableParentInstance.UNBINDABLE_CONST_FIELD}" />
 			
 		</js:Container>
+		<js:Container width="500" id="errorReporter">
+			<js:beads>
+				<js:VerticalLayout />
+			</js:beads>
+						
+		</js:Container>
     </js:Container>	
 </js:View>


[02/11] git commit: [flex-asjs] [refs/heads/develop] - [BUGFIX] [PLEASE REVIEW] This seems necessary for IEventDispatcher implementations (not extending EventDispatcher). Otherwise TypeError occurs. Not ideal...

Posted by ah...@apache.org.
[BUGFIX] [PLEASE REVIEW] This seems necessary for IEventDispatcher implementations (not extending EventDispatcher). Otherwise TypeError occurs. Not ideal...


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

Branch: refs/heads/develop
Commit: 2c21ebc419cd4e911c74f6247229ca6b375b46a9
Parents: 275e13e
Author: greg-dove <gr...@gmail.com>
Authored: Sat Aug 27 15:57:48 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Sat Aug 27 15:57:48 2016 +1200

----------------------------------------------------------------------
 .../flex/org/apache/flex/events/EventDispatcher.as  | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c21ebc4/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as
index 7f1b134..d4bc1a9 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/events/EventDispatcher.as
@@ -61,8 +61,20 @@ package org.apache.flex.events
 	{
         public function EventDispatcher(target:IEventDispatcher = null)
         {
-            if (target != null)
-                setTargetForTesting(target);
+            if (target != null) {
+				setTargetForTesting(target);
+				//the following can be required with IEventDispatcher implementation instead of extending EventDispatcher
+				//(fireListeners is not required by IEventDispatcher, but is called on the 'currentTarget'
+				//by the ancestor goog.events.EventTarget code)
+				var obj:Object = target;
+				if (!obj.fireListeners) {
+					var me:EventDispatcher = this;
+					obj.fireListeners = function ():* {
+						me.fireListeners.apply(me,arguments);
+					};
+				}
+			}
+                
         }
         
         public function hasEventListener(type:String):Boolean


[11/11] git commit: [flex-asjs] [refs/heads/develop] - Merge branch 'Binding_Improvements' of https://github.com/greg-dove/flex-asjs into develop This closes #13 Conflicts: examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml

Posted by ah...@apache.org.
Merge branch 'Binding_Improvements' of https://github.com/greg-dove/flex-asjs into develop
This closes #13
Conflicts:
	examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml


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

Branch: refs/heads/develop
Commit: a939eb93d6024de921f488efde4983550fe5bb8e
Parents: b59c4cb a1b5d31
Author: Alex Harui <ah...@apache.org>
Authored: Mon Aug 29 14:50:59 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Aug 29 14:50:59 2016 -0700

----------------------------------------------------------------------
 examples/build_example.xml                      |  18 +
 .../DataBindingTestbed/src/MyInitialView.mxml   |  29 +-
 .../flex/binding/ApplicationDataBinding.as      |   5 +-
 .../apache/flex/binding/ContainerDataBinding.as |   5 +-
 .../org/apache/flex/binding/GenericBinding.as   |  27 +-
 .../flex/binding/MXMLBeadViewDataBinding.as     |   5 +-
 .../org/apache/flex/binding/PropertyWatcher.as  |  33 +-
 .../org/apache/flex/binding/SimpleBinding.as    | 382 ++++++++++---------
 .../org/apache/flex/binding/ViewDataBinding.as  | 170 +++++----
 .../org/apache/flex/events/EventDispatcher.as   |  16 +-
 10 files changed, 408 insertions(+), 282 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a939eb93/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --cc examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
index 3bc2ce5,1ed9853..286c097
--- a/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
+++ b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
@@@ -209,10 -210,10 +210,10 @@@ limitations under the License
  			<js:beads>
  				<js:VerticalLayout />
  			</js:beads>
- 			<js:Label text="[BROKEN] 3 examples of binding into local and external static constants"/>
- 			<!--<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
+ 			<js:Label text="[WORKS] 3 examples of binding into local and external static constants"/>
+ 			<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
  			<js:Label id="staticConstDemo2"  text="{STATIC_PUBLIC_CONST}" />
 -			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />
 +			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />-->
  		</js:Container>
  		<js:Container width="500">
  			<js:beads>


[08/11] git commit: [flex-asjs] [refs/heads/develop] - Merge branch 'Bindable_test_example' into Binding_improvements

Posted by ah...@apache.org.
Merge branch 'Bindable_test_example' into Binding_improvements


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

Branch: refs/heads/develop
Commit: 12a19762e46f34f60625c33da8292e10ae6fe0fc
Parents: d24d195 2c3ac89
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 15:16:10 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Aug 29 15:16:10 2016 +1200

----------------------------------------------------------------------
 examples/flexjs/DataBindingTestbed/README.txt   |  51 ++++
 examples/flexjs/DataBindingTestbed/build.xml    |  46 ++++
 examples/flexjs/DataBindingTestbed/pom.xml      |  68 +++++
 .../src/DataBindingTestbed.mxml                 |  40 +++
 .../DataBindingTestbed/src/MyInitialView.mxml   | 249 +++++++++++++++++++
 .../src/bindables/BindableBaseVO.as             |  31 +++
 .../src/bindables/BindableSubVO1.as             |  33 +++
 .../src/bindables/BindableSubVO2.as             |  33 +++
 .../src/bindables/BindableSubVO3.as             |  33 +++
 .../src/bindables/InstanceTimer.as              |  69 +++++
 .../src/bindables/StaticTimer.as                |  61 +++++
 .../src/bindables/UnbindableBaseVO.as           |  31 +++
 .../src/bindables/UnbindableIntermediateVO.as   |  31 +++
 .../DataBindingTestbed/src/models/MyModel.as    |  47 ++++
 .../src/unbindable/UnbindableParent.as          |  38 +++
 15 files changed, 861 insertions(+)
----------------------------------------------------------------------



[07/11] git commit: [flex-asjs] [refs/heads/develop] - Backported to support review and extra info about variants against current develop branch All commented out labels in MyIntialView represent errors or non-functioning bindings.

Posted by ah...@apache.org.
Backported to support review and extra info about variants against current develop branch
All commented out labels in MyIntialView represent errors or non-functioning bindings.


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

Branch: refs/heads/develop
Commit: 2c3ac891661e218aaf1337dcc92d10218dc8f123
Parents: c62b3ab
Author: greg-dove <gr...@gmail.com>
Authored: Mon Aug 29 14:55:31 2016 +1200
Committer: greg-dove <gr...@gmail.com>
Committed: Mon Aug 29 14:55:31 2016 +1200

----------------------------------------------------------------------
 .../DataBindingTestbed/src/MyInitialView.mxml   | 80 +++++++++++++++-----
 1 file changed, 59 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/2c3ac891/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
index 07493f6..3bc2ce5 100644
--- a/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
+++ b/examples/flexjs/DataBindingTestbed/src/MyInitialView.mxml
@@ -31,6 +31,7 @@ limitations under the License.
 			import org.apache.flex.events.CustomEvent;
 			import org.apache.flex.utils.Timer;
 			import org.apache.flex.events.ValueChangeEvent;
+			import org.apache.flex.html.Label;
 			private static var timer:Timer;
 			
 			private static const STATIC_PRIVATE_CONST :* = "STATIC_PRIVATE_CONST_VAL";
@@ -52,7 +53,6 @@ limitations under the License.
 				var val:uint = uint(timerText);
 				val++;
 				timerText = val.toString();
-			//	trace('updateTimer',val, timerText);
 	
 			}
 			
@@ -81,7 +81,6 @@ limitations under the License.
 				var val:uint = uint(instanceTimerText);
 				val++;
 				instanceTimerText = val.toString();
-			//	trace('updateTimer',val, timerText);
 	
 			}
 			
@@ -93,15 +92,45 @@ limitations under the License.
 					initStaticTimer();
 					trace('initControls');
 					inst_timer = new Timer(1500);
-				inst_timer.addEventListener(Timer.TIMER,updateInstTimer);
-				inst_timer.start();
-				
-				StaticTimer.initStaticTimer();
-				instTimer = new InstanceTimer();
+					inst_timer.addEventListener(Timer.TIMER,updateInstTimer);
+					inst_timer.start();
+					
+					StaticTimer.initStaticTimer();
+					try{
+					  instTimer = new InstanceTimer();
+					} catch (e:Error) {
+						addErrorReport("problem instantiating InstanceTimer ",e);
+					}
+					
+					try {
+						var test:Object = new BindableSubVO1()
+					} catch (e:Error) {
+						addErrorReport("problem instantiating BindableSubVO1 ",e);
+					}
+					try {
+					   test = new BindableSubVO2()
+					} catch (e:Error) {
+						addErrorReport("problem instantiating BindableSubVO2 ",e);
+					}
+					try {
+						test = new BindableSubVO3()
+					} catch (e:Error) {
+						addErrorReport("problem instantiating BindableSubVO3 ",e);
+					}
+					
+					
+			}
+			
+			
+			private function addErrorReport(desc:String,e:Error):void{
+				var label:Label = new Label();
+				label.text = desc +"["+e+"]";
+				errorReporter.addElement(label);
+			
 			}
 			
 			[Bindable]
-			public var instTimer:InstanceTimer ;// = InstanceTimer.getInstance();
+			public var instTimer:InstanceTimer ;
             
 			
 			[Bindable]
@@ -152,60 +181,69 @@ limitations under the License.
             <js:VerticalLayout />
         </js:beads>
 		<js:Label id="testExplanation" text="These examples are mostly intended for FlexJS dev team to verify various binding functionality" />
-        <js:Label id="expressionTest" text="model expression binding (5 sec timer) {MyModel(applicationModel).modelInstanceTime}" />
-		<js:Label id="timerDemo2" width="300" text="{'test local static expression '+timerText}" />
-		<js:Label id="timerDemo" width="300" text="{'test external static expression '+StaticTimer.static_timerText}" />
+        <js:Label id="expressionTest" text="model expression binding [WORKS](5 sec timer) {MyModel(applicationModel).modelInstanceTime}" />
+		<!--<js:Label id="timerDemo2" width="300" text="{'test local static expression '+timerText}" />-->
+		<!--<js:Label id="timerDemo" width="300" text="{'test external static expression '+StaticTimer.static_timerText}" />-->
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB1" text="test local static simplebinding" />
-			<js:Label id="timerDemoSB2" text="{timerText}" />
+			<js:Label id="timerDemoSB1" text="test local static simplebinding [BROKEN]" />
+			<!--<js:Label id="timerDemoSB2" text="{timerText}" />-->
 		</js:Container>		
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB3"  text="test external static simplebinding" />
-			<js:Label id="timerDemoSB4"  text="{StaticTimer.static_timerText}" />
+			<js:Label id="timerDemoSB3"  text="test external static simplebinding [BROKEN]" />
+			<!--<js:Label id="timerDemoSB4"  text="{StaticTimer.static_timerText}" />-->
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB5"  text="test internal instance simplebinding" />
+			<js:Label id="timerDemoSB5"  text="test internal instance simplebinding [WORKS]" />
 			<js:Label id="timerDemoSB6"  text="{instanceTimerText}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
-			<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
+			<js:Label text="[BROKEN] 3 examples of binding into local and external static constants"/>
+			<!--<js:Label id="staticConstDemo1"  text="{STATIC_PRIVATE_CONST}" />
 			<js:Label id="staticConstDemo2"  text="{STATIC_PUBLIC_CONST}" />
-			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />
+			<js:Label id="staticConstDemo3"  text="{StaticTimer.EXTERNAL_STATIC_CONST}" />-->
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
-			<js:Label id="instConstDemo1"  text="{INSTANCE_PRIVATE_CONST}" />
-			<js:Label id="instConstDemo2"  text="{INSTANCE_PUBLIC_CONST}" />
+			<js:Label text="[BROKEN] 2 examples of binding into local instance constants"/>
+			<!--<js:Label id="instConstDemo1"  text="{INSTANCE_PRIVATE_CONST}" />
+			<js:Label id="instConstDemo2"  text="{INSTANCE_PUBLIC_CONST}" />-->
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:HorizontalLayout />
 			</js:beads>
-			<js:Label id="timerDemoSB7"  text="test nested instance timercount" />
+			<js:Label id="timerDemoSB7"  text="test nested instance timercount [BROKEN]" />
 			<js:Label id="timerDemoSB8"  text="{instTimer.timerCount}" />
 		</js:Container>
 		<js:Container width="500">
 			<js:beads>
 				<js:VerticalLayout />
 			</js:beads>
+			<js:Label text="[BROKEN] 2 examples of binding into an Unbindable parent (compiler warning, one const binding):"/>
 			<js:Label id="unbindableParentDemo1"  text="{unbindableParentInstance.unbindableField}" />
 			<js:Label id="unbindableParentDemo1b"  text="{unbindableParentInstance.unbindableField2}" />
 			<js:Label id="unbindableParentDemo2"  text="{unbindableParentInstance.UNBINDABLE_CONST_FIELD}" />
 			
 		</js:Container>
+		<js:Container width="500" id="errorReporter">
+			<js:beads>
+				<js:VerticalLayout />
+			</js:beads>
+						
+		</js:Container>
     </js:Container>	
 </js:View>