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>