| /******************************************************************************* |
| * Copyright (c) 2001, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| * Jens Lukowski/Innoopract - initial renaming/restructuring |
| * |
| *******************************************************************************/ |
| package org.eclipse.wst.sse.core.internal.undo; |
| |
| import org.eclipse.emf.common.command.Command; |
| import org.eclipse.emf.common.command.CommandStack; |
| |
| public interface IStructuredTextUndoManager { |
| |
| /** |
| * Begin recording undo transactions. |
| */ |
| void beginRecording(Object requester); |
| |
| /** |
| * Begin recording undo transactions. |
| */ |
| void beginRecording(Object requester, int cursorPosition, int selectionLength); |
| |
| /** |
| * Begin recording undo transactions. |
| */ |
| void beginRecording(Object requester, String label); |
| |
| /** |
| * Begin recording undo transactions. |
| */ |
| void beginRecording(Object requester, String label, int cursorPosition, int selectionLength); |
| |
| /** |
| * Begin recording undo transactions. |
| */ |
| void beginRecording(Object requester, String label, String description); |
| |
| /** |
| * Begin recording undo transactions. |
| */ |
| void beginRecording(Object requester, String label, String description, int cursorPosition, int selectionLength); |
| |
| /** |
| * Connect the mediator to the undo manager. |
| */ |
| void connect(IDocumentSelectionMediator mediator); |
| |
| /** |
| * Disable undo management. |
| */ |
| void disableUndoManagement(); |
| |
| /** |
| * Disconnect the mediator from the undo manager. |
| */ |
| void disconnect(IDocumentSelectionMediator mediator); |
| |
| /** |
| * Enable undo management. |
| */ |
| void enableUndoManagement(); |
| |
| /** |
| * End recording undo transactions. |
| */ |
| void endRecording(Object requester); |
| |
| /** |
| * End recording undo transactions. |
| */ |
| void endRecording(Object requester, int cursorPosition, int selectionLength); |
| |
| /** |
| * <p> |
| * Normally, the undo manager can figure out the best times when to end a |
| * pending command and begin a new one ... to the structure of a structued |
| * document. There are times, however, when clients may wish to override |
| * those algorithms and end one earlier than normal. The one known case is |
| * for multipage editors. If a user is on one page, and type '123' as |
| * attribute value, then click around to other parts of page, or different |
| * pages, then return to '123|' and type 456, then "undo" they typically |
| * expect the undo to just undo what they just typed, the 456, not the |
| * whole attribute value. |
| * <p> |
| * If there is no pending command, the request is ignored. |
| */ |
| public void forceEndOfPendingCommand(Object requester, int currentPosition, int length); |
| |
| /** |
| * Some clients need to do complicated things with undo stack. Plus, in |
| * some cases, if clients setCommandStack temporarily, they have |
| * reponsibility to set back to original one when finished. |
| */ |
| public CommandStack getCommandStack(); |
| |
| /** |
| * Get the redo command even if it's not committed yet. |
| */ |
| Command getRedoCommand(); |
| |
| /** |
| * Get the undo command even if it's not committed yet. |
| */ |
| Command getUndoCommand(); |
| |
| /** |
| * Redo the last command in the undo manager. |
| */ |
| void redo(); |
| |
| /** |
| * Redo the last command in the undo manager and notify the requester |
| * about the new selection. |
| */ |
| void redo(IDocumentSelectionMediator requester); |
| |
| /** |
| * Returns whether at least one text change can be repeated. A text change |
| * can be repeated only if it was executed and rolled back. |
| * |
| * @return <code>true</code> if at least on text change can be repeated |
| */ |
| boolean redoable(); |
| |
| /** |
| * Set the command stack. |
| */ |
| void setCommandStack(CommandStack commandStack); |
| |
| /** |
| * Undo the last command in the undo manager. |
| */ |
| void undo(); |
| |
| /** |
| * Undo the last command in the undo manager and notify the requester |
| * about the new selection. |
| */ |
| void undo(IDocumentSelectionMediator requester); |
| |
| /** |
| * Returns whether at least one text change can be rolled back. |
| * |
| * @return <code>true</code> if at least one text change can be rolled |
| * back |
| */ |
| boolean undoable(); |
| } |