- Timestamp:
- 04/18/10 02:27:02 (14 years ago)
- Location:
- trunk/sources/HeuristicLab.Core/3.3/Collections
- Files:
-
- 1 added
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Core/3.3/Collections/ItemCollection.cs
r3381 r3390 32 32 [StorableClass] 33 33 [Item("ItemCollection<T>", "Represents a collection of items.")] 34 public class ItemCollection<T> : ObservableCollection<T>, IItem where T : class, IItem {34 public class ItemCollection<T> : ObservableCollection<T>, IItemCollection<T> where T : class, IItem { 35 35 public virtual string ItemName { 36 36 get { return ItemAttribute.GetName(this.GetType()); } … … 43 43 } 44 44 45 public ItemCollection() : base() { } 46 public ItemCollection(int capacity) : base(capacity) { } 47 public ItemCollection(IEnumerable<T> collection) : base(collection) { } 45 [Storable] 46 private List<T> Items { 47 get { return list; } 48 set { list = value; } 49 } 50 51 [Storable] 52 private bool readOnlyView; 53 public virtual bool ReadOnlyView { 54 get { return readOnlyView; } 55 set { 56 if ((readOnlyView != value) && !((ICollection<T>)list).IsReadOnly) { 57 readOnlyView = value; 58 OnReadOnlyViewChanged(); 59 OnPropertyChanged("ReadOnlyView"); 60 } 61 } 62 } 63 64 public ItemCollection() 65 : base() { 66 readOnlyView = ((ICollection<T>)list).IsReadOnly; 67 } 68 public ItemCollection(int capacity) 69 : base(capacity) { 70 readOnlyView = ((ICollection<T>)list).IsReadOnly; 71 } 72 public ItemCollection(IEnumerable<T> collection) 73 : base(collection) { 74 readOnlyView = ((ICollection<T>)list).IsReadOnly; 75 } 76 [StorableConstructor] 77 protected ItemCollection(bool deserializing) { } 48 78 49 79 public object Clone() { 50 80 return Clone(new Cloner()); 51 81 } 52 53 82 public virtual IDeepCloneable Clone(Cloner cloner) { 54 83 ItemCollection<T> clone = (ItemCollection<T>)Activator.CreateInstance(this.GetType()); 55 84 cloner.RegisterClonedObject(this, clone); 56 clone. ReadOnlyView = ReadOnlyView;85 clone.readOnlyView = readOnlyView; 57 86 clone.list = new List<T>(this.Select(x => (T)cloner.Clone(x))); 58 87 return clone; 88 } 89 90 public new ReadOnlyItemCollection<T> AsReadOnly() { 91 return new ReadOnlyItemCollection<T>(this); 59 92 } 60 93 … … 73 106 if (handler != null) handler(this, EventArgs.Empty); 74 107 } 108 public event EventHandler ReadOnlyViewChanged; 109 protected virtual void OnReadOnlyViewChanged() { 110 EventHandler handler = ReadOnlyViewChanged; 111 if (handler != null) handler(this, EventArgs.Empty); 112 } 75 113 } 76 114 }
Note: See TracChangeset
for help on using the changeset viewer.