/// <inheritdoc/> public virtual void EndTransaction(string name, AggregateActionItemDelegate aggregateActionItems, bool reverseOrderOnUndo = true) { if (TransactionStack.Count == 0) { throw new InvalidOperationException(Properties.ExceptionMessages.CannotEndNoTransactionInProgress); } var currentTransaction = TransactionStack.Pop(); if (currentTransaction.Count > 0) { var result = aggregateActionItems(currentTransaction); var aggregateActionItem = result as IAggregateActionItem; if (aggregateActionItem != null) { aggregateActionItem.ReverseOrderOnUndo = reverseOrderOnUndo; } Add(result); TransactionEnded?.Invoke(this, new ActionItemsEventArgs <IActionItem>(result)); } else { TransactionDiscarded?.Invoke(this, new ActionItemsEventArgs <IActionItem>(new IActionItem[0])); } }
/// <inheritdoc/> public void EndTransaction(string displayName, AggregateActionItemDelegate aggregateActionItems, bool reverseOrderOnUndo = true) { }
/// <inheritdoc/> public virtual void EndTransaction(string name, AggregateActionItemDelegate aggregateActionItems, bool reverseOrderOnUndo = true) { if (TransactionStack.Count == 0) throw new InvalidOperationException(Properties.ExceptionMessages.CannotEndNoTransactionInProgress); var currentTransaction = TransactionStack.Pop(); if (currentTransaction.Count > 0) { var result = aggregateActionItems(currentTransaction); var aggregateActionItem = result as IAggregateActionItem; if (aggregateActionItem != null) { aggregateActionItem.ReverseOrderOnUndo = reverseOrderOnUndo; } Add(result); TransactionEnded?.Invoke(this, new ActionItemsEventArgs<IActionItem>(result)); } else { TransactionDiscarded?.Invoke(this, new ActionItemsEventArgs<IActionItem>(new IActionItem[0])); } }