This project has moved and is read-only. For the latest updates, please go here.
Project Description
We moved...
https://github.com/lehmamic/undo-manager

Why another undo framework
Most undo frameworks uses so called actions or commands to describe the undo and redo actions, which forces you to adjust your architecture to use a 3rd party object structure. So far no problem, but in case you need to exchange this framework it is quite a bit work to rework these former used object structure.

Furthermore I found it not convenient to keep adding actions for every operation which supports the undo operations. I prefer a declarative way which is more easy to use.

Simple example
this.Add("Monday");
this.Add("Wednesday");

UndoManager.DefaultUndoManager.Undo();

this.Add("Thuesday");

public void Add(string item)
{
    Console.WriteLine("Add {0}", item);
    UndoManager.DefaultUndoManager.RegisterInvocation(this, p => p.Remove(item)));
}

public void Remove(string item)
{
    Console.WriteLine("Remove {0}", item);
    UndoManager.DefaultUndoManager.RegisterInvocation(this, p => p.Add(item)));
}


See QuickStart for more examples.

Last edited May 24, 2011 at 8:36 AM by Enyra, version 6