From d54cf7c844366eb77b15d33f3b96ca536e44120d Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 21 Sep 2012 17:41:36 +0200 Subject: [PATCH] Move remaining bookmark classes. --- .../Test/Tree/TestableConditionTests.cs | 2 +- .../Debugger.AddIn/Pads/BreakPointsPad.cs | 2 +- .../Pads/ParallelPad/ParallelStackPad.cs | 2 +- .../Pads/ParallelPad/SelectedFrameBookmark.cs | 4 +- .../Debugger.AddIn/Service/WindowsDebugger.cs | 10 +- .../Src/AvalonEditViewContent.cs | 12 +-- .../AvalonEdit.AddIn/Src/CodeEditor.cs | 4 +- .../AvalonEdit.AddIn/Src/IconBarManager.cs | 2 +- .../AvalonEdit.AddIn/Src/IconBarMargin.cs | 4 +- .../LaunchILSpy/OpenInILSpyCommand.cs | 2 +- .../ILSpyAddIn/ViewContent/CodeView.cs | 2 +- .../ViewContent/DecompiledViewContent.cs | 10 +- .../Project/Engine/SearchManager.cs | 6 +- .../Src/ClassRefactoringSubmenuBuilder.cs | 2 +- .../Src/PropertyRefactoringMenuBuilder.cs | 2 +- .../Pad => Editor/Bookmarks}/BookmarkPad.cs | 12 +-- .../Bookmarks}/BookmarkPadContent.xaml | 2 +- .../Bookmarks}/BookmarkPadToolbarCommands.cs | 6 +- .../Editor/Bookmarks/EntityBookmark.cs | 2 +- .../Editor/Bookmarks/IBookmarkManager.cs | 61 ++++++++++++ .../Project/Editor/Bookmarks/SDBookmark.cs | 4 +- .../Project/ICSharpCode.SharpDevelop.addin | 42 ++++---- .../Project/ICSharpCode.SharpDevelop.csproj | 9 +- src/Main/Base/Project/Services/SD.cs | 33 +++++-- .../Project/Src/Commands/DebugCommands.cs | 4 +- .../Commands/ClassBookmarkSubmenuBuilder.cs | 2 +- .../Editor/Commands/ClassMemberMenuBuilder.cs | 2 +- .../Project/Src/Gui/WorkbenchSingleton.cs | 1 - .../Behaviors/DefaultProjectBehavior.cs | 4 +- .../Services/Debugger/BreakpointBookmark.cs | 2 +- .../Services/Debugger/CurrentLineBookmark.cs | 6 +- .../Src/Services/Debugger/DebuggerService.cs | 33 ++----- .../Debugger/DecompiledBreakpointBookmark.cs | 2 +- .../RefactoringMenuBuilder.cs | 2 +- .../Editor}/Bookmarks/BookmarkManager.cs | 95 +++++++++---------- .../Editor/Bookmarks/BookmarkMenuCommands.cs} | 21 ++-- src/Main/SharpDevelop/SharpDevelop.csproj | 4 + 37 files changed, 242 insertions(+), 173 deletions(-) rename src/Main/Base/Project/{Src/Bookmarks/Pad => Editor/Bookmarks}/BookmarkPad.cs (86%) rename src/Main/Base/Project/{Src/Bookmarks/Pad => Editor/Bookmarks}/BookmarkPadContent.xaml (92%) rename src/Main/Base/Project/{Src/Bookmarks/Pad => Editor/Bookmarks}/BookmarkPadToolbarCommands.cs (93%) create mode 100644 src/Main/Base/Project/Editor/Bookmarks/IBookmarkManager.cs rename src/Main/{Base/Project/Src => SharpDevelop/Editor}/Bookmarks/BookmarkManager.cs (56%) rename src/Main/{Base/Project/Src/Bookmarks/Commands/MenuCommands.cs => SharpDevelop/Editor/Bookmarks/BookmarkMenuCommands.cs} (80%) diff --git a/src/AddIns/Analysis/UnitTesting/Test/Tree/TestableConditionTests.cs b/src/AddIns/Analysis/UnitTesting/Test/Tree/TestableConditionTests.cs index 08ebbc0a81..4c1c3f44da 100644 --- a/src/AddIns/Analysis/UnitTesting/Test/Tree/TestableConditionTests.cs +++ b/src/AddIns/Analysis/UnitTesting/Test/Tree/TestableConditionTests.cs @@ -1,7 +1,7 @@ // 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.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.UnitTesting; using NUnit.Framework; diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs index b232680361..d935573b05 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs @@ -9,7 +9,7 @@ using Debugger; using Debugger.AddIn.Pads.Controls; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Services; diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs index 7103725ba3..1ffb623462 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs @@ -16,7 +16,7 @@ using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Gui.Pads; diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/SelectedFrameBookmark.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/SelectedFrameBookmark.cs index 83461b9970..95a20813da 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/SelectedFrameBookmark.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/SelectedFrameBookmark.cs @@ -5,10 +5,10 @@ using System.Windows.Media; using ICSharpCode.Core; using ICSharpCode.NRefactory; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; -namespace ICSharpCode.SharpDevelop.Bookmarks +namespace ICSharpCode.SharpDevelop.Editor.Bookmarks { public class SelectedFrameBookmark : SDMarkerBookmark { diff --git a/src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs b/src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs index 0d32108139..ce2dc24b8a 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs @@ -22,7 +22,7 @@ using ICSharpCode.Core.WinForms; using ICSharpCode.NRefactory; using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.Semantics; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Gui; @@ -372,7 +372,7 @@ namespace ICSharpCode.SharpDevelop.Services AddBreakpoint(b); } - BookmarkManager.Removed += (sender, e) => { + SD.BookmarkManager.BookmarkRemoved += (sender, e) => { BreakpointBookmark bm = e.Bookmark as BreakpointBookmark; if (bm != null) { Breakpoint bp = bm.InternalBreakpointObject as Breakpoint; @@ -387,7 +387,7 @@ namespace ICSharpCode.SharpDevelop.Services void UpdateBreakpointLines() { - foreach (BreakpointBookmark bookmark in BookmarkManager.Bookmarks.OfType()) { + foreach (BreakpointBookmark bookmark in SD.BookmarkManager.Bookmarks.OfType()) { Breakpoint breakpoint = bookmark.InternalBreakpointObject as Breakpoint; breakpoint.Line = bookmark.LineNumber; breakpoint.Column = bookmark.ColumnNumber; @@ -396,7 +396,7 @@ namespace ICSharpCode.SharpDevelop.Services void UpdateBreakpointIcons() { - foreach (BreakpointBookmark bookmark in BookmarkManager.Bookmarks.OfType()) { + foreach (BreakpointBookmark bookmark in SD.BookmarkManager.Bookmarks.OfType()) { Breakpoint breakpoint = bookmark.InternalBreakpointObject as Breakpoint; bookmark.IsHealthy = (CurrentProcess == null) || breakpoint.IsSet; } @@ -517,7 +517,7 @@ namespace ICSharpCode.SharpDevelop.Services } foreach (Breakpoint breakpoint in e.BreakpointsHit) { - var bookmark = BookmarkManager.Bookmarks.OfType().First(bm => bm.InternalBreakpointObject == breakpoint); + var bookmark = SD.BookmarkManager.Bookmarks.OfType().First(bm => bm.InternalBreakpointObject == breakpoint); LoggingService.Debug(bookmark.Action + " " + bookmark.ScriptLanguage + " " + bookmark.Condition); diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs index 8ffc5532c1..98425c3d30 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs @@ -15,7 +15,7 @@ using ICSharpCode.AvalonEdit.Utils; using ICSharpCode.Core; using ICSharpCode.NRefactory.Editor; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Gui; @@ -221,12 +221,12 @@ namespace ICSharpCode.AvalonEdit.AddIn { if (bookmarksAttached) return; bookmarksAttached = true; - foreach (SDBookmark bookmark in BookmarkManager.GetBookmarks(codeEditor.FileName)) { + foreach (SDBookmark bookmark in SD.BookmarkManager.GetBookmarks(codeEditor.FileName)) { bookmark.Document = codeEditor.Document; codeEditor.IconBarManager.Bookmarks.Add(bookmark); } - BookmarkManager.Added += BookmarkManager_Added; - BookmarkManager.Removed += BookmarkManager_Removed; + SD.BookmarkManager.BookmarkAdded += BookmarkManager_Added; + SD.BookmarkManager.BookmarkRemoved += BookmarkManager_Removed; PermanentAnchorService.AttachDocument(codeEditor.FileName, codeEditor.Document); } @@ -237,8 +237,8 @@ namespace ICSharpCode.AvalonEdit.AddIn PermanentAnchorService.DetachDocument(codeEditor.FileName, codeEditor.Document); } - BookmarkManager.Added -= BookmarkManager_Added; - BookmarkManager.Removed -= BookmarkManager_Removed; + SD.BookmarkManager.BookmarkAdded -= BookmarkManager_Added; + SD.BookmarkManager.BookmarkRemoved -= BookmarkManager_Removed; foreach (SDBookmark bookmark in codeEditor.IconBarManager.Bookmarks.OfType()) { if (bookmark.Document == codeEditor.Document) { bookmark.Document = null; diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs index deaca65730..bbd3a06b1a 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs @@ -25,7 +25,7 @@ using ICSharpCode.Core; using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory.Editor; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.CodeCompletion; @@ -206,7 +206,7 @@ namespace ICSharpCode.AvalonEdit.AddIn primaryTextEditor.UpdateCustomizedHighlighting(); if (secondaryTextEditor != null) secondaryTextEditor.UpdateCustomizedHighlighting(); - foreach (var bookmark in BookmarkManager.GetBookmarks(fileName).OfType()) + foreach (var bookmark in SD.BookmarkManager.GetBookmarks(fileName).OfType()) bookmark.SetMarker(); } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs index 34b465dc0d..a0022025e4 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs @@ -8,7 +8,7 @@ using System.Collections.Specialized; using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.TypeSystem; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks; namespace ICSharpCode.AvalonEdit.AddIn diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs index 4adea7f573..1f60b1c332 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs @@ -10,7 +10,7 @@ using System.Windows.Media; using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.AvalonEdit.Utils; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Bookmarks; @@ -242,7 +242,7 @@ namespace ICSharpCode.AvalonEdit.AddIn // no bookmark on the line: create a new breakpoint ITextEditor textEditor = TextView.GetService(typeof(ITextEditor)) as ITextEditor; if (textEditor != null) { - DebuggerService.ToggleBreakpointAt(textEditor, line, typeof(BreakpointBookmark)); + DebuggerService.ToggleBreakpointAt(textEditor, line); return; } } diff --git a/src/AddIns/DisplayBindings/ILSpyAddIn/LaunchILSpy/OpenInILSpyCommand.cs b/src/AddIns/DisplayBindings/ILSpyAddIn/LaunchILSpy/OpenInILSpyCommand.cs index 70734ae298..b0c860f929 100644 --- a/src/AddIns/DisplayBindings/ILSpyAddIn/LaunchILSpy/OpenInILSpyCommand.cs +++ b/src/AddIns/DisplayBindings/ILSpyAddIn/LaunchILSpy/OpenInILSpyCommand.cs @@ -4,7 +4,7 @@ using System; using ICSharpCode.Core; using ICSharpCode.NRefactory.Semantics; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Commands; namespace ICSharpCode.ILSpyAddIn diff --git a/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/CodeView.cs b/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/CodeView.cs index 57cc7badf3..d42ff37070 100644 --- a/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/CodeView.cs +++ b/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/CodeView.cs @@ -18,7 +18,7 @@ using ICSharpCode.AvalonEdit.Search; using ICSharpCode.Core; using ICSharpCode.NRefactory.Editor; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.AvalonEdit; using ICSharpCode.SharpDevelop.Editor.Bookmarks; diff --git a/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs b/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs index 8043fa6227..fed3961c5c 100644 --- a/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs +++ b/src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs @@ -16,7 +16,7 @@ using ICSharpCode.ILSpyAddIn.ViewContent; using ICSharpCode.NRefactory; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.AvalonEdit; @@ -65,8 +65,8 @@ namespace ICSharpCode.ILSpyAddIn thread.Name = "Decompiler (" + shortTypeName + ")"; thread.Start(); - BookmarkManager.Removed += BookmarkManager_Removed; - BookmarkManager.Added += BookmarkManager_Added; + SD.BookmarkManager.BookmarkRemoved += BookmarkManager_Removed; + SD.BookmarkManager.BookmarkAdded += BookmarkManager_Added; } #endregion @@ -97,8 +97,8 @@ namespace ICSharpCode.ILSpyAddIn { cancellation.Cancel(); codeView.Dispose(); - BookmarkManager.Added -= BookmarkManager_Added; - BookmarkManager.Removed -= BookmarkManager_Removed; + SD.BookmarkManager.BookmarkAdded -= BookmarkManager_Added; + SD.BookmarkManager.BookmarkRemoved -= BookmarkManager_Removed; // DecompileInformation data; // DebuggerDecompilerService.DebugInformation.TryRemove(decompiledType.MetadataToken.ToInt32(), out data); base.Dispose(); diff --git a/src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs b/src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs index 2084217843..1fbf4d9aab 100644 --- a/src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs +++ b/src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs @@ -16,7 +16,7 @@ using ICSharpCode.AvalonEdit.Search; using ICSharpCode.Core; using ICSharpCode.NRefactory.Editor; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.AvalonEdit; using ICSharpCode.SharpDevelop.Editor.Bookmarks; @@ -408,13 +408,13 @@ namespace SearchAndReplace if (switchToOpenedView) textArea.Caret.Location = result.StartLocation; - foreach (var bookmark in BookmarkManager.GetBookmarks(result.FileName)) { + foreach (var bookmark in SD.BookmarkManager.GetBookmarks(result.FileName)) { if (bookmark.CanToggle && bookmark.LineNumber == result.StartLocation.Line) { // bookmark or breakpoint already exists at that line return; } } - BookmarkManager.AddMark(new Bookmark { FileName = result.FileName, Location = result.StartLocation}); + SD.BookmarkManager.AddMark(new Bookmark { FileName = result.FileName, Location = result.StartLocation}); } } #endregion diff --git a/src/AddIns/Misc/SharpRefactoring/Project/Src/ClassRefactoringSubmenuBuilder.cs b/src/AddIns/Misc/SharpRefactoring/Project/Src/ClassRefactoringSubmenuBuilder.cs index cd65c34475..351fb0b3bf 100644 --- a/src/AddIns/Misc/SharpRefactoring/Project/Src/ClassRefactoringSubmenuBuilder.cs +++ b/src/AddIns/Misc/SharpRefactoring/Project/Src/ClassRefactoringSubmenuBuilder.cs @@ -12,7 +12,7 @@ using ICSharpCode.Core.Presentation; using ICSharpCode.Core.WinForms; using ICSharpCode.NRefactory; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom.Refactoring; using ICSharpCode.SharpDevelop.Editor; diff --git a/src/AddIns/Misc/SharpRefactoring/Project/Src/PropertyRefactoringMenuBuilder.cs b/src/AddIns/Misc/SharpRefactoring/Project/Src/PropertyRefactoringMenuBuilder.cs index 4289f26af1..00286df8e7 100644 --- a/src/AddIns/Misc/SharpRefactoring/Project/Src/PropertyRefactoringMenuBuilder.cs +++ b/src/AddIns/Misc/SharpRefactoring/Project/Src/PropertyRefactoringMenuBuilder.cs @@ -12,7 +12,7 @@ using ICSharpCode.Core.WinForms; using ICSharpCode.NRefactory; using ICSharpCode.NRefactory.Ast; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom.Refactoring; using ICSharpCode.SharpDevelop.Editor; diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs b/src/Main/Base/Project/Editor/Bookmarks/BookmarkPad.cs similarity index 86% rename from src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs rename to src/Main/Base/Project/Editor/Bookmarks/BookmarkPad.cs index 87fcdb0aab..67995138de 100644 --- a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs +++ b/src/Main/Base/Project/Editor/Bookmarks/BookmarkPad.cs @@ -14,7 +14,7 @@ using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Workbench; -namespace ICSharpCode.SharpDevelop.Bookmarks +namespace ICSharpCode.SharpDevelop.Editor.Bookmarks { public sealed class BookmarkPad : BookmarkPadBase { @@ -55,10 +55,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks this.control = new BookmarkPadContent(); this.control.InitializeComponent(); - BookmarkManager.Added += BookmarkManagerAdded; - BookmarkManager.Removed += BookmarkManagerRemoved; + SD.BookmarkManager.BookmarkAdded += BookmarkManagerAdded; + SD.BookmarkManager.BookmarkRemoved += BookmarkManagerRemoved; - foreach (SDBookmark bookmark in BookmarkManager.Bookmarks) { + foreach (SDBookmark bookmark in SD.BookmarkManager.Bookmarks) { if (ShowBookmarkInThisPad(bookmark)) { this.Items.Add(bookmark); } @@ -73,8 +73,8 @@ namespace ICSharpCode.SharpDevelop.Bookmarks public override void Dispose() { - BookmarkManager.Added -= BookmarkManagerAdded; - BookmarkManager.Removed -= BookmarkManagerRemoved; + SD.BookmarkManager.BookmarkAdded -= BookmarkManagerAdded; + SD.BookmarkManager.BookmarkRemoved -= BookmarkManagerRemoved; } protected abstract bool ShowBookmarkInThisPad(SDBookmark mark); diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadContent.xaml b/src/Main/Base/Project/Editor/Bookmarks/BookmarkPadContent.xaml similarity index 92% rename from src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadContent.xaml rename to src/Main/Base/Project/Editor/Bookmarks/BookmarkPadContent.xaml index b29cd843b6..d1d91cb993 100644 --- a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadContent.xaml +++ b/src/Main/Base/Project/Editor/Bookmarks/BookmarkPadContent.xaml @@ -1,6 +1,6 @@  ().ToList()) { - BookmarkManager.RemoveMark(bm); + SD.BookmarkManager.RemoveMark(bm); } } } @@ -53,7 +53,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks { BookmarkPadBase pad = (BookmarkPadBase)this.Owner; if (pad.SelectedItem != null) { - BookmarkManager.RemoveMark(pad.SelectedItem); + SD.BookmarkManager.RemoveMark(pad.SelectedItem); } } } diff --git a/src/Main/Base/Project/Editor/Bookmarks/EntityBookmark.cs b/src/Main/Base/Project/Editor/Bookmarks/EntityBookmark.cs index 18bbab782d..c4abf50e82 100644 --- a/src/Main/Base/Project/Editor/Bookmarks/EntityBookmark.cs +++ b/src/Main/Base/Project/Editor/Bookmarks/EntityBookmark.cs @@ -54,7 +54,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks public virtual void MouseDown(MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Left) { - var f = SD.AnalyticsMonitor.TrackFeature("ICSharpCode.SharpDevelop.Bookmarks.EntityBookmark.ShowContextMenu"); + var f = SD.AnalyticsMonitor.TrackFeature("ICSharpCode.SharpDevelop.Editor.Bookmarks.EntityBookmark.ShowContextMenu"); var ctx = MenuService.ShowContextMenu(e.Source as UIElement, entity, ContextMenuPath); ctx.Closed += delegate { f.EndTracking(); }; e.Handled = true; diff --git a/src/Main/Base/Project/Editor/Bookmarks/IBookmarkManager.cs b/src/Main/Base/Project/Editor/Bookmarks/IBookmarkManager.cs new file mode 100644 index 0000000000..a8bc061f33 --- /dev/null +++ b/src/Main/Base/Project/Editor/Bookmarks/IBookmarkManager.cs @@ -0,0 +1,61 @@ +// 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 ICSharpCode.Core; +using ICSharpCode.NRefactory.Editor; +using ICSharpCode.SharpDevelop.Dom; +using ICSharpCode.SharpDevelop.Project; + +namespace ICSharpCode.SharpDevelop.Editor.Bookmarks +{ + /// + /// Manages the list of bookmarks in the current solution. + /// + [SDService] + public interface IBookmarkManager + { + /// + /// Gets the collection of bookmarks. + /// + IReadOnlyCollection Bookmarks { get; } + + event EventHandler BookmarkAdded; + event EventHandler BookmarkRemoved; + + IEnumerable GetBookmarks(FileName fileName); + + IEnumerable GetProjectBookmarks(IProject project); + + /// + /// Adds the specified bookmark. + /// The FileName and Location properties must be set before calling this method. + /// + void AddMark(SDBookmark bookmark); + + /// + /// Adds the specified bookmark. + /// This method sets the FileName/Location properties. + /// + void AddMark(SDBookmark bookmark, IDocument document, int line); + + /// + /// Removes the specified bookmark. + /// + void RemoveMark(SDBookmark bookmark); + + /// + /// Removes a bookmark in the specified file and line. + /// + /// True if a bookmark was removed, null if no bookmark matching the specified criteria was found + bool RemoveBookmarkAt(FileName fileName, int line, Predicate predicate = null); + + void RemoveAll(Predicate predicate); + + /// + /// Deletes all bookmarks + /// + void Clear(); + } +} diff --git a/src/Main/Base/Project/Editor/Bookmarks/SDBookmark.cs b/src/Main/Base/Project/Editor/Bookmarks/SDBookmark.cs index 714b918c6e..4b435b99f4 100644 --- a/src/Main/Base/Project/Editor/Bookmarks/SDBookmark.cs +++ b/src/Main/Base/Project/Editor/Bookmarks/SDBookmark.cs @@ -7,7 +7,7 @@ using System.IO; using ICSharpCode.Core; using ICSharpCode.NRefactory; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; namespace ICSharpCode.SharpDevelop.Editor.Bookmarks { @@ -79,7 +79,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks protected override void RemoveMark() { - BookmarkManager.RemoveMark(this); + SD.BookmarkManager.RemoveMark(this); } } diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin index 32c0e33fd5..741367c218 100755 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin @@ -72,6 +72,8 @@ class="ICSharpCode.SharpDevelop.ClipboardWrapper"/> + @@ -177,7 +179,7 @@ category = "Tools" title = "${res:MainWindow.Windows.BookmarksLabel}" icon = "PadIcons.Bookmarks" - class = "ICSharpCode.SharpDevelop.Bookmarks.BookmarkPad" + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.BookmarkPad" defaultPosition = "Bottom, Hidden" /> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.PrevBookmarkPadCommand"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.NextBookmarkPadCommand"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.EnableDisableAll"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.DeleteMark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.DeleteAllMarks"/> @@ -1779,21 +1781,21 @@ label = "${res:XML.MainMenu.SearchMenu.ToggleBookmark}" shortcut = "Control|M" icon = "Bookmarks.ToggleMark" - class = "ICSharpCode.SharpDevelop.Bookmarks.ToggleBookmark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ToggleBookmark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.PrevBookmark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.NextBookmark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ClearBookmarks"/> @@ -2028,19 +2030,19 @@ + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ToggleBookmark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.PrevBookmark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.NextBookmark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ClearBookmarks"/> @@ -2110,31 +2112,31 @@ + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ToggleBookmark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.PrevBookmarkPadCommand"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.NextBookmarkPadCommand"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.EnableDisableAll"/>--> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.DeleteMark"/> + class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.DeleteAllMarks"/> diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 9dad51a574..3ee2cca104 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -109,8 +109,11 @@ + + + @@ -702,10 +705,6 @@ - - - - @@ -826,7 +825,7 @@ - + diff --git a/src/Main/Base/Project/Services/SD.cs b/src/Main/Base/Project/Services/SD.cs index d58479d2c3..75bf26f9a4 100644 --- a/src/Main/Base/Project/Services/SD.cs +++ b/src/Main/Base/Project/Services/SD.cs @@ -9,6 +9,7 @@ using ICSharpCode.Core; using ICSharpCode.Core.Implementation; using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Editor; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Parser; using ICSharpCode.SharpDevelop.Project; @@ -98,86 +99,106 @@ namespace ICSharpCode.SharpDevelop return null; } - /// - /// Gets the workbench. - /// + /// public static IWorkbench Workbench { get { return GetRequiredService(); } } + /// + /// Gets the representing the main UI thread. + /// public static IMessageLoop MainThread { get { return GetRequiredService(); } } - /// - /// Gets the status bar. - /// + /// public static IStatusBarService StatusBar { get { return GetRequiredService(); } } + /// public static ILoggingService Log { get { return GetRequiredService(); } } + /// public static IMessageService MessageService { get { return GetRequiredService(); } } + /// public static IPropertyService PropertyService { get { return GetRequiredService(); } } + /// public static Core.IResourceService ResourceService { get { return GetRequiredService(); } } + /// public static IEditorControlService EditorControlService { get { return GetRequiredService(); } } + /// public static IAnalyticsMonitor AnalyticsMonitor { get { return GetRequiredService(); } } + /// public static IParserService ParserService { get { return GetRequiredService(); } } + /// public static IAssemblyParserService AssemblyParserService { get { return GetRequiredService(); } } + /// public static IFileService FileService { get { return GetRequiredService(); } } + /// public static IGlobalAssemblyCacheService GlobalAssemblyCache { get { return GetRequiredService(); } } + /// public static IAddInTree AddInTree { get { return GetRequiredService(); } } + /// public static IShutdownService ShutdownService { get { return GetRequiredService(); } } + /// public static ITreeNodeFactory TreeNodeFactory { get { return GetRequiredService(); } } + /// public static IClipboard Clipboard { get { return GetRequiredService(); } } + /// public static IWinFormsService WinForms { get { return GetRequiredService(); } } + /// public static IBuildService BuildService { get { return GetRequiredService(); } } + + /// + public static IBookmarkManager BookmarkManager { + get { return GetRequiredService(); } + } } } diff --git a/src/Main/Base/Project/Src/Commands/DebugCommands.cs b/src/Main/Base/Project/Src/Commands/DebugCommands.cs index e83933e48c..6f6e3ae63e 100644 --- a/src/Main/Base/Project/Src/Commands/DebugCommands.cs +++ b/src/Main/Base/Project/Src/Commands/DebugCommands.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using ICSharpCode.Core; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Gui; @@ -121,7 +121,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands if (editor != null) { if (!string.IsNullOrEmpty(editor.FileName)) { - DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line, typeof(BreakpointBookmark)); + DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line); } } } diff --git a/src/Main/Base/Project/Src/Editor/Commands/ClassBookmarkSubmenuBuilder.cs b/src/Main/Base/Project/Src/Editor/Commands/ClassBookmarkSubmenuBuilder.cs index 64925396ab..4614722317 100644 --- a/src/Main/Base/Project/Src/Editor/Commands/ClassBookmarkSubmenuBuilder.cs +++ b/src/Main/Base/Project/Src/Editor/Commands/ClassBookmarkSubmenuBuilder.cs @@ -10,7 +10,7 @@ using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Project; diff --git a/src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs b/src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs index 93af482e56..e8e31034c9 100644 --- a/src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs +++ b/src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs @@ -9,7 +9,7 @@ using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Search; using ICSharpCode.SharpDevelop.Gui; diff --git a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs index 275e377718..c2a074d809 100644 --- a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs +++ b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs @@ -72,7 +72,6 @@ namespace ICSharpCode.SharpDevelop.Gui DisplayBindingService.InitializeService(); TaskService.Initialize(); - Bookmarks.BookmarkManager.Initialize(); Project.CustomToolsService.Initialize(); workbench.Initialize(); diff --git a/src/Main/Base/Project/Src/Project/Behaviors/DefaultProjectBehavior.cs b/src/Main/Base/Project/Src/Project/Behaviors/DefaultProjectBehavior.cs index a25e64e4a3..b10479f8cd 100644 --- a/src/Main/Base/Project/Src/Project/Behaviors/DefaultProjectBehavior.cs +++ b/src/Main/Base/Project/Src/Project/Behaviors/DefaultProjectBehavior.cs @@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Project // breakpoints and files Properties properties = new Properties(); - properties.SetList("bookmarks", ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.GetProjectBookmarks(Project)); + properties.SetList("bookmarks", SD.BookmarkManager.GetProjectBookmarks(Project)); List files = new List(); foreach (string fileName in FileService.GetOpenFiles()) { if (fileName != null && Project.IsFileInProject(fileName)) { @@ -113,7 +113,7 @@ namespace ICSharpCode.SharpDevelop.Project WorkbenchSingleton.AssertMainThread(); foreach (var mark in memento.GetList("bookmarks")) { - ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.AddMark(mark); + SD.BookmarkManager.AddMark(mark); } List filesToOpen = new List(); foreach (string fileName in memento.GetList("files")) { diff --git a/src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs b/src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs index 5dde7e0c47..e54489ac4a 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs @@ -9,7 +9,7 @@ using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.Core; using ICSharpCode.NRefactory; using ICSharpCode.NRefactory.Editor; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Bookmarks; diff --git a/src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs b/src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs index 48f0c0b59c..8b27c5acee 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs @@ -7,7 +7,7 @@ using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.Core; using ICSharpCode.NRefactory; using ICSharpCode.NRefactory.Editor; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Gui; @@ -60,13 +60,13 @@ namespace ICSharpCode.SharpDevelop.Debugging instance = new CurrentLineBookmark(); instance.Location = new TextLocation(startLine, startColumn); instance.FileName = fileName; - BookmarkManager.AddMark(instance); + SD.BookmarkManager.AddMark(instance); } public static void Remove() { if (instance != null) { - BookmarkManager.RemoveMark(instance); + SD.BookmarkManager.RemoveMark(instance); instance = null; } } diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs index 6dbe8392fa..877a8bd47c 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs @@ -12,7 +12,7 @@ using ICSharpCode.NRefactory; using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.TypeSystem; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Gui; @@ -35,8 +35,8 @@ namespace ICSharpCode.SharpDevelop.Debugging ProjectService.BeforeSolutionClosing += OnBeforeSolutionClosing; - BookmarkManager.Added += BookmarkAdded; - BookmarkManager.Removed += BookmarkRemoved; + SD.BookmarkManager.BookmarkAdded += BookmarkAdded; + SD.BookmarkManager.BookmarkRemoved += BookmarkRemoved; } static void GetDescriptors() @@ -188,16 +188,9 @@ namespace ICSharpCode.SharpDevelop.Debugging } } - public static IList Breakpoints { + public static IEnumerable Breakpoints { get { - List breakpoints = new List(); - foreach (SDBookmark bookmark in BookmarkManager.Bookmarks) { - BreakpointBookmark breakpoint = bookmark as BreakpointBookmark; - if (breakpoint != null) { - breakpoints.Add(breakpoint); - } - } - return breakpoints.AsReadOnly(); + return SD.BookmarkManager.Bookmarks.OfType(); } } @@ -257,22 +250,14 @@ namespace ICSharpCode.SharpDevelop.Debugging /// Line number. /// Type of breakpoint bookmark. /// Optional constructor parameters. - public static void ToggleBreakpointAt(ITextEditor editor, int lineNumber, Type breakpointType, object[] parameters = null) + public static void ToggleBreakpointAt(ITextEditor editor, int lineNumber) { if (editor == null) throw new ArgumentNullException("editor"); - if (breakpointType == null) - throw new ArgumentNullException("breakpointType"); - - if (!typeof(BreakpointBookmark).IsAssignableFrom(breakpointType)) - throw new ArgumentException("breakpointType is not a BreakpointBookmark"); - - BookmarkManager.ToggleBookmark( - editor, lineNumber, - b => b.CanToggle && b is BreakpointBookmark, - location => (BreakpointBookmark)Activator.CreateInstance(breakpointType, - parameters ?? new object[] { editor.FileName, location, BreakpointAction.Break, "", ""})); + if (!SD.BookmarkManager.RemoveBookmarkAt(editor.FileName, lineNumber, b => b is BreakpointBookmark)) { + SD.BookmarkManager.AddMark(new BreakpointBookmark(), editor.Document, lineNumber); + } } /* TODO: reimplement this stuff diff --git a/src/Main/Base/Project/Src/Services/Debugger/DecompiledBreakpointBookmark.cs b/src/Main/Base/Project/Src/Services/Debugger/DecompiledBreakpointBookmark.cs index baeaa9a8a9..f8f645f237 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/DecompiledBreakpointBookmark.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/DecompiledBreakpointBookmark.cs @@ -6,7 +6,7 @@ using ICSharpCode.NRefactory; using ICSharpCode.SharpDevelop.Debugging; using Mono.Cecil; -namespace ICSharpCode.SharpDevelop.Bookmarks +namespace ICSharpCode.SharpDevelop.Editor.Bookmarks { public class DecompiledBreakpointBookmark : BreakpointBookmark { diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs index f574e89067..0e2a395269 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs @@ -17,7 +17,7 @@ using System.Windows.Input; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory.Visitors; -using ICSharpCode.SharpDevelop.Bookmarks; +using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver; using ICSharpCode.SharpDevelop.Dom.Refactoring; diff --git a/src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs b/src/Main/SharpDevelop/Editor/Bookmarks/BookmarkManager.cs similarity index 56% rename from src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs rename to src/Main/SharpDevelop/Editor/Bookmarks/BookmarkManager.cs index fda35572a4..8df2a83308 100644 --- a/src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs +++ b/src/Main/SharpDevelop/Editor/Bookmarks/BookmarkManager.cs @@ -3,47 +3,44 @@ using System; using System.Collections.Generic; +using System.Linq; using ICSharpCode.Core; using ICSharpCode.NRefactory; +using ICSharpCode.NRefactory.Editor; using ICSharpCode.SharpDevelop.Debugging; +using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Gui; -namespace ICSharpCode.SharpDevelop.Bookmarks +namespace ICSharpCode.SharpDevelop.Editor.Bookmarks { - /// - /// Static class that maintains the list of bookmarks and breakpoints. - /// - public static class BookmarkManager + sealed class BookmarkManager : IBookmarkManager { - static List bookmarks = new List(); + public BookmarkManager() + { + Project.ProjectService.SolutionClosing += delegate { Clear(); }; + } - public static List Bookmarks { + List bookmarks = new List(); + + public IReadOnlyCollection Bookmarks { get { + SD.MainThread.VerifyAccess(); return bookmarks; } } - public static List GetBookmarks(FileName fileName) + public IEnumerable GetBookmarks(FileName fileName) { if (fileName == null) throw new ArgumentNullException("fileName"); - WorkbenchSingleton.AssertMainThread(); - - List marks = new List(); - - foreach (SDBookmark mark in bookmarks) { - if (fileName == mark.FileName) { - marks.Add(mark); - } - } - - return marks; + SD.MainThread.VerifyAccess(); + return bookmarks.Where(b => b.FileName == fileName); } - public static void AddMark(SDBookmark bookmark) + public void AddMark(SDBookmark bookmark) { WorkbenchSingleton.AssertMainThread(); if (bookmark == null) return; @@ -53,6 +50,15 @@ namespace ICSharpCode.SharpDevelop.Bookmarks OnAdded(new BookmarkEventArgs(bookmark)); } + public void AddMark(SDBookmark bookmark, IDocument document, int line) + { + int lineStartOffset = document.GetLineByNumber(line).Offset; + int column = 1 + DocumentUtilitites.GetWhitespaceAfter(document, lineStartOffset).Length; + bookmark.Location = new TextLocation(line, column); + bookmark.FileName = FileName.Create(document.FileName); + AddMark(bookmark); + } + static bool IsEqualBookmark(SDBookmark a, SDBookmark b) { if (a == b) @@ -66,14 +72,14 @@ namespace ICSharpCode.SharpDevelop.Bookmarks return a.LineNumber == b.LineNumber; } - public static void RemoveMark(SDBookmark bookmark) + public void RemoveMark(SDBookmark bookmark) { WorkbenchSingleton.AssertMainThread(); bookmarks.Remove(bookmark); OnRemoved(new BookmarkEventArgs(bookmark)); } - public static void Clear() + public void Clear() { WorkbenchSingleton.AssertMainThread(); while (bookmarks.Count > 0) { @@ -83,26 +89,21 @@ namespace ICSharpCode.SharpDevelop.Bookmarks } } - internal static void Initialize() + void OnRemoved(BookmarkEventArgs e) { - Project.ProjectService.SolutionClosing += delegate { Clear(); }; - } - - static void OnRemoved(BookmarkEventArgs e) - { - if (Removed != null) { - Removed(null, e); + if (BookmarkRemoved != null) { + BookmarkRemoved(null, e); } } - static void OnAdded(BookmarkEventArgs e) + void OnAdded(BookmarkEventArgs e) { - if (Added != null) { - Added(null, e); + if (BookmarkAdded != null) { + BookmarkAdded(null, e); } } - public static List GetProjectBookmarks(ICSharpCode.SharpDevelop.Project.IProject project) + public IEnumerable GetProjectBookmarks(ICSharpCode.SharpDevelop.Project.IProject project) { WorkbenchSingleton.AssertMainThread(); List projectBookmarks = new List(); @@ -115,24 +116,20 @@ namespace ICSharpCode.SharpDevelop.Bookmarks return projectBookmarks; } - public static void ToggleBookmark(ITextEditor editor, int line, - Predicate canToggle, - Func bookmarkFactory) + public bool RemoveBookmarkAt(FileName fileName, int line, Predicate predicate = null) { - WorkbenchSingleton.AssertMainThread(); - foreach (SDBookmark bookmark in GetBookmarks(editor.FileName)) { - if (canToggle(bookmark) && bookmark.LineNumber == line) { - BookmarkManager.RemoveMark(bookmark); - return; + foreach (SDBookmark bookmark in GetBookmarks(fileName)) { + if (bookmark.CanToggle && bookmark.LineNumber == line) { + if (predicate == null || predicate(bookmark)) { + RemoveMark(bookmark); + return true; + } } } - // no bookmark at that line: create a new bookmark - int lineStartOffset = editor.Document.GetLineByNumber(line).Offset; - int column = 1 + DocumentUtilitites.GetWhitespaceAfter(editor.Document, lineStartOffset).Length; - BookmarkManager.AddMark(bookmarkFactory(new TextLocation(line, column))); + return false; } - public static void RemoveAll(Predicate match) + public void RemoveAll(Predicate match) { if (match == null) throw new ArgumentNullException("Predicate is null!"); @@ -147,7 +144,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks } } - public static event EventHandler Removed; - public static event EventHandler Added; + public event EventHandler BookmarkRemoved; + public event EventHandler BookmarkAdded; } } diff --git a/src/Main/Base/Project/Src/Bookmarks/Commands/MenuCommands.cs b/src/Main/SharpDevelop/Editor/Bookmarks/BookmarkMenuCommands.cs similarity index 80% rename from src/Main/Base/Project/Src/Bookmarks/Commands/MenuCommands.cs rename to src/Main/SharpDevelop/Editor/Bookmarks/BookmarkMenuCommands.cs index b6d725b9bf..f3a8b42894 100644 --- a/src/Main/Base/Project/Src/Bookmarks/Commands/MenuCommands.cs +++ b/src/Main/SharpDevelop/Editor/Bookmarks/BookmarkMenuCommands.cs @@ -10,9 +10,9 @@ using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Gui; -namespace ICSharpCode.SharpDevelop.Bookmarks +namespace ICSharpCode.SharpDevelop.Editor.Bookmarks { - public abstract class BookmarkMenuCommand : AbstractMenuCommand + abstract class BookmarkMenuCommand : AbstractMenuCommand { public override void Run() { @@ -36,16 +36,17 @@ namespace ICSharpCode.SharpDevelop.Bookmarks protected abstract void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin); } - public class ToggleBookmark : BookmarkMenuCommand + class ToggleBookmark : BookmarkMenuCommand { protected override void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin) { - BookmarkManager.ToggleBookmark(editor, editor.Caret.Line, - b => b.CanToggle && b.GetType() == typeof(Bookmark), - location => new Bookmark { FileName = editor.FileName, Location = location}); + int lineNumber = editor.Caret.Line; + if (!SD.BookmarkManager.RemoveBookmarkAt(editor.FileName, lineNumber, b => b is Bookmark)) { + SD.BookmarkManager.AddMark(new Bookmark(), editor.Document, lineNumber); + } } } - public class PrevBookmark : BookmarkMenuCommand + class PrevBookmark : BookmarkMenuCommand { protected override void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin) { @@ -61,7 +62,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks } } - public class NextBookmark : BookmarkMenuCommand + class NextBookmark : BookmarkMenuCommand { protected override void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin) { @@ -77,7 +78,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks } } - public class ClearBookmarks : BookmarkMenuCommand + class ClearBookmarks : BookmarkMenuCommand { protected override void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin) { @@ -85,7 +86,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks where b.CanToggle select b).ToList(); foreach (SDBookmark b in bookmarks) - BookmarkManager.RemoveMark(b); + SD.BookmarkManager.RemoveMark(b); } } } diff --git a/src/Main/SharpDevelop/SharpDevelop.csproj b/src/Main/SharpDevelop/SharpDevelop.csproj index bbd32a9c51..84d7283932 100644 --- a/src/Main/SharpDevelop/SharpDevelop.csproj +++ b/src/Main/SharpDevelop/SharpDevelop.csproj @@ -86,6 +86,8 @@ + + LoadSaveOptions.xaml Code @@ -220,6 +222,8 @@ + +