From bfab500c73fa27d8498c830d2a9f2d7d5fd19605 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 27 Jul 2013 17:06:58 +0200 Subject: [PATCH] Move ModelCollectionChangedEvent to its own file. --- src/Main/Base/Project/Dom/IModelCollection.cs | 38 -------------- .../Dom/ModelCollectionChangedEvent.cs | 52 +++++++++++++++++++ .../Project/ICSharpCode.SharpDevelop.csproj | 1 + 3 files changed, 53 insertions(+), 38 deletions(-) create mode 100644 src/Main/Base/Project/Dom/ModelCollectionChangedEvent.cs diff --git a/src/Main/Base/Project/Dom/IModelCollection.cs b/src/Main/Base/Project/Dom/IModelCollection.cs index 69f92760f6..7c6f5ece7a 100644 --- a/src/Main/Base/Project/Dom/IModelCollection.cs +++ b/src/Main/Base/Project/Dom/IModelCollection.cs @@ -7,44 +7,6 @@ using System.Linq; namespace ICSharpCode.SharpDevelop.Dom { - /// - /// Event handler for the event. - /// - /// - /// We don't use the classic 'EventArgs' model for this event, because a EventArgs-class couldn't be covariant. - /// - public delegate void ModelCollectionChangedEventHandler(IReadOnlyCollection removedItems, IReadOnlyCollection addedItems); - - public class ModelCollectionChangedEvent - { - List> _handlers = new List>(); - - public void AddHandler(ModelCollectionChangedEventHandler handler) - { - if (handler != null) - _handlers.Add(handler); - } - - public void RemoveHandler(ModelCollectionChangedEventHandler handler) - { - _handlers.Remove(handler); - } - - public void Fire(IReadOnlyCollection removedItems, IReadOnlyCollection addedItems) - { - foreach (var handler in _handlers.ToArray()) { - handler(removedItems, addedItems); - } - } - - public bool ContainsHandlers - { - get { - return _handlers.Count > 0; - } - } - } - /// /// A read-only collection that provides change notifications. /// diff --git a/src/Main/Base/Project/Dom/ModelCollectionChangedEvent.cs b/src/Main/Base/Project/Dom/ModelCollectionChangedEvent.cs new file mode 100644 index 0000000000..686330d4e3 --- /dev/null +++ b/src/Main/Base/Project/Dom/ModelCollectionChangedEvent.cs @@ -0,0 +1,52 @@ +// 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.Linq; +namespace ICSharpCode.SharpDevelop.Dom +{ + /// + /// Event handler for the event. + /// + /// + /// We don't use the classic 'EventArgs' model for this event, because a EventArgs-class couldn't be covariant. + /// + public delegate void ModelCollectionChangedEventHandler(IReadOnlyCollection removedItems, IReadOnlyCollection addedItems); + + /// + /// Helper class for implementations. + /// This is necessary because Delegate.Combine does not work with + /// co-/contravariant delegates. + /// + public class ModelCollectionChangedEvent + { + List> _handlers = new List>(); + + public void AddHandler(ModelCollectionChangedEventHandler handler) + { + if (handler != null) + _handlers.Add(handler); + } + + public void RemoveHandler(ModelCollectionChangedEventHandler handler) + { + _handlers.Remove(handler); + } + + public void Fire(IReadOnlyCollection removedItems, IReadOnlyCollection addedItems) + { + foreach (var handler in _handlers.ToArray()) { + handler(removedItems, addedItems); + } + } + + public bool ContainsHandlers { + get { + return _handlers.Count > 0; + } + } + } +} + + diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 7ffe4a75db..8578f89080 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -111,6 +111,7 @@ +