www.gusucode.com > 一个基于extjs的强大聊天插件源码程序 > 一个基于extjs的强大聊天插件/extjame/ext-jame/js/ext2/source/legacy/layout/LayoutStateManager.js
/* * 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(); } };