diff --git a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj
index 0500991393..076addcf78 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj
+++ b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj
@@ -112,9 +112,6 @@
-
- ConditionCell.xaml
-
DrawSurface.xaml
@@ -343,7 +340,6 @@
-
diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs
index b8893cf977..97179860ed 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs
+++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs
@@ -19,26 +19,14 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
{
public BreakPointsPad()
{
- myPanel.Children.Add(CreateToolBar());
+ var res = new CommonResources();
+ res.InitializeComponent();
- CreateColumns();
- }
-
- protected override ToolBar CreateToolBar()
- {
- ToolBar toolbar = ToolBarService.CreateToolBar(myPanel, this, "/SharpDevelop/Pads/BreakpointPad/Toolbar");
- toolbar.SetValue(Grid.RowProperty, 0);
- return toolbar;
- }
-
- protected override void CreateColumns()
- {
- string conditionHeader = StringParser.Parse("${res:MainWindow.Windows.Debug.Conditional.Breakpoints.ConditionalColumnHeader}");
+ Grid grid = (Grid)this.Control;
+ ToolBar toolbar = ToolBarService.CreateToolBar(grid, this, "/SharpDevelop/Pads/BreakpointPad/Toolbar");
+ grid.Children.Add(toolbar);
- // HACK
- DataTemplate cellTemplate = new ConditionCell().FindResource("ConditionCellTemplate") as DataTemplate;
-
- listView.AddColumn(conditionHeader, cellTemplate);
+ this.control.listView.View = (GridView)res["breakpointsGridView"];
}
protected override bool ShowBookmarkInThisPad(SDBookmark mark)
@@ -46,27 +34,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
return mark.IsVisibleInBookmarkPad && mark is BreakpointBookmark;
}
- protected override void OnItemActivated(object sender, EventArgs e)
+ protected override void OnItemActivated(SDBookmark bookmark)
{
- var node = CurrentItem;
- if (node == null)
- return;
- SDBookmark mark = node.Mark as SDBookmark;
- if (mark == null)
- return;
-
- string fileName = mark.FileName;
- if (mark is DecompiledBreakpointBookmark) {
+ if (bookmark is DecompiledBreakpointBookmark) {
// get information from breakpoint and navigate to the decompiled type
string assemblyFile, typeName;
- if (DecompiledBreakpointBookmark.GetAssemblyAndType(fileName, out assemblyFile, out typeName)) {
- NavigationService.NavigateTo(assemblyFile, typeName, string.Empty, mark.LineNumber, false);
+ if (DecompiledBreakpointBookmark.GetAssemblyAndType(bookmark.FileName, out assemblyFile, out typeName)) {
+ NavigationService.NavigateTo(assemblyFile, typeName, string.Empty, bookmark.LineNumber, false);
}
} else {
- // jump to normal breakpoint
- FileService.JumpToFilePosition(fileName, mark.LineNumber, 1);
-
- // TODO: if other types of breakpoint bookmarks are available, one should do jumping/navigation here
+ base.OnItemActivated(bookmark);
}
}
}
diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/CommonResources.xaml b/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/CommonResources.xaml
index 9d47aa3e6f..38353c814b 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/CommonResources.xaml
+++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/CommonResources.xaml
@@ -6,6 +6,8 @@
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:tv="http://icsharpcode.net/sharpdevelop/treeview"
>
+
+
@@ -34,4 +36,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/ConditionCell.xaml b/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/ConditionCell.xaml
deleted file mode 100644
index 20ab0bae89..0000000000
--- a/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/ConditionCell.xaml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/ConditionCell.xaml.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/ConditionCell.xaml.cs
deleted file mode 100644
index eb8e1b2066..0000000000
--- a/src/AddIns/Debugger/Debugger.AddIn/Pads/Common/ConditionCell.xaml.cs
+++ /dev/null
@@ -1,196 +0,0 @@
-// 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.IO;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Input;
-
-using ICSharpCode.AvalonEdit;
-using ICSharpCode.Core;
-using ICSharpCode.Core.Presentation;
-using ICSharpCode.NRefactory;
-using ICSharpCode.SharpDevelop;
-using ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls;
-using ICSharpCode.SharpDevelop.Debugging;
-using ICSharpCode.SharpDevelop.Dom;
-using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver;
-using ICSharpCode.SharpDevelop.Editor;
-using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
-using ICSharpCode.SharpDevelop.Gui;
-using ICSharpCode.SharpDevelop.Project;
-
-namespace Debugger.AddIn.Pads.Controls
-{
- public partial class ConditionCell : UserControl
- {
- private string language;
-
- protected ConsoleControl console;
-
- public static readonly DependencyProperty CommandTextProperty =
- DependencyProperty.Register("CommandText", typeof(string), typeof(ConditionCell),
- new UIPropertyMetadata(null, new PropertyChangedCallback(OnCommandTextChanged)));
-
- private NRefactoryResolver resolver;
-
- public ConditionCell()
- {
- InitializeComponent();
-
- console = new ConsoleControl();
- console.TextAreaTextEntered += new TextCompositionEventHandler(consoleControl_TextAreaTextEntered);
- console.TextAreaPreviewKeyDown += new KeyEventHandler(console_TextAreaPreviewKeyDown);
- console.LostFocus += new RoutedEventHandler(console_LostFocus);
- console.HideScrollBar();
- ConsolePanel.Content = console;
-
- // get language
- if (ProjectService.CurrentProject == null)
- language = "C#";
- else
- language = ProjectService.CurrentProject.Language;
- resolver = new NRefactoryResolver(LanguageProperties.GetLanguage(language));
-
- // FIXME set language
- if (language == "VB" || language == "VBNet") {
- console.SetHighlighting("VBNET");
- }
- else {
- console.SetHighlighting("C#");
- }
- }
-
- ///
- /// Gets/sets the command text displayed at the command prompt.
- ///
- public string CommandText {
- get { return console.CommandText.Trim(); }
- set { console.CommandText = value; }
- }
-
- private BreakpointBookmark Breakpoint {
- get {
- var model = Model;
- return model.Mark as BreakpointBookmark;
- }
- }
-
- private ListViewPadItemModel Model {
- get { return Tag as ListViewPadItemModel; }
- }
-
- private ITextEditor TextEditor {
- get {
- return console.TextEditor;
- }
- }
-
- private void console_TextAreaPreviewKeyDown(object sender, KeyEventArgs e)
- {
- if (e.Key == Key.Return || e.Key == Key.Escape) {
-
- if (e.Key == Key.Escape)
- CommandText = string.Empty;
- else {
- if(!CheckSyntax())
- return;
- }
-
- UpdateBreakpoint();
-
- e.Handled = true;
- }
- }
-
- private void console_LostFocus(object sender, RoutedEventArgs e)
- {
- if (string.IsNullOrEmpty(CommandText) || !this.CheckSyntax())
- return;
-
- UpdateBreakpoint();
- }
-
- private void UpdateBreakpoint()
- {
- Breakpoint.Condition = CommandText;
- Model.Condition = CommandText;
- Breakpoint.ScriptLanguage = language;
- Model.Language = language;
-
- if (!string.IsNullOrEmpty(console.CommandText)) {
- Breakpoint.Action = BreakpointAction.Condition;
- if (Breakpoint.IsEnabled)
- Model.Image = BreakpointBookmark.BreakpointConditionalImage.ImageSource;
- }
- else {
- Breakpoint.Action = BreakpointAction.Break;
- if (Breakpoint.IsEnabled)
- Model.Image = BreakpointBookmark.BreakpointImage.ImageSource;
- }
- }
-
- private bool CheckSyntax()
- {
- string command = CommandText;
- if (string.IsNullOrEmpty(command))
- return true;
-
- // FIXME workaround the NRefactory issue that needs a ; at the end
- if (language == "C#") {
- if(!command.EndsWith(";"))
- command += ";";
- // FIXME only one string should be available; highlighting expects C#, supproted language, CSharp
- language = "CSharp";
- }
-
- SupportedLanguage supportedLanguage = (SupportedLanguage)Enum.Parse(typeof(SupportedLanguage), language.ToString(), true);
- using (var parser = ParserFactory.CreateParser(supportedLanguage, new StringReader(TextEditor.Document.Text))) {
- parser.ParseExpression();
- if (parser.Errors.Count > 0) {
- MessageService.ShowError(parser.Errors.ErrorOutput);
- return false;
- }
- }
-
- return true;
- }
-
- private void consoleControl_TextAreaTextEntered(object sender, TextCompositionEventArgs e)
- {
- foreach (char ch in e.Text) {
- if (ch == '.') {
- ShowDotCompletion(console.CommandText);
- }
- }
- }
-
- private void ShowDotCompletion(string currentText)
- {
- var seg = Breakpoint;
-
- var expressionFinder = ParserService.GetExpressionFinder(seg.FileName.ToString());
- var info = ParserService.GetParseInformation(seg.FileName.ToString());
-
- string text = ParserService.GetParseableFileContent(seg.FileName.ToString()).Text;
-
- int currentOffset = TextEditor.Caret.Offset - console.CommandOffset - 1;
-
- var expr = expressionFinder.FindExpression(currentText, currentOffset);
-
- expr.Region = new DomRegion(seg.LineNumber, seg.ColumnNumber, seg.LineNumber, seg.ColumnNumber);
-
- var rr = resolver.Resolve(expr, info, text);
-
- if (rr != null) {
- TextEditor.ShowCompletionWindow(new DotCodeCompletionItemProvider().GenerateCompletionListForResolveResult(rr, expr.Context));
- }
- }
-
- private static void OnCommandTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
- var cell = d as ConditionCell;
- cell.CommandText = e.NewValue.ToString();
- }
- }
-}
\ No newline at end of file
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
index 499f25d7f0..a361ad7884 100755
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
@@ -1108,12 +1108,12 @@
+ class = "ICSharpCode.SharpDevelop.Bookmarks.DeleteMark"/>
+ class = "ICSharpCode.SharpDevelop.Bookmarks.DeleteAllMarks"/>
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 081c6f38e3..9249721a30 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -96,9 +96,6 @@
Src\Project\MSBuildEngine\ExtendedBinaryReader.cs
-
- ListViewPad.xaml
-
@@ -700,8 +697,6 @@
-
-
@@ -871,7 +866,7 @@
-
+
@@ -911,7 +906,6 @@
-
diff --git a/src/Main/Base/Project/Src/Bookmarks/BookmarkBase.cs b/src/Main/Base/Project/Src/Bookmarks/BookmarkBase.cs
index 457787f117..1cc17ec403 100644
--- a/src/Main/Base/Project/Src/Bookmarks/BookmarkBase.cs
+++ b/src/Main/Base/Project/Src/Bookmarks/BookmarkBase.cs
@@ -1,11 +1,13 @@
// 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 ICSharpCode.SharpDevelop.Editor;
using System;
using System.Windows.Input;
+using System.Windows.Media;
+
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
+using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop.Bookmarks
{
@@ -152,6 +154,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
get { return DefaultBookmarkImage; }
}
+ public ImageSource ImageSource {
+ get { return this.Image != null ? this.Image.ImageSource : null; }
+ }
+
public virtual void MouseDown(MouseButtonEventArgs e)
{
}
diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs
index 333b05a8d9..491cb932f2 100644
--- a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs
+++ b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs
@@ -3,12 +3,11 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Windows;
using System.Windows.Controls;
-
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
-using ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Gui;
@@ -16,108 +15,57 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
public sealed class BookmarkPad : BookmarkPadBase
{
- static BookmarkPad instance;
-
- public static BookmarkPad Instance {
- get {
- if (instance == null) {
- WorkbenchSingleton.Workbench.GetPad(typeof(BookmarkPad)).CreatePad();
- }
- return instance;
- }
- }
-
- protected override ToolBar CreateToolBar()
+ public BookmarkPad()
{
- ToolBar toolbar = ToolBarService.CreateToolBar(myPanel, this, "/SharpDevelop/Pads/BookmarkPad/Toolbar");
- toolbar.SetValue(Grid.RowProperty, 0);
- return toolbar;
+ ToolBar toolbar = ToolBarService.CreateToolBar((UIElement)this.Control, this, "/SharpDevelop/Pads/BookmarkPad/Toolbar");
+ this.control.Children.Add(toolbar);
}
- protected override void CreateColumns() { }
-
- public BookmarkPad()
+ protected override bool ShowBookmarkInThisPad(SDBookmark bookmark)
{
- instance = this;
- myPanel.Children.Add(CreateToolBar());
- listView.HideColumns(2, 0);
+ return bookmark.IsVisibleInBookmarkPad && !(bookmark is BreakpointBookmark);
}
}
public abstract class BookmarkPadBase : AbstractPadContent
{
- protected Grid myPanel = new Grid();
- protected ListViewPad listView = new ListViewPad();
+ protected BookmarkPadContent control;
public override object Control {
- get {
- return myPanel;
- }
+ get { return this.control; }
}
- public ListViewPadItemModel CurrentItem {
- get {
- return listView.CurrentItem;
- }
+ public ListView ListView {
+ get { return this.control.listView; }
}
- protected abstract ToolBar CreateToolBar();
+ public ItemCollection Items {
+ get { return this.control.listView.Items; }
+ }
- protected abstract void CreateColumns();
+ public SDBookmark SelectedItem {
+ get { return (SDBookmark)this.control.listView.SelectedItem; }
+ }
protected BookmarkPadBase()
{
- myPanel.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
- myPanel.RowDefinitions.Add(new RowDefinition());
- listView.SetValue(Grid.RowProperty, 1);
- myPanel.Children.Add(listView);
+ this.control = new BookmarkPadContent();
+ this.control.InitializeComponent();
BookmarkManager.Added += BookmarkManagerAdded;
BookmarkManager.Removed += BookmarkManagerRemoved;
- foreach (SDBookmark mark in BookmarkManager.Bookmarks) {
- AddMark(mark);
- }
-
- listView.ItemActivated += new EventHandler(OnItemActivated);
- }
-
- public IEnumerable AllItems {
- get {
- foreach (var item in listView.ItemCollection) {
- yield return item;
+ foreach (SDBookmark bookmark in BookmarkManager.Bookmarks) {
+ if (ShowBookmarkInThisPad(bookmark)) {
+ this.Items.Add(bookmark);
}
}
- }
-
- public ListViewPadItemModel NextItem {
- get {
- return this.listView.NextItem;
- }
- }
-
- public ListViewPadItemModel PreviousItem {
- get {
- return this.listView.PreviousItem;
- }
- }
-
- public void EnableDisableAll()
- {
- bool isOneChecked = false;
- foreach (var node in AllItems) {
- if (node.IsChecked) {
- isOneChecked = true;
- break;
- }
- }
- foreach (var node in AllItems)
- node.IsChecked = !isOneChecked;
- }
-
- public void SelectItem(ListViewPadItemModel model)
- {
- listView.CurrentItem = model;
+
+ this.control.listView.MouseDoubleClick += delegate {
+ SDBookmark bm = this.control.listView.SelectedItem as SDBookmark;
+ if (bm != null)
+ OnItemActivated(bm);
+ };
}
public override void Dispose()
@@ -126,60 +74,23 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
BookmarkManager.Removed -= BookmarkManagerRemoved;
}
- void AddMark(SDBookmark mark)
- {
- if (!ShowBookmarkInThisPad(mark))
- return;
-
- var model = new ListViewPadItemModel(mark);
- model.PropertyChanged += OnModelPropertyChanged;
- listView.Add(model);
- }
+ protected abstract bool ShowBookmarkInThisPad(SDBookmark mark);
- protected virtual bool ShowBookmarkInThisPad(SDBookmark mark)
+ protected virtual void OnItemActivated(SDBookmark bm)
{
- return mark.IsVisibleInBookmarkPad && !(mark is BreakpointBookmark);
- }
-
- protected virtual void OnItemActivated(object sender, EventArgs e)
- {
- var node = CurrentItem;
- if (node != null) {
- SDBookmark mark = node.Mark as SDBookmark;
- if (mark != null) {
- FileService.JumpToFilePosition(mark.FileName, mark.LineNumber, 1);
- }
- }
+ FileService.JumpToFilePosition(bm.FileName, bm.LineNumber, 1);
}
void BookmarkManagerAdded(object sender, BookmarkEventArgs e)
- {
- AddMark(e.Bookmark);
- }
-
- void BookmarkManagerRemoved(object sender, BookmarkEventArgs e)
{
if (ShowBookmarkInThisPad(e.Bookmark)) {
- var model = listView.Remove(e.Bookmark);
- if (model != null)
- model.PropertyChanged -= OnModelPropertyChanged;
+ this.Items.Add(e.Bookmark);
}
}
- void OnModelPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
+ void BookmarkManagerRemoved(object sender, BookmarkEventArgs e)
{
- var model = sender as ListViewPadItemModel;
- if (e.PropertyName == "IsChecked") {
- if (model.Mark is BreakpointBookmark) {
- var bpm = model.Mark as BreakpointBookmark;
- bpm.IsEnabled = model.IsChecked;
- if (model.IsChecked) {
- model.Image = string.IsNullOrEmpty(model.Condition) ? BreakpointBookmark.BreakpointImage.ImageSource : BreakpointBookmark.BreakpointConditionalImage.ImageSource;
- } else {
- model.Image = BreakpointBookmark.DisabledBreakpointImage.ImageSource;
- }
- }
- }
+ this.Items.Remove(e.Bookmark);
}
}
}
\ No newline at end of file
diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadContent.xaml b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadContent.xaml
new file mode 100644
index 0000000000..b29cd843b6
--- /dev/null
+++ b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadContent.xaml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs
index 7da3eac63a..6b00672959 100644
--- a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs
+++ b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs
@@ -7,116 +7,65 @@ using System.Linq;
using System.Windows.Forms;
using ICSharpCode.Core;
-using ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls;
using ICSharpCode.SharpDevelop.Debugging;
namespace ICSharpCode.SharpDevelop.Bookmarks
{
- #region Goto Commands
- public abstract class NextPrevBookmarkPadCommand : AbstractMenuCommand
- {
- public void Run(ListViewPadItemModel item)
- {
- var bookmarkBase = (BookmarkPadBase)Owner;
-
- if (item == null) return;
-
- // get current mark
- var mark = item.Mark as SDBookmark;
- int line = mark.LineNumber;
- var fileName = new FileName(mark.FileName);
-
- SDBookmark bookmark;
- if (item.Mark is BreakpointBookmark) {
- var bookmarks = DebuggerService.Breakpoints;
- bookmark = bookmarks.FirstOrDefault(b => b.LineNumber == line && b.FileName == fileName);
- if (bookmark == null && bookmarks.Count > 0) {
- bookmark = bookmarks[0]; // jump around to first bookmark
- }
- }
- else {
- var bookmarks = BookmarkManager.Bookmarks;
- bookmark = bookmarks.FirstOrDefault(b => b.LineNumber == line && b.FileName == fileName);
- if (bookmark == null && bookmarks.Count > 0) {
- bookmark = bookmarks[0]; // jump around to first bookmark
- }
- }
-
- if (bookmark != null) {
- FileService.JumpToFilePosition(bookmark.FileName, bookmark.LineNumber, bookmark.ColumnNumber);
- }
-
- // select in tree
- bookmarkBase.SelectItem(item);
- }
- }
-
- public sealed class NextBookmarkPadCommand : NextPrevBookmarkPadCommand
+ public sealed class NextBookmarkPadCommand : AbstractMenuCommand
{
public override void Run()
{
- var bookmarkBase = (BookmarkPadBase)Owner;
- var nextItem = bookmarkBase.NextItem;
-
- Run(nextItem);
+ BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
+ if (pad.ListView.Items.Count > 0) {
+ pad.ListView.SelectedIndex = (pad.ListView.SelectedIndex + 1) % pad.ListView.Items.Count;
+ FileService.JumpToFilePosition(pad.SelectedItem.FileName, pad.SelectedItem.LineNumber, pad.SelectedItem.ColumnNumber);
+ }
}
}
- public sealed class PrevBookmarkPadCommand : NextPrevBookmarkPadCommand
+ public sealed class PrevBookmarkPadCommand : AbstractMenuCommand
{
public override void Run()
{
- var bookmarkBase = (BookmarkPadBase)Owner;
- var prevItem = bookmarkBase.PreviousItem;
-
- Run(prevItem);
- }
- }
- #endregion Goto Commands
-
- #region Delete BookMark(s) commands
-
- public abstract class AbstractDeleteMarkClass : AbstractMenuCommand
- {
- protected void deleteBookMark (SDBookmark bookmark) {
- if (bookmark == null) return;
- if (bookmark is BreakpointBookmark) return;
- ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.RemoveMark(bookmark);
+ BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
+ if (pad.ListView.Items.Count > 0) {
+ pad.ListView.SelectedIndex = (pad.ListView.SelectedIndex - 1 + pad.ListView.Items.Count) % pad.ListView.Items.Count;
+ FileService.JumpToFilePosition(pad.SelectedItem.FileName, pad.SelectedItem.LineNumber, pad.SelectedItem.ColumnNumber);
+ }
}
}
- ///
- /// Deletes all s in the BookMarkPad.
- ///
- public class DeleteAllMarks : AbstractDeleteMarkClass
+ public class DeleteAllMarks : AbstractMenuCommand
{
public override void Run()
{
- BookmarkManager.RemoveAll(b => !(b is BreakpointBookmark));
+ BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
+ foreach(SDBookmark bm in pad.Items.OfType().ToList()) {
+ BookmarkManager.RemoveMark(bm);
+ }
}
}
- ///
- /// Deletes the currently selected or
- ///
- public class DeleteMark : AbstractDeleteMarkClass
+ public class DeleteMark : AbstractMenuCommand
{
public override void Run()
{
- var node = ((BookmarkPadBase)Owner).CurrentItem;
- if (node == null) return;
-
- deleteBookMark(node.Mark as SDBookmark);
+ BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
+ if (pad.SelectedItem != null) {
+ BookmarkManager.RemoveMark(pad.SelectedItem);
+ }
}
}
- #endregion Delete BookMark(s) commands
-
public class EnableDisableAll : AbstractMenuCommand
{
public override void Run()
{
- ((BookmarkPadBase)Owner).EnableDisableAll();
+ BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
+ bool anyEnabled = pad.Items.OfType().Any(bp => bp.IsEnabled);
+ foreach (var bp in pad.Items.OfType()) {
+ bp.IsEnabled = !anyEnabled;
+ }
}
}
}
diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml b/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml
deleted file mode 100644
index dbc714cc73..0000000000
--- a/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs b/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs
deleted file mode 100644
index 4876bbbf7d..0000000000
--- a/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs
+++ /dev/null
@@ -1,241 +0,0 @@
-// 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.ObjectModel;
-using System.ComponentModel;
-using System.IO;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Input;
-using System.Windows.Media;
-
-using ICSharpCode.Core;
-using ICSharpCode.SharpDevelop.Debugging;
-
-namespace ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls
-{
- ///
- /// ListViewPad inside WPF pads.
- ///
- public sealed partial class ListViewPad : UserControl
- {
- ObservableCollection itemCollection = new ObservableCollection();
-
- public ObservableCollection ItemCollection {
- get { return itemCollection; }
- }
-
- public event EventHandler ItemActivated;
-
- public ListViewPad()
- {
- InitializeComponent();
-
- this.MyListView.PreviewMouseDoubleClick += new MouseButtonEventHandler(ListViewPad_PreviewMouseDoubleClick);
- this.MyListView.KeyDown += new KeyEventHandler(ListViewPad_KeyDown);
- }
-
- public ListViewPadItemModel CurrentItem {
- get {
- if (MyListView.SelectedItem == null && MyListView.Items.Count > 0)
- this.MyListView.SelectedItem = MyListView.Items[0];
-
- return MyListView.SelectedItem as ListViewPadItemModel;
- }
- set {
- if (value == null) return;
-
- this.MyListView.SelectedItem = value;
- }
- }
-
- public ListViewPadItemModel NextItem {
- get {
- bool found = false;
- foreach (var line in ItemCollection) {
- if (found)
- return line;
- if (line == CurrentItem)
- found = true;
- }
-
- return null;
- }
- }
-
- public ListViewPadItemModel PreviousItem {
- get {
- bool found = false;
- ListViewPadItemModel prev = null;
- foreach (var line in ItemCollection) {
- if (found)
- return prev;
- if (line == CurrentItem) {
- found = true;
- }
- else {
- prev = line;
- }
- }
-
- return prev;
- }
- }
-
- public void Add(ListViewPadItemModel item)
- {
- if (item == null) return;
- ItemCollection.Add(item);
- }
-
- public ListViewPadItemModel Remove(SDBookmark bookmark)
- {
- if (bookmark is CurrentLineBookmark)
- return null;
-
- foreach (var model in itemCollection) {
- SDBookmark currentBookmark = model.Mark as SDBookmark;
-
- if (bookmark.FileName == currentBookmark.FileName &&
- bookmark.LineNumber == currentBookmark.LineNumber) {
- ItemCollection.Remove(model);
- return model;
- }
- }
-
- return null;
- }
-
- public void AddColumn(string header, DataTemplate cellTemplate)
- {
- GridViewColumn column = new GridViewColumn();
- column.Header = header;
- column.CellTemplate = cellTemplate;
- ((GridView)this.MyListView.View).Columns.Add(column);
- }
-
- ///
- /// Indexes from end to start.
- ///
- ///
- public void HideColumns(params int[] columnIndexes)
- {
- foreach(int i in columnIndexes)
- ((GridView)MyListView.View).Columns.RemoveAt(i);
- }
-
- private void ListViewPad_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
- {
- var handler = ItemActivated;
-
- if (handler != null)
- ItemActivated(this, EventArgs.Empty);
- }
-
- private void ListViewPad_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.Key == Key.Escape) {
- this.MyListView.UnselectAll();
- e.Handled = true;
- }
- }
- }
-
- public sealed class ListViewPadItemModel : INotifyPropertyChanged
- {
- bool isChecked;
- object tag;
- string language;
- string condition;
- ImageSource imageSource;
-
- public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
- public ListViewPadItemModel(SDBookmark mark)
- {
- if (mark is BreakpointBookmark) {
- isChecked = ((BreakpointBookmark)mark).IsEnabled;
- condition = ((BreakpointBookmark)mark).Condition;
- language = ((BreakpointBookmark)mark).ScriptLanguage;
- }
-
- imageSource = mark.Image.ImageSource;
-
- Location = GetLocation(mark);
- Mark = mark;
- tag = this;
- }
-
- public bool IsChecked {
- get {
- return isChecked;
- }
- set {
- if (value != isChecked)
- {
- isChecked = value;
- NotifyPropertyChanged("IsChecked");
- }
- }
- }
-
- public SDBookmark Mark {
- get; set;
- }
-
- public ImageSource Image {
- get { return imageSource; }
- set {
- imageSource = value;
- NotifyPropertyChanged("Image");
- }
- }
-
- public string Location {
- get; private set;
- }
-
- public string Language {
- get { return language; }
- set {
- language = value;
- NotifyPropertyChanged("Language");
- }
- }
-
- public string Condition {
- get { return condition; }
- set {
- condition = value;
- NotifyPropertyChanged("Condition");
- }
- }
-
- public object Tag {
- get { return tag;}
- set {
- tag = value;
- NotifyPropertyChanged("Tag");
- }
- }
-
- public override string ToString()
- {
- return Location;
- }
-
- private string GetLocation(SDBookmark bookmark)
- {
- return string.Format(StringParser.Parse("${res:MainWindow.Windows.BookmarkPad.LineText}"),
- Path.GetFileName(bookmark.FileName), bookmark.LineNumber);
- }
-
- private void NotifyPropertyChanged(string property)
- {
- if (PropertyChanged != null) {
- PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(property));
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/Nodes/BookmarkFolderNode.cs b/src/Main/Base/Project/Src/Bookmarks/Pad/Nodes/BookmarkFolderNode.cs
deleted file mode 100644
index d30b5ed142..0000000000
--- a/src/Main/Base/Project/Src/Bookmarks/Pad/Nodes/BookmarkFolderNode.cs
+++ /dev/null
@@ -1,127 +0,0 @@
-// 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.Drawing;
-using System.IO;
-using System.Windows.Forms;
-
-using ICSharpCode.Core;
-using ICSharpCode.SharpDevelop.Gui;
-
-namespace ICSharpCode.SharpDevelop.Bookmarks
-{
- ///
- /// Description of SearchFolderNode.
- ///
- public class BookmarkFolderNode : ExtFolderNode
- {
- List marks = new List();
- string fileName;
- string fileNameText;
- string occurences;
- Image icon;
-
- public List Marks {
- get {
- return marks;
- }
- }
-
- public BookmarkFolderNode(string fileName)
- {
- drawDefault = false;
- this.fileName = fileName;
- fileNameText = Path.GetFileName(fileName) + StringParser.Parse(" ${res:MainWindow.Windows.SearchResultPanel.In} ") + Path.GetDirectoryName(fileName);
- icon = IconService.GetBitmap(IconService.GetImageForFile(fileName));
- Nodes.Add(new TreeNode());
- }
-
- public void SetText()
- {
- if (marks.Count == 1) {
- occurences = " (1 bookmark)";
- } else {
- occurences = " (" + marks.Count + " bookmarks)";
- }
- this.Text = fileNameText + occurences;
- }
-
- protected override int MeasureItemWidth(DrawTreeNodeEventArgs e)
- {
- Graphics g = e.Graphics;
- int x = MeasureTextWidth(g, fileNameText, RegularBigFont);
- x += MeasureTextWidth(g, occurences, ItalicBigFont);
- if (icon != null) {
- x += icon.Width;
- }
- return x + 3;
- }
- protected override void DrawForeground(DrawTreeNodeEventArgs e)
- {
- Graphics g = e.Graphics;
- float x = e.Bounds.X;
- if (icon != null) {
- g.DrawImage(icon, x, e.Bounds.Y, icon.Width, icon.Height);
- x += icon.Width + 2;
- }
- DrawText(e, fileNameText, SystemBrushes.WindowText, RegularBigFont, ref x);
- DrawText(e, occurences, SystemBrushes.GrayText, ItalicBigFont, ref x);
- }
-
- public void AddMark(SDBookmark mark)
- {
- int index = -1;
- for (int i = 0; i < marks.Count; ++i) {
- if (mark.LineNumber < marks[i].LineNumber) {
- index = i;
- break;
- }
- }
- if (index < 0)
- marks.Add(mark);
- else
- marks.Insert(index, mark);
-
- if (isInitialized) {
- BookmarkNode newNode = new BookmarkNode(mark);
- if (index < 0)
- Nodes.Add(newNode);
- else
- Nodes.Insert(index, newNode);
- newNode.EnsureVisible();
- }
- SetText();
- }
-
- public void RemoveMark(SDBookmark mark)
- {
- marks.Remove(mark);
- if (isInitialized) {
- for (int i = 0; i < Nodes.Count; ++i) {
- if (((BookmarkNode)Nodes[i]).Bookmark == mark) {
- Nodes.RemoveAt(i);
- break;
- }
- }
- }
- SetText();
- }
-
- protected override void Initialize()
- {
- Nodes.Clear();
- if (marks.Count > 0) {
-// IDocument document = marks[0].Document;
-// if (document != null && document.HighlightingStrategy == null) {
-// document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategyForFile(fileName);
-// }
- foreach (SDBookmark mark in marks) {
- TreeNode newResult = new BookmarkNode(mark);
- Nodes.Add(newResult);
- }
- }
- }
- }
-}
diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/Nodes/BookmarkNode.cs b/src/Main/Base/Project/Src/Bookmarks/Pad/Nodes/BookmarkNode.cs
deleted file mode 100644
index 746a95120f..0000000000
--- a/src/Main/Base/Project/Src/Bookmarks/Pad/Nodes/BookmarkNode.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-// 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.Drawing;
-using System.Windows.Forms;
-
-using ICSharpCode.SharpDevelop.Gui;
-
-namespace ICSharpCode.SharpDevelop.Bookmarks
-{
- ///
- /// ExtTreeNode representing a bookmark.
- ///
- public class BookmarkNode : ExtTreeNode
- {
- SDBookmark bookmark;
- //LineSegment line;
-
- SizeF spaceSize;
- static StringFormat sf = (StringFormat)System.Drawing.StringFormat.GenericTypographic.Clone();
-
- string positionText;
-
- public SDBookmark Bookmark {
- get {
- return bookmark;
- }
- }
-
- public BookmarkNode(SDBookmark bookmark)
- {
- drawDefault = false;
- this.bookmark = bookmark;
- Tag = bookmark;
-// Checked = bookmark.IsEnabled;
- positionText = "(" + (bookmark.LineNumber) + ") ";
-
- bookmark.DocumentChanged += BookmarkDocumentChanged;
- bookmark.LineNumberChanged += BookmarkLineNumberChanged;
- if (bookmark.Document != null) {
- BookmarkDocumentChanged(null, null);
- } else {
- Text = positionText;
- }
- }
-
- public override void CheckedChanged()
- {
-// bookmark.IsEnabled = Checked;
- }
-
- void BookmarkDocumentChanged(object sender, EventArgs e)
- {
- if (bookmark.Document != null) {
-// line = bookmark.Document.GetLineSegment(Math.Min(bookmark.LineNumber, bookmark.Document.TotalNumberOfLines));
-// Text = positionText + bookmark.Document.GetText(line);
- }
- }
-
- void BookmarkLineNumberChanged(object sender, EventArgs e)
- {
- positionText = "(" + (bookmark.LineNumber) + ") ";
- BookmarkDocumentChanged(sender, e);
- }
-
- protected override int MeasureItemWidth(DrawTreeNodeEventArgs e)
- {
- Graphics g = e.Graphics;
- int x = MeasureTextWidth(g, positionText, BoldMonospacedFont);
-// if (line != null && !line.IsDeleted) {
-// x += MeasureTextWidth(g, bookmark.Document.GetText(line).Replace("\t", " "), BoldMonospacedFont);
-// }
- return x;
- }
-
- protected override void DrawForeground(DrawTreeNodeEventArgs e)
- {
- Graphics g = e.Graphics;
- float x = e.Bounds.X;
- DrawText(e, positionText, SystemBrushes.WindowText, RegularBigFont, ref x);
-
- spaceSize = g.MeasureString("-", RegularBigFont, new PointF(0, 0), StringFormat.GenericTypographic);
-
-// if (line != null && !line.IsDeleted) {
-// DrawLine(g, line, e.Bounds.Y, x, e.State);
-// }
- }
-
- public override void ActivateItem()
- {
- FileService.JumpToFilePosition(bookmark.FileName, bookmark.LineNumber, 1);
- }
-
- /*
- float DrawDocumentWord(Graphics g, string word, PointF position, Font font, Color foreColor)
- {
- if (word == null || word.Length == 0) {
- return 0f;
- }
- SizeF wordSize = g.MeasureString(word, font, 32768, sf);
-
- g.DrawString(word,
- font,
- BrushRegistry.GetBrush(foreColor),
- position,
- sf);
- return wordSize.Width;
- }
-
- void DrawLine(Graphics g, LineSegment line, float yPos, float xPos, TreeNodeStates state)
- {
- int logicalX = 0;
- if (line.Words != null) {
- foreach (TextWord word in line.Words) {
- switch (word.Type) {
- case TextWordType.Space:
- xPos += spaceSize.Width;
- logicalX++;
- break;
- case TextWordType.Tab:
- xPos += spaceSize.Width * 4;
- logicalX++;
- break;
- case TextWordType.Word:
- xPos += DrawDocumentWord(g,
- word.Word,
- new PointF(xPos, yPos),
- word.Bold ? BoldMonospacedFont : RegularMonospacedFont,
- GetTextColor(state, word.Color)
- );
- logicalX += word.Word.Length;
- break;
- }
- }
- } else {
-// DrawDocumentWord(g,
-// bookmark.Document.GetText(line),
-// new PointF(xPos, yPos),
-// RegularMonospacedFont,
-// GetTextColor(state, Color.Black)
-// );
- }
- }*/
- }
-}
diff --git a/src/Main/Base/Project/Src/Bookmarks/SDBookmark.cs b/src/Main/Base/Project/Src/Bookmarks/SDBookmark.cs
index abaa76b858..017febfd33 100644
--- a/src/Main/Base/Project/Src/Bookmarks/SDBookmark.cs
+++ b/src/Main/Base/Project/Src/Bookmarks/SDBookmark.cs
@@ -3,6 +3,7 @@
using System;
using System.ComponentModel;
+using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
@@ -33,6 +34,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
}
}
+ public string FileNameAndLineNumber {
+ get { return string.Format(StringParser.Parse("${res:MainWindow.Windows.BookmarkPad.LineText}"), Path.GetFileName(this.FileName), this.LineNumber); }
+ }
+
public event EventHandler FileNameChanged;
protected virtual void OnFileNameChanged(EventArgs e)
diff --git a/src/Main/Base/Project/Src/Commands/DebugCommands.cs b/src/Main/Base/Project/Src/Commands/DebugCommands.cs
index d95c8e2a3e..bedf53f342 100644
--- a/src/Main/Base/Project/Src/Commands/DebugCommands.cs
+++ b/src/Main/Base/Project/Src/Commands/DebugCommands.cs
@@ -8,7 +8,6 @@ using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Bookmarks;
-using ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
@@ -140,31 +139,6 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
- public class RemoveAllBreakpointsCommand : AbstractMenuCommand
- {
- public override void Run()
- {
- BookmarkManager.RemoveAll(b => b is BreakpointBookmark);
- }
- }
-
- public class DeleteBreakpointCommand : AbstractMenuCommand
- {
- public override void Run()
- {
- if (Owner == null || !(Owner is BookmarkPadBase)) return;
-
- var bookmarkBase = (BookmarkPadBase)Owner;
- var item = bookmarkBase.CurrentItem;
-
- if (item == null) return;
-
- if (item.Mark is BreakpointBookmark) {
- BookmarkManager.RemoveMark(item.Mark);
- }
- }
- }
-
public class AttachToProcessCommand : AbstractMenuCommand
{
public override void Run()
diff --git a/src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs b/src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs
index a19452939c..dd694b1a25 100644
--- a/src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs
+++ b/src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs
@@ -27,6 +27,8 @@ namespace ICSharpCode.SharpDevelop.Debugging
string condition;
string scriptLanguage;
+ public event EventHandler ConditionChanged;
+
public string ScriptLanguage {
get { return scriptLanguage; }
set { scriptLanguage = value; }
@@ -34,7 +36,15 @@ namespace ICSharpCode.SharpDevelop.Debugging
public string Condition {
get { return condition; }
- set { condition = value; }
+ set {
+ if (condition != value) {
+ condition = value;
+ this.Action = string.IsNullOrEmpty(condition) ? BreakpointAction.Break : BreakpointAction.Condition;
+ if (ConditionChanged != null)
+ ConditionChanged(this, EventArgs.Empty);
+ Redraw();
+ }
+ }
}
public BreakpointAction Action {