X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Roo%2FBorderLayout.js;h=aeda210f7c200362e509c851de83886ab41bfa94;hb=0b69a11b1055a6d3a3fd0719bdd58b5a235de0e4;hp=3595014b8aa8c53ad734a25d093218d7f827fbe6;hpb=c6f876dd3c8319a141523b06a76b43fcc5c529a6;p=roojs1 diff --git a/Roo/BorderLayout.js b/Roo/BorderLayout.js index 3595014b8a..aeda210f7c 100644 --- a/Roo/BorderLayout.js +++ b/Roo/BorderLayout.js @@ -122,7 +122,9 @@ Roo.extend(Roo.BorderLayout, Roo.LayoutManager, { * Performs a layout update. */ layout : function(){ - if(this.updating) return; + if(this.updating) { + return; + } var size = this.getViewSize(); var w = size.width; var h = size.height; @@ -372,10 +374,18 @@ layout.addxtype({ { // basically accepts a pannel... // can accept a layout region..!?!? + //Roo.log('Roo.BorderLayout add ' + cfg.xtype) + if (!cfg.xtype.match(/Panel$/)) { return false; } var ret = false; + + if (typeof(cfg.region) == 'undefined') { + Roo.log("Failed to add Panel, region was not set"); + Roo.log(cfg); + return false; + } var region = cfg.region; delete cfg.region; @@ -385,14 +395,20 @@ layout.addxtype({ xitems = cfg.items; delete cfg.items; } - + var nb = false; switch(cfg.xtype) { case 'ContentPanel': // ContentPanel (el, cfg) - - var el = this.el.createChild(); - ret = new Roo[cfg.xtype](el, cfg); // new panel!!!!! + case 'ScrollPanel': // ContentPanel (el, cfg) + case 'ViewPanel': + if(cfg.autoCreate) { + ret = new Roo[cfg.xtype](cfg); // new panel!!!!! + } else { + var el = this.el.createChild(); + ret = new Roo[cfg.xtype](el, cfg); // new panel!!!!! + } + this.add(region, ret); break; @@ -421,7 +437,7 @@ layout.addxtype({ ret = new Roo[cfg.xtype](layout, cfg); // new panel!!!!! //console.log('adding nested layout panel ' + cfg.toSource()); this.add(region, ret); - + nb = {}; /// find first... break; case 'GridPanel': @@ -430,6 +446,8 @@ layout.addxtype({ //var el = this.getRegion(region).el.createChild(); var el = this.el.createChild(); + // create the grid first... + var grid = new Roo.grid[cfg.grid.xtype](el, cfg.grid); delete cfg.grid; if (region == 'center' && this.active ) { @@ -449,21 +467,58 @@ layout.addxtype({ } break; - + + - default: - alert("Can not add '" + cfg.xtype + "' to BorderLayout"); - return; + + default: + if (typeof(Roo[cfg.xtype]) != 'undefined') { + + ret = new Roo[cfg.xtype](cfg); // new panel!!!!! + this.add(region, ret); + } else { + + alert("Can not add '" + cfg.xtype + "' to BorderLayout"); + return null; + } + // GridPanel (grid, cfg) } this.beginUpdate(); // add children.. + var region = ''; + var abn = {}; Roo.each(xitems, function(i) { - ret.addxtype(i); + region = nb && i.region ? i.region : false; + + var add = ret.addxtype(i); + + if (region) { + nb[region] = nb[region] == undefined ? 0 : nb[region]+1; + if (!i.background) { + abn[region] = nb[region] ; + } + } + }); this.endUpdate(); + + // make the last non-background panel active.. + //if (nb) { Roo.log(abn); } + if (nb) { + + for(var r in abn) { + region = this.getRegion(r); + if (region) { + // tried using nb[r], but it does not work.. + + region.showPanel(abn[r]); + + } + } + } return ret; }