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);
}
}
}
}