Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/13/10 06:41:56 (14 years ago)
Author:
swagner
Message:

Implemented ReadOnlyView property for items (#969).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Collections/3.3/ObservableSet.cs

    r3286 r3317  
    3535
    3636    #region Properties
     37    [Storable]
     38    private bool readOnlyView;
     39    public bool ReadOnlyView {
     40      get { return readOnlyView; }
     41      set {
     42        if (readOnlyView != value) {
     43          readOnlyView = value;
     44          OnReadOnlyViewChanged();
     45          OnPropertyChanged("ReadOnlyView");
     46        }
     47      }
     48    }
     49
    3750    public IEqualityComparer<T> Comparer {
    3851      get { return set.Comparer; }
     
    4962    public ObservableSet() {
    5063      set = new HashSet<T>();
     64      readOnlyView = ((ICollection<T>)set).IsReadOnly;
    5165    }
    5266    public ObservableSet(IEnumerable<T> collection) {
    5367      set = new HashSet<T>(collection);
     68      readOnlyView = ((ICollection<T>)set).IsReadOnly;
    5469    }
    5570    public ObservableSet(IEqualityComparer<T> comparer) {
    5671      set = new HashSet<T>(comparer);
     72      readOnlyView = ((ICollection<T>)set).IsReadOnly;
    5773    }
    5874    public ObservableSet(IEnumerable<T> collection, IEqualityComparer<T> comparer) {
    5975      set = new HashSet<T>(collection, comparer);
     76      readOnlyView = ((ICollection<T>)set).IsReadOnly;
    6077    }
    6178    #endregion
     
    227244    #region Events
    228245    [field: NonSerialized]
     246    public event EventHandler ReadOnlyViewChanged;
     247    protected virtual void OnReadOnlyViewChanged() {
     248      EventHandler handler = ReadOnlyViewChanged;
     249      if (handler != null) handler(this, EventArgs.Empty);
     250    }
     251
     252    [field: NonSerialized]
    229253    public event CollectionItemsChangedEventHandler<T> ItemsAdded;
    230254    protected virtual void OnItemsAdded(IEnumerable<T> items) {
    231       if (ItemsAdded != null)
    232         ItemsAdded(this, new CollectionItemsChangedEventArgs<T>(items));
     255      CollectionItemsChangedEventHandler<T> handler = ItemsAdded;
     256      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items));
    233257    }
    234258
     
    236260    public event CollectionItemsChangedEventHandler<T> ItemsRemoved;
    237261    protected virtual void OnItemsRemoved(IEnumerable<T> items) {
    238       if (ItemsRemoved != null)
    239         ItemsRemoved(this, new CollectionItemsChangedEventArgs<T>(items));
     262      CollectionItemsChangedEventHandler<T> handler = ItemsRemoved;
     263      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items));
    240264    }
    241265
     
    243267    public event CollectionItemsChangedEventHandler<T> CollectionReset;
    244268    protected virtual void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) {
    245       if (CollectionReset != null)
    246         CollectionReset(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));
     269      CollectionItemsChangedEventHandler<T> handler = CollectionReset;
     270      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));
    247271    }
    248272
     
    250274    public event PropertyChangedEventHandler PropertyChanged;
    251275    protected virtual void OnPropertyChanged(string propertyName) {
    252       if (PropertyChanged != null)
    253         PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
     276      PropertyChangedEventHandler handler = PropertyChanged;
     277      if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    254278    }
    255279    #endregion
Note: See TracChangeset for help on using the changeset viewer.