Skip to content

Instantly share code, notes, and snippets.

@cloke
Created November 8, 2012 18:37
Show Gist options
  • Save cloke/4040647 to your computer and use it in GitHub Desktop.
Save cloke/4040647 to your computer and use it in GitHub Desktop.
/** MUTLIPLE STATE MANAGERS **/
activeStateManagers: null,
getStateManager: function(stateManager) {
return (typeof stateManager === 'string') ?
this.get(stateManager+'StateManager') :
stateManager;
},
activateStateManager: function(stateManager) {
stateManager = this.getStateManager(stateManager);
this.activeStateManagers.removeObject(stateManager);
this.activeStateManagers.unshiftObject(stateManager);
if (stateManager.didActivate) {
stateManager.didActivate(this);
}
},
deactivateStateManager: function(stateManager) {
stateManager = this.getStateManager(stateManager);
this.activeStateManagers.removeObject(stateManager);
if (stateManager.didDeactivate) {
stateManager.didDeactivate(this);
}
},
send: function(event, context) {
var target = this.activeStateManagers.find(function(manager) {
return manager.hasEvent(event);
});
if (target) {
if (this.enableLogging) {
Ember.Logger.log("STATEMANAGER: Redirecting event '%@' to manager %@.".fmt(event, target));
}
return target.send.apply(target, arguments);
} else {
return this._super.apply(this, arguments);
}
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment