Roo/Template.js
[roojs1] / Roo / Document.js
index 70f430d..0197331 100644 (file)
@@ -7,8 +7,6 @@
  * 
  * This needs some more thought..
  * 
- *
- * 
  * 
  * 
  * @class Roo.XComponent
@@ -41,10 +39,16 @@ Roo.XComponent = function(cfg) {
         /**
             * @event built
             * Fires when this the componnt is built
-            * @param {Button} this
-            * @param {EventObject} e The click event
+            * @param {Roo.XComponent} c the component
             */
-        'built' : true
+        'built' : true,
+        /**
+            * @event buildcomplete
+            * Fires on the top level element when all elements have been built
+            * @param {Roo.XComponent} c the top level component.
+         */
+        'buildcomplete' : true,
+        
     });
 
     Roo.XComponent.register(this);
@@ -285,41 +289,43 @@ Roo.apply(Roo.XComponent,
            modal: false
           
         });
-        var n = -1;
+        var total = mods.length();
+        
         var _this = this;
         var progressRun = function() {
-            n++;
-            if (n >= mods.length) {
+            if (mods.length) {
                 Roo.MessageBox.hide();
-                _this.topModule.fireEvent('built', _this.topModule);
-                return;
+                _this.topModule.fireEvent('buildcomplete', _this.topModule);
+                return;    
             }
             
-            var m = mods[n];
+            var m = mods.unshift();
             
+            if (typeof(m) == 'function') { // not sure if this is supported any more..
+                m.call(this);
+                return progressRun.defer(10, _this);
+            } 
             
             Roo.MessageBox.updateProgress(
-                (n+1)/mods.length,  "Building Interface " + (n+1) + 
-                    " of " + mods.length + 
+                (total  - mods.length)/total,  "Building Interface " + (total  - mods.length) + 
+                    " of " + total + 
                     (m.name ? (' - ' + m.name) : '')
                     );
             
-            if (typeof(m) == 'function') {
-                m.call(this);
-                progressRun.defer(10, _this);    
-                return;
-            } 
+         
+            
             var disabled = (typeof(m.module.disabled) == 'function') ?
-                m.module.disabled.call(m.module.disabled) : m.module.disabled;
-                
+                m.module.disabled.call(m.module.disabled) : m.module.disabled;    
             }
             
-            if (m.parent.layout && !disabled) {
-                // modules have to support a  'add method'
-                // should we just move that code into here..
-                m.module.add(m.parent.layout, m.region);    
+            if (disabled) {
+                return progressRun(); // we do not update the display!
             }
-                 
+            
+            m.el = m.parent.el.addxtype(m.items[0]);
+            m.fireEvent('built', m);
+            m.panel = this.el;
+            m.layout = m.panel.layout;    
              
             
         }