Author: jmorliaguet Date: Sun Mar 5 21:02:49 2006 New Revision: 2532 Modified: cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js Log:
- added an event scope so that the same event id can be used for the same types of actions. Modified: cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js (original) +++ cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js Sun Mar 5 21:02:49 2006 @@ -116,6 +116,9 @@ } if (this._subscribers[eventid].findAll(function(e) { if (event == undefined) return true; + if (event.scope != undefined) { + if (event.scope != e.scope) return false; + } return (CPSSkins.compare(event.subscriber, e.subscriber) && CPSSkins.compare(event.publisher, e.publisher)) }).length == 0) { @@ -128,6 +131,9 @@ if (!(eventid in subscribers)) { return; } subscribers[eventid] = subscribers[eventid].reject(function(e) { if (event == undefined) return true; + if (event.scope != undefined) { + if (event.scope != e.scope) return false; + } return (CPSSkins.compare(event.subscriber, e.subscriber) && CPSSkins.compare(event.publisher, e.publisher)) }); @@ -139,6 +145,9 @@ var publisher = event.publisher; (subscribers[eventid] || []).findAll(function(e) { if (event == undefined) return true; + if (event.scope != undefined) { + if (event.scope != e.scope) return false; + } return (CPSSkins.compare(event.subscriber, e.subscriber) && CPSSkins.compare(event.publisher, e.publisher)) }).each(function(e) { @@ -267,7 +276,7 @@ case "model": { var model = new CPSSkins.Model(node, def); this._models[id] = model; - CPSSkins.notify("registered model " + id, {'publisher': model}); + CPSSkins.notify("registered model", {'publisher': model, 'scope': id}); break; } @@ -298,13 +307,18 @@ /* register the observed model */ var model_id = def.model; if (model_id) { - var evt_id = "registered model " + model_id; - CPSSkins.registerEventHandler(evt_id, view, function(event) { + CPSSkins.registerEventHandler("registered model", view, + function(event) { var model = event.publisher; + var view = event.subscriber; view.observe(model); - CPSSkins.unsubscribe(evt_id); + CPSSkins.unsubscribe("registered model", + {'scope': model.def.id} + ); }); - CPSSkins.subscribe(evt_id, {'subscriber': view}); + CPSSkins.subscribe("registered model", + {'subscriber': view, 'scope': model_id} + ); } /* register the controllers */ -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins