01: /*******************************************************************************
02: * Copyright (c) 2005, 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.ui.operations;
11:
12: import org.eclipse.core.commands.ExecutionException;
13: import org.eclipse.core.commands.operations.IUndoContext;
14: import org.eclipse.core.commands.operations.IUndoableOperation;
15: import org.eclipse.core.runtime.IProgressMonitor;
16: import org.eclipse.core.runtime.IStatus;
17: import org.eclipse.ui.ISharedImages;
18: import org.eclipse.ui.IWorkbenchPartSite;
19: import org.eclipse.ui.PlatformUI;
20: import org.eclipse.ui.internal.WorkbenchMessages;
21:
22: /**
23: * <p>
24: * UndoActionHandler provides common behavior for performing an undo, as
25: * well as labelling and enabling the undo menu item. This class may be
26: * instantiated by clients.
27: * </p>
28: *
29: * @since 3.1
30: */
31: public final class UndoActionHandler extends
32: OperationHistoryActionHandler {
33:
34: /**
35: * Construct an action handler that handles the labelling and enabling of
36: * the undo action for the specified undo context.
37: *
38: * @param site
39: * the workbench part site that created the action.
40: * @param context
41: * the undo context to be used for the undo
42: */
43: public UndoActionHandler(IWorkbenchPartSite site,
44: IUndoContext context) {
45: super (site, context);
46: setImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
47: .getImageDescriptor(ISharedImages.IMG_TOOL_UNDO));
48: setDisabledImageDescriptor(PlatformUI.getWorkbench()
49: .getSharedImages().getImageDescriptor(
50: ISharedImages.IMG_TOOL_UNDO_DISABLED));
51: }
52:
53: void flush() {
54: getHistory().dispose(getUndoContext(), true, false, false);
55: }
56:
57: String getCommandString() {
58: return WorkbenchMessages.Operations_undoCommand;
59: }
60:
61: String getTooltipString() {
62: return WorkbenchMessages.Operations_undoTooltipCommand;
63: }
64:
65: String getSimpleCommandString() {
66: return WorkbenchMessages.Workbench_undo;
67: }
68:
69: String getSimpleTooltipString() {
70: return WorkbenchMessages.Workbench_undoToolTip;
71: }
72:
73: IUndoableOperation getOperation() {
74: return getHistory().getUndoOperation(getUndoContext());
75:
76: }
77:
78: IStatus runCommand(IProgressMonitor pm) throws ExecutionException {
79: return getHistory().undo(getUndoContext(), pm, this );
80: }
81:
82: boolean shouldBeEnabled() {
83: return getHistory().canUndo(getUndoContext());
84: }
85: }
|