*/
/**
- *
- * 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) {
'buildcomplete' : true,
});
-
+
Roo.XComponent.register(this);
- this.modules = [];
+ this.modules = false;
this.el = false; // where the layout goes..
* It's done this way to stay compatible with the Xtype system...
*/
items : false,
+
+
+
});
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.
parent : 'Pman.layout',
disabled : false, // or use a function..
})
- *
+
+ * * @param {Object} details about module
*/
register : function(obj) {
this.modules.push(obj);
toObject : function(str)
{
- if (typeof(str) == 'object') {
+ if (!str || typeof(str) == 'object') {
return str;
}
var ar = str.split('.');
var rt, o;
- rt = ar.unshift();
+ rt = ar.shift();
/** eval:var:o */
eval('if (typeof ' + rt + ' == "undefined"){ o = false;} o = ' + rt + ';');
if (o === false) {
*/
preBuild : function ()
{
- var modules = this.modules;
- this.modules = false;
- Roo.each(modules , function (obj)
+ Roo.each(this.modules , function (obj)
{
obj.parent = this.toObject(obj.parent);
this.topModule = obj;
return;
}
- obj.parent = toObject(obj.parent);
+
if (!obj.parent.modules) {
obj.parent.modules = new Roo.util.MixedCollection(false,
function(o) { return o.order + '' }
obj.parent.modules.add(obj);
}, this);
- }
+ },
/**
* make a list of modules to build.
// console.log(m.modKey);
mods.push(m);
- if (m.module.modules) {
- m.module.modules.keySort('ASC', cmp );
- m.module.modules.each(addMod);
+ if (m.modules) {
+ m.modules.keySort('ASC', cmp );
+ m.modules.each(addMod);
}
+ // not sure if this is used any more..
if (m.finalize) {
m.finalize.name = m.name + " (clean up) ";
mods.push(m.finalize);
}
this.topModule.modules.keySort('ASC', cmp );
this.topModule.modules.each(addMod);
- }
+ return mods;
+ },
/**
* Build the registered modules.
this.preBuild();
var mods = this.buildOrder();
-
+
//this.allmods = mods;
//console.log(mods);
//return;
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.unshift();
-
+ 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);
- 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);