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

Reply via email to