using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tango.Editors
{
///
/// Represents an undo/redo state provider.
///
public interface IUndoRedoStatesProvider
{
///
/// Occurs when an Undo/Redo state was executed.
///
event EventHandler StateExecuted;
///
/// Gets the undo states.
///
Stack UndoStates { get; }
///
/// Gets the redo states.
///
Stack RedoStates { get; }
///
/// Gets a value indicating whether this instance can undo.
///
bool CanUndo { get; }
///
/// Gets a value indicating whether this instance can redo.
///
bool CanRedo { get; }
///
/// Prepares the state of the undo.
///
void PrepareUndoState();
///
/// Creates the a new undo/redo state.
///
///
IUndoRedoState CreateUndoRedoState();
///
/// Executes the an undo/redo state.
///
/// The state.
void ExecuteState(IUndoRedoState state);
///
/// Commits the state created by .
///
void CommitUndoState();
///
/// Performs an undo operation.
///
void Undo();
///
/// Performs a redo operation.
///
void Redo();
///
/// Resets undo and redo states.
///
void Reset();
}
}