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