Пример #1
0
        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);
            }
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
 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);
             }
         }
     }
 }
Пример #4
0
 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);
             }
         }
     }
 }
Пример #5
0
        /// <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);
            }
        }
Пример #6
0
        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);
            }
        }