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

Reply via email to