public void RunSolution(OutputType outputType)
 {
     _runSolutionOutputType = OutputType.NotSet;
     _runSolutionWebCodeContentUserControl = null;
     depth = 0;
     RunSolutionRecursive(outputType, ++depth);
 }
        private void RunSolutionRecursive(OutputType outputType, int level)
        {
            if (level == 2100)
            {
                MessageBox.Show("The maximum loop has been reached.", UtilityManager.CodeManipulatorName, MessageBoxButton.OK, MessageBoxImage.Asterisk);
                return;
            }
            if (level % 1050 == 0)
            {
                var messageBoxResult = MessageBox.Show("The loop takes longer than expected, do you want to continue?", UtilityManager.CodeManipulatorName, MessageBoxButton.YesNo, MessageBoxImage.Asterisk);
                if (messageBoxResult == MessageBoxResult.No)
                {
                    return;
                }
            }

            object selectedCodeContent = MainChromeTabControl.SelectedContent;
            if (selectedCodeContent is WebCodeContentUserControl)
            {
                RunWebCodeControlExecuted = true;
                var control = selectedCodeContent as WebCodeContentUserControl;
                if (!control.IsControlInitialized)
                {
                    control.ContentWebBrowser.LoadCompleted += ContentWebBrowser_LoadCompleted;
                    control.IsControlInitialized = true;
                }
                control.Run();
                _runSolutionWebCodeContentUserControl = control;
                _runSolutionOutputType = outputType;
            }
            else if (selectedCodeContent is ConditionContentUserControl)
            {
                var control = selectedCodeContent as ConditionContentUserControl;
                var result = control.Run();
                if (result != null)
                {
                    var index = Int32.Parse(control.TabComboBox.Text);
                    var success = true;
                    if (-1 == index)
                    {
                        return;
                    }
                    else if (0 == index)
                    {
                        FirstTab();
                    }
                    else
                    {
                        success = GoToTab(index);
                    }
                    if (success && outputType == OutputType.RunAll &&
                        MainChromeTabControl.Items.Count - 1 != MainChromeTabControl.SelectedIndex)
                    {
                        lock (lockOjbect)
                        {
                            RunSolutionRecursive(outputType, ++depth);
                        }
                    }
                }
                else
                {
                    if (outputType == OutputType.RunAll && NextTab())
                    {
                        lock (lockOjbect)
                        {
                            RunSolutionRecursive(outputType, ++depth);
                        }
                    }
                }
            }
            else if (selectedCodeContent != null)
            {
                var result = ((IModuleUserControl) selectedCodeContent).Run();
                ProcessOutput(outputType, result);

                if (outputType == OutputType.RunAll && NextTab())
                {
                    lock (lockOjbect)
                    {
                        RunSolutionRecursive(outputType, ++depth);
                    }
                }
            }
        }
Beispiel #3
0
 public UserControl GetUserControl()
 {
     var item = new WebCodeContentUserControl();
     return item.GetUserControl(this);
 }