Example #1
0
        protected override IEnumerable <int> GetInterestingElementIds(IContainerElement element)
        {
            IMacroCommand c = element.InnerElement as IMacroCommand;

            yield return(c.Id);

            if (c.Condition != null)
            {
                yield return(c.Condition.ConditionalId);
            }
            IWaitConditionCommand wc = c as IWaitConditionCommand;

            if (wc != null && wc.AwaitedCondition != null)
            {
                yield return(wc.AwaitedCondition.ConditionalId);
            }
            IStartCommand sc = c as IStartCommand;

            if (sc != null)
            {
                yield return(sc.StartedElementId);
            }
            IStopCommand sc2 = c as IStopCommand;

            if (sc2 != null)
            {
                yield return(sc2.StoppedElementId);
            }
        }
Example #2
0
        public void VisitWaitConditionCommand(IWaitConditionCommand waitConditionCommand)
        {
            if (Client.Stopped)
            {
                return;
            }
            if (IsConditionFulfilled(waitConditionCommand.Condition))
            {
                while (!IsConditionFulfilled(waitConditionCommand.AwaitedCondition))
                {
                    State = MacroPlayerState.WaitingForCondition;
                    MacroPlayers.Instance.AddWaitingPlayer(m_ConditionEvent, waitConditionCommand.AwaitedCondition.ConditionalId);
                    WaitHandle[] handles = new WaitHandle[] { m_ConditionEvent, StoppedEvent };

                    int signaled = WaitHandle.WaitAny(handles);

                    MacroPlayers.Instance.RemoveWaitingPlayer(m_ConditionEvent, waitConditionCommand.AwaitedCondition.ConditionalId);
                    State = MacroPlayerState.Running;
                    if (signaled == 1)
                    {
                        // stop event signaled
                        break;
                    }
                }
            }
        }
Example #3
0
 public void VisitWaitConditionCommand(IWaitConditionCommand waitConditionCommand)
 {
     CheckCondition(waitConditionCommand);
     if (waitConditionCommand.AwaitedCondition.Conditional == null || Data.DataModule.ElementRepository.GetElement(waitConditionCommand.AwaitedCondition.Conditional.Id) == null)
     {
         AddError(m_ModelErrors, ModelError.ErrorSeverity.Error, StringResources.AwaitedElementNotFound, waitConditionCommand);
     }
 }
Example #4
0
        public static String DisplayDescription(this IMacroCommand command, IProject project)
        {
            switch (command.CommandType)
            {
            case MacroCommandType.StartElement:
                return(String.Format(StringResources.StartCommand, GetElementDisplayName(((IStartCommand)command).StartedElement, project)));

            case MacroCommandType.StopElement:
                return(String.Format(StringResources.StopCommand, GetElementDisplayName(((IStopCommand)command).StoppedElement, project)));

            case MacroCommandType.WaitTime:
                return(String.Format(StringResources.WaitTimeCommand, ((IWaitTimeCommand)command).TimeInMillis.ToString(System.Globalization.CultureInfo.CurrentUICulture)));

            case MacroCommandType.WaitCondition:
            {
                IWaitConditionCommand wcc = (IWaitConditionCommand)command;
                switch (wcc.AwaitedCondition.ConditionType)
                {
                case MacroConditionType.ElementNotRunning:
                    return(String.Format(StringResources.WaitElementNotRunningCommand, GetElementDisplayName(wcc.AwaitedCondition.Conditional, project)));

                case MacroConditionType.ElementRunning:
                    return(String.Format(StringResources.WaitElementRunningCommand, GetElementDisplayName(wcc.AwaitedCondition.Conditional, project)));

                default:
                    return(StringResources.NoCondition);
                }
            }

            case MacroCommandType.AddTag:
                return(String.Format(StringResources.AddTagCommand, GetTagName(((ITagCommand)command).TagId, project)));

            case MacroCommandType.RemoveTag:
                return(String.Format(StringResources.RemoveTagCommand, GetTagName(((ITagCommand)command).TagId, project)));

            case MacroCommandType.RemoveAllTags:
                return(StringResources.RemoveAllTagsCommand);

            default:
                return(String.Empty);
            }
        }