@ -6,6 +6,7 @@ using System;
using System.Collections.Generic ;
using System.Collections.Generic ;
using ICSharpCode.Core ;
using ICSharpCode.Core ;
using ICSharpCode.SharpDevelop.Editor ;
using ICSharpCode.SharpDevelop.Editor ;
using ICSharpCode.SharpDevelop.Gui ;
namespace ICSharpCode.SharpDevelop.Bookmarks
namespace ICSharpCode.SharpDevelop.Bookmarks
{
{
@ -27,6 +28,8 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
if ( fileName = = null )
if ( fileName = = null )
throw new ArgumentNullException ( "fileName" ) ;
throw new ArgumentNullException ( "fileName" ) ;
WorkbenchSingleton . AssertMainThread ( ) ;
List < SDBookmark > marks = new List < SDBookmark > ( ) ;
List < SDBookmark > marks = new List < SDBookmark > ( ) ;
foreach ( SDBookmark mark in bookmarks ) {
foreach ( SDBookmark mark in bookmarks ) {
@ -40,6 +43,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
public static void AddMark ( SDBookmark bookmark )
public static void AddMark ( SDBookmark bookmark )
{
{
WorkbenchSingleton . AssertMainThread ( ) ;
if ( bookmark = = null ) return ;
if ( bookmark = = null ) return ;
if ( bookmarks . Contains ( bookmark ) ) return ;
if ( bookmarks . Contains ( bookmark ) ) return ;
if ( bookmarks . Exists ( b = > IsEqualBookmark ( b , bookmark ) ) ) return ;
if ( bookmarks . Exists ( b = > IsEqualBookmark ( b , bookmark ) ) ) return ;
@ -62,12 +66,14 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
public static void RemoveMark ( SDBookmark bookmark )
public static void RemoveMark ( SDBookmark bookmark )
{
{
WorkbenchSingleton . AssertMainThread ( ) ;
bookmarks . Remove ( bookmark ) ;
bookmarks . Remove ( bookmark ) ;
OnRemoved ( new BookmarkEventArgs ( bookmark ) ) ;
OnRemoved ( new BookmarkEventArgs ( bookmark ) ) ;
}
}
public static void Clear ( )
public static void Clear ( )
{
{
WorkbenchSingleton . AssertMainThread ( ) ;
while ( bookmarks . Count > 0 ) {
while ( bookmarks . Count > 0 ) {
SDBookmark b = bookmarks [ bookmarks . Count - 1 ] ;
SDBookmark b = bookmarks [ bookmarks . Count - 1 ] ;
bookmarks . RemoveAt ( bookmarks . Count - 1 ) ;
bookmarks . RemoveAt ( bookmarks . Count - 1 ) ;
@ -96,6 +102,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
public static List < SDBookmark > GetProjectBookmarks ( ICSharpCode . SharpDevelop . Project . IProject project )
public static List < SDBookmark > GetProjectBookmarks ( ICSharpCode . SharpDevelop . Project . IProject project )
{
{
WorkbenchSingleton . AssertMainThread ( ) ;
List < SDBookmark > projectBookmarks = new List < SDBookmark > ( ) ;
List < SDBookmark > projectBookmarks = new List < SDBookmark > ( ) ;
foreach ( SDBookmark mark in bookmarks ) {
foreach ( SDBookmark mark in bookmarks ) {
if ( mark . IsSaved & & mark . FileName ! = null ) {
if ( mark . IsSaved & & mark . FileName ! = null ) {
@ -109,6 +116,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
Predicate < SDBookmark > canToggle ,
Predicate < SDBookmark > canToggle ,
Func < Location , SDBookmark > bookmarkFactory )
Func < Location , SDBookmark > bookmarkFactory )
{
{
WorkbenchSingleton . AssertMainThread ( ) ;
foreach ( SDBookmark bookmark in GetBookmarks ( new FileName ( editor . FileName ) ) ) {
foreach ( SDBookmark bookmark in GetBookmarks ( new FileName ( editor . FileName ) ) ) {
if ( canToggle ( bookmark ) & & bookmark . LineNumber = = line ) {
if ( canToggle ( bookmark ) & & bookmark . LineNumber = = line ) {
BookmarkManager . RemoveMark ( bookmark ) ;
BookmarkManager . RemoveMark ( bookmark ) ;
@ -125,6 +133,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
{
if ( match = = null )
if ( match = = null )
throw new ArgumentNullException ( "Predicate is null!" ) ;
throw new ArgumentNullException ( "Predicate is null!" ) ;
WorkbenchSingleton . AssertMainThread ( ) ;
for ( int index = bookmarks . Count - 1 ; index > = 0 ; - - index ) {
for ( int index = bookmarks . Count - 1 ; index > = 0 ; - - index ) {
SDBookmark bookmark = bookmarks [ index ] ;
SDBookmark bookmark = bookmarks [ index ] ;