From 2e04af953463643791f6362bd8ef4c6ba190abfa Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Wed, 18 Apr 2012 13:48:51 -0700 Subject: Squashed commit of the following: commit 2054551bfb01a0f4ca2e138b9d724835462d45cd Merge: 765c2da 616a853 Author: Valerio Virgillito Date: Wed Apr 18 13:48:21 2012 -0700 Merge branch 'refs/heads/master' into integration commit 765c2da8e1aa03550caf42b2bd5f367555ad2843 Author: Valerio Virgillito Date: Tue Apr 17 15:29:41 2012 -0700 updating the picasa carousel Signed-off-by: Valerio Virgillito commit 9484f1c82b81e27edf2dc0a1bcc1fa3b12077406 Merge: d27f2df cacb4a2 Author: Valerio Virgillito Date: Tue Apr 17 15:03:50 2012 -0700 Merge branch 'refs/heads/master' into integration commit d27f2df4d846064444263d7832d213535962abe7 Author: Valerio Virgillito Date: Wed Apr 11 10:39:36 2012 -0700 integrating new picasa carousel component Signed-off-by: Valerio Virgillito commit 6f98384c9ecbc8abe55ccfe1fc25a0c7ce22c493 Author: Valerio Virgillito Date: Tue Apr 10 14:33:00 2012 -0700 fixed the text area case issue Text area was renamed from TextArea to Textarea Signed-off-by: Valerio Virgillito commit 1e83e26652266136802bc7af930379c1ecd631a6 Author: Valerio Virgillito Date: Mon Apr 9 22:10:45 2012 -0700 integrating montage v0.8 into ninja. Signed-off-by: Valerio Virgillito Signed-off-by: Valerio Virgillito --- node_modules/montage/core/event/binding.js | 48 ++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 9 deletions(-) (limited to 'node_modules/montage/core/event/binding.js') diff --git a/node_modules/montage/core/event/binding.js b/node_modules/montage/core/event/binding.js index 21b40609..709a5d85 100755 --- a/node_modules/montage/core/event/binding.js +++ b/node_modules/montage/core/event/binding.js @@ -18,6 +18,7 @@ var Montage = require("montage").Montage, ChangeTypes = require("core/event/mutable-event").ChangeTypes, Serializer = require("core/serializer").Serializer, Deserializer = require("core/deserializer").Deserializer, + logger = require("core/logger").logger("binding"); defaultEventManager = require("core/event/event-manager").defaultEventManager, AT_TARGET = 2, UNDERSCORE = "_"; @@ -1184,11 +1185,14 @@ var BindingDescriptor = exports.BindingDescriptor = Montage.create(Montage, /** }, serializeSelf: {value: function(serializer) { - serializer.setReference("boundObject", this.boundObject); - serializer.set("boundObjectPropertyPath", this.boundObjectPropertyPath); - serializer.set("oneway", this.oneway); - serializer.set("deferred", this.deferred); - serializer.set("converter", this.converter); + var serialization = {}; + + serializer.addObjectReference(this.boundObject); + serialization[this.oneway ? "<-" : "<<->"] = "@" + serializer.getObjectLabel(this.boundObject) + "." + this.boundObjectPropertyPath; + serialization.deferred = this.deferred; + serialization.converter = this.converter; + + return serialization; }} }); @@ -1200,10 +1204,36 @@ Serializer.defineSerializationUnit("bindings", function(object) { } }); -Deserializer.defineDeserializationUnit("bindings", function(object, bindings) { - var sourcePath; - for (sourcePath in bindings) { - Object.defineBinding(object, sourcePath, bindings[sourcePath]); +Deserializer.defineDeserializationUnit("bindings", function(object, bindings, deserializer) { + for (var sourcePath in bindings) { + var binding = bindings[sourcePath], + dotIndex; + + if (!("boundObject" in binding)) { + var targetPath = binding["<-"] || binding["->"] || binding["<->>"] || binding["<<->"]; + + if (targetPath[0] !== "@") { + logger.error("Invalid binding syntax '" + targetPath + "', should be in the form of '@label.path'."); + throw "Invalid binding syntax '" + targetPath + "'"; + } + if ("->" in binding || "<->>" in binding) { + binding.boundObject = object; + binding.boundObjectPropertyPath = sourcePath; + + dotIndex = targetPath.indexOf("."); + object = deserializer.getObjectByLabel(targetPath.slice(1, dotIndex)); + sourcePath = targetPath.slice(dotIndex+1); + } else { + dotIndex = targetPath.indexOf("."); + binding.boundObject = deserializer.getObjectByLabel(targetPath.slice(1, dotIndex)); + binding.boundObjectPropertyPath = targetPath.slice(dotIndex+1); + } + + if ("<-" in binding || "->" in binding) { + binding.oneway = true; + } + } + Object.defineBinding(object, sourcePath, binding); } }); -- cgit v1.2.3