1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- * Ext JS Library 2.0 Copyright(c) 2006-2007, 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();
- }
- };
|