Author: jmorliaguet
Date: Mon Jan  2 15:01:48 2006
New Revision: 2116

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

- simpler handling of submenu events (mouseout is not needed)

- renamed CPSSkins.Effect as CPSSkins.Scheduler



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 Mon Jan  2 
15:01:48 2006
@@ -208,8 +208,8 @@
 });
 
 
-CPSSkins.Effect = Class.create();
-CPSSkins.Effect.prototype = {
+CPSSkins.Scheduler = Class.create();
+CPSSkins.Scheduler.prototype = {
 
   initialize: function(element, options) {
     this.element = $(element);
@@ -326,10 +326,9 @@
     }
   },
 
-  _getSubmenu: function(e) {
-    var start = Event.element(e);
-    if (!start) return null;
-    var nodes = start.childNodes;
+  _getSubmenu: function(element) {
+    if (!element) return null;
+    var nodes = element.childNodes;
     for (var i=0;i<nodes.length;i++) {
       var node = nodes[i]; 
       if (node.nodeType != 1) continue;
@@ -363,9 +362,9 @@
       v.parentNode.removeChild(v);
     });
 
-    this._renderNode(widget, view);
+    this._renderFragment(widget, view);
 
-    new CPSSkins.Effect(widget, {
+    new CPSSkins.Scheduler(widget, {
       action: function(value) {
         Canvas.setOpacity(widget, value);
         },
@@ -376,7 +375,7 @@
 
   },
 
-  _renderNode: function(container, fragment) {
+  _renderFragment: function(container, fragment) {
     var data = Canvas.getNodeData(this.selected);
     var tags = fragment.childNodes;
 
@@ -459,36 +458,23 @@
           });
 
           var mouseOverEvent = function(e) {
-            var menu = this._getSubmenu(e);
+            var here = Event.element(e);
+            var menu = this._getSubmenu(here);
             if (!menu) return;
-            new CPSSkins.Effect(menu, {
-              action: function(value) {
-                Canvas.setOpacity(menu, value);
-              },
-              onComplete: function() {
-                Element.show(menu);
-              }
-            });
-          }.bindAsEventListener(this);
-          Event.observe(item, "mouseover", mouseOverEvent);
 
-          var mouseOutEvent = function(e) {
-            var menu = this._getSubmenu(e);
-            if (!menu) return;
-            if (!Position.within(menu, Event.pointerX(e), Event.pointerY(e))) {
-              new CPSSkins.Effect(menu, {
-                action: function(value) {
-                  Canvas.setOpacity(menu, 1-value);
-                },
-                onComplete: function() {
-                  Element.hide(menu);
-                }
-              });
+            var siblings = here.parentNode.childNodes;
+            for (var i=0;i<siblings.length;i++) {
+              var s = siblings[i];
+              if (s.nodeType != 1) continue;
+              var sm = this._getSubmenu(s);
+              if (sm) Element.hide(sm);
             }
+            Element.show(menu);
           }.bindAsEventListener(this);
-          Event.observe(item, "mouseout", mouseOutEvent);
 
-          this._renderNode(submenu, tag);
+          Event.observe(item, "mouseover", mouseOverEvent);
+
+          this._renderFragment(submenu, tag);
 
           break;
         };
@@ -541,7 +527,7 @@
       this.effect.stop();
     }
 
-    this.effect = new CPSSkins.Effect(widget, {
+    this.effect = new CPSSkins.Scheduler(widget, {
       delay: this.options.showdelay,
       action: function(value) {
         Canvas.setOpacity(widget, value);
@@ -561,7 +547,7 @@
       this.effect.stop();
     }
 
-    this.effect = new CPSSkins.Effect(widget, {
+    this.effect = new CPSSkins.Scheduler(widget, {
       delay: this.options.hidedelay,
       action: function(value) {
         Canvas.setOpacity(widget, 1-value);
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to