Author: jmorliaguet Date: Sun Feb 5 17:41:23 2006 New Revision: 2300 Modified: cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js Log:
- the registration is event-based, in the following order: 1. view 2. controller 3. model since: the "view" can refer to some "controller" the "view" can refer to some "model" 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 Feb 5 17:41:23 2006 @@ -101,9 +101,14 @@ notify: function(eventid, target) { var subscribers = CPSSkins.Subscribers[eventid]; $A(subscribers).each(function(e) { - if (e.target == target) { + var event_target = e.target; + if (event_target == target || event_target == null) { var handler = CPSSkins.getEventHandler(eventid, e.subscriber); - if (handler) handler(e); + if (handler) { + // set the target in case no target is specified in the subscription. + e.target = target; + handler(e); + } } }); }, @@ -143,7 +148,7 @@ }, parse: function(node) { - $A(["model", "controller", "view"]).each(function(type) { + $A(["view", "controller", "model"]).each(function(type) { var elements = node.getElementsByTagName("ins"); $A(elements).each(function(el, index) { @@ -185,7 +190,7 @@ case "controller": { var controller = new CPSSkins.Controller(el, def); CPSSkins.Controllers[name] = controller; - CPSSkins.notify("registered", controller); + CPSSkins.notify("registered controller " + def.id, controller); break; } @@ -193,7 +198,7 @@ var model = new CPSSkins.Model(el, def); model.id = index; CPSSkins.Models[name] = model; - CPSSkins.notify("registered", model); + CPSSkins.notify("registered model " + def.id, model); break; } @@ -208,18 +213,26 @@ var view = factory(def); view.id = index; - /* register observed models */ + /* register the observed model */ var model_id = def.model; if (model_id) { - var model = CPSSkins.getModelById(model_id); - view.observe(model); + var evt_id = "registered model " + model_id; + CPSSkins.registerEventHandler(evt_id, view, function(event) { + var model = event.target; + view.observe(model); + }); + CPSSkins.subscribe(evt_id, {'subscriber': view, 'target': null}); } /* register the controller */ var controller_id = def.controller || null; if (controller_id) { - var controller = CPSSkins.getControllerById(controller_id); - view.controller = controller; + var evt_id = "registered controller " + controller_id; + CPSSkins.registerEventHandler(evt_id, view, function(event) { + var controller = event.target; + view.controller = controller; + }); + CPSSkins.subscribe(evt_id, {'subscriber': view, 'target': null}); } /* insert the widget into the DOM */ -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins