Author: jmorliaguet
Date: Tue May  9 21:28:46 2006
New Revision: 3091

Modified:
   cpsskins/branches/paris-sprint-2006/lib/cpsskins/src/cpsskins.js

Log:

- unregister behaviour controllers



Modified: cpsskins/branches/paris-sprint-2006/lib/cpsskins/src/cpsskins.js
==============================================================================
--- cpsskins/branches/paris-sprint-2006/lib/cpsskins/src/cpsskins.js    
(original)
+++ cpsskins/branches/paris-sprint-2006/lib/cpsskins/src/cpsskins.js    Tue May 
 9 21:28:46 2006
@@ -532,6 +532,10 @@
 CPSSkins.BehaviourController = Class.create();
 CPSSkins.BehaviourController.prototype = Object.extend(new 
CPSSkins.Controller(), {
 
+  setup: function() {
+    this.handlers = {};
+  },
+
   register: function(view) {
     var controller = this;
     var rules = this.def.rules;
@@ -539,15 +543,17 @@
     var controller = this;
     var info = {'model': model, 'view': view, 'controller': controller};
 
+    var handlers = this.handlers;
     $H(rules).each(function(r) {
       var selector = $$(r.key);
-      if (selector) {
+      if (selector.length > 0) {
         $H(r.value).each(function(s) {
           var event_name = s.key;
           var action_id = s.value;
           var handler = CPSSkins.getAction(action_id);
+          handlers[action_id] = handler.bindAsEventListener(info)
           selector.each(function(el) {
-            Event.observe(el, event_name, handler.bindAsEventListener(info));
+            Event.observe(el, event_name, handler);
           });
         })
       }
@@ -555,6 +561,22 @@
   },
 
   unregister: function(view) {
+    var rules = this.def.rules;
+
+    var handlers = this.handlers;
+    $H(rules).each(function(r) {
+      var selector = $$(r.key);
+      if (selector.length > 0) {
+        $H(r.value).each(function(s) {
+          var event_name = s.key;
+          var action_id = s.value;
+          var handler = handlers[action_id];
+          selector.each(function(el) {
+            Event.stopObserving(el, event_name, handler);
+          });
+        })
+      }
+    })
   }
 
 });
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to