4 using System.Collections.Generic;
 
    7 using SiliconStudio.Core;
 
    9 namespace SiliconStudio.ActionStack
 
   24         protected readonly Stack<List<IActionItem>> TransactionStack = 
new Stack<List<IActionItem>>();
 
   41             : base(capacity, initialActionsItems)
 
   61                     displayName = getName();
 
   65                     displayName = 
"<<ERROR>>";
 
   68                 EndTransaction(displayName);
 
   89             var currentTransaction = 
new List<IActionItem>();
 
   90             TransactionStack.Push(currentTransaction);
 
   96             EndTransaction(name, x => AggregateActionItems(x, name));
 
  102             if (TransactionStack.Count == 0) 
throw new InvalidOperationException(Properties.ExceptionMessages.CannotEndNoTransactionInProgress);
 
  104             var currentTransaction = TransactionStack.Pop();
 
  105             var aggregateActionItem = aggregateActionItems(currentTransaction);
 
  106             Add(aggregateActionItem);
 
  112             if (TransactionStack.Count == 0) 
throw new InvalidOperationException(Properties.ExceptionMessages.CannotEndNoTransactionInProgress);
 
  113             var currentTransaction = TransactionStack.Pop();
 
  123             if (TransactionStack.Count == 0) 
throw new InvalidOperationException(Properties.ExceptionMessages.CannotEndNoTransactionInProgress);
 
  124             TransactionStack.Pop();
 
  133             if (TransactionStack.Count == 0) 
throw new InvalidOperationException(Properties.ExceptionMessages.NoTransactionInProgress);
 
  134             return TransactionStack.Peek();
 
  142                 var currentTransaction = TransactionStack.Peek();
 
  143                 currentTransaction.Add(item);
 
  151         private static IActionItem AggregateActionItems(IReadOnlyCollection<IActionItem> actionItems, 
string name = null)
 
  153             if (actionItems.Count == 1)
 
  155                 var actionItem = actionItems.First();
 
  156                 if (!
string.IsNullOrEmpty(name))
 
  157                     actionItem.
Name = name;
 
  160             return new AggregateActionItem(name, actionItems);
 
override void Add(IActionItem item)
Adds an action item to the stack. Discards any action item that is currently undone. The action item to add to the stack. 
This class is an implementation of the ITransactionalActionStack interface. 
virtual void CancelTransaction()
Cancels a transaction started with BeginTransaction. Every action from the cancelled transaction will...
IDisposable BeginDiscardTransaction()
Creates a BeginTransaction-DiscardTransaction transaction subscription. Use it with a using statement...
virtual void DiscardTransaction()
Discard a transaction started with BeginTransaction. This method will ends the transaction and discar...
TransactionalActionStack(int capacity, IEnumerable< IActionItem > initialActionsItems)
Initializes a new instance of the TransactionalActionStack class with the given capacity and existing...
IDisposable BeginEndTransaction(Func< string > getName)
Creates a BeginTransaction-EndTransaction subscription. Use it with a using statement to ensure balan...
IReadOnlyCollection< IActionItem > GetCurrentTransactions()
Gets the action items in the current transaction. 
void EndTransaction(string name)
Ends a transaction started with BeginTransaction. Once the transaction is ended, an aggregate action ...
IDisposable BeginEndTransaction(string name)
Creates a BeginTransaction-EndTransaction subscription. Use it with a using statement to ensure balan...
IDisposable BeginCancelTransaction()
Creates a BeginTransaction-CancelTransaction transaction subscription. Use it with a using statement ...
Base interface for action items. 
string Name
Gets or sets the name of the current action. 
virtual void EndTransaction(string name, Func< IReadOnlyCollection< IActionItem >, IActionItem > aggregateActionItems)
Ends a transaction started with BeginTransaction. A function that will aggregate an enumeration of ac...
This class allows implementation of IDisposable using anonymous functions. The anonymous function wil...
TransactionalActionStack(int capacity)
Initializes a new instance of the TransactionalActionStack class with the given capacity. 
Item discarded because an undo/redo operation is currently in progress. 
This class represents a thread-safe stack of action items that can be undone/redone. 
virtual void BeginTransaction()
Begins a transaction. IActionItem added after a call to BeginTransaction are stored in a temporary tr...
Base interface for a transactional action stack.