New file |
0,0 → 1,76 |
/* |
* Ext JS Library 2.0.2 |
* Copyright(c) 2006-2008, Ext JS, LLC. |
* licensing@extjs.com |
* |
* http://extjs.com/license |
*/ |
|
/* |
* Private internal class for reading and applying state |
*/ |
Ext.LayoutStateManager = function(layout){ |
// default empty state |
this.state = { |
north: {}, |
south: {}, |
east: {}, |
west: {} |
}; |
}; |
|
Ext.LayoutStateManager.prototype = { |
init : function(layout, provider){ |
this.provider = provider; |
var state = provider.get(layout.id+"-layout-state"); |
if(state){ |
var wasUpdating = layout.isUpdating(); |
if(!wasUpdating){ |
layout.beginUpdate(); |
} |
for(var key in state){ |
if(typeof state[key] != "function"){ |
var rstate = state[key]; |
var r = layout.getRegion(key); |
if(r && rstate){ |
if(rstate.size){ |
r.resizeTo(rstate.size); |
} |
if(rstate.collapsed == true){ |
r.collapse(true); |
}else{ |
r.expand(null, true); |
} |
} |
} |
} |
if(!wasUpdating){ |
layout.endUpdate(); |
} |
this.state = state; |
} |
this.layout = layout; |
layout.on("regionresized", this.onRegionResized, this); |
layout.on("regioncollapsed", this.onRegionCollapsed, this); |
layout.on("regionexpanded", this.onRegionExpanded, this); |
}, |
|
storeState : function(){ |
this.provider.set(this.layout.id+"-layout-state", this.state); |
}, |
|
onRegionResized : function(region, newSize){ |
this.state[region.getPosition()].size = newSize; |
this.storeState(); |
}, |
|
onRegionCollapsed : function(region){ |
this.state[region.getPosition()].collapsed = true; |
this.storeState(); |
}, |
|
onRegionExpanded : function(region){ |
this.state[region.getPosition()].collapsed = false; |
this.storeState(); |
} |
}; |