1 package sourceforge.org.qmc2.options.editor.ui.actions;
2 
3 import org.eclipse.core.commands.ExecutionException;
4 import org.eclipse.core.commands.operations.IUndoableOperation;
5 import org.eclipse.core.runtime.NullProgressMonitor;
6 import org.eclipse.swt.SWT;
7 
8 import sourceforge.org.qmc2.options.editor.ui.QMC2Editor;
9 
10 public class UndoAction extends BaseAction {
11 
UndoAction(QMC2Editor editor)12 	public UndoAction(QMC2Editor editor) {
13 		super(editor);
14 		setAccelerator(SWT.MOD1 + 'Z');
15 	}
16 
17 	@Override
isEnabled()18 	public boolean isEnabled() {
19 		return editor.getOperationHistory() != null
20 				&& editor.getOperationHistory()
21 						.canUndo(editor.getUndoContext());
22 	}
23 
24 	@Override
run()25 	public void run() {
26 		try {
27 			editor.getOperationHistory().undo(editor.getUndoContext(),
28 					new NullProgressMonitor(), null);
29 		} catch (ExecutionException e) {
30 			// TODO Auto-generated catch block
31 			e.printStackTrace();
32 		}
33 		super.run();
34 	}
35 
36 	@Override
getText()37 	public String getText() {
38 		IUndoableOperation nextUndoOp = editor.getOperationHistory()
39 				.getUndoOperation(editor.getUndoContext());
40 
41 		return "&Undo"
42 				+ (nextUndoOp == null ? "" : (" " + nextUndoOp.getLabel()));
43 
44 	}
45 
46 }
47