/*
	Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojox.drawing.manager.Undo"]){
dojo._hasResource["dojox.drawing.manager.Undo"]=true;
dojo.provide("dojox.drawing.manager.Undo");
dojox.drawing.manager.Undo=dojox.drawing.util.oo.declare(function(_1){
this.keys=_1.keys;
this.undostack=[];
this.redostack=[];
dojo.connect(this.keys,"onKeyDown",this,"onKeyDown");
},{onKeyDown:function(_2){
if(!_2.cmmd){
return;
}
if(_2.keyCode==90&&!_2.shift){
this.undo();
}else{
if((_2.keyCode==90&&_2.shift)||_2.keyCode==89){
this.redo();
}
}
},add:function(_3){
_3.args=dojo.mixin({},_3.args);
this.undostack.push(_3);
},apply:function(_4,_5,_6){
dojo.hitch(_4,_5)(_6);
},undo:function(){
var o=this.undostack.pop();
if(!o){
return;
}
o.before();
this.redostack.push(o);
},redo:function(){
var o=this.redostack.pop();
if(!o){
return;
}
if(o.after){
o.after();
}else{
o.before();
}
this.undostack.push(o);
}});
}
