From ef68436ac04da078ffdcacd7e1f785473a303d45 Mon Sep 17 00:00:00 2001 From: Giulio Cesare Solaroli Date: Sun, 02 Oct 2011 23:56:18 +0000 Subject: First version of the newly restructured repository --- (limited to 'frontend/beta/js/YUI-extensions/layout/LayoutStateManager.js') diff --git a/frontend/beta/js/YUI-extensions/layout/LayoutStateManager.js b/frontend/beta/js/YUI-extensions/layout/LayoutStateManager.js new file mode 100644 index 0000000..ea22235 --- a/dev/null +++ b/frontend/beta/js/YUI-extensions/layout/LayoutStateManager.js @@ -0,0 +1,68 @@ +/* + * Private internal class for reading and applying state + */ +YAHOO.ext.LayoutStateManager = function(layout){ + // default empty state + this.state = { + north: {}, + south: {}, + east: {}, + west: {} + }; +}; + +YAHOO.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, true); + layout.on('regioncollapsed', this.onRegionCollapsed, this, true); + layout.on('regionexpanded', this.onRegionExpanded, this, true); + }, + + 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(); + } +}; -- cgit v0.9.0.2