public void RecordAction(IAction existingAction) { if (existingAction == null) { throw new ArgumentNullException( "ActionManager.RecordAction: the existingAction argument is null"); } CheckNotRunningBeforeRecording(existingAction); if (ExecuteImmediatelyWithoutRecording && existingAction.CanExecute()) { existingAction.Execute(); return; } ITransaction currentTransaction = RecordingTransaction; if (currentTransaction != null) { currentTransaction.AccumulatingAction.Add(existingAction); } else { RunActionDirectly(existingAction); } }
/// <summary> /// Central method to add and execute a new action. /// </summary> /// <param name="existingAction">An action to be recorded in the buffer and executed</param> public void RecordAction(IAction action) { if (action == null) { throw new ArgumentNullException( "ActionManager.RecordAction: the action argument is null"); } // make sure we're not inside an Undo or Redo operation CheckNotRunningBeforeRecording(action); // if we don't want to record actions, just run and forget it if (ExecuteImmediatelyWithoutRecording && action.CanExecute()) { action.Execute(); return; } // Check if we're inside a transaction that is being recorded Transaction currentTransaction = RecordingTransaction; if (currentTransaction != null) { // if we're inside a transaction, just add the action to the transaction's list currentTransaction.Add(action); if (!currentTransaction.IsDelayed) { action.Execute(); } } else { RunActionDirectly(action); } }
public void RecordAction(IAction existingAction) { if (existingAction != null) { CheckNotRunningBeforeRecording(existingAction); if (ExecuteImmediatelyWithoutRecording && existingAction.CanExecute()) { existingAction.Execute(); } else { ITransaction recordingTransaction = RecordingTransaction; if (recordingTransaction != null) { recordingTransaction.AccumulatingAction.Add(existingAction); if (!recordingTransaction.IsDelayed) { existingAction.Execute(); } } else { RunActionDirectly(existingAction); } } } }
/// <summary> /// Central method to add and execute a new action. /// </summary> /// <param name="existingAction">An action to be recorded in the buffer and executed</param> public void RecordAction(IAction existingAction) { if (existingAction == null) { throw new ArgumentNullException( "ActionManager.RecordAction: the existingAction argument is null"); } // make sure we're not inside an Undo or Redo operation CheckNotRunningBeforeRecording(existingAction); // if we don't want to record actions, just run and forget it if (ExecuteImmediatelyWithoutRecording && existingAction.CanExecute()) { existingAction.Execute(); return; } // Check if we're inside a transaction that is being recorded ITransaction currentTransaction = RecordingTransaction; if (currentTransaction != null) { // if we're inside a transaction, just add the action to the transaction's list currentTransaction.AccumulatingAction.Add(existingAction); if (!currentTransaction.IsDelayed) { existingAction.Execute(); } } else { RunActionDirectly(existingAction); } }