Author: jmorliaguet Date: Sun Jan 1 19:02:34 2006 New Revision: 2108 Modified: cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_contextualmenu_test.html Log:
- menus and submenus are now correctly nested using a DOM approach to traverse the tree recursively. 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 Jan 1 19:02:34 2006 @@ -191,8 +191,7 @@ node.setAttribute(attr[0], attr[1]) }); node.innerHTML = options.content || ""; - container.appendChild(node); - return node; + return container.appendChild(node); }, setOpacity: function(element, opacity) { @@ -349,13 +348,19 @@ v.parentNode.removeChild(v); }); + this._drawNode(widget, view); + Element.show(widget); + }, + + _drawNode: function(container, view) { var data = Canvas.getNodeData(this.selected); - var tags = view.getElementsByTagName("*"); + var tags = view.childNodes; - var parent = widget; for (var i=0;i<tags.length;i++) { var tag = tags[i]; + if (tag.nodeType != 1) continue; + var visible = tag.getAttribute("visible"); if (data && visible) { if (!data[visible]) continue; @@ -364,7 +369,7 @@ switch (tag.tagName.toLowerCase()) { case "item": { - Canvas.addNode(widget, { + Canvas.addNode(container, { tag: "a", content: tag.getAttribute("label"), style: {display: "block"}, @@ -381,7 +386,7 @@ var choices = tag.getAttribute("choices"); var items = data[choices] || []; for (var j=0;j<items.length;j++) { - Canvas.addNode(parent, { + Canvas.addNode(container, { tag: "a", content: items[j].label, style: {display: "block"}, @@ -397,7 +402,7 @@ }; case "submenu": { - var item = Canvas.addNode(parent, { + var item = Canvas.addNode(container, { tag: "a", content: tag.getAttribute("label"), style: {display: "block"}, @@ -410,8 +415,6 @@ style: {left:this.submenuLeft + "px", display: "none"} }); - parent = submenu; - var mouseOverEvent = function(e) { var menu = this._getSubmenu(e); if (menu) Element.show(menu); @@ -426,13 +429,13 @@ }.bindAsEventListener(this); Event.observe(item, "mouseout", mouseOutEvent); + this._drawNode(submenu, tag); + break; }; } } - - Element.show(this.widget); } } Modified: cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_contextualmenu_test.html ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_contextualmenu_test.html (original) +++ cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_contextualmenu_test.html Sun Jan 1 19:02:34 2006 @@ -29,9 +29,11 @@ <item label="Edit" action="edit" visible="editable"></item> <item label="Copy" action="copy"></item> <item label="Paste" action="paste" visible="editable"></item> + <submenu label="Format" visible="formattable"> <items action="format" choices="formats"></items> </submenu> + <item label="Delete" action="delete" visible="editable" confirm="Deleting, are you sure?"></item> </cpsskins:contextmenu> -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins