aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/core/event
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/montage/core/event')
-rwxr-xr-xnode_modules/montage/core/event/action-event-listener.js4
-rwxr-xr-xnode_modules/montage/core/event/binding.js48
-rwxr-xr-xnode_modules/montage/core/event/event-manager.js14
3 files changed, 47 insertions, 19 deletions
diff --git a/node_modules/montage/core/event/action-event-listener.js b/node_modules/montage/core/event/action-event-listener.js
index bbe5baad..4fc75f64 100755
--- a/node_modules/montage/core/event/action-event-listener.js
+++ b/node_modules/montage/core/event/action-event-listener.js
@@ -66,9 +66,9 @@ var ActionEventListener = exports.ActionEventListener = Montage.create(Montage,
66/** 66/**
67 @private 67 @private
68*/ 68*/
69 serializeSelf: { 69 serializeProperties: {
70 value: function(serializer) { 70 value: function(serializer) {
71 serializer.setReference("handler", this.handler); 71 serializer.set("handler", this.handler, "reference");
72 serializer.set("action", this.action); 72 serializer.set("action", this.action);
73 } 73 }
74 } 74 }
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,
18 ChangeTypes = require("core/event/mutable-event").ChangeTypes, 18 ChangeTypes = require("core/event/mutable-event").ChangeTypes,
19 Serializer = require("core/serializer").Serializer, 19 Serializer = require("core/serializer").Serializer,
20 Deserializer = require("core/deserializer").Deserializer, 20 Deserializer = require("core/deserializer").Deserializer,
21 logger = require("core/logger").logger("binding");
21 defaultEventManager = require("core/event/event-manager").defaultEventManager, 22 defaultEventManager = require("core/event/event-manager").defaultEventManager,
22 AT_TARGET = 2, 23 AT_TARGET = 2,
23 UNDERSCORE = "_"; 24 UNDERSCORE = "_";
@@ -1184,11 +1185,14 @@ var BindingDescriptor = exports.BindingDescriptor = Montage.create(Montage, /**
1184 }, 1185 },
1185 1186
1186 serializeSelf: {value: function(serializer) { 1187 serializeSelf: {value: function(serializer) {
1187 serializer.setReference("boundObject", this.boundObject); 1188 var serialization = {};
1188 serializer.set("boundObjectPropertyPath", this.boundObjectPropertyPath); 1189
1189 serializer.set("oneway", this.oneway); 1190 serializer.addObjectReference(this.boundObject);
1190 serializer.set("deferred", this.deferred); 1191 serialization[this.oneway ? "<-" : "<<->"] = "@" + serializer.getObjectLabel(this.boundObject) + "." + this.boundObjectPropertyPath;
1191 serializer.set("converter", this.converter); 1192 serialization.deferred = this.deferred;
1193 serialization.converter = this.converter;
1194
1195 return serialization;
1192 }} 1196 }}
1193}); 1197});
1194 1198
@@ -1200,10 +1204,36 @@ Serializer.defineSerializationUnit("bindings", function(object) {
1200 } 1204 }
1201}); 1205});
1202 1206
1203Deserializer.defineDeserializationUnit("bindings", function(object, bindings) { 1207Deserializer.defineDeserializationUnit("bindings", function(object, bindings, deserializer) {
1204 var sourcePath; 1208 for (var sourcePath in bindings) {
1205 for (sourcePath in bindings) { 1209 var binding = bindings[sourcePath],
1206 Object.defineBinding(object, sourcePath, bindings[sourcePath]); 1210 dotIndex;
1211
1212 if (!("boundObject" in binding)) {
1213 var targetPath = binding["<-"] || binding["->"] || binding["<->>"] || binding["<<->"];
1214
1215 if (targetPath[0] !== "@") {
1216 logger.error("Invalid binding syntax '" + targetPath + "', should be in the form of '@label.path'.");
1217 throw "Invalid binding syntax '" + targetPath + "'";
1218 }
1219 if ("->" in binding || "<->>" in binding) {
1220 binding.boundObject = object;
1221 binding.boundObjectPropertyPath = sourcePath;
1222
1223 dotIndex = targetPath.indexOf(".");
1224 object = deserializer.getObjectByLabel(targetPath.slice(1, dotIndex));
1225 sourcePath = targetPath.slice(dotIndex+1);
1226 } else {
1227 dotIndex = targetPath.indexOf(".");
1228 binding.boundObject = deserializer.getObjectByLabel(targetPath.slice(1, dotIndex));
1229 binding.boundObjectPropertyPath = targetPath.slice(dotIndex+1);
1230 }
1231
1232 if ("<-" in binding || "->" in binding) {
1233 binding.oneway = true;
1234 }
1235 }
1236 Object.defineBinding(object, sourcePath, binding);
1207 } 1237 }
1208}); 1238});
1209 1239
diff --git a/node_modules/montage/core/event/event-manager.js b/node_modules/montage/core/event/event-manager.js
index bef8a67c..75272f85 100755
--- a/node_modules/montage/core/event/event-manager.js
+++ b/node_modules/montage/core/event/event-manager.js
@@ -103,13 +103,12 @@ var EventListenerDescriptor = Montage.create(Montage, {
103 } 103 }
104}); 104});
105 105
106Serializer.defineSerializationUnit("listeners", function(object) { 106Serializer.defineSerializationUnit("listeners", function(object, serializer) {
107 var eventManager = defaultEventManager, 107 var eventManager = defaultEventManager,
108 uuid = object.uuid, 108 uuid = object.uuid,
109 eventListenerDescriptors = [], 109 eventListenerDescriptors = [],
110 descriptors, 110 descriptors,
111 descriptor, 111 descriptor,
112 listenerDescriptor,
113 listener; 112 listener;
114 113
115 for (var type in eventManager.registeredEventListeners) { 114 for (var type in eventManager.registeredEventListeners) {
@@ -119,12 +118,11 @@ Serializer.defineSerializationUnit("listeners", function(object) {
119 for (var listenerUuid in descriptor.listeners) { 118 for (var listenerUuid in descriptor.listeners) {
120 listener = descriptor.listeners[listenerUuid]; 119 listener = descriptor.listeners[listenerUuid];
121 120
122 eventListenerDescriptor = EventListenerDescriptor.create(); 121 eventListenerDescriptors.push({
123 eventListenerDescriptor.type = type; 122 type: type,
124 eventListenerDescriptor.listener = listener.listener; 123 listener: serializer.addObjectReference(listener.listener),
125 eventListenerDescriptor.capture = listener.capture; 124 capture: listener.capture
126 125 });
127 eventListenerDescriptors.push(eventListenerDescriptor);
128 } 126 }
129 } 127 }
130 } 128 }