예제 #1
0
        public static void Show(IWin32Window owner, JavaScriptException exception)
        {
            if (owner == null)
            {
                throw new ArgumentNullException(nameof(owner));
            }
            if (exception == null)
            {
                throw new ArgumentNullException(nameof(exception));
            }

            using (var form = new ExceptionForm())
            {
                form._exceptionThrown.Text       = String.Format(form._exceptionThrown.Text, GetType(exception));
                form._additionalInformation.Text = String.Format(form._additionalInformation.Text, GetMessage(exception));
                form._location.Text = String.Format(form._location.Text, GetLocation(exception));

                if (exception.DebugInformation == null || exception.DebugInformation.Globals.Count == 0)
                {
                    form.Showing += (s, e) =>
                    {
                        int dockPanelHeight = form._dockPanel.Height;
                        form._dockPanel.Dispose();
                        form.MinimumSize = new Size(0, form.Height - dockPanelHeight);
                        form.MaximumSize = new Size(int.MaxValue, form.Height - dockPanelHeight);
                    };
                }
                else
                {
                    var callStack = new CallStackControl();
                    callStack.LoadCallStack(exception.DebugInformation);
                    form.ShowPanel(callStack);
                    var globalVariables = new VariablesControl
                    {
                        Text = "Globals"
                    };
                    globalVariables.LoadVariables(exception.DebugInformation, VariablesMode.Globals);
                    form.ShowPanel(globalVariables);
                    var localVariables = new VariablesControl
                    {
                        Text = "Locals"
                    };
                    localVariables.LoadVariables(exception.DebugInformation, VariablesMode.Locals);
                    form.ShowPanel(localVariables);

                    callStack.DockHandler.Activate();
                }

                form.ShowDialog(owner);
            }
        }
예제 #2
0
 private void LoadTabs(DebugInformation debug)
 {
     _localsControl.LoadVariables(debug, VariablesMode.Locals);
     _globalsControl.LoadVariables(debug, VariablesMode.Globals);
     _callStackControl.LoadCallStack(debug);
 }