- Timestamp:
- 02/19/10 02:15:10 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Core/3.3/NamedItemCollection.cs
r2790 r2830 21 21 22 22 using System; 23 using System.Linq; 23 24 using System.Collections.Generic; 24 25 using System.Drawing; … … 43 44 private object RestoreEvents { 44 45 get { return null; } 45 set { 46 foreach (T item in this) { 47 item.NameChanging += new EventHandler<CancelEventArgs<string>>(Item_NameChanging); 48 item.NameChanged += new EventHandler(Item_NameChanged); 49 item.Changed += new ChangedEventHandler(Item_Changed); 50 } 51 } 46 set { RegisterItemEvents(this); } 52 47 } 53 48 54 49 public NamedItemCollection() : base() { } 55 50 public NamedItemCollection(int capacity) : base(capacity) { } 56 public NamedItemCollection(IEnumerable<T> collection) : base(collection) { } 51 public NamedItemCollection(IEnumerable<T> collection) : base(collection) { 52 RegisterItemEvents(this); 53 } 57 54 58 55 public object Clone() { 59 56 return Clone(new Cloner()); 60 57 } 61 public IDeepCloneable Clone(Cloner cloner) { 62 List<T> items = new List<T>(); 63 foreach (T item in this) 64 items.Add((T)cloner.Clone(item)); 65 NamedItemCollection<T> clone = (NamedItemCollection<T>)Activator.CreateInstance(this.GetType(), items); 58 public virtual IDeepCloneable Clone(Cloner cloner) { 59 NamedItemCollection<T> clone = (NamedItemCollection<T>)Activator.CreateInstance(this.GetType(), this.Select(x => (T)cloner.Clone(x))); 66 60 cloner.RegisterClonedObject(this, clone); 67 61 return clone; … … 86 80 87 81 protected override void OnItemsAdded(IEnumerable<T> items) { 88 foreach (T item in items) { 89 item.NameChanging += new EventHandler<CancelEventArgs<string>>(Item_NameChanging); 90 item.NameChanged += new EventHandler(Item_NameChanged); 91 item.Changed += new ChangedEventHandler(Item_Changed); 92 } 82 RegisterItemEvents(items); 93 83 base.OnItemsAdded(items); 94 84 } 95 85 protected override void OnItemsRemoved(IEnumerable<T> items) { 96 foreach (T item in items) { 97 item.NameChanging -= new EventHandler<CancelEventArgs<string>>(Item_NameChanging); 98 item.NameChanged -= new EventHandler(Item_NameChanged); 99 item.Changed -= new ChangedEventHandler(Item_Changed); 100 } 86 DeregisterItemEvents(items); 101 87 base.OnItemsRemoved(items); 102 88 } … … 108 94 #endregion 109 95 protected override void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) { 110 foreach (T oldItem in oldItems) { 111 oldItem.NameChanging -= new EventHandler<CancelEventArgs<string>>(Item_NameChanging); 112 oldItem.NameChanged -= new EventHandler(Item_NameChanged); 113 oldItem.Changed -= new ChangedEventHandler(Item_Changed); 114 } 96 DeregisterItemEvents(oldItems); 97 RegisterItemEvents(items); 98 base.OnCollectionReset(items, oldItems); 99 } 100 protected override void OnPropertyChanged(string propertyName) { 101 base.OnPropertyChanged(propertyName); 102 OnChanged(); 103 } 104 105 private void RegisterItemEvents(IEnumerable<T> items) { 115 106 foreach (T item in items) { 116 107 item.NameChanging += new EventHandler<CancelEventArgs<string>>(Item_NameChanging); … … 118 109 item.Changed += new ChangedEventHandler(Item_Changed); 119 110 } 120 base.OnCollectionReset(items, oldItems);121 111 } 122 protected override void OnPropertyChanged(string propertyName) { 123 base.OnPropertyChanged(propertyName); 124 OnChanged(); 112 private void DeregisterItemEvents(IEnumerable<T> items) { 113 foreach (T item in items) { 114 item.NameChanging -= new EventHandler<CancelEventArgs<string>>(Item_NameChanging); 115 item.NameChanged -= new EventHandler(Item_NameChanged); 116 item.Changed -= new ChangedEventHandler(Item_Changed); 117 } 125 118 } 126 119
Note: See TracChangeset
for help on using the changeset viewer.