Exemple #1
0
 public static void BuildTree(AutomationTree tree, Stack <string> windowStack, int depth = 0)
 {
     if (tree.CurrentNode is AutomationWindowNode)
     {
         AutomationWindowNode windowNode = tree.CurrentNode as AutomationWindowNode;
         AutomationWindow     window     = windowNode.Window;
         windowStack.Push(windowNode.Window.Name);
         depth++;
         while (!windowNode.Terminated)
         {
             Console.WriteLine(string.Format("\nDepth: {0}", string.Join(" -> ", windowStack.Reverse())));
             window.PrintActions(windowNode.Terminatable);
             //List<AutomationWindow> previousWindows = FindPrevious(window);
             int index = GetChoice(windowNode.Terminatable);
             if (index == -1)
             {
                 windowNode.Terminated = true;
                 return;
             }
             AutomationAction action = Actions[window.Actions[index], window.Name];
             action.Compile = true;
             AutomationActionNode actionNode = new AutomationActionNode(action, windowNode)
             {
                 Depth = depth
             };
             actionNode.GetArguments();
             windowNode.Add(actionNode);
             windowNode.Terminated = action.Terminating;
             tree.CurrentNode      = actionNode;
             BuildTree(tree, windowStack, depth);
         }
         depth--;
         windowStack.Pop();
     }
     else if (tree.CurrentNode is AutomationActionNode)
     {
         AutomationActionNode actionNode       = tree.CurrentNode as AutomationActionNode;
         AutomationWindowNode parentWindowNode = actionNode.Parent as AutomationWindowNode;
         AutomationAction     action           = actionNode.Action;
         depth++;
         foreach (string windowName in action.Windows)
         {
             AutomationWindow     window     = Windows[windowName];
             AutomationWindowNode windowNode = new AutomationWindowNode(window, actionNode)
             {
                 Depth = depth
             };
             actionNode.Add(windowNode);
             tree.CurrentNode = windowNode;
             BuildTree(tree, windowStack, depth);
         }
         depth--;
     }
 }
Exemple #2
0
 public AutomationActionNode(AutomationAction action, AutomationWindowNode parent)
 {
     Action    = action;
     Arguments = Action.Arguments.ToDictionary(key => key);
     Windows   = new List <AutomationWindowNode>();
 }