From: Alan Knowles Date: Tue, 4 Jul 2017 07:07:16 +0000 (+0800) Subject: Roo/bootstrap/panel/Nest.js X-Git-Url: http://git.roojs.org/?a=commitdiff_plain;h=95c8bf4566c93375f42f6e91106bfa0b01663045;p=roojs1 Roo/bootstrap/panel/Nest.js --- diff --git a/Roo/bootstrap/panel/Nest.js b/Roo/bootstrap/panel/Nest.js index e69de29bb2..689afb47c1 100644 --- a/Roo/bootstrap/panel/Nest.js +++ b/Roo/bootstrap/panel/Nest.js @@ -0,0 +1,125 @@ + +/** + * @class Roo.boostrap.panel.Nest + * @extends Roo.ContentPanel + * @constructor + * Create a new NestedLayoutPanel. + * + * + * @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.NestedLayoutPanel = function(layout, 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); + } + */ + + + Roo.NestedLayoutPanel.superclass.constructor.call(this, layout.getEl(), config); + + layout.monitorWindowResize = false; // turn off autosizing + this.layout = layout; + this.layout.getEl().addClass("x-layout-nested-layout"); + + + + +}; + +Roo.extend(Roo.NestedLayoutPanel, Roo.ContentPanel, { + + setSize : function(width, height){ + if(!this.ignoreResize(width, height)){ + var size = this.adjustForComponents(width, height); + var el = this.layout.getEl(); + 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; + 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 + *

+
+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.. ]
+   }
+);
+
+ * @param {Object} cfg Xtype definition of item to add. + */ + addxtype : function(cfg) { + return this.layout.addxtype(cfg); + + } +}); \ No newline at end of file