|
|
|
@ -10,6 +10,7 @@ using System.Windows.Forms;
@@ -10,6 +10,7 @@ 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; |
|
|
|
@ -56,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
@@ -56,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
|
|
|
|
|
runningThreadsList.GridLines = false; |
|
|
|
|
runningThreadsList.Activation = ItemActivation.OneClick; |
|
|
|
|
runningThreadsList.Columns.AddRange(new ColumnHeader[] {id, name, location, priority, breaked} ); |
|
|
|
|
runningThreadsList.ContextMenuStrip = CreateContextMenuStrip(); |
|
|
|
|
runningThreadsList.ItemActivate += new EventHandler(RunningThreadsListItemActivate); |
|
|
|
|
id.Width = 100; |
|
|
|
|
name.Width = 300; |
|
|
|
@ -92,7 +94,58 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
@@ -92,7 +94,58 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
|
|
|
|
|
name.Text = "Name"; |
|
|
|
|
location.Text = "Location"; |
|
|
|
|
priority.Text = "Priority"; |
|
|
|
|
breaked.Text = "Breaked"; |
|
|
|
|
breaked.Text = "Frozen"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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 = "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(); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
menu.Items.AddRange(new ToolStripItem[] { |
|
|
|
|
freezeItem, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
e.Cancel = false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void RefreshList() |
|
|
|
|