/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
- // Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
- // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using ICSharpCode.ILSpy;
- using ICSharpCode.ILSpy.Bookmarks;
- using ICSharpCode.ILSpy.Debugger.Bookmarks;
- using ICSharpCode.ILSpy.Options;
- namespace ICSharpCode.ILSpy.Debugger.UI
- {
- /// <summary>
- /// Interaction logic for BreakpointPanel.xaml
- /// </summary>
- public partial class BreakpointPanel : UserControl, IPane
- {
- static BreakpointPanel s_instance;
-
- public static BreakpointPanel Instance
- {
- get {
- if (null == s_instance)
- {
- App.Current.VerifyAccess();
- s_instance = new BreakpointPanel();
- }
- return s_instance;
- }
- }
-
- private BreakpointPanel()
- {
- InitializeComponent();
- }
-
- public void Show()
- {
- if (!IsVisible)
- {
- SetItemSource();
-
- MainWindow.Instance.ShowInBottomPane("Breakpoints", this);
-
- BookmarkManager.Added += delegate { SetItemSource(); };
- BookmarkManager.Removed += delegate { SetItemSource(); };
- DebuggerSettings.Instance.PropertyChanged +=
- delegate(object s, PropertyChangedEventArgs e) { if (e.PropertyName == "ShowAllBookmarks") SetItemSource(); };
- }
- }
-
- private void SetItemSource()
- {
- view.ItemsSource = null;
- if (DebuggerSettings.Instance.ShowAllBookmarks)
- view.ItemsSource = BookmarkManager.Bookmarks;
- else
- view.ItemsSource = BookmarkManager.Bookmarks.Where(b => b is BreakpointBookmark);
- }
-
- public void Closed()
- {
- BookmarkManager.Added -= delegate { SetItemSource(); };
- BookmarkManager.Removed -= delegate { SetItemSource(); };
- DebuggerSettings.Instance.PropertyChanged -=
- delegate(object s, PropertyChangedEventArgs e) { if (e.PropertyName == "ShowAllBookmarks") SetItemSource(); };
- }
-
- void view_MouseDoubleClick(object sender, MouseButtonEventArgs e)
- {
- if (MouseButton.Left != e.ChangedButton)
- return;
- var selectedItem = view.SelectedItem as BookmarkBase;
- if (null == selectedItem)
- return;
- MainWindow.Instance.JumpToReference(selectedItem.MemberReference);
- MainWindow.Instance.TextView.UnfoldAndScroll(selectedItem.LineNumber);
- e.Handled = true;
- }
-
- void view_KeyUp(object sender, KeyEventArgs e)
- {
- if (e.Key != Key.Delete)
- return;
- var selectedItem = view.SelectedItem as BookmarkBase;
- if (null == selectedItem)
- return;
- BookmarkManager.RemoveMark(selectedItem);
- e.Handled = true;
- }
- }
- [ExportMainMenuCommand(Menu="_Debugger", Header="Show _Breakpoints", MenuCategory="View", MenuOrder=8)]
- public class BookmarkManagerPanelCommand : SimpleCommand
- {
- public override void Execute(object parameter)
- {
- BreakpointPanel.Instance.Show();
- }
- }
- }