Must be implemented by all events.
Example #1
0
 private void RollbackEvent(BaseEvent @event, bool undoing)
 {
     ExecuteNoTrack(() => {
         var reverse = @event.Rollback();
         if (reverse == null) return;
         if (reverse is BatchEvent)
         {
             if (!(@event is BatchEvent))
                 throw new InvalidOperationException("Must not return BatchEvent in Rollback()");
             reverse = ProcessBatch((BatchEvent) reverse);
             if (reverse == null) return;
         }
         (undoing ? _redoStack : _undoStack).Push(reverse);
     });
 }
Example #2
0
 private void PerformPostMarkAction(BaseEvent @event)
 {
     _redoStack.Clear();
     NotifyChange(@event);
 }
Example #3
0
 /// <summary>
 /// Marks an event. This method also serves as an extensibility point for custom events.
 /// </summary>
 /// <param name="anEvent">The event to be marked.</param>
 public void MarkEvent(BaseEvent anEvent)
 {
     if (!IsTrackingEnabled) return;
     if (anEvent == null) throw new ArgumentNullException("anEvent");
     (_currentBatch ?? _undoStack).Push(anEvent);
     if (!IsInBatch) PerformPostMarkAction(anEvent);
 }
Example #4
0
 private void NotifyChange(BaseEvent @event)
 {
     if (Changed != null) Changed(this, new MementorChangedEventArgs {Event = @event});
 }
Example #5
0
 private void PerformPostMarkAction(BaseEvent @event)
 {
     _redoStack.Clear();
     NotifyChange(@event);
 }