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/ObservableList.cs

    r3286 r3317  
    3434
    3535    #region Properties
     36    [Storable]
     37    private bool readOnlyView;
     38    public bool ReadOnlyView {
     39      get { return readOnlyView; }
     40      set {
     41        if (readOnlyView != value) {
     42          readOnlyView = value;
     43          OnReadOnlyViewChanged();
     44          OnPropertyChanged("ReadOnlyView");
     45        }
     46      }
     47    }
     48
    3649    public int Capacity {
    3750      get { return list.Capacity; }
     
    6881    public ObservableList() {
    6982      list = new List<T>();
     83      readOnlyView = ((ICollection<T>)list).IsReadOnly;
    7084    }
    7185    public ObservableList(int capacity) {
    7286      list = new List<T>(capacity);
     87      readOnlyView = ((ICollection<T>)list).IsReadOnly;
    7388    }
    7489    public ObservableList(IEnumerable<T> collection) {
    7590      list = new List<T>(collection);
     91      readOnlyView = ((ICollection<T>)list).IsReadOnly;
    7692    }
    7793    #endregion
     
    375391    #region Events
    376392    [field: NonSerialized]
     393    public event EventHandler ReadOnlyViewChanged;
     394    protected virtual void OnReadOnlyViewChanged() {
     395      EventHandler handler = ReadOnlyViewChanged;
     396      if (handler != null) handler(this, EventArgs.Empty);
     397    }
     398
     399    [field: NonSerialized]
    377400    public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsAdded;
    378401    protected virtual void OnItemsAdded(IEnumerable<IndexedItem<T>> items) {
    379       if (ItemsAdded != null)
    380         ItemsAdded(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items));
     402      CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsAdded;
     403      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items));
    381404    }
    382405
     
    388411    }
    389412    private void OnItemsAdded(IEnumerable<T> items) {
    390       if (itemsAdded != null)
    391         itemsAdded(this, new CollectionItemsChangedEventArgs<T>(items));
     413      CollectionItemsChangedEventHandler<T> handler = itemsAdded;
     414      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items));
    392415    }
    393416
     
    395418    public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsRemoved;
    396419    protected virtual void OnItemsRemoved(IEnumerable<IndexedItem<T>> items) {
    397       if (ItemsRemoved != null)
    398         ItemsRemoved(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items));
     420      CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsRemoved;
     421      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items));
    399422    }
    400423
     
    406429    }
    407430    private void OnItemsRemoved(IEnumerable<T> items) {
    408       if (itemsRemoved != null)
    409         itemsRemoved(this, new CollectionItemsChangedEventArgs<T>(items));
     431      CollectionItemsChangedEventHandler<T> handler = itemsRemoved;
     432      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items));
    410433    }
    411434
     
    413436    public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsReplaced;
    414437    protected virtual void OnItemsReplaced(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) {
    415       if (ItemsReplaced != null)
    416         ItemsReplaced(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));
     438      CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsReplaced;
     439      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));
    417440    }
    418441
     
    420443    public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsMoved;
    421444    protected virtual void OnItemsMoved(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) {
    422       if (ItemsMoved != null)
    423         ItemsMoved(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));
     445      CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsMoved;
     446      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));
    424447    }
    425448
     
    427450    public event CollectionItemsChangedEventHandler<IndexedItem<T>> CollectionReset;
    428451    protected virtual void OnCollectionReset(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) {
    429       if (CollectionReset != null)
    430         CollectionReset(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));
     452      CollectionItemsChangedEventHandler<IndexedItem<T>> handler = CollectionReset;
     453      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));
    431454    }
    432455
     
    438461    }
    439462    private void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) {
    440       if (collectionReset != null)
    441         collectionReset(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));
     463      CollectionItemsChangedEventHandler<T> handler = collectionReset;
     464      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));
    442465    }
    443466
     
    445468    public event PropertyChangedEventHandler PropertyChanged;
    446469    protected virtual void OnPropertyChanged(string propertyName) {
    447       if (PropertyChanged != null)
    448         PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
     470      PropertyChangedEventHandler handler = PropertyChanged;
     471      if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    449472    }
    450473    #endregion
Note: See TracChangeset for help on using the changeset viewer.