resources/Editors/Editor.Roo.LayoutDialog.bjs
[app.Builder.js] / resources / roo.builder.js
index ba25fb0..bf08085 100644 (file)
@@ -17,39 +17,46 @@ Builder  = {
 
 
   
-        saveHTML :  function( ) 
+    saveHTML :  function( ) 
        {
-            print("TRAVERSE DOM?");
+            //print("TRAVERSE DOM?");
             
             var dom = document.body;
-            print(dom);
+            //print(dom);
             var ret = '';
             //Roo.select('body > div',true).each(function(el) {
+            // if the tree is not ready yet?
+            
+            
             this.traverseDOMTree(function(s) { ret+=s; }, dom, 1);
-           alert("IPC:SAVEHTML:" + dom);
+               alert("IPC:SAVEHTML:" + ret);
             return ret;
         },
         
         
         traverseDOMTree : function(cb, currentElement, depth) {
-            if (!currentElement) {
+            if (!currentElement ) {
                 
                 return;
             }
-            if (currentElement.class_name.match(/roo-dynamic/)) {
+            //console.log(currentElement);
+            if (currentElement.className && currentElement.className.match(/roo-dynamic/)) {
                 return;
             }
             
             //Roo.log(currentElement);
             var j;
-            var nodeName = currentElement.node_name;
-            var tagName = currentElement.tag_name;
+            var nodeName = currentElement.nodeName;
+            var tagName = currentElement.tagName;
             
             if  (nodeName == '#text') {
-                cb(currentElement.node_value);
+                cb(currentElement.nodeValue);
                 return;
             
             }
+            if (nodeName.match(/^#/)) { // comments?
+                return;
+            }
              
             
             
@@ -58,8 +65,13 @@ Builder  = {
                 return;
             }
             if (nodeName != 'BODY') {
-                
-            
+                //Roo.log(currentElement);
+                if (currentElement.hasAttribute('flexy:include')) {
+
+
+                    cb( '<flexy:include src="'+currentElement.getAttribute('flexy:include')+'"></flexy:include>');
+                    return;
+                }
             
                 var i = 0;
               // Prints the node tagName, such as <A>, <IMG>, etc
@@ -78,7 +90,7 @@ Builder  = {
                     }
                     
                     
-                    cb("<"+currentElement.tag_name+ ( attr.length ? (' ' + attr.join(' ') ) : '') + ">");
+                    cb("<"+currentElement.tagName+ ( attr.length ? (' ' + attr.join(' ') ) : '') + ">");
                 } 
                 else {
                   cb("[unknown tag]");
@@ -86,17 +98,19 @@ Builder  = {
             } else {
                 tagName = false;
             }
+            
+            
             // Traverse the tree
             i = 0;
-            var currentElementChild = currentElement.child_nodes.item(i);
+            var currentElementChild = currentElement.childNodes.item(i);
             var allText = true;
             while (currentElementChild) {
                 // Formatting code (indent the tree so it looks nice on the screen)
                 
-                if  (currentElementChild.node_name == '#text') {
-                    cb(currentElementChild.node_value);
+                if  (currentElementChild.nodeName == '#text') {
+                    cb(currentElementChild.nodeValue);
                     i++;
-                    currentElementChild=currentElement.child_nodes.item(i);
+                    currentElementChild=currentElement.childNodes.item(i);
                     continue;
                 }   
                 allText = false;
@@ -110,7 +124,7 @@ Builder  = {
                 // Recursively traverse the tree structure of the child node
                 this.traverseDOMTree(cb, currentElementChild, depth+1);
                 i++;
-                currentElementChild=currentElement.child_nodes.item(i);
+                currentElementChild=currentElement.childNodes.item(i);
             }
             if (!allText) {
                     // The remaining code is mostly for formatting the tree
@@ -270,7 +284,7 @@ Builder  = {
        }
        id = ''+ id;
        var bid = id.length ? 'builder-' + id : '';
-       console.log('{ "hover-node" :  "' + bid + '"}');
+       //console.log('{ "hover-node" :  "' + bid + '"}');
        this.lastID = id;
     },
     clearBootstrap : function()
@@ -313,7 +327,12 @@ Builder  = {
             tree.el.attr('xtype', tree['xtype-bootstrap']);
         }
         
-        
+        if (typeof(tree['flexy:include']) != 'undefined') {
+            //Roo.log("add flexy:if");
+            tree.el.attr('flexy:include', tree['flexy:include']);
+        }
+        //Roo.log("Add xtype")
+        tree.el.attr('xtype', tree['|xns'] + '.' +  tree['xtype']);
         if (!tree.items || !tree.items.length) { return; }
         
         for (var i = 0; i < tree.items.length; i++){
@@ -327,6 +346,8 @@ Builder  = {
 Roo.onReady(function() { Builder.clearBootstrap(); });
 Roo.XComponent.on('buildcomplete', function() {
     Roo.log("xcomponent built!");
+    var m = Roo.XComponent.modules;
+    Builder.applyFlexy(m[m.length-1].el);
     
-    Builder.applyFlexy(Roo.XComponent.modules[0].el);
+       Builder.saveHTML.defer(100, Builder);
 });
\ No newline at end of file