Author: jmorliaguet
Date: Sat Mar 11 10:48:11 2006
New Revision: 2576

Modified:
   cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js
Log:

- simplifications: the controllers associated to a view get registered when
  the view/widget is (re)displayed.



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 Sat Mar 11 
10:48:11 2006
@@ -504,33 +504,26 @@
 CPSSkins.BehaviourController.prototype = Object.extend(new 
CPSSkins.Controller(), {
 
   register: function(view) {
-
     var controller = this;
     var rules = this.def.rules;
+    var model = view.model;
+    var controller = this;
+    var info = {'model': model, 'view': view, 'controller': controller};
 
-    CPSSkins.registerEventHandler("displayed", controller, function(event) {
-      var view = event.publisher;
-      var model = view.model;
-      var controller = event.controller;
-      var info = {'model': model, 'view': view, 'controller': controller};
-      $H(rules).each(function(r) {
-        var selector = $$(r.key);
-        if (selector) {
-          $H(r.value).each(function(s) {
-            var event_name = s.key;
-            var handler_name = s.value;
-            var handler = CPSSkins._handlers[handler_name];
-            selector.each(function(el) {
-              Event.observe(el, event_name,
-                handler.bindAsEventListener(info));
-            });
-          })
-        }
-      })
-    });
-
-    CPSSkins.subscribe("displayed", {'subscriber': controller,
-                                     'publisher': view});
+    $H(rules).each(function(r) {
+      var selector = $$(r.key);
+      if (selector) {
+        $H(r.value).each(function(s) {
+          var event_name = s.key;
+          var handler_name = s.value;
+          var handler = CPSSkins._handlers[handler_name];
+          selector.each(function(el) {
+            Event.observe(el, event_name,
+              handler.bindAsEventListener(info));
+          });
+        })
+      }
+    })
   }
 
 });
@@ -567,7 +560,7 @@
 CPSSkins.FocusObserver = Class.create();
 CPSSkins.FocusObserver.prototype = Object.extend(new CPSSkins.Controller(), {
 
-  register: function(view) {
+  setup: function() {
 
     var controller = this;
 
@@ -1461,6 +1454,12 @@
     this.def = def;
 
     this.setup();
+
+    CPSSkins.registerEventHandler("displayed", this, function(event) {
+      var view = event.subscriber;
+      view.attachControllers();
+    });
+    CPSSkins.subscribe("displayed", {'subscriber': this});
   },
 
   hash: function() {
@@ -1493,6 +1492,15 @@
     return this.def.controllers || []
   },
 
+  attachControllers: function() {
+    var view = this;
+    var controllers_id = view.getControllers();
+    controllers_id.each(function(c) {
+    var controller = CPSSkins.getControllerById(c);
+      if (controller) { controller.register(view); }
+    });
+  },
+
   observe: function(model) {
     model.addObserver(this);
     this.model = model;
@@ -1626,7 +1634,7 @@
     var widget = CPSSkins.Canvas.createNode({
       tag: "div",
       classes: "tooltip",
-      style: {position:"absolute", display:"none"}
+      style: {position: "absolute", display: "none"}
     });
     return new CPSSkins.Tooltip(widget, def);
   },
@@ -1663,11 +1671,6 @@
       CPSSkins.registerEventHandler("loaded template", view, function(event) {
         var view = event.subscriber;
         view.reload();
-        var controllers_id = view.getControllers();
-        controllers_id.each(function(c) {
-          var controller = CPSSkins.getControllerById(c);
-          if (controller) { controller.register(view); }
-        });
         CPSSkins.unsubscribe("loaded template", {'scope': view.hash()});
       });
 
@@ -1699,15 +1702,6 @@
 CPSSkins.Panel.prototype = Object.extend(new CPSSkins.View(), {
 
   setup: function() {
-    CPSSkins.registerEventHandler("panel loaded", this, function(event) {
-      var view = event.subscriber;
-      var controllers_id = view.getControllers();
-      controllers_id.each(function(c) {
-        var controller = CPSSkins.getControllerById(c);
-        if (controller) { controller.register(view); }
-      });
-    });
-    CPSSkins.subscribe("panel loaded", {'subscriber': this});
   },
 
   inspect: function() {
@@ -1737,7 +1731,7 @@
       var options = {
         onComplete: function() {
           CPSSkins._parse(widget);
-          CPSSkins.notify("panel loaded", {'subscriber': view});
+          CPSSkins.notify("displayed", {'publisher': view});
         }
       };
 
@@ -2106,7 +2100,7 @@
   },
 
   prepare: function() {
-    this.widget.moveTo({'x': this.mouseY + 20, 'y': this.mouseX});
+    this.widget.moveTo({'x': this.mouseX, 'y': this.mouseY +10});
     this.widget.fitInsideScreen();
   },
 
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to