/Debugger/ILSpy.Debugger/UI/BreakpointPanel.xaml.cs

http://github.com/icsharpcode/ILSpy · C# · 110 lines · 93 code · 12 blank · 5 comment · 16 complexity · ddcd94d85b4edda0ccdd78c498203842 MD5 · raw file

  1. // Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
  2. // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Data;
  11. using System.Windows.Documents;
  12. using System.Windows.Input;
  13. using System.Windows.Media;
  14. using ICSharpCode.ILSpy;
  15. using ICSharpCode.ILSpy.Bookmarks;
  16. using ICSharpCode.ILSpy.Debugger.Bookmarks;
  17. using ICSharpCode.ILSpy.Options;
  18. namespace ICSharpCode.ILSpy.Debugger.UI
  19. {
  20. /// <summary>
  21. /// Interaction logic for BreakpointPanel.xaml
  22. /// </summary>
  23. public partial class BreakpointPanel : UserControl, IPane
  24. {
  25. static BreakpointPanel s_instance;
  26. public static BreakpointPanel Instance
  27. {
  28. get {
  29. if (null == s_instance)
  30. {
  31. App.Current.VerifyAccess();
  32. s_instance = new BreakpointPanel();
  33. }
  34. return s_instance;
  35. }
  36. }
  37. private BreakpointPanel()
  38. {
  39. InitializeComponent();
  40. }
  41. public void Show()
  42. {
  43. if (!IsVisible)
  44. {
  45. SetItemSource();
  46. MainWindow.Instance.ShowInBottomPane("Breakpoints", this);
  47. BookmarkManager.Added += delegate { SetItemSource(); };
  48. BookmarkManager.Removed += delegate { SetItemSource(); };
  49. DebuggerSettings.Instance.PropertyChanged +=
  50. delegate(object s, PropertyChangedEventArgs e) { if (e.PropertyName == "ShowAllBookmarks") SetItemSource(); };
  51. }
  52. }
  53. private void SetItemSource()
  54. {
  55. view.ItemsSource = null;
  56. if (DebuggerSettings.Instance.ShowAllBookmarks)
  57. view.ItemsSource = BookmarkManager.Bookmarks;
  58. else
  59. view.ItemsSource = BookmarkManager.Bookmarks.Where(b => b is BreakpointBookmark);
  60. }
  61. public void Closed()
  62. {
  63. BookmarkManager.Added -= delegate { SetItemSource(); };
  64. BookmarkManager.Removed -= delegate { SetItemSource(); };
  65. DebuggerSettings.Instance.PropertyChanged -=
  66. delegate(object s, PropertyChangedEventArgs e) { if (e.PropertyName == "ShowAllBookmarks") SetItemSource(); };
  67. }
  68. void view_MouseDoubleClick(object sender, MouseButtonEventArgs e)
  69. {
  70. if (MouseButton.Left != e.ChangedButton)
  71. return;
  72. var selectedItem = view.SelectedItem as BookmarkBase;
  73. if (null == selectedItem)
  74. return;
  75. MainWindow.Instance.JumpToReference(selectedItem.MemberReference);
  76. MainWindow.Instance.TextView.UnfoldAndScroll(selectedItem.LineNumber);
  77. e.Handled = true;
  78. }
  79. void view_KeyUp(object sender, KeyEventArgs e)
  80. {
  81. if (e.Key != Key.Delete)
  82. return;
  83. var selectedItem = view.SelectedItem as BookmarkBase;
  84. if (null == selectedItem)
  85. return;
  86. BookmarkManager.RemoveMark(selectedItem);
  87. e.Handled = true;
  88. }
  89. }
  90. [ExportMainMenuCommand(Menu="_Debugger", Header="Show _Breakpoints", MenuCategory="View", MenuOrder=8)]
  91. public class BookmarkManagerPanelCommand : SimpleCommand
  92. {
  93. public override void Execute(object parameter)
  94. {
  95. BreakpointPanel.Instance.Show();
  96. }
  97. }
  98. }