/**
* @class Roo.bootstrap.panel.Nest
* @extends Roo.bootstrap.panel.Content
* @constructor
* Create a new Panel, that can contain a layout.Border.
*
*
* @param {Roo.BorderLayout} layout The layout for this panel
* @param {String/Object} config A string to set only the title or a config object
*/
Roo.bootstrap.panel.Nest = function(config)
{
// construct with only one argument..
/* FIXME - implement nicer consturctors
if (layout.layout) {
config = layout;
layout = config.layout;
delete config.layout;
}
if (layout.xtype && !layout.getEl) {
// then layout needs constructing..
layout = Roo.factory(layout, Roo);
}
*/
config.el = config.layout.getEl();
Roo.bootstrap.panel.Nest.superclass.constructor.call(this, config);
config.layout.monitorWindowResize = false; // turn off autosizing
this.layout = config.layout;
this.layout.getEl().addClass("roo-layout-nested-layout");
this.layout.parent = this;
};
Roo.extend(Roo.bootstrap.panel.Nest, Roo.bootstrap.panel.Content, {
setSize : function(width, height){
if(!this.ignoreResize(width, height)){
var size = this.adjustForComponents(width, height);
var el = this.layout.getEl();
if (size.height < 1) {
el.setWidth(size.width);
} else {
el.setSize(size.width, size.height);
}
var touch = el.dom.offsetWidth;
this.layout.layout();
// ie requires a double layout on the first pass
if(Roo.isIE && !this.initialized){
this.initialized = true;
this.layout.layout();
}
}
},
// activate all subpanels if not currently active..
setActiveState : function(active){
this.active = active;
this.setActiveClass(active);
if(!active){
this.fireEvent("deactivate", this);
return;
}
this.fireEvent("activate", this);
// not sure if this should happen before or after..
if (!this.layout) {
return; // should not happen..
}
var reg = false;
for (var r in this.layout.regions) {
reg = this.layout.getRegion(r);
if (reg.getActivePanel()) {
//reg.showPanel(reg.getActivePanel()); // force it to activate..
reg.setActivePanel(reg.getActivePanel());
continue;
}
if (!reg.panels.length) {
continue;
}
reg.showPanel(reg.getPanel(0));
}
},
/**
* Returns the nested BorderLayout for this panel
* @return {Roo.BorderLayout}
*/
getLayout : function(){
return this.layout;
},
/**
* Adds a xtype elements to the layout of the nested panel
* <pre><code>
panel.addxtype({
xtype : 'ContentPanel',
region: 'west',
items: [ .... ]
}
);
panel.addxtype({
xtype : 'NestedLayoutPanel',
region: 'west',
layout: {
center: { },
west: { }
},
items : [ ... list of content panels or nested layout panels.. ]
}
);
</code></pre>
* @param {Object} cfg Xtype definition of item to add.
*/
addxtype : function(cfg) {
return this.layout.addxtype(cfg);
}
});