Browse Source

BreakPointsPad derives from BookmarksPad. Implements:

SD2-608: Cannot remove breakpoints via breakpoint pad; 
SD2-609: Cannot go to source code line from breakpoint pad; 
SD2-610: Saved breakpoints should be displayed in breakpoint pad on opening a solution

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1064 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
c345caa1a6
  1. 133
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs

133
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs

@ -13,29 +13,19 @@ using System.Collections; @@ -13,29 +13,19 @@ using System.Collections;
using System.IO;
using System.Diagnostics;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Services;
using Debugger;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
public class BreakPointsPad : AbstractPadContent
public class BreakPointsPad : BookmarkPad
{
WindowsDebugger debugger;
NDebugger debuggerCore;
ListView breakpointsList;
ColumnHeader name = new ColumnHeader();
ColumnHeader path = new ColumnHeader();
public override Control Control {
get {
return breakpointsList;
}
}
public BreakPointsPad() //: base("${res:MainWindow.Windows.Debug.Breakpoints}", null)
public BreakPointsPad()
{
InitializeComponents();
}
@ -44,23 +34,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -44,23 +34,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
{
debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
breakpointsList = new ListView();
breakpointsList.FullRowSelect = true;
breakpointsList.AutoArrange = true;
breakpointsList.Alignment = ListViewAlignment.Left;
breakpointsList.View = View.Details;
breakpointsList.Dock = DockStyle.Fill;
breakpointsList.GridLines = false;
breakpointsList.Activation = ItemActivation.OneClick;
breakpointsList.CheckBoxes = true;
breakpointsList.Columns.AddRange(new ColumnHeader[] {name, path} );
breakpointsList.ItemCheck += new ItemCheckEventHandler(BreakpointsListItemCheck);
name.Width = 300;
path.Width = 400;
RedrawContent();
if (debugger.ServiceInitialized) {
InitializeDebugger();
} else {
@ -73,106 +46,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -73,106 +46,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public void InitializeDebugger()
{
debuggerCore = debugger.DebuggerCore;
debuggerCore.DebuggingResumed += new EventHandler<DebuggerEventArgs>(debuggerService_OnDebuggingResumed);
debuggerCore.BreakpointAdded += new EventHandler<BreakpointEventArgs>(AddBreakpoint);
debuggerCore.BreakpointStateChanged += new EventHandler<BreakpointEventArgs>(RefreshBreakpoint);
debuggerCore.BreakpointRemoved += new EventHandler<BreakpointEventArgs>(RemoveBreakpoint);
debuggerCore.BreakpointHit += new EventHandler<BreakpointEventArgs>(Breakpoints_OnBreakpointHit);
RefreshList();
}
public override void RedrawContent()
{
name.Text = ResourceService.GetString("Global.Name");
path.Text = ResourceService.GetString("Global.Path");
}
void BreakpointsListItemCheck(object sender, ItemCheckEventArgs e)
{
Debugger.Breakpoint breakpoint = breakpointsList.Items[e.Index].Tag as Debugger.Breakpoint;
if (breakpoint != null) {
breakpoint.Enabled = (e.NewValue == CheckState.Checked);
}
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null) {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent.RedrawContent();
}
}
void RefreshList()
{
breakpointsList.ItemCheck -= new ItemCheckEventHandler(BreakpointsListItemCheck);
breakpointsList.BeginUpdate();
breakpointsList.Items.Clear();
foreach(Debugger.Breakpoint b in debuggerCore.Breakpoints) {
AddBreakpoint(new BreakpointEventArgs(b));
}
breakpointsList.EndUpdate();
breakpointsList.ItemCheck += new ItemCheckEventHandler(BreakpointsListItemCheck);
}
void AddBreakpoint(object sender, BreakpointEventArgs e)
{
breakpointsList.ItemCheck -= new ItemCheckEventHandler(BreakpointsListItemCheck);
AddBreakpoint(e);
breakpointsList.ItemCheck += new ItemCheckEventHandler(BreakpointsListItemCheck);
}
void AddBreakpoint(BreakpointEventArgs e)
{
ListViewItem item = new ListViewItem();
item.Tag = e.Breakpoint;
breakpointsList.Items.Add(item);
RefreshBreakpoint(item, e);
}
void RefreshBreakpoint(object sender, BreakpointEventArgs e)
{
breakpointsList.ItemCheck -= new ItemCheckEventHandler(BreakpointsListItemCheck);
foreach (ListViewItem item in breakpointsList.Items) {
if (e.Breakpoint == item.Tag) {
RefreshBreakpoint(item, e);
break;
}
}
breakpointsList.ItemCheck += new ItemCheckEventHandler(BreakpointsListItemCheck);
}
void RefreshBreakpoint(ListViewItem item, BreakpointEventArgs e)
{
item.SubItems.Clear();
item.Checked = e.Breakpoint.Enabled;
item.Text = Path.GetFileName(e.Breakpoint.SourcecodeSegment.SourceFullFilename) + ", Line = " + e.Breakpoint.SourcecodeSegment.StartLine.ToString();
item.ForeColor = e.Breakpoint.HadBeenSet ? Color.Black : Color.Gray;
item.SubItems.AddRange(new string[] { Path.GetDirectoryName(e.Breakpoint.SourcecodeSegment.SourceFullFilename) });
}
void RemoveBreakpoint(object sender, BreakpointEventArgs e)
{
foreach (ListViewItem item in breakpointsList.Items) {
if (e.Breakpoint == item.Tag) {
item.Remove();
}
}
}
void Breakpoints_OnBreakpointHit(object sender, BreakpointEventArgs e)
{
foreach (ListViewItem item in breakpointsList.Items) {
if (e.Breakpoint == item.Tag) {
item.BackColor = System.Drawing.Color.DarkRed;
item.ForeColor = System.Drawing.Color.White;
}
}
}
void debuggerService_OnDebuggingResumed(object sender, DebuggerEventArgs e)
{
breakpointsList.BeginUpdate();
foreach(Debugger.Breakpoint b in debuggerCore.Breakpoints)
RefreshBreakpoint(this, new BreakpointEventArgs(b));
breakpointsList.EndUpdate();
}
}
}

Loading…
Cancel
Save