diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj
index 801df42a63..f4dc63cdcf 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj
@@ -59,6 +59,9 @@
+
+
+
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.Menu.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.Menu.cs
new file mode 100644
index 0000000000..6908b0ea5c
--- /dev/null
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.Menu.cs
@@ -0,0 +1,100 @@
+//
+//
+//
+//
+// $Revision: 1253 $
+//
+
+using System;
+using System.Windows.Forms;
+using System.Drawing;
+using System.CodeDom.Compiler;
+using System.Collections;
+using System.ComponentModel;
+using System.IO;
+using System.Diagnostics;
+using ICSharpCode.Core;
+using ICSharpCode.SharpDevelop.Services;
+
+using Debugger;
+
+namespace ICSharpCode.SharpDevelop.Gui.Pads
+{
+ public partial class CallStackPad
+ {
+ public bool ShowArgumentNames {
+ get {
+ return debugger.Properties.Get("ShowArgumentNames", true);
+ }
+ set {
+ debugger.Properties.Set("ShowArgumentNames", value);
+ }
+ }
+
+ public bool ShowArgumentValues {
+ get {
+ return debugger.Properties.Get("ShowArgumentValues", true);
+ }
+ set {
+ debugger.Properties.Set("ShowArgumentValues", value);
+ }
+ }
+
+ public bool ShowExternalMethods {
+ get {
+ return debugger.Properties.Get("ShowExternalMethods", false);
+ }
+ set {
+ debugger.Properties.Set("ShowExternalMethods", value);
+ }
+ }
+
+ ContextMenuStrip CreateContextMenuStrip()
+ {
+ ContextMenuStrip menu = new ContextMenuStrip();
+ menu.Opening += FillContextMenuStrip;
+ return menu;
+ }
+
+ void FillContextMenuStrip(object sender, CancelEventArgs e)
+ {
+ ContextMenuStrip menu = sender as ContextMenuStrip;
+ menu.Items.Clear();
+
+ ToolStripMenuItem argNamesItem;
+ argNamesItem = new ToolStripMenuItem();
+ argNamesItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowArgumentNames");
+ argNamesItem.Checked = ShowArgumentNames;
+ argNamesItem.Click += delegate {
+ ShowArgumentNames = !ShowArgumentNames;
+ RefreshPad();
+ };
+
+ ToolStripMenuItem argValuesItem;
+ argValuesItem = new ToolStripMenuItem();
+ argValuesItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowArgumentValues");
+ argValuesItem.Checked = ShowArgumentValues;
+ argValuesItem.Click += delegate {
+ ShowArgumentValues = !ShowArgumentValues;
+ RefreshPad();
+ };
+
+ ToolStripMenuItem extMethodsItem;
+ extMethodsItem = new ToolStripMenuItem();
+ extMethodsItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowExternalMethods");
+ extMethodsItem.Checked = ShowExternalMethods;
+ extMethodsItem.Click += delegate {
+ ShowExternalMethods = !ShowExternalMethods;
+ RefreshPad();
+ };
+
+ menu.Items.AddRange(new ToolStripItem[] {
+ argNamesItem,
+ argValuesItem,
+ extMethodsItem
+ });
+
+ e.Cancel = false;
+ }
+ }
+}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs
index 49832b8737..082822c851 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs
@@ -20,11 +20,8 @@ using Debugger;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
- public class CallStackPad : AbstractPadContent
+ public partial class CallStackPad : DebuggerPad
{
- WindowsDebugger debugger;
- NDebugger debuggerCore;
-
ListView callStackList;
ColumnHeader name = new ColumnHeader();
@@ -36,15 +33,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
- public CallStackPad()// : base("${res:MainWindow.Windows.Debug.CallStack}", null)
- {
- InitializeComponents();
- }
-
- void InitializeComponents()
+ protected override void InitializeComponents()
{
- debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
-
callStackList = new ListView();
callStackList.FullRowSelect = true;
callStackList.AutoArrange = true;
@@ -60,24 +50,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
language.Width = 50;
RedrawContent();
-
- if (debugger.ServiceInitialized) {
- InitializeDebugger();
- } else {
- debugger.Initialize += delegate {
- InitializeDebugger();
- };
- }
- }
-
- public void InitializeDebugger()
- {
- debuggerCore = debugger.DebuggerCore;
-
- debuggerCore.DebuggeeStateChanged += DebuggeeStateChanged;
- debuggerCore.DebuggingResumed += DebuggingResumed;
-
- RefreshList();
}
public override void RedrawContent()
@@ -86,82 +58,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
language.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.Language");
}
- public bool ShowArgumentNames {
- get {
- return debugger.Properties.Get("ShowArgumentNames", true);
- }
- set {
- debugger.Properties.Set("ShowArgumentNames", value);
- }
- }
-
- public bool ShowArgumentValues {
- get {
- return debugger.Properties.Get("ShowArgumentValues", true);
- }
- set {
- debugger.Properties.Set("ShowArgumentValues", value);
- }
- }
-
- public bool ShowExternalMethods {
- get {
- return debugger.Properties.Get("ShowExternalMethods", false);
- }
- set {
- debugger.Properties.Set("ShowExternalMethods", value);
- }
- }
-
- ContextMenuStrip CreateContextMenuStrip()
+
+ protected override void RegisterDebuggerEvents()
{
- ContextMenuStrip menu = new ContextMenuStrip();
- menu.Opening += FillContextMenuStrip;
- return menu;
- }
-
- void FillContextMenuStrip(object sender, CancelEventArgs e)
- {
- ContextMenuStrip menu = sender as ContextMenuStrip;
- menu.Items.Clear();
-
- ToolStripMenuItem argNamesItem;
- argNamesItem = new ToolStripMenuItem();
- argNamesItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowArgumentNames");
- argNamesItem.Checked = ShowArgumentNames;
- argNamesItem.Click +=
- delegate {
- ShowArgumentNames = !ShowArgumentNames;
- RefreshList();
- };
-
- ToolStripMenuItem argValuesItem;
- argValuesItem = new ToolStripMenuItem();
- argValuesItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowArgumentValues");
- argValuesItem.Checked = ShowArgumentValues;
- argValuesItem.Click +=
- delegate {
- ShowArgumentValues = !ShowArgumentValues;
- RefreshList();
- };
-
- ToolStripMenuItem extMethodsItem;
- extMethodsItem = new ToolStripMenuItem();
- extMethodsItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowExternalMethods");
- extMethodsItem.Checked = ShowExternalMethods;
- extMethodsItem.Click +=
- delegate {
- ShowExternalMethods = !ShowExternalMethods;
- RefreshList();
- };
-
- menu.Items.AddRange(new ToolStripItem[] {
- argNamesItem,
- argValuesItem,
- extMethodsItem
- });
-
- e.Cancel = false;
+ debuggerCore.DebuggeeStateChanged += delegate { RefreshPad(); };
+ debuggerCore.DebuggingResumed += delegate { RefreshPad(); };
}
void CallStackListItemActivate(object sender, EventArgs e)
@@ -179,18 +80,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
MessageBox.Show("You can not switch functions while the debugger is running.", "Function switch");
}
}
-
- void DebuggeeStateChanged(object sender, DebuggerEventArgs e)
- {
- RefreshList();
- }
-
- void DebuggingResumed(object sender, DebuggerEventArgs e)
- {
- RefreshList();
- }
- public void RefreshList()
+ public override void RefreshPad()
{
bool showArgumentNames = ShowArgumentNames;
bool showArgumentValues = ShowArgumentValues;
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/DebuggerPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/DebuggerPad.cs
new file mode 100644
index 0000000000..ecbb249341
--- /dev/null
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/DebuggerPad.cs
@@ -0,0 +1,60 @@
+//
+//
+//
+//
+// $Revision: 1064 $
+//
+
+using System;
+using ICSharpCode.Core;
+using ICSharpCode.SharpDevelop.Services;
+
+using Debugger;
+
+namespace ICSharpCode.SharpDevelop.Gui.Pads
+{
+ public abstract class DebuggerPad: AbstractPadContent
+ {
+ protected WindowsDebugger debugger;
+ protected NDebugger debuggerCore;
+
+ public DebuggerPad()
+ {
+ debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
+
+ InitializeComponents();
+
+ if (debugger.ServiceInitialized) {
+ InitializeDebugger();
+ } else {
+ debugger.Initialize += delegate {
+ InitializeDebugger();
+ };
+ }
+ }
+
+ protected virtual void InitializeComponents()
+ {
+
+ }
+
+ void InitializeDebugger()
+ {
+ debuggerCore = debugger.DebuggerCore;
+
+ RegisterDebuggerEvents();
+
+ RefreshPad();
+ }
+
+ protected virtual void RegisterDebuggerEvents()
+ {
+
+ }
+
+ public virtual void RefreshPad()
+ {
+
+ }
+ }
+}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs
index 110d07b163..2ac8227057 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs
@@ -19,11 +19,8 @@ using Debugger;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
- public class ExceptionHistoryPad : AbstractPadContent
+ public class ExceptionHistoryPad : DebuggerPad
{
- WindowsDebugger debugger;
- NDebugger debuggerCore;
-
ListView exceptionHistoryList;
ColumnHeader time = new ColumnHeader();
@@ -36,15 +33,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
- public ExceptionHistoryPad()
+ protected override void InitializeComponents()
{
- InitializeComponents();
- }
-
- void InitializeComponents()
- {
- debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
-
exceptionHistoryList = new ListView();
exceptionHistoryList.FullRowSelect = true;
exceptionHistoryList.AutoArrange = true;
@@ -60,25 +50,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
time.Width = 80;
RedrawContent();
-
- if (debugger.ServiceInitialized) {
- InitializeDebugger();
- } else {
- debugger.Initialize += delegate {
- InitializeDebugger();
- };
- }
}
- public void InitializeDebugger()
- {
- debuggerCore = debugger.DebuggerCore;
-
- debugger.ExceptionHistoryModified += new EventHandler(ExceptionHistoryModified);
-
- RefreshList();
- }
-
public override void RedrawContent()
{
time.Text = ResourceService.GetString("MainWindow.Windows.Debug.ExceptionHistory.Time");
@@ -86,6 +59,12 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
location.Text = ResourceService.GetString("AddIns.HtmlHelp2.Location");
}
+
+ protected override void RegisterDebuggerEvents()
+ {
+ debugger.ExceptionHistoryModified += delegate { RefreshPad(); };
+ }
+
void ExceptionHistoryListItemActivate(object sender, EventArgs e)
{
SourcecodeSegment nextStatement = ((Debugger.Exception)(exceptionHistoryList.SelectedItems[0].Tag)).Location;
@@ -115,13 +94,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}*/
}
}
-
- void ExceptionHistoryModified(object sender, EventArgs e)
- {
- RefreshList();
- }
- public void RefreshList()
+ public override void RefreshPad()
{
exceptionHistoryList.BeginUpdate();
exceptionHistoryList.Items.Clear();
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs
index 328bbaa214..072661368a 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs
@@ -19,11 +19,8 @@ using Debugger;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
- public class LoadedModulesPad : AbstractPadContent
+ public class LoadedModulesPad : DebuggerPad
{
- WindowsDebugger debugger;
- NDebugger debuggerCore;
-
ListView loadedModulesList;
ColumnHeader name = new ColumnHeader();
@@ -41,16 +38,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
return loadedModulesList;
}
}
-
- public LoadedModulesPad() //: base("${res:MainWindow.Windows.Debug.Modules}", null)
- {
- InitializeComponents();
- }
-
- void InitializeComponents()
+
+ protected override void InitializeComponents()
{
- debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
-
loadedModulesList = new ListView();
loadedModulesList.FullRowSelect = true;
loadedModulesList.AutoArrange = true;
@@ -70,24 +60,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
information.Width = 130;
RedrawContent();
-
- if (debugger.ServiceInitialized) {
- InitializeDebugger();
- } else {
- debugger.Initialize += delegate {
- InitializeDebugger();
- };
- }
- }
-
- public void InitializeDebugger()
- {
- debuggerCore = debugger.DebuggerCore;
-
- debuggerCore.ModuleLoaded += new EventHandler(AddModule);
- debuggerCore.ModuleUnloaded += new EventHandler(RemoveModule);
-
- RefreshList();
}
public override void RedrawContent()
@@ -101,8 +73,15 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
timestamp.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.TimestampColumn}");
information.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.InformationColumn}");
}
+
+
+ protected override void RegisterDebuggerEvents()
+ {
+ debuggerCore.ModuleLoaded += AddModule;
+ debuggerCore.ModuleUnloaded += RemoveModule;
+ }
- void RefreshList()
+ public override void RefreshPad()
{
loadedModulesList.Items.Clear();
foreach(Module m in debuggerCore.Modules) {
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
index d052ca1a83..8e709e4851 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
@@ -20,11 +20,8 @@ using System.Collections.Generic;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
- public class LocalVarPad : AbstractPadContent
+ public class LocalVarPad : DebuggerPad
{
- WindowsDebugger debugger;
- NDebugger debuggerCore;
-
TreeListView localVarList;
ColumnHeader name = new ColumnHeader();
@@ -37,15 +34,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
- public LocalVarPad() //: base("${res:MainWindow.Windows.Debug.Local}", null)
- {
- InitializeComponents();
- }
-
- void InitializeComponents()
+ protected override void InitializeComponents()
{
- debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
-
//iconsService = (ClassBrowserIconsService)ServiceManager.Services.GetService(typeof(ClassBrowserIconsService));
localVarList = new TreeListView();
localVarList.SmallImageList = DebuggerIcons.ImageList;
@@ -65,14 +55,13 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
RedrawContent();
-
- if (debugger.ServiceInitialized) {
- InitializeDebugger();
- } else {
- debugger.Initialize += delegate {
- InitializeDebugger();
- };
- }
+ }
+
+ public override void RedrawContent()
+ {
+ name.Text = ResourceService.GetString("Global.Name");
+ val.Text = ResourceService.GetString("Dialog.HighlightingEditor.Properties.Value");
+ type.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.TypeColumn");
}
// This is a walkarond for a visual issue
@@ -81,13 +70,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
localVarList.Visible = true;
}
- public void InitializeDebugger()
+
+ protected override void RegisterDebuggerEvents()
{
- debuggerCore = debugger.DebuggerCore;
-
debuggerCore.DebuggeeStateChanged += delegate { debuggerCore.LocalVariables.Update(); };
-
+ }
+
+ public override void RefreshPad()
+ {
localVarList.BeginUpdate();
+ localVarList.Items.Clear();
AddVariableCollectionToTree(debuggerCore.LocalVariables, localVarList.Items);
localVarList.EndUpdate();
}
@@ -109,13 +101,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
tree.Add(newItem);
}
-
- public override void RedrawContent()
- {
- name.Text = ResourceService.GetString("Global.Name");
- val.Text = ResourceService.GetString("Dialog.HighlightingEditor.Properties.Value");
- type.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.TypeColumn");
- }
private void localVarList_BeforeExpand(object sender, TreeListViewCancelEventArgs e)
{
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.Menu.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.Menu.cs
new file mode 100644
index 0000000000..2ff067a778
--- /dev/null
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.Menu.cs
@@ -0,0 +1,76 @@
+//
+//
+//
+//
+// $Revision: 1253 $
+//
+
+using System;
+using System.Windows.Forms;
+using System.Drawing;
+using System.CodeDom.Compiler;
+using System.Collections;
+using System.ComponentModel;
+using System.IO;
+using System.Diagnostics;
+using ICSharpCode.Core;
+using ICSharpCode.SharpDevelop.Services;
+
+using Debugger;
+
+namespace ICSharpCode.SharpDevelop.Gui.Pads
+{
+ public partial class RunningThreadsPad
+ {
+ ContextMenuStrip CreateContextMenuStrip()
+ {
+ ContextMenuStrip menu = new ContextMenuStrip();
+ menu.Opening += FillContextMenuStrip;
+ return menu;
+ }
+
+ void FillContextMenuStrip(object sender, CancelEventArgs e)
+ {
+ ListView.SelectedListViewItemCollection items = runningThreadsList.SelectedItems;
+
+ if (items.Count == 0) {
+ e.Cancel = true;
+ return;
+ }
+
+ ListViewItem item = items[0];
+
+ ContextMenuStrip menu = sender as ContextMenuStrip;
+ menu.Items.Clear();
+
+ ToolStripMenuItem freezeItem;
+ freezeItem = new ToolStripMenuItem();
+ freezeItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.Threads.Freeze");
+ freezeItem.Checked = (item.Tag as Thread).Suspended;
+ freezeItem.Click +=
+ delegate {
+ ListView.SelectedListViewItemCollection selItems = runningThreadsList.SelectedItems;
+ if (selItems.Count == 0) {
+ return;
+ }
+ bool suspended = (selItems[0].Tag as Thread).Suspended;
+
+ if (!debuggerCore.IsPaused) {
+ MessageBox.Show("You can not freeze or thaw thread while the debugger is running.", "Thread freeze");
+ return;
+ }
+
+ foreach(ListViewItem i in selItems) {
+ (i.Tag as Thread).Suspended = !suspended;
+ }
+ RefreshPad();
+ };
+
+ menu.Items.AddRange(new ToolStripItem[] {
+ freezeItem,
+ });
+
+ e.Cancel = false;
+ }
+ }
+}
diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs
index 9c1444b460..25512651a5 100644
--- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs
@@ -20,11 +20,8 @@ using Debugger;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
- public class RunningThreadsPad : AbstractPadContent
+ public partial class RunningThreadsPad : DebuggerPad
{
- WindowsDebugger debugger;
- NDebugger debuggerCore;
-
ListView runningThreadsList;
ColumnHeader id = new ColumnHeader();
@@ -38,16 +35,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
return runningThreadsList;
}
}
-
- public RunningThreadsPad() //: base("${res:MainWindow.Windows.Debug.Threads}", null)
- {
- InitializeComponents();
- }
-
- void InitializeComponents()
- {
- debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
+ protected override void InitializeComponents()
+ {
runningThreadsList = new ListView();
runningThreadsList.FullRowSelect = true;
runningThreadsList.AutoArrange = true;
@@ -66,26 +56,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
breaked.Width = 80;
RedrawContent();
-
- if (debugger.ServiceInitialized) {
- InitializeDebugger();
- } else {
- debugger.Initialize += delegate {
- InitializeDebugger();
- };
- }
- }
-
- public void InitializeDebugger()
- {
- debuggerCore = debugger.DebuggerCore;
-
- debuggerCore.DebuggeeStateChanged += DebuggeeStateChanged;
- debuggerCore.ThreadStarted += ThreadStarted;
- debuggerCore.ThreadStateChanged += ThreadStateChanged;
- debuggerCore.ThreadExited += ThreadExited;
-
- RefreshList();
}
public override void RedrawContent()
@@ -97,58 +67,22 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
breaked.Text = ResourceService.GetString("MainWindow.Windows.Debug.Threads.Frozen");
}
- ContextMenuStrip CreateContextMenuStrip()
- {
- ContextMenuStrip menu = new ContextMenuStrip();
- menu.Opening += FillContextMenuStrip;
- return menu;
- }
-
- void FillContextMenuStrip(object sender, CancelEventArgs e)
+
+ protected override void RegisterDebuggerEvents()
{
- ListView.SelectedListViewItemCollection items = runningThreadsList.SelectedItems;
-
- if (items.Count == 0) {
- e.Cancel = true;
- return;
- }
-
- ListViewItem item = items[0];
-
- ContextMenuStrip menu = sender as ContextMenuStrip;
- menu.Items.Clear();
-
- ToolStripMenuItem freezeItem;
- freezeItem = new ToolStripMenuItem();
- freezeItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.Threads.Freeze");
- freezeItem.Checked = (item.Tag as Thread).Suspended;
- freezeItem.Click +=
- delegate {
- ListView.SelectedListViewItemCollection selItems = runningThreadsList.SelectedItems;
- if (selItems.Count == 0) {
- return;
- }
- bool suspended = (selItems[0].Tag as Thread).Suspended;
-
- if (!debuggerCore.IsPaused) {
- MessageBox.Show("You can not freeze or thaw thread while the debugger is running.", "Thread freeze");
- return;
- }
-
- foreach(ListViewItem i in selItems) {
- (i.Tag as Thread).Suspended = !suspended;
- }
- RefreshList();
+ debuggerCore.DebuggeeStateChanged += delegate { RefreshPad(); };
+ debuggerCore.ThreadStarted += delegate(object sender, ThreadEventArgs e) {
+ AddThread(e.Thread);
+ };
+ debuggerCore.ThreadStateChanged += delegate(object sender, ThreadEventArgs e) {
+ RefreshThread(e.Thread);
+ };
+ debuggerCore.ThreadExited += delegate(object sender, ThreadEventArgs e) {
+ RemoveThread(e.Thread);
};
-
- menu.Items.AddRange(new ToolStripItem[] {
- freezeItem,
- });
-
- e.Cancel = false;
}
- void RefreshList()
+ public override void RefreshPad()
{
foreach (Thread t in debuggerCore.Threads) {
RefreshThread(t);
@@ -164,28 +98,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
} else {
MessageBox.Show("You can not switch threads while the debugger is running.", "Thread switch");
}
- }
-
- void DebuggeeStateChanged(object sender, DebuggerEventArgs e)
- {
- RefreshList();
- }
-
- void ThreadStarted(object sender, ThreadEventArgs e)
- {
- AddThread(e.Thread);
- }
-
- void ThreadStateChanged(object sender, ThreadEventArgs e)
- {
- RefreshThread(e.Thread);
- }
-
- void ThreadExited(object sender, ThreadEventArgs e)
- {
- RemoveThread(e.Thread);
- }
-
+ }
void AddThread(Thread thread)
{