Browse Source

Move bookmark-related classes to new folder structure.

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
d0a11e630d
  1. 1
      src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs
  2. 1
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
  3. 1
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  4. 1
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarManager.cs
  5. 1
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs
  6. 2
      src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/CodeView.cs
  7. 1
      src/AddIns/DisplayBindings/ILSpyAddIn/ViewContent/DecompiledViewContent.cs
  8. 3
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs
  9. 3
      src/Main/Base/Project/Dom/ConcatModelCollection.cs
  10. 104
      src/Main/Base/Project/Dom/FilterModelCollection.cs
  11. 15
      src/Main/Base/Project/Dom/SimpleModelCollection.cs
  12. 10
      src/Main/Base/Project/Editor/Bookmarks/BookmarkBase.cs
  13. 4
      src/Main/Base/Project/Editor/Bookmarks/BookmarkEventArgs.cs
  14. 2
      src/Main/Base/Project/Editor/Bookmarks/EntityBookmark.cs
  15. 24
      src/Main/Base/Project/Editor/Bookmarks/IBookmark.cs
  16. 28
      src/Main/Base/Project/Editor/Bookmarks/IBookmarkMargin.cs
  17. 35
      src/Main/Base/Project/Editor/Bookmarks/SDBookmark.cs
  18. 7
      src/Main/Base/Project/Editor/Bookmarks/SDMarkerBookmark.cs
  19. 17
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  20. 123
      src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs
  21. 7
      src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs
  22. 4
      src/Main/Base/Project/Src/Bookmarks/Commands/MenuCommands.cs
  23. 1
      src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs
  24. 1
      src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs
  25. 2
      src/Main/Base/Project/Src/Project/Behaviors/DefaultProjectBehavior.cs
  26. 13
      src/Main/Base/Project/Src/Services/Debugger/BreakpointBookmark.cs
  27. 17
      src/Main/Base/Project/Src/Services/Debugger/CurrentLineBookmark.cs
  28. 2
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  29. 1
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  30. 68
      src/Main/Base/Test/Utils/ModelCollectionEventCheck.cs
  31. 3
      src/Main/SharpDevelop/Project/Build/BuildService.cs

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

@ -11,6 +11,7 @@ using ICSharpCode.Core; @@ -11,6 +11,7 @@ using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Services;
namespace ICSharpCode.SharpDevelop.Gui.Pads

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

@ -17,6 +17,7 @@ using ICSharpCode.NRefactory.Editor; @@ -17,6 +17,7 @@ using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;

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

@ -27,6 +27,7 @@ using ICSharpCode.NRefactory.Editor; @@ -27,6 +27,7 @@ using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Widgets.MyersDiff;

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

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

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

@ -13,6 +13,7 @@ using ICSharpCode.AvalonEdit.Utils; @@ -13,6 +13,7 @@ using ICSharpCode.AvalonEdit.Utils;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench;
using Mono.Cecil;

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

@ -8,6 +8,7 @@ using System.Windows; @@ -8,6 +8,7 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using ICSharpCode.AvalonEdit;
using ICSharpCode.AvalonEdit.AddIn;
using ICSharpCode.AvalonEdit.Document;
@ -20,6 +21,7 @@ using ICSharpCode.SharpDevelop; @@ -20,6 +21,7 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.ILSpyAddIn.ViewContent

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

@ -20,6 +20,7 @@ using ICSharpCode.SharpDevelop.Bookmarks; @@ -20,6 +20,7 @@ using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench;
using Mono.Cecil;

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

@ -19,6 +19,7 @@ using ICSharpCode.SharpDevelop; @@ -19,6 +19,7 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Editor.Search;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
@ -413,7 +414,7 @@ namespace SearchAndReplace @@ -413,7 +414,7 @@ namespace SearchAndReplace
return;
}
}
BookmarkManager.AddMark(new Bookmark(result.FileName, result.StartLocation));
BookmarkManager.AddMark(new Bookmark { FileName = result.FileName, Location = result.StartLocation});
}
}
#endregion

3
src/Main/Base/Project/Dom/ConcatModelCollection.cs

@ -16,9 +16,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -16,9 +16,6 @@ namespace ICSharpCode.SharpDevelop.Dom
/// </summary>
public sealed class ConcatModelCollection<T> : IModelCollection<T>
{
// TODO: do we still need this class? maybe we should remove it?
// the indirection through this collection wrapper makes the weak reference/weak event stuff too complicated...
sealed class InputCollection : Collection<IModelCollection<T>>
{
readonly ConcatModelCollection<T> owner;

104
src/Main/Base/Project/Dom/FilterModelCollection.cs

@ -0,0 +1,104 @@ @@ -0,0 +1,104 @@
// 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;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
namespace ICSharpCode.SharpDevelop.Dom
{
/// <summary>
/// A model collection that filters an input collection.
/// </summary>
public sealed class FilterModelCollection<T> : IModelCollection<T>
{
readonly IModelCollection<T> input;
readonly Func<T, bool> predicate;
bool isAttached;
NotifyCollectionChangedEventHandler collectionChanged;
public FilterModelCollection(IModelCollection<T> input, Func<T, bool> predicate)
{
if (input == null)
throw new ArgumentNullException("input");
if (predicate == null)
throw new ArgumentNullException("predicate");
this.input = input;
this.predicate = predicate;
}
public event NotifyCollectionChangedEventHandler CollectionChanged {
add {
collectionChanged += value;
if (collectionChanged != null && !isAttached) {
input.CollectionChanged += input_CollectionChanged;
isAttached = true;
}
}
remove {
collectionChanged -= value;
if (collectionChanged == null && isAttached) {
input.CollectionChanged -= input_CollectionChanged;
isAttached = false;
}
}
}
void input_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
switch (e.Action) {
case NotifyCollectionChangedAction.Add:
collectionChanged(this, new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Add, ApplyFilter(e.NewItems)));
break;
case NotifyCollectionChangedAction.Remove:
collectionChanged(this, new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Remove, ApplyFilter(e.OldItems)));
break;
case NotifyCollectionChangedAction.Replace:
collectionChanged(this, new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Replace, ApplyFilter(e.OldItems), ApplyFilter(e.NewItems)));
break;
case NotifyCollectionChangedAction.Move:
// this collection is unordered
break;
case NotifyCollectionChangedAction.Reset:
collectionChanged(this, new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Reset));
break;
default:
throw new NotSupportedException();
}
}
IList ApplyFilter(IList inputItems)
{
if (inputItems == null)
return null;
List<T> outputItems = new List<T>();
foreach (T item in inputItems) {
if (predicate(item))
outputItems.Add(item);
}
return outputItems;
}
public int Count {
get {
return input.Count(predicate);
}
}
public IEnumerator<T> GetEnumerator()
{
return input.Where(predicate).GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}

15
src/Main/Base/Project/Dom/SimpleModelCollection.cs

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.ObjectModel;
namespace ICSharpCode.SharpDevelop.Dom
{
/// <summary>
/// A model collection implementation that is based on a ObservableCollection.
/// </summary>
public class SimpleModelCollection<T> : ObservableCollection<T>, IModelCollection<T>
{
}
}

10
src/Main/Base/Project/Src/Bookmarks/BookmarkBase.cs → src/Main/Base/Project/Editor/Bookmarks/BookmarkBase.cs

@ -7,9 +7,8 @@ using System.Windows.Media; @@ -7,9 +7,8 @@ using System.Windows.Media;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop.Bookmarks
namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{
/// <summary>
/// A bookmark that can be attached to an AvalonEdit TextDocument.
@ -147,13 +146,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -147,13 +146,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
}
}
public BookmarkBase(TextLocation location)
{
this.Location = location;
public static IImage DefaultBookmarkImage {
get { return SD.ResourceService.GetImage("Bookmarks.ToggleMark"); }
}
public static readonly IImage DefaultBookmarkImage = new ResourceServiceImage("Bookmarks.ToggleMark");
public virtual IImage Image {
get { return DefaultBookmarkImage; }
}

4
src/Main/Base/Project/Src/Bookmarks/BookmarkEventHandler.cs → src/Main/Base/Project/Editor/Bookmarks/BookmarkEventArgs.cs

@ -3,10 +3,8 @@ @@ -3,10 +3,8 @@
using System;
namespace ICSharpCode.SharpDevelop.Bookmarks
namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{
public delegate void BookmarkEventHandler(object sender, BookmarkEventArgs e);
/// <summary>
/// Description of BookmarkEventHandler.
/// </summary>

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

@ -9,7 +9,7 @@ using ICSharpCode.Core.Presentation; @@ -9,7 +9,7 @@ using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.TypeSystem;
namespace ICSharpCode.SharpDevelop.Bookmarks
namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{
/// <summary>
/// Bookmark used to give additional operations for entities.

24
src/Main/Base/Project/Src/Bookmarks/IBookmarkMargin.cs → src/Main/Base/Project/Editor/Bookmarks/IBookmark.cs

@ -2,32 +2,10 @@ @@ -2,32 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Windows.Input;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop.Bookmarks
namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{
/// <summary>
/// The bookmark margin.
/// </summary>
[DocumentService]
public interface IBookmarkMargin
{
/// <summary>
/// Gets the list of bookmarks.
/// </summary>
IList<IBookmark> Bookmarks { get; }
/// <summary>
/// Redraws the bookmark margin. Bookmarks need to call this method when the Image changes.
/// </summary>
void Redraw();
event EventHandler RedrawRequested;
}
/// <summary>
/// Represents a bookmark in the bookmark margin.
/// </summary>

28
src/Main/Base/Project/Editor/Bookmarks/IBookmarkMargin.cs

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
// 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.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{
/// <summary>
/// The bookmark margin.
/// </summary>
[DocumentService]
public interface IBookmarkMargin
{
/// <summary>
/// Gets the list of bookmarks.
/// </summary>
IList<IBookmark> Bookmarks { get; }
/// <summary>
/// Redraws the bookmark margin. Bookmarks need to call this method when the Image changes.
/// </summary>
void Redraw();
event EventHandler RedrawRequested;
}
}

35
src/Main/Base/Project/Src/Bookmarks/SDBookmark.cs → src/Main/Base/Project/Editor/Bookmarks/SDBookmark.cs

@ -4,22 +4,18 @@ @@ -4,22 +4,18 @@
using System;
using System.ComponentModel;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Bookmarks;
namespace ICSharpCode.SharpDevelop.Bookmarks
namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{
/// <summary>
/// A bookmark that is persistant across SharpDevelop sessions.
/// </summary>
[TypeConverter(typeof(BookmarkConverter))]
public abstract class SDBookmark : BookmarkBase
{
public SDBookmark(FileName fileName, TextLocation location) : base(location)
{
this.fileName = fileName;
}
FileName fileName;
public FileName FileName {
@ -55,39 +51,29 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -55,39 +51,29 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
LineNumberChanged(this, EventArgs.Empty);
}
bool isSaved = true;
/// <summary>
/// Gets/Sets if the bookmark should be saved to the project memento file.
/// </summary>
/// <remarks>
/// Default is true, set this property to false if you are using the bookmark for
/// Default is true; override this property if you are using the bookmark for
/// something special like like "CurrentLineBookmark" in the debugger.
/// </remarks>
public bool IsSaved {
public virtual bool IsSaved {
get {
return isSaved;
}
set {
isSaved = value;
return true;
}
}
bool isVisibleInBookmarkPad = true;
/// <summary>
/// Gets/Sets if the bookmark is shown in the bookmark pad.
/// </summary>
/// <remarks>
/// Default is true, set this property to false if you are using the bookmark for
/// Default is true, override this property if you are using the bookmark for
/// something special like like "CurrentLineBookmark" in the debugger.
/// </remarks>
public bool IsVisibleInBookmarkPad {
public virtual bool IsVisibleInBookmarkPad {
get {
return isVisibleInBookmarkPad;
}
set {
isVisibleInBookmarkPad = value;
return true;
}
}
@ -102,8 +88,5 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -102,8 +88,5 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
/// </summary>
public sealed class Bookmark : SDBookmark
{
public Bookmark(FileName fileName, TextLocation location) : base(fileName, location)
{
}
}
}

7
src/Main/Base/Project/Src/Bookmarks/SDMarkerBookmark.cs → src/Main/Base/Project/Editor/Bookmarks/SDMarkerBookmark.cs

@ -7,18 +7,13 @@ using ICSharpCode.Core; @@ -7,18 +7,13 @@ using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop.Bookmarks
namespace ICSharpCode.SharpDevelop.Editor.Bookmarks
{
/// <summary>
/// A bookmark that is persistant across SharpDevelop sessions and has a text marker assigned to it.
/// </summary>
public abstract class SDMarkerBookmark : SDBookmark
{
public SDMarkerBookmark(FileName fileName, TextLocation location) : base(fileName, location)
{
//SetMarker();
}
ITextMarker marker;
protected abstract ITextMarker CreateMarker(ITextMarkerService markerService);

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

@ -96,6 +96,7 @@ @@ -96,6 +96,7 @@
<Link>Src\Project\MSBuildEngine\ExtendedBinaryReader.cs</Link>
</Compile>
<Compile Include="Dom\ConcatModelCollection.cs" />
<Compile Include="Dom\FilterModelCollection.cs" />
<Compile Include="Dom\IEntityModelContext.cs" />
<Compile Include="Dom\IMemberModel.cs" />
<Compile Include="Dom\IModelFactory.cs" />
@ -105,6 +106,14 @@ @@ -105,6 +106,14 @@
<Compile Include="Dom\IEntityModel.cs" />
<Compile Include="Dom\IModelCollection.cs" />
<Compile Include="Dom\ITreeNodeFactory.cs" />
<Compile Include="Dom\SimpleModelCollection.cs" />
<Compile Include="Editor\Bookmarks\BookmarkBase.cs" />
<Compile Include="Editor\Bookmarks\BookmarkEventArgs.cs" />
<Compile Include="Editor\Bookmarks\EntityBookmark.cs" />
<Compile Include="Editor\Bookmarks\IBookmark.cs" />
<Compile Include="Editor\Bookmarks\IBookmarkMargin.cs" />
<Compile Include="Editor\Bookmarks\SDBookmark.cs" />
<Compile Include="Editor\Bookmarks\SDMarkerBookmark.cs" />
<Compile Include="Editor\DocumentServiceAttribute.cs" />
<Compile Include="Editor\DocumentUtilitites.cs" />
<Compile Include="Editor\IEditorControlService.cs" />
@ -693,15 +702,10 @@ @@ -693,15 +702,10 @@
<EmbeddedResource Include="Resources\NewFileDialog.xfrm" />
<EmbeddedResource Include="Resources\OutputWindowOptionsPanel.xfrm" />
<EmbeddedResource Include="Resources\WordCountDialog.xfrm" />
<Compile Include="Src\Bookmarks\BookmarkBase.cs" />
<Compile Include="Src\Bookmarks\Commands\MenuCommands.cs" />
<Compile Include="Src\Bookmarks\IBookmarkMargin.cs" />
<Compile Include="Src\Bookmarks\Pad\BookmarkPad.cs" />
<Compile Include="Src\Bookmarks\Pad\BookmarkPadToolbarCommands.cs" />
<Compile Include="Src\Bookmarks\SDBookmark.cs" />
<Compile Include="Src\Bookmarks\BookmarkEventHandler.cs" />
<Compile Include="Src\Bookmarks\BookmarkManager.cs" />
<Compile Include="Src\Bookmarks\SDMarkerBookmark.cs" />
<Compile Include="Src\Services\Tasks\TaskEventHandler.cs" />
<Compile Include="Src\Gui\Pads\DefinitionViewPad.cs" />
<Compile Include="Src\Project\MSBuildEnums.cs" />
@ -715,8 +719,6 @@ @@ -715,8 +719,6 @@
<Compile Include="Src\Gui\BrowserDisplayBinding\ExtendedWebBrowser.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Src\Bookmarks\BookmarkConverter.cs" />
<Compile Include="Src\Bookmarks\EntityBookmark.cs" />
<Compile Include="Src\Services\RefactoringService\RefactoringService.cs" />
<Compile Include="Src\Services\RefactoringService\Reference.cs" />
<Compile Include="Src\Services\ProjectService\ParseableFileContentFinder.cs" />
@ -871,6 +873,7 @@ @@ -871,6 +873,7 @@
</ProjectReference>
<Folder Include="Dom" />
<Folder Include="Editor" />
<Folder Include="Editor\Bookmarks" />
<Folder Include="Project" />
<Folder Include="Parser" />
<Folder Include="Project\Build" />

123
src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs

@ -1,123 +0,0 @@ @@ -1,123 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.ComponentModel;
using System.Globalization;
using System.Text;
using System.Windows;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
namespace ICSharpCode.SharpDevelop.Bookmarks
{
public sealed class BookmarkConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(string)) {
return true;
} else {
return base.CanConvertFrom(context, sourceType);
}
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if (value is string) {
string[] v = ((string)value).Split('|');
FileName fileName = FileName.Create(v[1]);
int lineNumber = int.Parse(v[2], culture);
int columnNumber = int.Parse(v[3], culture);
if (lineNumber < 0)
return null;
if (columnNumber < 0)
return null;
SDBookmark bookmark;
switch (v[0]) {
case "Breakpoint":
Debugging.BreakpointAction action = Debugging.BreakpointAction.Break;
string scriptLanguage = "";
string script = "";
action = (Debugging.BreakpointAction)Enum.Parse(typeof(Debugging.BreakpointAction), v[5]);
scriptLanguage = v[6];
script = v[7];
var bbm = new Debugging.BreakpointBookmark(fileName, new TextLocation(lineNumber, columnNumber), action, scriptLanguage, script);
bbm.IsEnabled = bool.Parse(v[4]);
bbm.Action = action;
bbm.ScriptLanguage = scriptLanguage;
bbm.Condition = script;
bookmark = bbm;
break;
case "DecompiledBreakpointBookmark":
action = (Debugging.BreakpointAction)Enum.Parse(typeof(Debugging.BreakpointAction), v[5]);
scriptLanguage = v[6];
script = v[7];
bbm = new DecompiledBreakpointBookmark(fileName, new TextLocation(columnNumber, lineNumber), action, scriptLanguage, script);
bbm.IsEnabled = bool.Parse(v[4]);
bbm.Action = action;
bbm.ScriptLanguage = scriptLanguage;
bbm.Condition = script;
bookmark = bbm;
break;
default:
bookmark = new Bookmark(fileName, new TextLocation(lineNumber, columnNumber));
break;
}
return bookmark;
} else {
return base.ConvertFrom(context, culture, value);
}
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
SDBookmark bookmark = value as SDBookmark;
if (destinationType == typeof(string) && bookmark != null) {
StringBuilder b = new StringBuilder();
if (bookmark is DecompiledBreakpointBookmark) {
b.Append("DecompiledBreakpointBookmark");
} else if (bookmark is Debugging.BreakpointBookmark) {
b.Append("Breakpoint");
} else {
b.Append("Bookmark");
}
b.Append('|');
b.Append(bookmark.FileName);
b.Append('|');
b.Append(bookmark.LineNumber);
b.Append('|');
b.Append(bookmark.ColumnNumber);
if (bookmark is DecompiledBreakpointBookmark) {
var bbm = (DecompiledBreakpointBookmark)bookmark;
b.Append('|');
b.Append(bbm.IsEnabled.ToString());
b.Append('|');
b.Append(bbm.Action.ToString());
b.Append('|');
b.Append(bbm.ScriptLanguage);
b.Append('|');
b.Append(bbm.Condition);
} else if (bookmark is Debugging.BreakpointBookmark) {
var bbm = (Debugging.BreakpointBookmark)bookmark;
b.Append('|');
b.Append(bbm.IsEnabled.ToString());
b.Append('|');
b.Append(bbm.Action.ToString());
b.Append('|');
b.Append(bbm.ScriptLanguage);
b.Append('|');
b.Append(bbm.Condition);
}
return b.ToString();
} else {
return base.ConvertTo(context, culture, value, destinationType);
}
}
}
}

7
src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.NRefactory;
using System;
using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop.Bookmarks
@ -146,7 +147,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -146,7 +147,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
}
}
public static event BookmarkEventHandler Removed;
public static event BookmarkEventHandler Added;
public static event EventHandler<BookmarkEventArgs> Removed;
public static event EventHandler<BookmarkEventArgs> Added;
}
}

4
src/Main/Base/Project/Src/Bookmarks/Commands/MenuCommands.cs

@ -4,8 +4,10 @@ @@ -4,8 +4,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop.Bookmarks
@ -40,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -40,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
BookmarkManager.ToggleBookmark(editor, editor.Caret.Line,
b => b.CanToggle && b.GetType() == typeof(Bookmark),
location => new Bookmark(editor.FileName, location));
location => new Bookmark { FileName = editor.FileName, Location = location});
}
}
public class PrevBookmark : BookmarkMenuCommand

1
src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs

@ -10,6 +10,7 @@ using System.Windows.Controls; @@ -10,6 +10,7 @@ using System.Windows.Controls;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Workbench;

1
src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs

@ -8,6 +8,7 @@ using System.Windows.Forms; @@ -8,6 +8,7 @@ using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
namespace ICSharpCode.SharpDevelop.Bookmarks
{

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

@ -112,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -112,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
WorkbenchSingleton.AssertMainThread();
foreach (var mark in memento.GetList<ICSharpCode.SharpDevelop.Bookmarks.SDBookmark>("bookmarks")) {
foreach (var mark in memento.GetList<ICSharpCode.SharpDevelop.Editor.Bookmarks.SDBookmark>("bookmarks")) {
ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.AddMark(mark);
}
List<string> filesToOpen = new List<string>();

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

@ -4,12 +4,14 @@ @@ -4,12 +4,14 @@
using System;
using System.Linq;
using System.Windows.Media;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
namespace ICSharpCode.SharpDevelop.Debugging
{
@ -97,8 +99,17 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -97,8 +99,17 @@ namespace ICSharpCode.SharpDevelop.Debugging
set { tooltip = value; }
}
public BreakpointBookmark(FileName fileName, TextLocation location, BreakpointAction action, string scriptLanguage, string script) : base(fileName, location)
/// <summary>
/// parameter-less ctor is necessary for deserialization
/// </summary>
public BreakpointBookmark()
{
}
public BreakpointBookmark(FileName fileName, TextLocation location, BreakpointAction action, string scriptLanguage, string script)
{
this.Location = location;
this.FileName = fileName;
this.action = action;
this.scriptLanguage = scriptLanguage;
this.condition = script;

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

@ -9,6 +9,7 @@ using ICSharpCode.NRefactory; @@ -9,6 +9,7 @@ using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop.Debugging
@ -56,7 +57,9 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -56,7 +57,9 @@ namespace ICSharpCode.SharpDevelop.Debugging
IDocumentLine line = document.GetLineByNumber(startLine);
if (endColumn < 1 || endColumn > line.Length)
endColumn = line.Length;
instance = new CurrentLineBookmark(fileName, new TextLocation(startLine, startColumn));
instance = new CurrentLineBookmark();
instance.Location = new TextLocation(startLine, startColumn);
instance.FileName = fileName;
BookmarkManager.AddMark(instance);
}
@ -81,16 +84,16 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -81,16 +84,16 @@ namespace ICSharpCode.SharpDevelop.Debugging
get { return 100; }
}
public CurrentLineBookmark(FileName fileName, TextLocation location) : base(fileName, location)
{
this.IsSaved = false;
this.IsVisibleInBookmarkPad = false;
public override bool IsSaved {
get { return false; }
}
readonly static IImage currentLineArrow = new ResourceServiceImage("Bookmarks.CurrentLine");
public override bool IsVisibleInBookmarkPad {
get { return false; }
}
public override IImage Image {
get { return currentLineArrow; }
get { return SD.ResourceService.GetImage("Bookmarks.CurrentLine"); }
}
protected override ITextMarker CreateMarker(ITextMarkerService markerService)

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

@ -6,6 +6,7 @@ using System.Collections.Generic; @@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Editor;
@ -13,6 +14,7 @@ using ICSharpCode.NRefactory.Semantics; @@ -13,6 +14,7 @@ using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.Bookmarks;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;

1
src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj

@ -126,6 +126,7 @@ @@ -126,6 +126,7 @@
<Compile Include="Utils\MockSite.cs" />
<Compile Include="Utils\MockTextMarker.cs" />
<Compile Include="Utils\MockTextMarkerService.cs" />
<Compile Include="Utils\ModelCollectionEventCheck.cs" />
<Compile Include="Utils\ProjectHelper.cs" />
<Compile Include="Utils\TestExtensions.cs" />
<Compile Include="Utils\Tests\MockAssemblyTests.cs" />

68
src/Main/Base/Test/Utils/ModelCollectionEventCheck.cs

@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
namespace ICSharpCode.SharpDevelop.Utils
{
/// <summary>
/// Checks the change events of a model collection for consistency
/// with the collection data.
/// </summary>
public class ModelCollectionEventCheck<T>
{
readonly IModelCollection<T> modelCollection;
List<T> list;
public ModelCollectionEventCheck(IModelCollection<T> modelCollection)
{
if (modelCollection == null)
throw new ArgumentNullException("modelCollection");
this.modelCollection = modelCollection;
this.list = new List<T>(modelCollection);
modelCollection.CollectionChanged += OnCollectionChanged;
}
void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
switch (e.Action) {
case NotifyCollectionChangedAction.Add:
list.InsertRange(e.NewStartingIndex, e.NewItems.Cast<T>());
break;
case NotifyCollectionChangedAction.Remove:
Assert.AreEqual(list.GetRange(e.OldStartingIndex, e.OldItems.Count), e.OldItems);
list.RemoveRange(e.OldStartingIndex, e.OldItems.Count);
break;
case NotifyCollectionChangedAction.Replace:
Assert.AreEqual(e.OldStartingIndex, e.NewStartingIndex, "Old and new starting index must be identical for replace action");
Assert.AreEqual(list.GetRange(e.OldStartingIndex, e.OldItems.Count), e.OldItems);
list.RemoveRange(e.OldStartingIndex, e.OldItems.Count);
list.InsertRange(e.NewStartingIndex, e.NewItems.Cast<T>());
break;
case NotifyCollectionChangedAction.Move:
Assert.AreEqual(e.OldItems, e.NewItems);
Assert.AreEqual(list.GetRange(e.OldStartingIndex, e.OldItems.Count), e.OldItems);
list.RemoveRange(e.OldStartingIndex, e.OldItems.Count);
list.InsertRange(e.NewStartingIndex, e.NewItems.Cast<T>());
break;
case NotifyCollectionChangedAction.Reset:
list.Clear();
list.AddRange(modelCollection);
break;
default:
throw new Exception("Invalid value for NotifyCollectionChangedAction");
}
Verify();
}
public void Verify()
{
Assert.AreEqual(list, modelCollection.ToList());
}
}
}

3
src/Main/SharpDevelop/Project/Build/BuildService.cs

@ -68,7 +68,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -68,7 +68,8 @@ namespace ICSharpCode.SharpDevelop.Project
buildable = buildModifiedProjectsOnly.WrapBuildable(buildable, options.BuildDetection);
var sink = new UIBuildFeedbackSink(TaskService.BuildMessageViewCategory, SD.StatusBar);
var results = await BuildInBackgroundAsync(buildable, options, sink, progressMonitor);
// Actually run the build:
var results = await BuildEngine.BuildAsync(buildable, options, sink, progressMonitor);
string message;
if (results.Result == BuildResultCode.Cancelled) {

Loading…
Cancel
Save