62 lines
1.3 KiB
JavaScript
62 lines
1.3 KiB
JavaScript
|
//>>built
|
||
|
// wrapped by build app
|
||
|
define("dojox/drawing/manager/Undo", ["dijit","dojo","dojox"], function(dijit,dojo,dojox){
|
||
|
dojo.provide("dojox.drawing.manager.Undo");
|
||
|
|
||
|
dojox.drawing.manager.Undo = dojox.drawing.util.oo.declare(
|
||
|
// summary
|
||
|
// Handles the Undo in drawing.
|
||
|
// NOTE: Only partially implemented!!! There is very
|
||
|
// little actual undo functionality!
|
||
|
//
|
||
|
function(options){
|
||
|
this.keys = options.keys;
|
||
|
this.undostack = [];
|
||
|
this.redostack = [];
|
||
|
dojo.connect(this.keys, "onKeyDown", this, "onKeyDown");
|
||
|
},
|
||
|
{
|
||
|
onKeyDown: function(evt){
|
||
|
if(!evt.cmmd){ return; }
|
||
|
|
||
|
if(evt.keyCode==90 && !evt.shift){
|
||
|
this.undo();
|
||
|
}else if((evt.keyCode == 90 && evt.shift) || evt.keyCode==89){
|
||
|
this.redo();
|
||
|
}
|
||
|
|
||
|
},
|
||
|
add: function(stack){
|
||
|
//console.log("undo add", stack)
|
||
|
stack.args = dojo.mixin({}, stack.args);
|
||
|
this.undostack.push(stack);
|
||
|
},
|
||
|
apply: function(scope, method, args){
|
||
|
dojo.hitch(scope, method)(args);
|
||
|
},
|
||
|
undo: function(){
|
||
|
|
||
|
var o = this.undostack.pop();
|
||
|
console.log("undo!", o);
|
||
|
if(!o){ return; }
|
||
|
|
||
|
o.before();
|
||
|
|
||
|
this.redostack.push(o);
|
||
|
},
|
||
|
redo: function(){
|
||
|
console.log("redo!");
|
||
|
var o = this.redostack.pop();
|
||
|
if(!o){ return; }
|
||
|
if(o.after){
|
||
|
o.after();
|
||
|
}else{
|
||
|
o.before(); ///??????
|
||
|
}
|
||
|
|
||
|
this.undostack.push(o);
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
});
|