?? layout-debug.js
字號(hào):
/*
* Ext JS Library 1.1 RC 1
* Copyright(c) 2006-2007, Ext JS, LLC.
* licensing@extjs.com
*
* http://www.extjs.com/license
*/
Ext.LayoutManager = function(container, config){
Ext.LayoutManager.superclass.constructor.call(this);
this.el = Ext.get(container);
if(this.el.dom == document.body && Ext.isIE && !config.allowScroll){
document.body.scroll = "no";
}else if(this.el.dom != document.body && this.el.getStyle('position') == 'static'){
this.el.position('relative');
}
this.id = this.el.id;
this.el.addClass("x-layout-container");
this.monitorWindowResize = true;
this.regions = {};
this.addEvents({
"layout" : true,
"regionresized" : true,
"regioncollapsed" : true,
"regionexpanded" : true
});
this.updating = false;
Ext.EventManager.onWindowResize(this.onWindowResize, this, true);
};
Ext.extend(Ext.LayoutManager, Ext.util.Observable, {
isUpdating : function(){
return this.updating;
},
beginUpdate : function(){
this.updating = true;
},
endUpdate : function(noLayout){
this.updating = false;
if(!noLayout){
this.layout();
}
},
layout: function(){
},
onRegionResized : function(region, newSize){
this.fireEvent("regionresized", region, newSize);
this.layout();
},
onRegionCollapsed : function(region){
this.fireEvent("regioncollapsed", region);
},
onRegionExpanded : function(region){
this.fireEvent("regionexpanded", region);
},
getViewSize : function(){
var size;
if(this.el.dom != document.body){
size = this.el.getSize();
}else{
size = {width: Ext.lib.Dom.getViewWidth(), height: Ext.lib.Dom.getViewHeight()};
}
size.width -= this.el.getBorderWidth("lr")-this.el.getPadding("lr");
size.height -= this.el.getBorderWidth("tb")-this.el.getPadding("tb");
return size;
},
getEl : function(){
return this.el;
},
getRegion : function(target){
return this.regions[target.toLowerCase()];
},
onWindowResize : function(){
if(this.monitorWindowResize){
this.layout();
}
}
});
Ext.BorderLayout = function(container, config){
config = config || {};
Ext.BorderLayout.superclass.constructor.call(this, container, config);
this.factory = config.factory || Ext.BorderLayout.RegionFactory;
for(var i = 0, len = this.factory.validRegions.length; i < len; i++) {
var target = this.factory.validRegions[i];
if(config[target]){
this.addRegion(target, config[target]);
}
}
};
Ext.extend(Ext.BorderLayout, Ext.LayoutManager, {
addRegion : function(target, config){
if(!this.regions[target]){
var r = this.factory.create(target, this, config);
this.bindRegion(target, r);
}
return this.regions[target];
},
bindRegion : function(name, r){
this.regions[name] = r;
r.on("visibilitychange", this.layout, this);
r.on("paneladded", this.layout, this);
r.on("panelremoved", this.layout, this);
r.on("invalidated", this.layout, this);
r.on("resized", this.onRegionResized, this);
r.on("collapsed", this.onRegionCollapsed, this);
r.on("expanded", this.onRegionExpanded, this);
},
layout : function(){
if(this.updating) return;
var size = this.getViewSize();
var w = size.width, h = size.height;
var centerW = w, centerH = h, centerY = 0, centerX = 0;
var rs = this.regions;
var n = rs["north"], s = rs["south"], west = rs["west"], e = rs["east"], c = rs["center"];
if(n && n.isVisible()){
var b = n.getBox();
var m = n.getMargins();
b.width = w - (m.left+m.right);
b.x = m.left;
b.y = m.top;
centerY = b.height + b.y + m.bottom;
centerH -= centerY;
n.updateBox(this.safeBox(b));
}
if(s && s.isVisible()){
var b = s.getBox();
var m = s.getMargins();
b.width = w - (m.left+m.right);
b.x = m.left;
var totalHeight = (b.height + m.top + m.bottom);
b.y = h - totalHeight + m.top;
centerH -= totalHeight;
s.updateBox(this.safeBox(b));
}
if(west && west.isVisible()){
var b = west.getBox();
var m = west.getMargins();
b.height = centerH - (m.top+m.bottom);
b.x = m.left;
b.y = centerY + m.top;
var totalWidth = (b.width + m.left + m.right);
centerX += totalWidth;
centerW -= totalWidth;
west.updateBox(this.safeBox(b));
}
if(e && e.isVisible()){
var b = e.getBox();
var m = e.getMargins();
b.height = centerH - (m.top+m.bottom);
var totalWidth = (b.width + m.left + m.right);
b.x = w - totalWidth + m.left;
b.y = centerY + m.top;
centerW -= totalWidth;
e.updateBox(this.safeBox(b));
}
if(c){
var m = c.getMargins();
var centerBox = {
x: centerX + m.left,
y: centerY + m.top,
width: centerW - (m.left+m.right),
height: centerH - (m.top+m.bottom)
};
c.updateBox(this.safeBox(centerBox));
}
this.el.repaint();
this.fireEvent("layout", this);
},
safeBox : function(box){
box.width = Math.max(0, box.width);
box.height = Math.max(0, box.height);
return box;
},
add : function(target, panel){
target = target.toLowerCase();
return this.regions[target].add(panel);
},
remove : function(target, panel){
target = target.toLowerCase();
return this.regions[target].remove(panel);
},
findPanel : function(panelId){
var rs = this.regions;
for(var target in rs){
if(typeof rs[target] != "function"){
var p = rs[target].getPanel(panelId);
if(p){
return p;
}
}
}
return null;
},
showPanel : function(panelId) {
var rs = this.regions;
for(var target in rs){
var r = rs[target];
if(typeof r != "function"){
if(r.hasPanel(panelId)){
return r.showPanel(panelId);
}
}
}
return null;
},
restoreState : function(provider){
if(!provider){
provider = Ext.state.Manager;
}
var sm = new Ext.LayoutStateManager();
sm.init(this, provider);
},
batchAdd : function(regions){
this.beginUpdate();
for(var rname in regions){
var lr = this.regions[rname];
if(lr){
this.addTypedPanels(lr, regions[rname]);
}
}
this.endUpdate();
},
addTypedPanels : function(lr, ps){
if(typeof ps == 'string'){
lr.add(new Ext.ContentPanel(ps));
}
else if(ps instanceof Array){
for(var i =0, len = ps.length; i < len; i++){
this.addTypedPanels(lr, ps[i]);
}
}
else if(!ps.events){ var el = ps.el;
delete ps.el; lr.add(new Ext.ContentPanel(el || Ext.id(), ps));
}
else { lr.add(ps);
}
}
});
Ext.BorderLayout.create = function(config, targetEl){
var layout = new Ext.BorderLayout(targetEl || document.body, config);
layout.beginUpdate();
var regions = Ext.BorderLayout.RegionFactory.validRegions;
for(var j = 0, jlen = regions.length; j < jlen; j++){
var lr = regions[j];
if(layout.regions[lr] && config[lr].panels){
var r = layout.regions[lr];
var ps = config[lr].panels;
layout.addTypedPanels(r, ps);
}
}
layout.endUpdate();
return layout;
};
Ext.BorderLayout.RegionFactory = {
validRegions : ["north","south","east","west","center"],
create : function(target, mgr, config){
target = target.toLowerCase();
if(config.lightweight || config.basic){
return new Ext.BasicLayoutRegion(mgr, config, target);
}
switch(target){
case "north":
return new Ext.NorthLayoutRegion(mgr, config);
case "south":
return new Ext.SouthLayoutRegion(mgr, config);
case "east":
return new Ext.EastLayoutRegion(mgr, config);
case "west":
return new Ext.WestLayoutRegion(mgr, config);
case "center":
return new Ext.CenterLayoutRegion(mgr, config);
}
throw 'Layout region "'+target+'" not supported.';
}
};
Ext.BasicLayoutRegion = function(mgr, config, pos, skipConfig){
this.mgr = mgr;
this.position = pos;
this.events = {
"beforeremove" : true,
"invalidated" : true,
"visibilitychange" : true,
"paneladded" : true,
"panelremoved" : true,
"collapsed" : true,
"expanded" : true,
"slideshow" : true,
"slidehide" : true,
"panelactivated" : true,
"resized" : true
};
this.panels = new Ext.util.MixedCollection();
this.panels.getKey = this.getPanelId.createDelegate(this);
this.box = null;
this.activePanel = null;
if(skipConfig !== true){
this.applyConfig(config);
}
};
Ext.extend(Ext.BasicLayoutRegion, Ext.util.Observable, {
getPanelId : function(p){
return p.getId();
},
applyConfig : function(config){
this.margins = config.margins || this.margins || {top: 0, left: 0, right:0, bottom: 0};
this.config = config;
},
resizeTo : function(newSize){
var el = this.el ? this.el :
(this.activePanel ? this.activePanel.getEl() : null);
if(el){
switch(this.position){
case "east":
case "west":
el.setWidth(newSize);
this.fireEvent("resized", this, newSize);
break;
case "north":
case "south":
el.setHeight(newSize);
this.fireEvent("resized", this, newSize);
break;
}
}
},
getBox : function(){
return this.activePanel ? this.activePanel.getEl().getBox(false, true) : null;
},
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -