Roo/Template.js
[roojs1] / Roo / XComponent.js
index fab71da..99b60cd 100644 (file)
@@ -4,14 +4,7 @@
  */
  
 /**
- * 
- * This needs some more thought..
- * 
- * 
- * 
  * @class Roo.XComponent
- * @extends Roo.data.Observable
- * 
  * A delayed Element creator...
  * 
  * Mypart.xyx = new Roo.XComponent({
     region : 'xxxx'
     disabled : function() {} 
      
-    items : [  // technically only one component..
+    tree : function() { // return an tree of xtype declared components
+        var MODULE = this;
+        return 
         {
             xtype : 'NestedLayoutPanel',
             // technicall
         }
      ]
  *})
- * 
- * 
+ * @extends Roo.util.Observable
+ * @constructor
+ * @param cfg {Object} configuration of component
  * 
  */
 Roo.XComponent = function(cfg) {
@@ -50,7 +46,7 @@ Roo.XComponent = function(cfg) {
         'buildcomplete' : true,
         
     });
-
+    
     Roo.XComponent.register(this);
     this.modules = false;
     this.el = false; // where the layout goes..
@@ -108,6 +104,9 @@ Roo.extend(Roo.XComponent, Roo.util.Observable, {
      * It's done this way to stay compatible with the Xtype system...
      */
     items : false,
+     
+     
+    
 });
 
 Roo.apply(Roo.XComponent, {
@@ -138,7 +137,6 @@ Roo.apply(Roo.XComponent, {
     
     /**
      * Register components to be built later.
-     * @param {Object} details about module
      *
      * This solves the following issues
      * - Building is not done on page load, but after an authentication process has occured.
@@ -155,7 +153,8 @@ Roo.apply(Roo.XComponent, {
           parent : 'Pman.layout',
           disabled : false,  // or use a function..
         })
-     * 
+     
+     * * @param {Object} details about module
      */
     register : function(obj) {
         this.modules.push(obj);
@@ -269,7 +268,7 @@ Roo.apply(Roo.XComponent, {
         
         this.preBuild();
         var mods = this.buildOrder();
-        
+      
         //this.allmods = mods;
         //console.log(mods);
         //return;
@@ -290,18 +289,19 @@ Roo.apply(Roo.XComponent, {
            modal: false
           
         });
-        var total = mods.length();
+        var total = mods.length;
         
         var _this = this;
         var progressRun = function() {
-            if (mods.length) {
+            if (!mods.length) {
+                console.log('hide?');
                 Roo.MessageBox.hide();
                 _this.topModule.fireEvent('buildcomplete', _this.topModule);
                 return;    
             }
             
             var m = mods.shift();
-            
+            console.log(m);
             if (typeof(m) == 'function') { // not sure if this is supported any more..
                 m.call(this);
                 return progressRun.defer(10, _this);
@@ -315,19 +315,43 @@ Roo.apply(Roo.XComponent, {
             
          
             
-            var disabled = (typeof(m.module.disabled) == 'function') ?
-                m.module.disabled.call(m.module.disabled) : m.module.disabled;    
+            var disabled = (typeof(m.disabled) == 'function') ?
+                m.disabled.call(m.module.disabled) : m.disabled;    
             
             
             if (disabled) {
                 return progressRun(); // we do not update the display!
             }
             
-            m.el = m.parent.el.addxtype(m.items[0]);
+            if (!m.parent) {
+                // it's a top level one..
+                var layoutbase = new Ext.BorderLayout(document.body, {
+               
+                    center: {
+                         titlebar: false,
+                         autoScroll:false,
+                         closeOnTab: true,
+                         tabPosition: 'top',
+                         //resizeTabs: true,
+                         alwaysShowTabs: true,
+                         minTabWidth: 140
+                    }
+                });
+                var tree = m.tree();
+                tree.region = 'center';
+                m.el = layoutbase.addxtype(tree);
+                m.panel = m.el;
+                m.layout = m.panel.layout;    
+                return progressRun.defer(10, _this);
+            }
+            
+            var tree = m.tree();
+            tree.region = tree.region || m.region;
+            m.el = m.parent.el.addxtype(tree);
             m.fireEvent('built', m);
-            m.panel = this.el;
+            m.panel = m.el;
             m.layout = m.panel.layout;    
-             
+            progressRun.defer(10, _this); 
             
         }
         progressRun.defer(1, _this);