Browse Source

Move remaining bookmark classes.

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
d54cf7c844
  1. 2
      src/AddIns/Analysis/UnitTesting/Test/Tree/TestableConditionTests.cs
  2. 2
      src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs
  3. 2
      src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs
  4. 4
      src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/SelectedFrameBookmark.cs
  5. 10
      src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
  6. 12
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
  7. 4
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  8. 2
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs
  9. 4
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs
  10. 2
      src/AddIns/DisplayBindings/ILSpyAddIn/LaunchILSpy/OpenInILSpyCommand.cs
  11. 2
      src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/CodeView.cs
  12. 10
      src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs
  13. 6
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs
  14. 2
      src/AddIns/Misc/SharpRefactoring/Project/Src/ClassRefactoringSubmenuBuilder.cs
  15. 2
      src/AddIns/Misc/SharpRefactoring/Project/Src/PropertyRefactoringMenuBuilder.cs
  16. 12
      src/Main/Base/Project/Editor/Bookmarks/BookmarkPad.cs
  17. 2
      src/Main/Base/Project/Editor/Bookmarks/BookmarkPadContent.xaml
  18. 6
      src/Main/Base/Project/Editor/Bookmarks/BookmarkPadToolbarCommands.cs
  19. 2
      src/Main/Base/Project/Editor/Bookmarks/EntityBookmark.cs
  20. 61
      src/Main/Base/Project/Editor/Bookmarks/IBookmarkManager.cs
  21. 4
      src/Main/Base/Project/Editor/Bookmarks/SDBookmark.cs
  22. 42
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  23. 9
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  24. 33
      src/Main/Base/Project/Services/SD.cs
  25. 4
      src/Main/Base/Project/Src/Commands/DebugCommands.cs
  26. 2
      src/Main/Base/Project/Src/Editor/Commands/ClassBookmarkSubmenuBuilder.cs
  27. 2
      src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs
  28. 1
      src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
  29. 4
      src/Main/Base/Project/Src/Project/Behaviors/DefaultProjectBehavior.cs
  30. 2
      src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs
  31. 6
      src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs
  32. 33
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  33. 2
      src/Main/Base/Project/Src/Services/Debugger/DecompiledBreakpointBookmark.cs
  34. 2
      src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs
  35. 95
      src/Main/SharpDevelop/Editor/Bookmarks/BookmarkManager.cs
  36. 21
      src/Main/SharpDevelop/Editor/Bookmarks/BookmarkMenuCommands.cs
  37. 4
      src/Main/SharpDevelop/SharpDevelop.csproj

2
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) // 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) // 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.SharpDevelop.Project;
using ICSharpCode.UnitTesting; using ICSharpCode.UnitTesting;
using NUnit.Framework; using NUnit.Framework;

2
src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs

@ -9,7 +9,7 @@ using Debugger;
using Debugger.AddIn.Pads.Controls; using Debugger.AddIn.Pads.Controls;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Services; using ICSharpCode.SharpDevelop.Services;

2
src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/ParallelStackPad.cs

@ -16,7 +16,7 @@ using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui.Pads; using ICSharpCode.SharpDevelop.Gui.Pads;

4
src/AddIns/Debugger/Debugger.AddIn/Pads/ParallelPad/SelectedFrameBookmark.cs

@ -5,10 +5,10 @@ using System.Windows.Media;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop.Bookmarks namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{ {
public class SelectedFrameBookmark : SDMarkerBookmark public class SelectedFrameBookmark : SDMarkerBookmark
{ {

10
src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs

@ -22,7 +22,7 @@ using ICSharpCode.Core.WinForms;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
@ -372,7 +372,7 @@ namespace ICSharpCode.SharpDevelop.Services
AddBreakpoint(b); AddBreakpoint(b);
} }
BookmarkManager.Removed += (sender, e) => { SD.BookmarkManager.BookmarkRemoved += (sender, e) => {
BreakpointBookmark bm = e.Bookmark as BreakpointBookmark; BreakpointBookmark bm = e.Bookmark as BreakpointBookmark;
if (bm != null) { if (bm != null) {
Breakpoint bp = bm.InternalBreakpointObject as Breakpoint; Breakpoint bp = bm.InternalBreakpointObject as Breakpoint;
@ -387,7 +387,7 @@ namespace ICSharpCode.SharpDevelop.Services
void UpdateBreakpointLines() void UpdateBreakpointLines()
{ {
foreach (BreakpointBookmark bookmark in BookmarkManager.Bookmarks.OfType<BreakpointBookmark>()) { foreach (BreakpointBookmark bookmark in SD.BookmarkManager.Bookmarks.OfType<BreakpointBookmark>()) {
Breakpoint breakpoint = bookmark.InternalBreakpointObject as Breakpoint; Breakpoint breakpoint = bookmark.InternalBreakpointObject as Breakpoint;
breakpoint.Line = bookmark.LineNumber; breakpoint.Line = bookmark.LineNumber;
breakpoint.Column = bookmark.ColumnNumber; breakpoint.Column = bookmark.ColumnNumber;
@ -396,7 +396,7 @@ namespace ICSharpCode.SharpDevelop.Services
void UpdateBreakpointIcons() void UpdateBreakpointIcons()
{ {
foreach (BreakpointBookmark bookmark in BookmarkManager.Bookmarks.OfType<BreakpointBookmark>()) { foreach (BreakpointBookmark bookmark in SD.BookmarkManager.Bookmarks.OfType<BreakpointBookmark>()) {
Breakpoint breakpoint = bookmark.InternalBreakpointObject as Breakpoint; Breakpoint breakpoint = bookmark.InternalBreakpointObject as Breakpoint;
bookmark.IsHealthy = (CurrentProcess == null) || breakpoint.IsSet; bookmark.IsHealthy = (CurrentProcess == null) || breakpoint.IsSet;
} }
@ -517,7 +517,7 @@ namespace ICSharpCode.SharpDevelop.Services
} }
foreach (Breakpoint breakpoint in e.BreakpointsHit) { foreach (Breakpoint breakpoint in e.BreakpointsHit) {
var bookmark = BookmarkManager.Bookmarks.OfType<BreakpointBookmark>().First(bm => bm.InternalBreakpointObject == breakpoint); var bookmark = SD.BookmarkManager.Bookmarks.OfType<BreakpointBookmark>().First(bm => bm.InternalBreakpointObject == breakpoint);
LoggingService.Debug(bookmark.Action + " " + bookmark.ScriptLanguage + " " + bookmark.Condition); LoggingService.Debug(bookmark.Action + " " + bookmark.ScriptLanguage + " " + bookmark.Condition);

12
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs

@ -15,7 +15,7 @@ using ICSharpCode.AvalonEdit.Utils;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
@ -221,12 +221,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
{ {
if (bookmarksAttached) return; if (bookmarksAttached) return;
bookmarksAttached = true; bookmarksAttached = true;
foreach (SDBookmark bookmark in BookmarkManager.GetBookmarks(codeEditor.FileName)) { foreach (SDBookmark bookmark in SD.BookmarkManager.GetBookmarks(codeEditor.FileName)) {
bookmark.Document = codeEditor.Document; bookmark.Document = codeEditor.Document;
codeEditor.IconBarManager.Bookmarks.Add(bookmark); codeEditor.IconBarManager.Bookmarks.Add(bookmark);
} }
BookmarkManager.Added += BookmarkManager_Added; SD.BookmarkManager.BookmarkAdded += BookmarkManager_Added;
BookmarkManager.Removed += BookmarkManager_Removed; SD.BookmarkManager.BookmarkRemoved += BookmarkManager_Removed;
PermanentAnchorService.AttachDocument(codeEditor.FileName, codeEditor.Document); PermanentAnchorService.AttachDocument(codeEditor.FileName, codeEditor.Document);
} }
@ -237,8 +237,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
PermanentAnchorService.DetachDocument(codeEditor.FileName, codeEditor.Document); PermanentAnchorService.DetachDocument(codeEditor.FileName, codeEditor.Document);
} }
BookmarkManager.Added -= BookmarkManager_Added; SD.BookmarkManager.BookmarkAdded -= BookmarkManager_Added;
BookmarkManager.Removed -= BookmarkManager_Removed; SD.BookmarkManager.BookmarkRemoved -= BookmarkManager_Removed;
foreach (SDBookmark bookmark in codeEditor.IconBarManager.Bookmarks.OfType<SDBookmark>()) { foreach (SDBookmark bookmark in codeEditor.IconBarManager.Bookmarks.OfType<SDBookmark>()) {
if (bookmark.Document == codeEditor.Document) { if (bookmark.Document == codeEditor.Document) {
bookmark.Document = null; bookmark.Document = null;

4
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -25,7 +25,7 @@ using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion; using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
@ -206,7 +206,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
primaryTextEditor.UpdateCustomizedHighlighting(); primaryTextEditor.UpdateCustomizedHighlighting();
if (secondaryTextEditor != null) if (secondaryTextEditor != null)
secondaryTextEditor.UpdateCustomizedHighlighting(); secondaryTextEditor.UpdateCustomizedHighlighting();
foreach (var bookmark in BookmarkManager.GetBookmarks(fileName).OfType<SDMarkerBookmark>()) foreach (var bookmark in SD.BookmarkManager.GetBookmarks(fileName).OfType<SDMarkerBookmark>())
bookmark.SetMarker(); bookmark.SetMarker();
} }

2
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs

@ -8,7 +8,7 @@ using System.Collections.Specialized;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
namespace ICSharpCode.AvalonEdit.AddIn namespace ICSharpCode.AvalonEdit.AddIn

4
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs

@ -10,7 +10,7 @@ using System.Windows.Media;
using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Rendering; using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.AvalonEdit.Utils; using ICSharpCode.AvalonEdit.Utils;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
@ -242,7 +242,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
// no bookmark on the line: create a new breakpoint // no bookmark on the line: create a new breakpoint
ITextEditor textEditor = TextView.GetService(typeof(ITextEditor)) as ITextEditor; ITextEditor textEditor = TextView.GetService(typeof(ITextEditor)) as ITextEditor;
if (textEditor != null) { if (textEditor != null) {
DebuggerService.ToggleBreakpointAt(textEditor, line, typeof(BreakpointBookmark)); DebuggerService.ToggleBreakpointAt(textEditor, line);
return; return;
} }
} }

2
src/AddIns/DisplayBindings/ILSpyAddIn/LaunchILSpy/OpenInILSpyCommand.cs

@ -4,7 +4,7 @@
using System; using System;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor.Commands; using ICSharpCode.SharpDevelop.Editor.Commands;
namespace ICSharpCode.ILSpyAddIn namespace ICSharpCode.ILSpyAddIn

2
src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/CodeView.cs

@ -18,7 +18,7 @@ using ICSharpCode.AvalonEdit.Search;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit; using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;

10
src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs

@ -16,7 +16,7 @@ using ICSharpCode.ILSpyAddIn.ViewContent;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit; using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
@ -65,8 +65,8 @@ namespace ICSharpCode.ILSpyAddIn
thread.Name = "Decompiler (" + shortTypeName + ")"; thread.Name = "Decompiler (" + shortTypeName + ")";
thread.Start(); thread.Start();
BookmarkManager.Removed += BookmarkManager_Removed; SD.BookmarkManager.BookmarkRemoved += BookmarkManager_Removed;
BookmarkManager.Added += BookmarkManager_Added; SD.BookmarkManager.BookmarkAdded += BookmarkManager_Added;
} }
#endregion #endregion
@ -97,8 +97,8 @@ namespace ICSharpCode.ILSpyAddIn
{ {
cancellation.Cancel(); cancellation.Cancel();
codeView.Dispose(); codeView.Dispose();
BookmarkManager.Added -= BookmarkManager_Added; SD.BookmarkManager.BookmarkAdded -= BookmarkManager_Added;
BookmarkManager.Removed -= BookmarkManager_Removed; SD.BookmarkManager.BookmarkRemoved -= BookmarkManager_Removed;
// DecompileInformation data; // DecompileInformation data;
// DebuggerDecompilerService.DebugInformation.TryRemove(decompiledType.MetadataToken.ToInt32(), out data); // DebuggerDecompilerService.DebugInformation.TryRemove(decompiledType.MetadataToken.ToInt32(), out data);
base.Dispose(); base.Dispose();

6
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs

@ -16,7 +16,7 @@ using ICSharpCode.AvalonEdit.Search;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit; using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
@ -408,13 +408,13 @@ namespace SearchAndReplace
if (switchToOpenedView) if (switchToOpenedView)
textArea.Caret.Location = result.StartLocation; 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) { if (bookmark.CanToggle && bookmark.LineNumber == result.StartLocation.Line) {
// bookmark or breakpoint already exists at that line // bookmark or breakpoint already exists at that line
return; return;
} }
} }
BookmarkManager.AddMark(new Bookmark { FileName = result.FileName, Location = result.StartLocation}); SD.BookmarkManager.AddMark(new Bookmark { FileName = result.FileName, Location = result.StartLocation});
} }
} }
#endregion #endregion

2
src/AddIns/Misc/SharpRefactoring/Project/Src/ClassRefactoringSubmenuBuilder.cs

@ -12,7 +12,7 @@ using ICSharpCode.Core.Presentation;
using ICSharpCode.Core.WinForms; using ICSharpCode.Core.WinForms;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.Refactoring; using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;

2
src/AddIns/Misc/SharpRefactoring/Project/Src/PropertyRefactoringMenuBuilder.cs

@ -12,7 +12,7 @@ using ICSharpCode.Core.WinForms;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Ast; using ICSharpCode.NRefactory.Ast;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.Refactoring; using ICSharpCode.SharpDevelop.Dom.Refactoring;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;

12
src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs → src/Main/Base/Project/Editor/Bookmarks/BookmarkPad.cs

@ -14,7 +14,7 @@ using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench; using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.SharpDevelop.Bookmarks namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{ {
public sealed class BookmarkPad : BookmarkPadBase public sealed class BookmarkPad : BookmarkPadBase
{ {
@ -55,10 +55,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
this.control = new BookmarkPadContent(); this.control = new BookmarkPadContent();
this.control.InitializeComponent(); this.control.InitializeComponent();
BookmarkManager.Added += BookmarkManagerAdded; SD.BookmarkManager.BookmarkAdded += BookmarkManagerAdded;
BookmarkManager.Removed += BookmarkManagerRemoved; SD.BookmarkManager.BookmarkRemoved += BookmarkManagerRemoved;
foreach (SDBookmark bookmark in BookmarkManager.Bookmarks) { foreach (SDBookmark bookmark in SD.BookmarkManager.Bookmarks) {
if (ShowBookmarkInThisPad(bookmark)) { if (ShowBookmarkInThisPad(bookmark)) {
this.Items.Add(bookmark); this.Items.Add(bookmark);
} }
@ -73,8 +73,8 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
public override void Dispose() public override void Dispose()
{ {
BookmarkManager.Added -= BookmarkManagerAdded; SD.BookmarkManager.BookmarkAdded -= BookmarkManagerAdded;
BookmarkManager.Removed -= BookmarkManagerRemoved; SD.BookmarkManager.BookmarkRemoved -= BookmarkManagerRemoved;
} }
protected abstract bool ShowBookmarkInThisPad(SDBookmark mark); protected abstract bool ShowBookmarkInThisPad(SDBookmark mark);

2
src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadContent.xaml → src/Main/Base/Project/Editor/Bookmarks/BookmarkPadContent.xaml

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Grid <Grid
x:Class="ICSharpCode.SharpDevelop.Bookmarks.BookmarkPadContent" x:Class="ICSharpCode.SharpDevelop.Editor.Bookmarks.BookmarkPadContent"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="http://icsharpcode.net/sharpdevelop/core" xmlns:core="http://icsharpcode.net/sharpdevelop/core"

6
src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs → src/Main/Base/Project/Editor/Bookmarks/BookmarkPadToolbarCommands.cs

@ -10,7 +10,7 @@ using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
namespace ICSharpCode.SharpDevelop.Bookmarks namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{ {
public sealed class NextBookmarkPadCommand : AbstractMenuCommand public sealed class NextBookmarkPadCommand : AbstractMenuCommand
{ {
@ -42,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{ {
BookmarkPadBase pad = (BookmarkPadBase)this.Owner; BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
foreach(SDBookmark bm in pad.Items.OfType<SDBookmark>().ToList()) { foreach(SDBookmark bm in pad.Items.OfType<SDBookmark>().ToList()) {
BookmarkManager.RemoveMark(bm); SD.BookmarkManager.RemoveMark(bm);
} }
} }
} }
@ -53,7 +53,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{ {
BookmarkPadBase pad = (BookmarkPadBase)this.Owner; BookmarkPadBase pad = (BookmarkPadBase)this.Owner;
if (pad.SelectedItem != null) { if (pad.SelectedItem != null) {
BookmarkManager.RemoveMark(pad.SelectedItem); SD.BookmarkManager.RemoveMark(pad.SelectedItem);
} }
} }
} }

2
src/Main/Base/Project/Editor/Bookmarks/EntityBookmark.cs

@ -54,7 +54,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
public virtual void MouseDown(MouseButtonEventArgs e) public virtual void MouseDown(MouseButtonEventArgs e)
{ {
if (e.ChangedButton == MouseButton.Left) { 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); var ctx = MenuService.ShowContextMenu(e.Source as UIElement, entity, ContextMenuPath);
ctx.Closed += delegate { f.EndTracking(); }; ctx.Closed += delegate { f.EndTracking(); };
e.Handled = true; e.Handled = true;

61
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
{
/// <summary>
/// Manages the list of bookmarks in the current solution.
/// </summary>
[SDService]
public interface IBookmarkManager
{
/// <summary>
/// Gets the collection of bookmarks.
/// </summary>
IReadOnlyCollection<SDBookmark> Bookmarks { get; }
event EventHandler<BookmarkEventArgs> BookmarkAdded;
event EventHandler<BookmarkEventArgs> BookmarkRemoved;
IEnumerable<SDBookmark> GetBookmarks(FileName fileName);
IEnumerable<SDBookmark> GetProjectBookmarks(IProject project);
/// <summary>
/// Adds the specified bookmark.
/// The FileName and Location properties must be set before calling this method.
/// </summary>
void AddMark(SDBookmark bookmark);
/// <summary>
/// Adds the specified bookmark.
/// This method sets the FileName/Location properties.
/// </summary>
void AddMark(SDBookmark bookmark, IDocument document, int line);
/// <summary>
/// Removes the specified bookmark.
/// </summary>
void RemoveMark(SDBookmark bookmark);
/// <summary>
/// Removes a bookmark in the specified file and line.
/// </summary>
/// <returns>True if a bookmark was removed, null if no bookmark matching the specified criteria was found</returns>
bool RemoveBookmarkAt(FileName fileName, int line, Predicate<SDBookmark> predicate = null);
void RemoveAll(Predicate<SDBookmark> predicate);
/// <summary>
/// Deletes all bookmarks
/// </summary>
void Clear();
}
}

4
src/Main/Base/Project/Editor/Bookmarks/SDBookmark.cs

@ -7,7 +7,7 @@ using System.IO;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
namespace ICSharpCode.SharpDevelop.Editor.Bookmarks namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{ {
@ -79,7 +79,7 @@ namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
protected override void RemoveMark() protected override void RemoveMark()
{ {
BookmarkManager.RemoveMark(this); SD.BookmarkManager.RemoveMark(this);
} }
} }

42
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -72,6 +72,8 @@
class="ICSharpCode.SharpDevelop.ClipboardWrapper"/> class="ICSharpCode.SharpDevelop.ClipboardWrapper"/>
<Service id="ICSharpCode.SharpDevelop.Project.IBuildService" <Service id="ICSharpCode.SharpDevelop.Project.IBuildService"
class="ICSharpCode.SharpDevelop.Project.BuildService"/> class="ICSharpCode.SharpDevelop.Project.BuildService"/>
<Service id="ICSharpCode.SharpDevelop.Editor.Bookmarks.IBookmarkManager"
class="ICSharpCode.SharpDevelop.Editor.Bookmarks.BookmarkManager"/>
<Service id="ICSharpCode.SharpDevelop.WinForms.IWinFormsService" <Service id="ICSharpCode.SharpDevelop.WinForms.IWinFormsService"
class="ICSharpCode.SharpDevelop.WinForms.WinFormsService"/> class="ICSharpCode.SharpDevelop.WinForms.WinFormsService"/>
@ -177,7 +179,7 @@
category = "Tools" category = "Tools"
title = "${res:MainWindow.Windows.BookmarksLabel}" title = "${res:MainWindow.Windows.BookmarksLabel}"
icon = "PadIcons.Bookmarks" icon = "PadIcons.Bookmarks"
class = "ICSharpCode.SharpDevelop.Bookmarks.BookmarkPad" class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.BookmarkPad"
defaultPosition = "Bottom, Hidden" /> defaultPosition = "Bottom, Hidden" />
<Pad id = "DefinitionView" <Pad id = "DefinitionView"
@ -1148,26 +1150,26 @@
<ToolbarItem id = "GotoPrev" <ToolbarItem id = "GotoPrev"
icon = "Bookmarks.PrevBreakpoint" icon = "Bookmarks.PrevBreakpoint"
tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoPrev.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoPrev.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.PrevBookmarkPadCommand"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.PrevBookmarkPadCommand"/>
<ToolbarItem id = "GotoNext" <ToolbarItem id = "GotoNext"
icon = "Bookmarks.NextBreakpoint" icon = "Bookmarks.NextBreakpoint"
tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoNext.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoNext.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.NextBookmarkPadCommand"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.NextBookmarkPadCommand"/>
<ToolbarItem id = "GotoInFolderSeparator" type = "Separator" /> <ToolbarItem id = "GotoInFolderSeparator" type = "Separator" />
<ToolbarItem id = "DisableAllBreakpoints" <ToolbarItem id = "DisableAllBreakpoints"
icon = "Bookmarks.DisableAllBreakpoints" icon = "Bookmarks.DisableAllBreakpoints"
tooltip = "${res:MainWindow.Windows.BookmarkPad.EnableDisableAll.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.EnableDisableAll.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.EnableDisableAll"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.EnableDisableAll"/>
<ToolbarItem id = "EnableDisableSeparator" type = "Separator" /> <ToolbarItem id = "EnableDisableSeparator" type = "Separator" />
<ToolbarItem id = "DeleteMark" <ToolbarItem id = "DeleteMark"
icon = "Icons.16x16.DeleteIcon" icon = "Icons.16x16.DeleteIcon"
tooltip = "${res:MainWindow.Windows.BookmarkPad.DeleteMark.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.DeleteMark.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.DeleteMark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.DeleteMark"/>
<ToolbarItem id = "EnableDisableSeparator" type = "Separator" /> <ToolbarItem id = "EnableDisableSeparator" type = "Separator" />
<ToolbarItem id = "DeleteAllBreakpoints" <ToolbarItem id = "DeleteAllBreakpoints"
icon = "Bookmarks.DeleteAllBreakpoints" icon = "Bookmarks.DeleteAllBreakpoints"
tooltip = "${res:XML.MainMenu.DebugMenu.RemoveAllBreakpoints}" tooltip = "${res:XML.MainMenu.DebugMenu.RemoveAllBreakpoints}"
class = "ICSharpCode.SharpDevelop.Bookmarks.DeleteAllMarks"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.DeleteAllMarks"/>
</Path> </Path>
<!-- end toolbars --> <!-- end toolbars -->
@ -1779,21 +1781,21 @@
label = "${res:XML.MainMenu.SearchMenu.ToggleBookmark}" label = "${res:XML.MainMenu.SearchMenu.ToggleBookmark}"
shortcut = "Control|M" shortcut = "Control|M"
icon = "Bookmarks.ToggleMark" icon = "Bookmarks.ToggleMark"
class = "ICSharpCode.SharpDevelop.Bookmarks.ToggleBookmark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ToggleBookmark"/>
<MenuItem id = "PrevBookmark" <MenuItem id = "PrevBookmark"
label = "${res:XML.MainMenu.SearchMenu.PrevBookmark}" label = "${res:XML.MainMenu.SearchMenu.PrevBookmark}"
shortcut = "Control|OemComma" shortcut = "Control|OemComma"
icon = "Bookmarks.GotoPrevInFile" icon = "Bookmarks.GotoPrevInFile"
class = "ICSharpCode.SharpDevelop.Bookmarks.PrevBookmark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.PrevBookmark"/>
<MenuItem id = "NextBookmark" <MenuItem id = "NextBookmark"
label = "${res:XML.MainMenu.SearchMenu.NextBookmark}" label = "${res:XML.MainMenu.SearchMenu.NextBookmark}"
shortcut = "Control|OemPeriod" shortcut = "Control|OemPeriod"
icon = "Bookmarks.GotoNextInFile" icon = "Bookmarks.GotoNextInFile"
class = "ICSharpCode.SharpDevelop.Bookmarks.NextBookmark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.NextBookmark"/>
<MenuItem id = "ClearBookmarks" <MenuItem id = "ClearBookmarks"
label = "${res:XML.MainMenu.SearchMenu.ClrBookmark}" label = "${res:XML.MainMenu.SearchMenu.ClrBookmark}"
icon = "Bookmarks.ClearAll" icon = "Bookmarks.ClearAll"
class = "ICSharpCode.SharpDevelop.Bookmarks.ClearBookmarks"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ClearBookmarks"/>
</Condition> </Condition>
<MenuItem id = "Separator2" type = "Separator" /> <MenuItem id = "Separator2" type = "Separator" />
@ -2028,19 +2030,19 @@
<ToolbarItem id = "ToggleBookmark" <ToolbarItem id = "ToggleBookmark"
icon = "Bookmarks.ToggleMark" icon = "Bookmarks.ToggleMark"
tooltip = "${res:XML.MainMenu.SearchMenu.ToggleBookmark.Description}" tooltip = "${res:XML.MainMenu.SearchMenu.ToggleBookmark.Description}"
class = "ICSharpCode.SharpDevelop.Bookmarks.ToggleBookmark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ToggleBookmark"/>
<ToolbarItem id = "PrevBookmark" <ToolbarItem id = "PrevBookmark"
icon = "Bookmarks.GotoPrevInFile" icon = "Bookmarks.GotoPrevInFile"
tooltip = "${res:XML.MainMenu.SearchMenu.PrevBookmark.Description}" tooltip = "${res:XML.MainMenu.SearchMenu.PrevBookmark.Description}"
class = "ICSharpCode.SharpDevelop.Bookmarks.PrevBookmark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.PrevBookmark"/>
<ToolbarItem id = "NextBookmark" <ToolbarItem id = "NextBookmark"
icon = "Bookmarks.GotoNextInFile" icon = "Bookmarks.GotoNextInFile"
tooltip = "${res:XML.MainMenu.SearchMenu.NextBookmark.Description}" tooltip = "${res:XML.MainMenu.SearchMenu.NextBookmark.Description}"
class = "ICSharpCode.SharpDevelop.Bookmarks.NextBookmark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.NextBookmark"/>
<ToolbarItem id = "ClearBookmarks" <ToolbarItem id = "ClearBookmarks"
icon = "Bookmarks.ClearAll" icon = "Bookmarks.ClearAll"
tooltip = "${res:XML.MainMenu.SearchMenu.ClrBookmark.Description}" tooltip = "${res:XML.MainMenu.SearchMenu.ClrBookmark.Description}"
class = "ICSharpCode.SharpDevelop.Bookmarks.ClearBookmarks"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ClearBookmarks"/>
</Condition> </Condition>
</Path> </Path>
@ -2110,31 +2112,31 @@
<ToolbarItem id = "ToggleBookmark" <ToolbarItem id = "ToggleBookmark"
tooltip = "${res:XML.MainMenu.SearchMenu.ToggleBookmark}" tooltip = "${res:XML.MainMenu.SearchMenu.ToggleBookmark}"
icon = "Bookmarks.ToggleMark" icon = "Bookmarks.ToggleMark"
class = "ICSharpCode.SharpDevelop.Bookmarks.ToggleBookmark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.ToggleBookmark"/>
</Condition> </Condition>
<ToolbarItem id = "GotoPrev" <ToolbarItem id = "GotoPrev"
icon = "Bookmarks.GotoPrev" icon = "Bookmarks.GotoPrev"
tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoPrev.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoPrev.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.PrevBookmarkPadCommand"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.PrevBookmarkPadCommand"/>
<ToolbarItem id = "GotoNext" <ToolbarItem id = "GotoNext"
icon = "Bookmarks.GotoNext" icon = "Bookmarks.GotoNext"
tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoNext.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoNext.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.NextBookmarkPadCommand"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.NextBookmarkPadCommand"/>
<!--<ToolbarItem id = "GotoInFolderSeparator" type = "Separator" /> <!--<ToolbarItem id = "GotoInFolderSeparator" type = "Separator" />
<ToolbarItem id = "EnableDisableAll" <ToolbarItem id = "EnableDisableAll"
icon = "Bookmarks.EnableDisableAll" icon = "Bookmarks.EnableDisableAll"
tooltip = "${res:MainWindow.Windows.BookmarkPad.EnableDisableAll.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.EnableDisableAll.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.EnableDisableAll"/>--> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.EnableDisableAll"/>-->
<ToolbarItem id = "EnableDisableSeparator" type = "Separator" /> <ToolbarItem id = "EnableDisableSeparator" type = "Separator" />
<ToolbarItem id = "DeleteMark" <ToolbarItem id = "DeleteMark"
icon = "Bookmarks.DeleteMark" icon = "Bookmarks.DeleteMark"
tooltip = "${res:MainWindow.Windows.BookmarkPad.DeleteMark.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.DeleteMark.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.DeleteMark"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.DeleteMark"/>
<ToolbarItem id = "DeleteAllMarks" <ToolbarItem id = "DeleteAllMarks"
icon = "Bookmarks.DeleteAllMarks" icon = "Bookmarks.DeleteAllMarks"
tooltip = "${res:MainWindow.Windows.BookmarkPad.DeleteAllMarks.ToolTip}" tooltip = "${res:MainWindow.Windows.BookmarkPad.DeleteAllMarks.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.DeleteAllMarks"/> class = "ICSharpCode.SharpDevelop.Editor.Bookmarks.DeleteAllMarks"/>
</Path> </Path>
<Path name = "/SharpDevelop/Pads/SearchResultPad/Toolbar"> <Path name = "/SharpDevelop/Pads/SearchResultPad/Toolbar">

9
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -109,8 +109,11 @@
<Compile Include="Dom\SimpleModelCollection.cs" /> <Compile Include="Dom\SimpleModelCollection.cs" />
<Compile Include="Editor\Bookmarks\BookmarkBase.cs" /> <Compile Include="Editor\Bookmarks\BookmarkBase.cs" />
<Compile Include="Editor\Bookmarks\BookmarkEventArgs.cs" /> <Compile Include="Editor\Bookmarks\BookmarkEventArgs.cs" />
<Compile Include="Editor\Bookmarks\BookmarkPad.cs" />
<Compile Include="Editor\Bookmarks\BookmarkPadToolbarCommands.cs" />
<Compile Include="Editor\Bookmarks\EntityBookmark.cs" /> <Compile Include="Editor\Bookmarks\EntityBookmark.cs" />
<Compile Include="Editor\Bookmarks\IBookmark.cs" /> <Compile Include="Editor\Bookmarks\IBookmark.cs" />
<Compile Include="Editor\Bookmarks\IBookmarkManager.cs" />
<Compile Include="Editor\Bookmarks\IBookmarkMargin.cs" /> <Compile Include="Editor\Bookmarks\IBookmarkMargin.cs" />
<Compile Include="Editor\Bookmarks\SDBookmark.cs" /> <Compile Include="Editor\Bookmarks\SDBookmark.cs" />
<Compile Include="Editor\Bookmarks\SDMarkerBookmark.cs" /> <Compile Include="Editor\Bookmarks\SDMarkerBookmark.cs" />
@ -702,10 +705,6 @@
<EmbeddedResource Include="Resources\NewFileDialog.xfrm" /> <EmbeddedResource Include="Resources\NewFileDialog.xfrm" />
<EmbeddedResource Include="Resources\OutputWindowOptionsPanel.xfrm" /> <EmbeddedResource Include="Resources\OutputWindowOptionsPanel.xfrm" />
<EmbeddedResource Include="Resources\WordCountDialog.xfrm" /> <EmbeddedResource Include="Resources\WordCountDialog.xfrm" />
<Compile Include="Src\Bookmarks\Commands\MenuCommands.cs" />
<Compile Include="Src\Bookmarks\Pad\BookmarkPad.cs" />
<Compile Include="Src\Bookmarks\Pad\BookmarkPadToolbarCommands.cs" />
<Compile Include="Src\Bookmarks\BookmarkManager.cs" />
<Compile Include="Src\Services\Tasks\TaskEventHandler.cs" /> <Compile Include="Src\Services\Tasks\TaskEventHandler.cs" />
<Compile Include="Src\Gui\Pads\DefinitionViewPad.cs" /> <Compile Include="Src\Gui\Pads\DefinitionViewPad.cs" />
<Compile Include="Src\Project\MSBuildEnums.cs" /> <Compile Include="Src\Project\MSBuildEnums.cs" />
@ -826,7 +825,7 @@
</EmbeddedResource> </EmbeddedResource>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Page Include="Src\Bookmarks\Pad\BookmarkPadContent.xaml" /> <Page Include="Editor\Bookmarks\BookmarkPadContent.xaml" />
<Page Include="Src\Gui\Components\StringListEditorDialog.xaml" /> <Page Include="Src\Gui\Components\StringListEditorDialog.xaml" />
<Page Include="Src\Gui\Components\StringListEditorXaml.xaml" /> <Page Include="Src\Gui\Components\StringListEditorXaml.xaml" />
<Page Include="Src\Gui\Dialogs\OptionPanels\IDEOptions\CodeGenerationPanel.xaml" /> <Page Include="Src\Gui\Dialogs\OptionPanels\IDEOptions\CodeGenerationPanel.xaml" />

33
src/Main/Base/Project/Services/SD.cs

@ -9,6 +9,7 @@ using ICSharpCode.Core;
using ICSharpCode.Core.Implementation; using ICSharpCode.Core.Implementation;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Parser; using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;
@ -98,86 +99,106 @@ namespace ICSharpCode.SharpDevelop
return null; return null;
} }
/// <summary> /// <inheritdoc see="IWorkbench"/>
/// Gets the workbench.
/// </summary>
public static IWorkbench Workbench { public static IWorkbench Workbench {
get { return GetRequiredService<IWorkbench>(); } get { return GetRequiredService<IWorkbench>(); }
} }
/// <summary>
/// Gets the <see cref="IMessageLoop"/> representing the main UI thread.
/// </summary>
public static IMessageLoop MainThread { public static IMessageLoop MainThread {
get { return GetRequiredService<IMessageLoop>(); } get { return GetRequiredService<IMessageLoop>(); }
} }
/// <summary> /// <inheritdoc see="IStatusBarService"/>
/// Gets the status bar.
/// </summary>
public static IStatusBarService StatusBar { public static IStatusBarService StatusBar {
get { return GetRequiredService<IStatusBarService>(); } get { return GetRequiredService<IStatusBarService>(); }
} }
/// <inheritdoc see="ILoggingService"/>
public static ILoggingService Log { public static ILoggingService Log {
get { return GetRequiredService<ILoggingService>(); } get { return GetRequiredService<ILoggingService>(); }
} }
/// <inheritdoc see="IMessageService"/>
public static IMessageService MessageService { public static IMessageService MessageService {
get { return GetRequiredService<IMessageService>(); } get { return GetRequiredService<IMessageService>(); }
} }
/// <inheritdoc see="IPropertyService"/>
public static IPropertyService PropertyService { public static IPropertyService PropertyService {
get { return GetRequiredService<IPropertyService>(); } get { return GetRequiredService<IPropertyService>(); }
} }
/// <inheritdoc see="Core.IResourceService"/>
public static Core.IResourceService ResourceService { public static Core.IResourceService ResourceService {
get { return GetRequiredService<Core.IResourceService>(); } get { return GetRequiredService<Core.IResourceService>(); }
} }
/// <inheritdoc see="IEditorControlService"/>
public static IEditorControlService EditorControlService { public static IEditorControlService EditorControlService {
get { return GetRequiredService<IEditorControlService>(); } get { return GetRequiredService<IEditorControlService>(); }
} }
/// <inheritdoc see="IAnalyticsMonitor"/>
public static IAnalyticsMonitor AnalyticsMonitor { public static IAnalyticsMonitor AnalyticsMonitor {
get { return GetRequiredService<IAnalyticsMonitor>(); } get { return GetRequiredService<IAnalyticsMonitor>(); }
} }
/// <inheritdoc see="IParserService"/>
public static IParserService ParserService { public static IParserService ParserService {
get { return GetRequiredService<IParserService>(); } get { return GetRequiredService<IParserService>(); }
} }
/// <inheritdoc see="IAssemblyParserService"/>
public static IAssemblyParserService AssemblyParserService { public static IAssemblyParserService AssemblyParserService {
get { return GetRequiredService<IAssemblyParserService>(); } get { return GetRequiredService<IAssemblyParserService>(); }
} }
/// <inheritdoc see="IFileService"/>
public static IFileService FileService { public static IFileService FileService {
get { return GetRequiredService<IFileService>(); } get { return GetRequiredService<IFileService>(); }
} }
/// <inheritdoc see="IGlobalAssemblyCacheService"/>
public static IGlobalAssemblyCacheService GlobalAssemblyCache { public static IGlobalAssemblyCacheService GlobalAssemblyCache {
get { return GetRequiredService<IGlobalAssemblyCacheService>(); } get { return GetRequiredService<IGlobalAssemblyCacheService>(); }
} }
/// <inheritdoc see="IAddInTree"/>
public static IAddInTree AddInTree { public static IAddInTree AddInTree {
get { return GetRequiredService<IAddInTree>(); } get { return GetRequiredService<IAddInTree>(); }
} }
/// <inheritdoc see="IShutdownService"/>
public static IShutdownService ShutdownService { public static IShutdownService ShutdownService {
get { return GetRequiredService<IShutdownService>(); } get { return GetRequiredService<IShutdownService>(); }
} }
/// <inheritdoc see="ITreeNodeFactory"/>
public static ITreeNodeFactory TreeNodeFactory { public static ITreeNodeFactory TreeNodeFactory {
get { return GetRequiredService<ITreeNodeFactory>(); } get { return GetRequiredService<ITreeNodeFactory>(); }
} }
/// <inheritdoc see="IClipboard"/>
public static IClipboard Clipboard { public static IClipboard Clipboard {
get { return GetRequiredService<IClipboard>(); } get { return GetRequiredService<IClipboard>(); }
} }
/// <inheritdoc see="IWinFormsService"/>
public static IWinFormsService WinForms { public static IWinFormsService WinForms {
get { return GetRequiredService<IWinFormsService>(); } get { return GetRequiredService<IWinFormsService>(); }
} }
/// <inheritdoc see="IBuildService"/>
public static IBuildService BuildService { public static IBuildService BuildService {
get { return GetRequiredService<IBuildService>(); } get { return GetRequiredService<IBuildService>(); }
} }
/// <inheritdoc see="IBookmarkManager"/>
public static IBookmarkManager BookmarkManager {
get { return GetRequiredService<IBookmarkManager>(); }
}
} }
} }

4
src/Main/Base/Project/Src/Commands/DebugCommands.cs

@ -6,7 +6,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
@ -121,7 +121,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
if (editor != null) { if (editor != null) {
if (!string.IsNullOrEmpty(editor.FileName)) { if (!string.IsNullOrEmpty(editor.FileName)) {
DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line, typeof(BreakpointBookmark)); DebuggerService.ToggleBreakpointAt(editor, editor.Caret.Line);
} }
} }
} }

2
src/Main/Base/Project/Src/Editor/Commands/ClassBookmarkSubmenuBuilder.cs

@ -10,7 +10,7 @@ using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project;

2
src/Main/Base/Project/Src/Editor/Commands/ClassMemberMenuBuilder.cs

@ -9,7 +9,7 @@ using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Search; using ICSharpCode.SharpDevelop.Editor.Search;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;

1
src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs

@ -72,7 +72,6 @@ namespace ICSharpCode.SharpDevelop.Gui
DisplayBindingService.InitializeService(); DisplayBindingService.InitializeService();
TaskService.Initialize(); TaskService.Initialize();
Bookmarks.BookmarkManager.Initialize();
Project.CustomToolsService.Initialize(); Project.CustomToolsService.Initialize();
workbench.Initialize(); workbench.Initialize();

4
src/Main/Base/Project/Src/Project/Behaviors/DefaultProjectBehavior.cs

@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Project
// breakpoints and files // breakpoints and files
Properties properties = new Properties(); Properties properties = new Properties();
properties.SetList("bookmarks", ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.GetProjectBookmarks(Project)); properties.SetList("bookmarks", SD.BookmarkManager.GetProjectBookmarks(Project));
List<string> files = new List<string>(); List<string> files = new List<string>();
foreach (string fileName in FileService.GetOpenFiles()) { foreach (string fileName in FileService.GetOpenFiles()) {
if (fileName != null && Project.IsFileInProject(fileName)) { if (fileName != null && Project.IsFileInProject(fileName)) {
@ -113,7 +113,7 @@ namespace ICSharpCode.SharpDevelop.Project
WorkbenchSingleton.AssertMainThread(); WorkbenchSingleton.AssertMainThread();
foreach (var mark in memento.GetList<ICSharpCode.SharpDevelop.Editor.Bookmarks.SDBookmark>("bookmarks")) { foreach (var mark in memento.GetList<ICSharpCode.SharpDevelop.Editor.Bookmarks.SDBookmark>("bookmarks")) {
ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.AddMark(mark); SD.BookmarkManager.AddMark(mark);
} }
List<string> filesToOpen = new List<string>(); List<string> filesToOpen = new List<string>();
foreach (string fileName in memento.GetList<string>("files")) { foreach (string fileName in memento.GetList<string>("files")) {

2
src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs

@ -9,7 +9,7 @@ using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;

6
src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs

@ -7,7 +7,7 @@ using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
@ -60,13 +60,13 @@ namespace ICSharpCode.SharpDevelop.Debugging
instance = new CurrentLineBookmark(); instance = new CurrentLineBookmark();
instance.Location = new TextLocation(startLine, startColumn); instance.Location = new TextLocation(startLine, startColumn);
instance.FileName = fileName; instance.FileName = fileName;
BookmarkManager.AddMark(instance); SD.BookmarkManager.AddMark(instance);
} }
public static void Remove() public static void Remove()
{ {
if (instance != null) { if (instance != null) {
BookmarkManager.RemoveMark(instance); SD.BookmarkManager.RemoveMark(instance);
instance = null; instance = null;
} }
} }

33
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -12,7 +12,7 @@ using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.Semantics; using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
@ -35,8 +35,8 @@ namespace ICSharpCode.SharpDevelop.Debugging
ProjectService.BeforeSolutionClosing += OnBeforeSolutionClosing; ProjectService.BeforeSolutionClosing += OnBeforeSolutionClosing;
BookmarkManager.Added += BookmarkAdded; SD.BookmarkManager.BookmarkAdded += BookmarkAdded;
BookmarkManager.Removed += BookmarkRemoved; SD.BookmarkManager.BookmarkRemoved += BookmarkRemoved;
} }
static void GetDescriptors() static void GetDescriptors()
@ -188,16 +188,9 @@ namespace ICSharpCode.SharpDevelop.Debugging
} }
} }
public static IList<BreakpointBookmark> Breakpoints { public static IEnumerable<BreakpointBookmark> Breakpoints {
get { get {
List<BreakpointBookmark> breakpoints = new List<BreakpointBookmark>(); return SD.BookmarkManager.Bookmarks.OfType<BreakpointBookmark>();
foreach (SDBookmark bookmark in BookmarkManager.Bookmarks) {
BreakpointBookmark breakpoint = bookmark as BreakpointBookmark;
if (breakpoint != null) {
breakpoints.Add(breakpoint);
}
}
return breakpoints.AsReadOnly();
} }
} }
@ -257,22 +250,14 @@ namespace ICSharpCode.SharpDevelop.Debugging
/// <param name="lineNumber">Line number.</param> /// <param name="lineNumber">Line number.</param>
/// <param name="breakpointType">Type of breakpoint bookmark.</param> /// <param name="breakpointType">Type of breakpoint bookmark.</param>
/// <param name="parameters">Optional constructor parameters.</param> /// <param name="parameters">Optional constructor parameters.</param>
public static void ToggleBreakpointAt(ITextEditor editor, int lineNumber, Type breakpointType, object[] parameters = null) public static void ToggleBreakpointAt(ITextEditor editor, int lineNumber)
{ {
if (editor == null) if (editor == null)
throw new ArgumentNullException("editor"); throw new ArgumentNullException("editor");
if (breakpointType == null) if (!SD.BookmarkManager.RemoveBookmarkAt(editor.FileName, lineNumber, b => b is BreakpointBookmark)) {
throw new ArgumentNullException("breakpointType"); SD.BookmarkManager.AddMark(new BreakpointBookmark(), editor.Document, lineNumber);
}
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, "", ""}));
} }
/* TODO: reimplement this stuff /* TODO: reimplement this stuff

2
src/Main/Base/Project/Src/Services/Debugger/DecompiledBreakpointBookmark.cs

@ -6,7 +6,7 @@ using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using Mono.Cecil; using Mono.Cecil;
namespace ICSharpCode.SharpDevelop.Bookmarks namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{ {
public class DecompiledBreakpointBookmark : BreakpointBookmark public class DecompiledBreakpointBookmark : BreakpointBookmark
{ {

2
src/Main/Base/Project/Src/Services/RefactoringService/RefactoringMenuBuilder.cs

@ -17,7 +17,7 @@ using System.Windows.Input;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.Core.Presentation; using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory.Visitors; using ICSharpCode.NRefactory.Visitors;
using ICSharpCode.SharpDevelop.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver; using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver;
using ICSharpCode.SharpDevelop.Dom.Refactoring; using ICSharpCode.SharpDevelop.Dom.Refactoring;

95
src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs → src/Main/SharpDevelop/Editor/Bookmarks/BookmarkManager.cs

@ -3,47 +3,44 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.NRefactory; using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop.Bookmarks namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{ {
/// <summary> sealed class BookmarkManager : IBookmarkManager
/// Static class that maintains the list of bookmarks and breakpoints.
/// </summary>
public static class BookmarkManager
{ {
static List<SDBookmark> bookmarks = new List<SDBookmark>(); public BookmarkManager()
{
Project.ProjectService.SolutionClosing += delegate { Clear(); };
}
public static List<SDBookmark> Bookmarks { List<SDBookmark> bookmarks = new List<SDBookmark>();
public IReadOnlyCollection<SDBookmark> Bookmarks {
get { get {
SD.MainThread.VerifyAccess();
return bookmarks; return bookmarks;
} }
} }
public static List<SDBookmark> GetBookmarks(FileName fileName) public IEnumerable<SDBookmark> GetBookmarks(FileName fileName)
{ {
if (fileName == null) if (fileName == null)
throw new ArgumentNullException("fileName"); throw new ArgumentNullException("fileName");
WorkbenchSingleton.AssertMainThread(); SD.MainThread.VerifyAccess();
return bookmarks.Where(b => b.FileName == fileName);
List<SDBookmark> marks = new List<SDBookmark>();
foreach (SDBookmark mark in bookmarks) {
if (fileName == mark.FileName) {
marks.Add(mark);
}
}
return marks;
} }
public static void AddMark(SDBookmark bookmark) public void AddMark(SDBookmark bookmark)
{ {
WorkbenchSingleton.AssertMainThread(); WorkbenchSingleton.AssertMainThread();
if (bookmark == null) return; if (bookmark == null) return;
@ -53,6 +50,15 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
OnAdded(new BookmarkEventArgs(bookmark)); 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) static bool IsEqualBookmark(SDBookmark a, SDBookmark b)
{ {
if (a == b) if (a == b)
@ -66,14 +72,14 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
return a.LineNumber == b.LineNumber; return a.LineNumber == b.LineNumber;
} }
public static void RemoveMark(SDBookmark bookmark) public void RemoveMark(SDBookmark bookmark)
{ {
WorkbenchSingleton.AssertMainThread(); WorkbenchSingleton.AssertMainThread();
bookmarks.Remove(bookmark); bookmarks.Remove(bookmark);
OnRemoved(new BookmarkEventArgs(bookmark)); OnRemoved(new BookmarkEventArgs(bookmark));
} }
public static void Clear() public void Clear()
{ {
WorkbenchSingleton.AssertMainThread(); WorkbenchSingleton.AssertMainThread();
while (bookmarks.Count > 0) { 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(); }; if (BookmarkRemoved != null) {
} BookmarkRemoved(null, e);
static void OnRemoved(BookmarkEventArgs e)
{
if (Removed != null) {
Removed(null, e);
} }
} }
static void OnAdded(BookmarkEventArgs e) void OnAdded(BookmarkEventArgs e)
{ {
if (Added != null) { if (BookmarkAdded != null) {
Added(null, e); BookmarkAdded(null, e);
} }
} }
public static List<SDBookmark> GetProjectBookmarks(ICSharpCode.SharpDevelop.Project.IProject project) public IEnumerable<SDBookmark> GetProjectBookmarks(ICSharpCode.SharpDevelop.Project.IProject project)
{ {
WorkbenchSingleton.AssertMainThread(); WorkbenchSingleton.AssertMainThread();
List<SDBookmark> projectBookmarks = new List<SDBookmark>(); List<SDBookmark> projectBookmarks = new List<SDBookmark>();
@ -115,24 +116,20 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
return projectBookmarks; return projectBookmarks;
} }
public static void ToggleBookmark(ITextEditor editor, int line, public bool RemoveBookmarkAt(FileName fileName, int line, Predicate<SDBookmark> predicate = null)
Predicate<SDBookmark> canToggle,
Func<TextLocation, SDBookmark> bookmarkFactory)
{ {
WorkbenchSingleton.AssertMainThread(); foreach (SDBookmark bookmark in GetBookmarks(fileName)) {
foreach (SDBookmark bookmark in GetBookmarks(editor.FileName)) { if (bookmark.CanToggle && bookmark.LineNumber == line) {
if (canToggle(bookmark) && bookmark.LineNumber == line) { if (predicate == null || predicate(bookmark)) {
BookmarkManager.RemoveMark(bookmark); RemoveMark(bookmark);
return; return true;
} }
} }
// no bookmark at that line: create a new bookmark }
int lineStartOffset = editor.Document.GetLineByNumber(line).Offset; return false;
int column = 1 + DocumentUtilitites.GetWhitespaceAfter(editor.Document, lineStartOffset).Length;
BookmarkManager.AddMark(bookmarkFactory(new TextLocation(line, column)));
} }
public static void RemoveAll(Predicate<SDBookmark> match) public void RemoveAll(Predicate<SDBookmark> match)
{ {
if (match == null) if (match == null)
throw new ArgumentNullException("Predicate is null!"); throw new ArgumentNullException("Predicate is null!");
@ -147,7 +144,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
} }
} }
public static event EventHandler<BookmarkEventArgs> Removed; public event EventHandler<BookmarkEventArgs> BookmarkRemoved;
public static event EventHandler<BookmarkEventArgs> Added; public event EventHandler<BookmarkEventArgs> BookmarkAdded;
} }
} }

21
src/Main/Base/Project/Src/Bookmarks/Commands/MenuCommands.cs → src/Main/SharpDevelop/Editor/Bookmarks/BookmarkMenuCommands.cs

@ -10,9 +10,9 @@ using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks; using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui; 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() public override void Run()
{ {
@ -36,16 +36,17 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
protected abstract void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin); protected abstract void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin);
} }
public class ToggleBookmark : BookmarkMenuCommand class ToggleBookmark : BookmarkMenuCommand
{ {
protected override void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin) protected override void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin)
{ {
BookmarkManager.ToggleBookmark(editor, editor.Caret.Line, int lineNumber = editor.Caret.Line;
b => b.CanToggle && b.GetType() == typeof(Bookmark), if (!SD.BookmarkManager.RemoveBookmarkAt(editor.FileName, lineNumber, b => b is Bookmark)) {
location => new Bookmark { FileName = editor.FileName, Location = location}); SD.BookmarkManager.AddMark(new Bookmark(), editor.Document, lineNumber);
} }
} }
public class PrevBookmark : BookmarkMenuCommand }
class PrevBookmark : BookmarkMenuCommand
{ {
protected override void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin) 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) 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) protected override void Run(ITextEditor editor, IBookmarkMargin bookmarkMargin)
{ {
@ -85,7 +86,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
where b.CanToggle where b.CanToggle
select b).ToList(); select b).ToList();
foreach (SDBookmark b in bookmarks) foreach (SDBookmark b in bookmarks)
BookmarkManager.RemoveMark(b); SD.BookmarkManager.RemoveMark(b);
} }
} }
} }

4
src/Main/SharpDevelop/SharpDevelop.csproj

@ -86,6 +86,8 @@
<Compile Include="Dom\TopLevelTypeDefinitionModelCollection.cs" /> <Compile Include="Dom\TopLevelTypeDefinitionModelCollection.cs" />
<Compile Include="Dom\TreeNodeFactoryService.cs" /> <Compile Include="Dom\TreeNodeFactoryService.cs" />
<Compile Include="Dom\TypeDefinitionModel.cs" /> <Compile Include="Dom\TypeDefinitionModel.cs" />
<Compile Include="Editor\Bookmarks\BookmarkManager.cs" />
<Compile Include="Editor\Bookmarks\BookmarkMenuCommands.cs" />
<Compile Include="OptionPanels\LoadSaveOptions.xaml.cs"> <Compile Include="OptionPanels\LoadSaveOptions.xaml.cs">
<DependentUpon>LoadSaveOptions.xaml</DependentUpon> <DependentUpon>LoadSaveOptions.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
@ -220,6 +222,8 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Dom" /> <Folder Include="Dom" />
<Folder Include="Editor" />
<Folder Include="Editor\Bookmarks" />
<Folder Include="Project" /> <Folder Include="Project" />
<Folder Include="Project\Build" /> <Folder Include="Project\Build" />
<Folder Include="Services" /> <Folder Include="Services" />

Loading…
Cancel
Save