Changeset 3317
- Timestamp:
- 04/13/10 06:41:56 (13 years ago)
- Location:
- trunk/sources
- Files:
-
- 83 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Analysis/3.3/DataRow.cs
r3160 r3317 53 53 DataRow clone = new DataRow(Name, Description); 54 54 cloner.RegisterClonedObject(this, clone); 55 clone.ReadOnlyView = ReadOnlyView; 55 56 clone.values.AddRange(values); 56 57 return clone; -
trunk/sources/HeuristicLab.Analysis/3.3/DataTable.cs
r3306 r3317 57 57 DataTable clone = new DataTable(Name, Description); 58 58 cloner.RegisterClonedObject(this, clone); 59 clone.ReadOnlyView = ReadOnlyView; 59 60 clone.rows = (NamedItemCollection<DataRow>)cloner.Clone(rows); 60 61 return clone; -
trunk/sources/HeuristicLab.Collections/3.3/IObservableArray.cs
r2832 r3317 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using System.ComponentModel; … … 25 26 namespace HeuristicLab.Collections { 26 27 public interface IObservableArray<T> : IList<T>, INotifyObservableArrayItemsChanged<T>, INotifyPropertyChanged { 28 bool ReadOnlyView { get; set; } 27 29 int Length { get; } 30 31 event EventHandler ReadOnlyViewChanged; 28 32 } 29 33 } -
trunk/sources/HeuristicLab.Collections/3.3/IObservableCollection.cs
r2832 r3317 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using System.ComponentModel; 24 25 25 26 namespace HeuristicLab.Collections { 26 public interface IObservableCollection<T> : ICollection<T>, INotifyObservableCollectionItemsChanged<T>, INotifyPropertyChanged { } 27 public interface IObservableCollection<T> : ICollection<T>, INotifyObservableCollectionItemsChanged<T>, INotifyPropertyChanged { 28 bool ReadOnlyView { get; set; } 29 30 event EventHandler ReadOnlyViewChanged; 31 } 27 32 } -
trunk/sources/HeuristicLab.Collections/3.3/ObservableArray.cs
r3286 r3317 35 35 36 36 #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 37 50 public int Length { 38 51 get { return array.Length; } … … 63 76 public ObservableArray() { 64 77 array = new T[0]; 78 readOnlyView = array.IsReadOnly; 65 79 } 66 80 public ObservableArray(int length) { 67 81 array = new T[length]; 82 readOnlyView = array.IsReadOnly; 68 83 } 69 84 public ObservableArray(T[] array) { 70 85 this.array = (T[])array.Clone(); 86 readOnlyView = array.IsReadOnly; 71 87 } 72 88 public ObservableArray(IEnumerable<T> collection) { 73 89 array = collection.ToArray(); 90 readOnlyView = array.IsReadOnly; 74 91 } 75 92 #endregion … … 281 298 #region Events 282 299 [field: NonSerialized] 300 public event EventHandler ReadOnlyViewChanged; 301 protected virtual void OnReadOnlyViewChanged() { 302 EventHandler handler = ReadOnlyViewChanged; 303 if (handler != null) handler(this, EventArgs.Empty); 304 } 305 306 [field: NonSerialized] 283 307 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsReplaced; 284 308 protected virtual void OnItemsReplaced(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 285 if (ItemsReplaced != null)286 ItemsReplaced(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));309 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsReplaced; 310 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 287 311 } 288 312 … … 290 314 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsMoved; 291 315 protected virtual void OnItemsMoved(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 292 if (ItemsMoved != null)293 ItemsMoved(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));316 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsMoved; 317 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 294 318 } 295 319 … … 297 321 public event CollectionItemsChangedEventHandler<IndexedItem<T>> CollectionReset; 298 322 protected virtual void OnCollectionReset(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 299 if (CollectionReset != null)300 CollectionReset(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));323 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = CollectionReset; 324 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 301 325 } 302 326 … … 304 328 public event PropertyChangedEventHandler PropertyChanged; 305 329 protected virtual void OnPropertyChanged(string propertyName) { 306 if (PropertyChanged != null)307 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));330 PropertyChangedEventHandler handler = PropertyChanged; 331 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 308 332 } 309 333 #endregion -
trunk/sources/HeuristicLab.Collections/3.3/ObservableCollection.cs
r3286 r3317 34 34 35 35 #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 36 49 public int Capacity { 37 50 get { return list.Capacity; } … … 54 67 public ObservableCollection() { 55 68 list = new List<T>(); 69 readOnlyView = ((ICollection<T>)list).IsReadOnly; 56 70 } 57 71 public ObservableCollection(int capacity) { 58 72 list = new List<T>(capacity); 73 readOnlyView = ((ICollection<T>)list).IsReadOnly; 59 74 } 60 75 public ObservableCollection(IEnumerable<T> collection) { 61 76 list = new List<T>(collection); 77 readOnlyView = ((ICollection<T>)list).IsReadOnly; 62 78 } 63 79 #endregion … … 189 205 #region Events 190 206 [field: NonSerialized] 207 public event EventHandler ReadOnlyViewChanged; 208 protected virtual void OnReadOnlyViewChanged() { 209 EventHandler handler = ReadOnlyViewChanged; 210 if (handler != null) handler(this, EventArgs.Empty); 211 } 212 213 [field: NonSerialized] 191 214 public event CollectionItemsChangedEventHandler<T> ItemsAdded; 192 215 protected virtual void OnItemsAdded(IEnumerable<T> items) { 193 if (ItemsAdded != null)194 ItemsAdded(this, new CollectionItemsChangedEventArgs<T>(items));216 CollectionItemsChangedEventHandler<T> handler = ItemsAdded; 217 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items)); 195 218 } 196 219 … … 198 221 public event CollectionItemsChangedEventHandler<T> ItemsRemoved; 199 222 protected virtual void OnItemsRemoved(IEnumerable<T> items) { 200 if (ItemsRemoved != null)201 ItemsRemoved(this, new CollectionItemsChangedEventArgs<T>(items));223 CollectionItemsChangedEventHandler<T> handler = ItemsRemoved; 224 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items)); 202 225 } 203 226 … … 205 228 public event CollectionItemsChangedEventHandler<T> CollectionReset; 206 229 protected virtual void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) { 207 if (CollectionReset != null)208 CollectionReset(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));230 CollectionItemsChangedEventHandler<T> handler = CollectionReset; 231 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items, oldItems)); 209 232 } 210 233 … … 212 235 public event PropertyChangedEventHandler PropertyChanged; 213 236 protected virtual void OnPropertyChanged(string propertyName) { 214 if (PropertyChanged != null)215 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));237 PropertyChangedEventHandler handler = PropertyChanged; 238 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 216 239 } 217 240 #endregion -
trunk/sources/HeuristicLab.Collections/3.3/ObservableDictionary.cs
r3017 r3317 35 35 36 36 #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 37 50 public ICollection<TKey> Keys { 38 51 get { return dict.Keys; } … … 71 84 public ObservableDictionary() { 72 85 dict = new Dictionary<TKey, TValue>(); 86 readOnlyView = ((ICollection<KeyValuePair<TKey, TValue>>)dict).IsReadOnly; 73 87 } 74 88 public ObservableDictionary(int capacity) { 75 89 dict = new Dictionary<TKey, TValue>(capacity); 90 readOnlyView = ((ICollection<KeyValuePair<TKey, TValue>>)dict).IsReadOnly; 76 91 } 77 92 public ObservableDictionary(IEqualityComparer<TKey> comparer) { 78 93 dict = new Dictionary<TKey, TValue>(comparer); 94 readOnlyView = ((ICollection<KeyValuePair<TKey, TValue>>)dict).IsReadOnly; 79 95 } 80 96 public ObservableDictionary(IDictionary<TKey, TValue> dictionary) { 81 97 dict = new Dictionary<TKey, TValue>(dictionary); 98 readOnlyView = ((ICollection<KeyValuePair<TKey, TValue>>)dict).IsReadOnly; 82 99 } 83 100 public ObservableDictionary(int capacity, IEqualityComparer<TKey> comparer) { 84 101 dict = new Dictionary<TKey, TValue>(capacity, comparer); 102 readOnlyView = ((ICollection<KeyValuePair<TKey, TValue>>)dict).IsReadOnly; 85 103 } 86 104 public ObservableDictionary(IDictionary<TKey, TValue> dictionary, IEqualityComparer<TKey> comparer) { 87 105 dict = new Dictionary<TKey, TValue>(dictionary, comparer); 106 readOnlyView = ((ICollection<KeyValuePair<TKey, TValue>>)dict).IsReadOnly; 88 107 } 89 108 #endregion … … 181 200 #region Events 182 201 [field: NonSerialized] 202 public event EventHandler ReadOnlyViewChanged; 203 protected virtual void OnReadOnlyViewChanged() { 204 EventHandler handler = ReadOnlyViewChanged; 205 if (handler != null) handler(this, EventArgs.Empty); 206 } 207 208 [field: NonSerialized] 183 209 public event CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> ItemsAdded; 184 210 protected virtual void OnItemsAdded(IEnumerable<KeyValuePair<TKey, TValue>> items) { 185 if (ItemsAdded != null)186 ItemsAdded(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items));211 CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> handler = ItemsAdded; 212 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items)); 187 213 } 188 214 … … 190 216 public event CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> ItemsRemoved; 191 217 protected virtual void OnItemsRemoved(IEnumerable<KeyValuePair<TKey, TValue>> items) { 192 if (ItemsRemoved != null)193 ItemsRemoved(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items));218 CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> handler = ItemsRemoved; 219 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items)); 194 220 } 195 221 … … 197 223 public event CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> ItemsReplaced; 198 224 protected virtual void OnItemsReplaced(IEnumerable<KeyValuePair<TKey, TValue>> items, IEnumerable<KeyValuePair<TKey, TValue>> oldItems) { 199 if (ItemsReplaced != null)200 ItemsReplaced(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items, oldItems));225 CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> handler = ItemsReplaced; 226 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items, oldItems)); 201 227 } 202 228 … … 204 230 public event CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> CollectionReset; 205 231 protected virtual void OnCollectionReset(IEnumerable<KeyValuePair<TKey, TValue>> items, IEnumerable<KeyValuePair<TKey, TValue>> oldItems) { 206 if (CollectionReset != null)207 CollectionReset(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items, oldItems));232 CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> handler = CollectionReset; 233 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items, oldItems)); 208 234 } 209 235 … … 211 237 public event PropertyChangedEventHandler PropertyChanged; 212 238 protected virtual void OnPropertyChanged(string propertyName) { 213 if (PropertyChanged != null)214 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));239 PropertyChangedEventHandler handler = PropertyChanged; 240 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 215 241 } 216 242 #endregion -
trunk/sources/HeuristicLab.Collections/3.3/ObservableKeyedCollection.cs
r3286 r3317 35 35 36 36 #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 37 50 public int Count { 38 51 get { return dict.Count; } … … 55 68 protected ObservableKeyedCollection() { 56 69 dict = new Dictionary<TKey, TItem>(); 70 readOnlyView = ((ICollection<KeyValuePair<TKey, TItem>>)dict).IsReadOnly; 57 71 } 58 72 protected ObservableKeyedCollection(int capacity) { 59 73 dict = new Dictionary<TKey, TItem>(capacity); 74 readOnlyView = ((ICollection<KeyValuePair<TKey, TItem>>)dict).IsReadOnly; 60 75 } 61 76 protected ObservableKeyedCollection(IEqualityComparer<TKey> comparer) { 62 77 dict = new Dictionary<TKey, TItem>(comparer); 78 readOnlyView = ((ICollection<KeyValuePair<TKey, TItem>>)dict).IsReadOnly; 63 79 } 64 80 protected ObservableKeyedCollection(IEnumerable<TItem> collection) { … … 67 83 foreach (TItem item in collection) 68 84 dict.Add(GetKeyForItem(item), item); 85 readOnlyView = ((ICollection<KeyValuePair<TKey, TItem>>)dict).IsReadOnly; 69 86 } 70 87 protected ObservableKeyedCollection(int capacity, IEqualityComparer<TKey> comparer) { 71 88 dict = new Dictionary<TKey, TItem>(capacity, comparer); 89 readOnlyView = ((ICollection<KeyValuePair<TKey, TItem>>)dict).IsReadOnly; 72 90 } 73 91 protected ObservableKeyedCollection(IEnumerable<TItem> collection, IEqualityComparer<TKey> comparer) { … … 76 94 foreach (TItem item in collection) 77 95 dict.Add(GetKeyForItem(item), item); 96 readOnlyView = ((ICollection<KeyValuePair<TKey, TItem>>)dict).IsReadOnly; 78 97 } 79 98 #endregion … … 250 269 #region Events 251 270 [field: NonSerialized] 271 public event EventHandler ReadOnlyViewChanged; 272 protected virtual void OnReadOnlyViewChanged() { 273 EventHandler handler = ReadOnlyViewChanged; 274 if (handler != null) handler(this, EventArgs.Empty); 275 } 276 277 [field: NonSerialized] 252 278 public event CollectionItemsChangedEventHandler<TItem> ItemsAdded; 253 279 protected virtual void OnItemsAdded(IEnumerable<TItem> items) { 254 if (ItemsAdded != null)255 ItemsAdded(this, new CollectionItemsChangedEventArgs<TItem>(items));280 CollectionItemsChangedEventHandler<TItem> handler = ItemsAdded; 281 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<TItem>(items)); 256 282 } 257 283 … … 259 285 public event CollectionItemsChangedEventHandler<TItem> ItemsRemoved; 260 286 protected virtual void OnItemsRemoved(IEnumerable<TItem> items) { 261 if (ItemsRemoved != null)262 ItemsRemoved(this, new CollectionItemsChangedEventArgs<TItem>(items));287 CollectionItemsChangedEventHandler<TItem> handler = ItemsRemoved; 288 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<TItem>(items)); 263 289 } 264 290 … … 266 292 public event CollectionItemsChangedEventHandler<TItem> ItemsReplaced; 267 293 protected virtual void OnItemsReplaced(IEnumerable<TItem> items, IEnumerable<TItem> oldItems) { 268 if (ItemsReplaced != null)269 ItemsReplaced(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems));294 CollectionItemsChangedEventHandler<TItem> handler = ItemsReplaced; 295 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems)); 270 296 } 271 297 … … 273 299 public event CollectionItemsChangedEventHandler<TItem> CollectionReset; 274 300 protected virtual void OnCollectionReset(IEnumerable<TItem> items, IEnumerable<TItem> oldItems) { 275 if (CollectionReset != null)276 CollectionReset(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems));301 CollectionItemsChangedEventHandler<TItem> handler = CollectionReset; 302 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems)); 277 303 } 278 304 … … 280 306 public event PropertyChangedEventHandler PropertyChanged; 281 307 protected virtual void OnPropertyChanged(string propertyName) { 282 if (PropertyChanged != null)283 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));308 PropertyChangedEventHandler handler = PropertyChanged; 309 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 284 310 } 285 311 #endregion -
trunk/sources/HeuristicLab.Collections/3.3/ObservableList.cs
r3286 r3317 34 34 35 35 #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 36 49 public int Capacity { 37 50 get { return list.Capacity; } … … 68 81 public ObservableList() { 69 82 list = new List<T>(); 83 readOnlyView = ((ICollection<T>)list).IsReadOnly; 70 84 } 71 85 public ObservableList(int capacity) { 72 86 list = new List<T>(capacity); 87 readOnlyView = ((ICollection<T>)list).IsReadOnly; 73 88 } 74 89 public ObservableList(IEnumerable<T> collection) { 75 90 list = new List<T>(collection); 91 readOnlyView = ((ICollection<T>)list).IsReadOnly; 76 92 } 77 93 #endregion … … 375 391 #region Events 376 392 [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] 377 400 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsAdded; 378 401 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)); 381 404 } 382 405 … … 388 411 } 389 412 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)); 392 415 } 393 416 … … 395 418 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsRemoved; 396 419 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)); 399 422 } 400 423 … … 406 429 } 407 430 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)); 410 433 } 411 434 … … 413 436 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsReplaced; 414 437 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)); 417 440 } 418 441 … … 420 443 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsMoved; 421 444 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)); 424 447 } 425 448 … … 427 450 public event CollectionItemsChangedEventHandler<IndexedItem<T>> CollectionReset; 428 451 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)); 431 454 } 432 455 … … 438 461 } 439 462 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)); 442 465 } 443 466 … … 445 468 public event PropertyChangedEventHandler PropertyChanged; 446 469 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)); 449 472 } 450 473 #endregion -
trunk/sources/HeuristicLab.Collections/3.3/ObservableSet.cs
r3286 r3317 35 35 36 36 #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 37 50 public IEqualityComparer<T> Comparer { 38 51 get { return set.Comparer; } … … 49 62 public ObservableSet() { 50 63 set = new HashSet<T>(); 64 readOnlyView = ((ICollection<T>)set).IsReadOnly; 51 65 } 52 66 public ObservableSet(IEnumerable<T> collection) { 53 67 set = new HashSet<T>(collection); 68 readOnlyView = ((ICollection<T>)set).IsReadOnly; 54 69 } 55 70 public ObservableSet(IEqualityComparer<T> comparer) { 56 71 set = new HashSet<T>(comparer); 72 readOnlyView = ((ICollection<T>)set).IsReadOnly; 57 73 } 58 74 public ObservableSet(IEnumerable<T> collection, IEqualityComparer<T> comparer) { 59 75 set = new HashSet<T>(collection, comparer); 76 readOnlyView = ((ICollection<T>)set).IsReadOnly; 60 77 } 61 78 #endregion … … 227 244 #region Events 228 245 [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] 229 253 public event CollectionItemsChangedEventHandler<T> ItemsAdded; 230 254 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)); 233 257 } 234 258 … … 236 260 public event CollectionItemsChangedEventHandler<T> ItemsRemoved; 237 261 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)); 240 264 } 241 265 … … 243 267 public event CollectionItemsChangedEventHandler<T> CollectionReset; 244 268 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)); 247 271 } 248 272 … … 250 274 public event PropertyChangedEventHandler PropertyChanged; 251 275 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)); 254 278 } 255 279 #endregion -
trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableArray.cs
r3019 r3317 34 34 35 35 #region Properties 36 public bool ReadOnlyView { 37 get { return true; } 38 set { throw new NotSupportedException(); } 39 } 40 36 41 public int Length { 37 42 get { return array.Length; } … … 117 122 } 118 123 124 event EventHandler IObservableArray<T>.ReadOnlyViewChanged { 125 add { } 126 remove { } 127 } 128 119 129 [field: NonSerialized] 120 130 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsReplaced; 121 131 protected virtual void OnItemsReplaced(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 122 if (ItemsReplaced != null)123 ItemsReplaced(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));132 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsReplaced; 133 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 124 134 } 125 135 … … 127 137 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsMoved; 128 138 protected virtual void OnItemsMoved(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 129 if (ItemsMoved != null)130 ItemsMoved(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));139 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsMoved; 140 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 131 141 } 132 142 … … 134 144 public event CollectionItemsChangedEventHandler<IndexedItem<T>> CollectionReset; 135 145 protected virtual void OnCollectionReset(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 136 if (CollectionReset != null)137 CollectionReset(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));146 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = CollectionReset; 147 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 138 148 } 139 149 … … 141 151 public event PropertyChangedEventHandler PropertyChanged; 142 152 protected virtual void OnPropertyChanged(string propertyName) { 143 if (PropertyChanged != null)144 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));153 PropertyChangedEventHandler handler = PropertyChanged; 154 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 145 155 } 146 156 -
trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableCollection.cs
r3019 r3317 34 34 35 35 #region Properties 36 public bool ReadOnlyView { 37 get { return true; } 38 set { throw new NotSupportedException(); } 39 } 40 36 41 public int Count { 37 42 get { return collection.Count; } … … 95 100 } 96 101 102 event EventHandler IObservableCollection<T>.ReadOnlyViewChanged { 103 add { } 104 remove { } 105 } 106 97 107 [field: NonSerialized] 98 108 public event CollectionItemsChangedEventHandler<T> ItemsAdded; 99 109 protected virtual void OnItemsAdded(IEnumerable<T> items) { 100 if (ItemsAdded != null)101 ItemsAdded(this, new CollectionItemsChangedEventArgs<T>(items));110 CollectionItemsChangedEventHandler<T> handler = ItemsAdded; 111 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items)); 102 112 } 103 113 … … 105 115 public event CollectionItemsChangedEventHandler<T> ItemsRemoved; 106 116 protected virtual void OnItemsRemoved(IEnumerable<T> items) { 107 if (ItemsRemoved != null)108 ItemsRemoved(this, new CollectionItemsChangedEventArgs<T>(items));117 CollectionItemsChangedEventHandler<T> handler = ItemsRemoved; 118 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items)); 109 119 } 110 120 … … 112 122 public event CollectionItemsChangedEventHandler<T> CollectionReset; 113 123 protected virtual void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) { 114 if (CollectionReset != null)115 CollectionReset(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));124 CollectionItemsChangedEventHandler<T> handler = CollectionReset; 125 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items, oldItems)); 116 126 } 117 127 … … 119 129 public event PropertyChangedEventHandler PropertyChanged; 120 130 protected virtual void OnPropertyChanged(string propertyName) { 121 if (PropertyChanged != null)122 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));131 PropertyChangedEventHandler handler = PropertyChanged; 132 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 123 133 } 124 134 -
trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableDictionary.cs
r3019 r3317 34 34 35 35 #region Properties 36 public bool ReadOnlyView { 37 get { return true; } 38 set { throw new NotSupportedException(); } 39 } 40 36 41 public ICollection<TKey> Keys { 37 42 get { return dict.Keys; } … … 123 128 } 124 129 130 event EventHandler IObservableCollection<KeyValuePair<TKey, TValue>>.ReadOnlyViewChanged { 131 add { } 132 remove { } 133 } 134 125 135 [field: NonSerialized] 126 136 public event CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> ItemsAdded; 127 137 protected virtual void OnItemsAdded(IEnumerable<KeyValuePair<TKey, TValue>> items) { 128 if (ItemsAdded != null)129 ItemsAdded(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items));138 CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> handler = ItemsAdded; 139 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items)); 130 140 } 131 141 … … 133 143 public event CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> ItemsRemoved; 134 144 protected virtual void OnItemsRemoved(IEnumerable<KeyValuePair<TKey, TValue>> items) { 135 if (ItemsRemoved != null)136 ItemsRemoved(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items));145 CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> handler = ItemsRemoved; 146 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items)); 137 147 } 138 148 … … 140 150 public event CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> ItemsReplaced; 141 151 protected virtual void OnItemsReplaced(IEnumerable<KeyValuePair<TKey, TValue>> items, IEnumerable<KeyValuePair<TKey, TValue>> oldItems) { 142 if (ItemsReplaced != null)143 ItemsReplaced(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items, oldItems));152 CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> handler = ItemsReplaced; 153 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items, oldItems)); 144 154 } 145 155 … … 147 157 public event CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> CollectionReset; 148 158 protected virtual void OnCollectionReset(IEnumerable<KeyValuePair<TKey, TValue>> items, IEnumerable<KeyValuePair<TKey, TValue>> oldItems) { 149 if (CollectionReset != null)150 CollectionReset(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items, oldItems));159 CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>> handler = CollectionReset; 160 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<KeyValuePair<TKey, TValue>>(items, oldItems)); 151 161 } 152 162 … … 154 164 public event PropertyChangedEventHandler PropertyChanged; 155 165 protected virtual void OnPropertyChanged(string propertyName) { 156 if (PropertyChanged != null)157 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));166 PropertyChangedEventHandler handler = PropertyChanged; 167 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 158 168 } 159 169 -
trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableKeyedCollection.cs
r3019 r3317 34 34 35 35 #region Properties 36 public bool ReadOnlyView { 37 get { return true; } 38 set { throw new NotSupportedException(); } 39 } 40 36 41 public int Count { 37 42 get { return collection.Count; } … … 112 117 } 113 118 119 event EventHandler IObservableCollection<TItem>.ReadOnlyViewChanged { 120 add { } 121 remove { } 122 } 123 114 124 [field: NonSerialized] 115 125 public event CollectionItemsChangedEventHandler<TItem> ItemsAdded; 116 126 protected virtual void OnItemsAdded(IEnumerable<TItem> items) { 117 if (ItemsAdded != null)118 ItemsAdded(this, new CollectionItemsChangedEventArgs<TItem>(items));127 CollectionItemsChangedEventHandler<TItem> handler = ItemsAdded; 128 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<TItem>(items)); 119 129 } 120 130 … … 122 132 public event CollectionItemsChangedEventHandler<TItem> ItemsRemoved; 123 133 protected virtual void OnItemsRemoved(IEnumerable<TItem> items) { 124 if (ItemsRemoved != null)125 ItemsRemoved(this, new CollectionItemsChangedEventArgs<TItem>(items));134 CollectionItemsChangedEventHandler<TItem> handler = ItemsRemoved; 135 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<TItem>(items)); 126 136 } 127 137 … … 129 139 public event CollectionItemsChangedEventHandler<TItem> ItemsReplaced; 130 140 protected virtual void OnItemsReplaced(IEnumerable<TItem> items, IEnumerable<TItem> oldItems) { 131 if (ItemsReplaced != null)132 ItemsReplaced(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems));141 CollectionItemsChangedEventHandler<TItem> handler = ItemsReplaced; 142 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems)); 133 143 } 134 144 … … 136 146 public event CollectionItemsChangedEventHandler<TItem> CollectionReset; 137 147 protected virtual void OnCollectionReset(IEnumerable<TItem> items, IEnumerable<TItem> oldItems) { 138 if (CollectionReset != null)139 CollectionReset(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems));148 CollectionItemsChangedEventHandler<TItem> handler = CollectionReset; 149 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems)); 140 150 } 141 151 … … 143 153 public event PropertyChangedEventHandler PropertyChanged; 144 154 protected virtual void OnPropertyChanged(string propertyName) { 145 if (PropertyChanged != null)146 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));155 PropertyChangedEventHandler handler = PropertyChanged; 156 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 147 157 } 148 158 -
trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableList.cs
r3019 r3317 34 34 35 35 #region Properties 36 public bool ReadOnlyView { 37 get { return true; } 38 set { throw new NotSupportedException(); } 39 } 40 36 41 public int Count { 37 42 get { return ((ICollection<T>)list).Count; } … … 119 124 } 120 125 126 event EventHandler IObservableCollection<T>.ReadOnlyViewChanged { 127 add { } 128 remove { } 129 } 130 121 131 [field: NonSerialized] 122 132 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsAdded; 123 133 protected virtual void OnItemsAdded(IEnumerable<IndexedItem<T>> items) { 124 if (ItemsAdded != null)125 ItemsAdded(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items));134 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsAdded; 135 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items)); 126 136 } 127 137 … … 133 143 } 134 144 private void OnItemsAdded(IEnumerable<T> items) { 135 if (itemsAdded != null)136 itemsAdded(this, new CollectionItemsChangedEventArgs<T>(items));145 CollectionItemsChangedEventHandler<T> handler = itemsAdded; 146 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items)); 137 147 } 138 148 … … 140 150 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsRemoved; 141 151 protected virtual void OnItemsRemoved(IEnumerable<IndexedItem<T>> items) { 142 if (ItemsRemoved != null)143 ItemsRemoved(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items));152 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsRemoved; 153 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items)); 144 154 } 145 155 … … 151 161 } 152 162 private void OnItemsRemoved(IEnumerable<T> items) { 153 if (itemsRemoved != null)154 itemsRemoved(this, new CollectionItemsChangedEventArgs<T>(items));163 CollectionItemsChangedEventHandler<T> handler = itemsRemoved; 164 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items)); 155 165 } 156 166 … … 158 168 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsReplaced; 159 169 protected virtual void OnItemsReplaced(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 160 if (ItemsReplaced != null)161 ItemsReplaced(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));170 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsReplaced; 171 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 162 172 } 163 173 … … 165 175 public event CollectionItemsChangedEventHandler<IndexedItem<T>> ItemsMoved; 166 176 protected virtual void OnItemsMoved(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 167 if (ItemsMoved != null)168 ItemsMoved(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));177 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = ItemsMoved; 178 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 169 179 } 170 180 … … 172 182 public event CollectionItemsChangedEventHandler<IndexedItem<T>> CollectionReset; 173 183 protected virtual void OnCollectionReset(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) { 174 if (CollectionReset != null)175 CollectionReset(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems));184 CollectionItemsChangedEventHandler<IndexedItem<T>> handler = CollectionReset; 185 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<IndexedItem<T>>(items, oldItems)); 176 186 } 177 187 … … 183 193 } 184 194 private void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) { 185 if (collectionReset != null)186 collectionReset(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));195 CollectionItemsChangedEventHandler<T> handler = collectionReset; 196 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items, oldItems)); 187 197 } 188 198 … … 190 200 public event PropertyChangedEventHandler PropertyChanged; 191 201 protected virtual void OnPropertyChanged(string propertyName) { 192 if (PropertyChanged != null)193 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));202 PropertyChangedEventHandler handler = PropertyChanged; 203 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 194 204 } 195 205 -
trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableSet.cs
r3019 r3317 34 34 35 35 #region Properties 36 public bool ReadOnlyView { 37 get { return true; } 38 set { throw new NotSupportedException(); } 39 } 40 36 41 public int Count { 37 42 get { return set.Count; } … … 136 141 } 137 142 143 event EventHandler IObservableCollection<T>.ReadOnlyViewChanged { 144 add { } 145 remove { } 146 } 147 138 148 [field: NonSerialized] 139 149 public event CollectionItemsChangedEventHandler<T> ItemsAdded; 140 150 protected virtual void OnItemsAdded(IEnumerable<T> items) { 141 if (ItemsAdded != null)142 ItemsAdded(this, new CollectionItemsChangedEventArgs<T>(items));151 CollectionItemsChangedEventHandler<T> handler = ItemsAdded; 152 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items)); 143 153 } 144 154 … … 146 156 public event CollectionItemsChangedEventHandler<T> ItemsRemoved; 147 157 protected virtual void OnItemsRemoved(IEnumerable<T> items) { 148 if (ItemsRemoved != null)149 ItemsRemoved(this, new CollectionItemsChangedEventArgs<T>(items));158 CollectionItemsChangedEventHandler<T> handler = ItemsRemoved; 159 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items)); 150 160 } 151 161 … … 153 163 public event CollectionItemsChangedEventHandler<T> CollectionReset; 154 164 protected virtual void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) { 155 if (CollectionReset != null)156 CollectionReset(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));165 CollectionItemsChangedEventHandler<T> handler = CollectionReset; 166 if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items, oldItems)); 157 167 } 158 168 … … 160 170 public event PropertyChangedEventHandler PropertyChanged; 161 171 protected virtual void OnPropertyChanged(string propertyName) { 162 if (PropertyChanged != null)163 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));172 PropertyChangedEventHandler handler = PropertyChanged; 173 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 164 174 } 165 175 -
trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs
r3306 r3317 280 280 T item = (T)listViewItem.Tag; 281 281 int i = 0; 282 while ((i < itemsListView.SmallImageList.Images.Count) && (item.ItemImage !=itemsListView.SmallImageList.Images[i]))282 while ((i < itemsListView.SmallImageList.Images.Count) && !item.ItemImage.Equals(itemsListView.SmallImageList.Images[i])) 283 283 i++; 284 284 if (i == itemsListView.SmallImageList.Images.Count) itemsListView.SmallImageList.Images.Add(item.ItemImage); -
trunk/sources/HeuristicLab.Core/3.3/ExecutionContext.cs
r3017 r3317 26 26 namespace HeuristicLab.Core { 27 27 [StorableClass] 28 public class ExecutionContext : DeepCloneable, IExecutionContext, IAtomicOperation {28 public sealed class ExecutionContext : DeepCloneable, IExecutionContext, IAtomicOperation { 29 29 [Storable] 30 30 private IParameterizedItem parameterizedItem; -
trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs
r3306 r3317 32 32 Image ItemImage { get; } 33 33 34 bool ReadOnlyView { get; set; } 35 34 36 event EventHandler ItemImageChanged; 37 event EventHandler ReadOnlyViewChanged; 35 38 event EventHandler ToStringChanged; 36 39 } -
trunk/sources/HeuristicLab.Core/3.3/Item.cs
r3306 r3317 22 22 using System; 23 23 using System.Drawing; 24 using HeuristicLab.Common.Resources;25 24 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 25 … … 39 38 } 40 39 public virtual Image ItemImage { 41 get { return VS2008ImageLibrary.Class; }40 get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Class; } 42 41 } 43 42 44 protected Item() : base() { } 43 [Storable] 44 private bool readOnlyView; 45 public bool ReadOnlyView { 46 get { return readOnlyView; } 47 set { 48 if (readOnlyView != value) { 49 readOnlyView = value; 50 OnReadOnlyViewChanged(); 51 } 52 } 53 } 54 55 protected Item() 56 : base() { 57 readOnlyView = false; 58 } 45 59 [StorableConstructor] 46 60 protected Item(bool deserializing) : base(deserializing) { } 47 61 62 63 /// <summary> 64 /// Clones the current instance (deep clone). 65 /// </summary> 66 /// <param name="clonedObjects">Dictionary of all already cloned objects. (Needed to avoid cycles.)</param> 67 /// <returns>The cloned object as <see cref="Variable"/>.</returns> 68 public override IDeepCloneable Clone(Cloner cloner) { 69 Item clone = (Item)base.Clone(cloner); 70 clone.readOnlyView = readOnlyView; 71 return clone; 72 } 48 73 49 74 /// <summary> … … 60 85 if (handler != null) handler(this, EventArgs.Empty); 61 86 } 87 public event EventHandler ReadOnlyViewChanged; 88 protected virtual void OnReadOnlyViewChanged() { 89 EventHandler handler = ReadOnlyViewChanged; 90 if (handler != null) handler(this, EventArgs.Empty); 91 } 62 92 public event EventHandler ToStringChanged; 63 93 protected virtual void OnToStringChanged() { -
trunk/sources/HeuristicLab.Core/3.3/ItemArray.cs
r3306 r3317 57 57 ItemArray<T> clone = (ItemArray<T>)Activator.CreateInstance(this.GetType()); 58 58 cloner.RegisterClonedObject(this, clone); 59 clone.ReadOnlyView = ReadOnlyView; 59 60 clone.array = this.Select(x => (T)cloner.Clone(x)).ToArray(); 60 61 return clone; -
trunk/sources/HeuristicLab.Core/3.3/ItemCollection.cs
r3306 r3317 53 53 ItemCollection<T> clone = (ItemCollection<T>)Activator.CreateInstance(this.GetType()); 54 54 cloner.RegisterClonedObject(this, clone); 55 clone.ReadOnlyView = ReadOnlyView; 55 56 clone.list = new List<T>(this.Select(x => (T)cloner.Clone(x))); 56 57 return clone; -
trunk/sources/HeuristicLab.Core/3.3/ItemList.cs
r3306 r3317 57 57 ItemList<T> clone = (ItemList<T>)Activator.CreateInstance(this.GetType()); 58 58 cloner.RegisterClonedObject(this, clone); 59 clone.ReadOnlyView = ReadOnlyView; 59 60 clone.list = new List<T>(this.Select(x => (T)cloner.Clone(x))); 60 61 return clone; -
trunk/sources/HeuristicLab.Core/3.3/ItemSet.cs
r3306 r3317 56 56 ItemSet<T> clone = (ItemSet<T>)Activator.CreateInstance(this.GetType()); 57 57 cloner.RegisterClonedObject(this, clone); 58 clone.ReadOnlyView = ReadOnlyView; 58 59 clone.set = new HashSet<T>(this.Select(x => (T)cloner.Clone(x))); 59 60 return clone; -
trunk/sources/HeuristicLab.Core/3.3/NamedItemCollection.cs
r3306 r3317 49 49 50 50 [StorableHook(HookType.AfterDeserialization)] 51 pr ivatevoid Initialize() {51 protected void Initialize() { 52 52 RegisterItemEvents(this); 53 53 } … … 59 59 NamedItemCollection<T> clone = (NamedItemCollection<T>)Activator.CreateInstance(this.GetType()); 60 60 cloner.RegisterClonedObject(this, clone); 61 clone.ReadOnlyView = ReadOnlyView; 61 62 foreach (string key in dict.Keys) 62 63 clone.dict.Add(key, (T)cloner.Clone(dict[key])); -
trunk/sources/HeuristicLab.Core/3.3/OperationCollection.cs
r3017 r3317 26 26 namespace HeuristicLab.Core { 27 27 [StorableClass] 28 public class OperationCollection : DeepCloneable, IList<IOperation>, IOperation {28 public sealed class OperationCollection : DeepCloneable, IList<IOperation>, IOperation { 29 29 [Storable] 30 30 private IList<IOperation> operations; … … 51 51 52 52 public override IDeepCloneable Clone(Cloner cloner) { 53 OperationCollection clone = new OperationCollection(this.Select(x => (IOperation)cloner.Clone(x)));54 clone r.RegisterClonedObject(this, clone);53 OperationCollection clone = (OperationCollection)base.Clone(cloner); 54 clone.operations = new List<IOperation>(this.Select(x => (IOperation)cloner.Clone(x))); 55 55 clone.parallel = parallel; 56 56 return clone; -
trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs
r3160 r3317 37 37 [StorableClass] 38 38 public class OperatorGraph : Item { 39 [Storable] 39 40 private OperatorSet operators; 40 41 /// <summary> 41 42 /// Gets all operators of the current instance. 42 43 /// </summary> 43 [Storable]44 44 public OperatorSet Operators { 45 45 get { return operators; } 46 private set {47 DeregisterOperatorsEvents();48 operators = value;49 RegisterOperatorsEvents();50 }51 46 } 52 47 … … 87 82 /// </summary> 88 83 public OperatorGraph() { 89 Operators = new OperatorSet();84 operators = new OperatorSet(); 90 85 initialOperator = null; 91 86 visualizationInfo = null; 87 Initialize(); 88 } 89 [StorableConstructor] 90 protected OperatorGraph(bool deserializing) : base(deserializing) { } 91 92 [StorableHook(HookType.AfterDeserialization)] 93 private void Initialize() { 94 RegisterOperatorsEvents(); 92 95 } 93 96 … … 100 103 /// <returns>The cloned object as <see cref="OperatorGraph"/>.</returns> 101 104 public override IDeepCloneable Clone(Cloner cloner) { 102 OperatorGraph clone = new OperatorGraph(); 103 cloner.RegisterClonedObject(this, clone); 104 clone.Operators = (OperatorSet)cloner.Clone(operators); 105 OperatorGraph clone = (OperatorGraph)base.Clone(cloner); 106 clone.operators = (OperatorSet)cloner.Clone(operators); 105 107 clone.initialOperator = (IOperator)cloner.Clone(initialOperator); 106 108 clone.visualizationInfo = cloner.Clone(visualizationInfo); 109 clone.Initialize(); 107 110 return clone; 108 111 } … … 166 169 } 167 170 } 168 private void DeregisterOperatorsEvents() {169 if (operators != null) {170 foreach (IOperator op in operators) {171 foreach (IParameter param in op.Parameters) {172 IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;173 if (opParam != null) DeregisterOperatorParameterEvents(opParam);174 }175 DeregisterOperatorEvents(op);176 }177 operators.ItemsAdded -= new CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsAdded);178 operators.ItemsRemoved -= new CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsRemoved);179 operators.CollectionReset -= new CollectionItemsChangedEventHandler<IOperator>(Operators_CollectionReset);180 }181 }182 171 private void RegisterOperatorEvents(IOperator op) { 183 172 op.Parameters.ItemsAdded += new CollectionItemsChangedEventHandler<IParameter>(Parameters_ItemsAdded); -
trunk/sources/HeuristicLab.Core/3.3/Scope.cs
r3280 r3317 51 51 } 52 52 53 [Storable] 53 54 private ScopeList subScopes; 54 [Storable]55 55 public ScopeList SubScopes { 56 56 get { return subScopes; } 57 private set {58 DeregisterSubScopesEvents();59 subScopes = value;60 RegisterSubScopesEvents();61 }62 57 } 63 58 … … 69 64 parent = null; 70 65 variables = new VariableCollection(); 71 SubScopes = new ScopeList(); 66 subScopes = new ScopeList(); 67 Initialize(); 72 68 } 73 69 /// <summary> … … 79 75 parent = null; 80 76 variables = new VariableCollection(); 81 SubScopes = new ScopeList(); 77 subScopes = new ScopeList(); 78 Initialize(); 82 79 } 83 80 public Scope(string name, string description) … … 85 82 parent = null; 86 83 variables = new VariableCollection(); 87 SubScopes = new ScopeList(); 84 subScopes = new ScopeList(); 85 Initialize(); 86 } 87 [StorableConstructor] 88 private Scope(bool deserializing) : base(deserializing) { } 89 90 [StorableHook(HookType.AfterDeserialization)] 91 private void Initialize() { 92 RegisterSubScopesEvents(); 88 93 } 89 94 … … 98 103 Scope clone = new Scope(); 99 104 cloner.RegisterClonedObject(this, clone); 100 clone.Name = Name; 101 clone.Description = Description; 105 clone.ReadOnlyView = ReadOnlyView; 106 clone.name = name; 107 clone.description = description; 102 108 if (variables.Count > 0) clone.variables = (VariableCollection)cloner.Clone(variables); 103 109 if (subScopes.Count > 0) { 104 clone. SubScopes = (ScopeList)cloner.Clone(subScopes);110 clone.subScopes = (ScopeList)cloner.Clone(subScopes); 105 111 foreach (IScope child in clone.SubScopes) 106 112 child.Parent = clone; 113 clone.Initialize(); 107 114 } 108 115 return clone; … … 116 123 subScopes.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_ItemsReplaced); 117 124 subScopes.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_CollectionReset); 118 }119 }120 private void DeregisterSubScopesEvents() {121 if (subScopes != null) {122 subScopes.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_ItemsAdded);123 subScopes.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_ItemsRemoved);124 subScopes.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_ItemsReplaced);125 subScopes.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_CollectionReset);126 125 } 127 126 } -
trunk/sources/HeuristicLab.Core/3.3/ScopeList.cs
r3160 r3317 33 33 34 34 public override IDeepCloneable Clone(Cloner cloner) { 35 ScopeList clone = new ScopeList( this.Select(x => (IScope)cloner.Clone(x)));35 ScopeList clone = new ScopeList(); 36 36 cloner.RegisterClonedObject(this, clone); 37 clone.ReadOnlyView = ReadOnlyView; 38 clone.list = new List<IScope>(this.Select(x => (IScope)cloner.Clone(x))); 37 39 return clone; 38 40 } -
trunk/sources/HeuristicLab.Core/3.3/Variable.cs
r3160 r3317 31 31 [StorableClass] 32 32 public sealed class Variable : NamedItem, IVariable { 33 [Storable] 33 34 private IItem value; 34 35 /// <inheritdoc/> 35 36 /// <remarks>Calls <see cref="OnValueChanged"/> in the setter.</remarks> 36 [Storable]37 37 public IItem Value { 38 38 get { return value; } … … 72 72 : base(name) { 73 73 this.value = value; 74 if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged);74 Initialize(); 75 75 } 76 76 public Variable(string name, string description, IItem value) 77 77 : base(name, description) { 78 78 this.value = value; 79 if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged); 79 Initialize(); 80 } 81 [StorableConstructor] 82 private Variable(bool deserializing) : base(deserializing) { } 83 84 [StorableHook(HookType.AfterDeserialization)] 85 private void Initialize() { 86 if (value != null) value.ToStringChanged += new EventHandler(Value_ToStringChanged); 80 87 } 81 88 … … 86 93 /// <returns>The cloned object as <see cref="Variable"/>.</returns> 87 94 public override IDeepCloneable Clone(Cloner cloner) { 88 Variable clone = new Variable(Name, Description , (IItem)cloner.Clone(value));95 Variable clone = new Variable(Name, Description); 89 96 cloner.RegisterClonedObject(this, clone); 97 clone.ReadOnlyView = ReadOnlyView; 98 clone.value = (IItem)cloner.Clone(value); 99 clone.Initialize(); 90 100 return clone; 91 101 } -
trunk/sources/HeuristicLab.Core/3.3/VariableCollection.cs
r3160 r3317 33 33 34 34 public override IDeepCloneable Clone(Cloner cloner) { 35 VariableCollection clone = new VariableCollection( this.Select(x => (IVariable)cloner.Clone(x)));35 VariableCollection clone = new VariableCollection(); 36 36 cloner.RegisterClonedObject(this, clone); 37 clone.ReadOnlyView = ReadOnlyView; 38 foreach (string key in dict.Keys) 39 clone.dict.Add(key, (IVariable)cloner.Clone(dict[key])); 40 clone.Initialize(); 37 41 return clone; 38 42 } -
trunk/sources/HeuristicLab.Data.Views/3.3/BoolValueView.cs
r3048 r3317 62 62 Caption = Content.ToString() + " (" + Content.GetType().Name + ")"; 63 63 valueCheckBox.Checked = Content.Value; 64 valueCheckBox.Enabled = true;64 valueCheckBox.Enabled = !Content.ReadOnlyView; 65 65 } 66 66 } -
trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonView.cs
r3048 r3317 62 62 Caption = Content.ToString() + " (" + Content.GetType().Name + ")"; 63 63 valueComboBox.SelectedItem = Content.Value; 64 valueComboBox.Enabled = true;64 valueComboBox.Enabled = !Content.ReadOnlyView; 65 65 } 66 66 } -
trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.cs
r3228 r3317 90 90 dataGridView.Columns[0].Width = dataGridView.Columns[0].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true); 91 91 } 92 dataGridView.ReadOnly = Content.ReadOnlyView; 92 93 dataGridView.Enabled = true; 93 94 } -
trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.cs
r3316 r3317 104 104 UpdateColumnHeaders(); 105 105 } 106 dataGridView.ReadOnly = Content.ReadOnlyView; 106 107 dataGridView.Enabled = true; 107 108 } -
trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleValueView.cs
r3228 r3317 65 65 Caption = Content.GetValue() + " (" + Content.GetType().Name + ")"; 66 66 valueTextBox.Text = Content.GetValue(); 67 valueTextBox.ReadOnly = Content.ReadOnlyView; 67 68 valueTextBox.Enabled = true; 68 69 } -
trunk/sources/HeuristicLab.Data/3.3/BoolArray.cs
r3160 r3317 35 35 BoolArray clone = new BoolArray(array); 36 36 cloner.RegisterClonedObject(this, clone); 37 clone.ReadOnlyView = ReadOnlyView; 37 38 return clone; 38 39 } -
trunk/sources/HeuristicLab.Data/3.3/BoolMatrix.cs
r3310 r3317 39 39 public override IDeepCloneable Clone(Cloner cloner) { 40 40 BoolMatrix clone = new BoolMatrix(matrix); 41 cloner.RegisterClonedObject(this, clone); 42 clone.ReadOnlyView = ReadOnlyView; 41 43 clone.ColumnNames = new List<string>(ColumnNames); 42 44 clone.RowNames = new List<string>(RowNames); 43 cloner.RegisterClonedObject(this, clone);44 45 return clone; 45 46 } -
trunk/sources/HeuristicLab.Data/3.3/BoolValue.cs
r3306 r3317 40 40 BoolValue clone = new BoolValue(value); 41 41 cloner.RegisterClonedObject(this, clone); 42 clone.ReadOnlyView = ReadOnlyView; 42 43 return clone; 43 44 } -
trunk/sources/HeuristicLab.Data/3.3/Comparison.cs
r3306 r3317 39 39 Comparison clone = new Comparison(value); 40 40 cloner.RegisterClonedObject(this, clone); 41 clone.ReadOnlyView = ReadOnlyView; 41 42 return clone; 42 43 } -
trunk/sources/HeuristicLab.Data/3.3/DateTimeValue.cs
r3160 r3317 34 34 DateTimeValue clone = new DateTimeValue(value); 35 35 cloner.RegisterClonedObject(this, clone); 36 clone.ReadOnlyView = ReadOnlyView; 36 37 return clone; 37 38 } -
trunk/sources/HeuristicLab.Data/3.3/DoubleArray.cs
r3160 r3317 35 35 DoubleArray clone = new DoubleArray(array); 36 36 cloner.RegisterClonedObject(this, clone); 37 clone.ReadOnlyView = ReadOnlyView; 37 38 return clone; 38 39 } -
trunk/sources/HeuristicLab.Data/3.3/DoubleMatrix.cs
r3310 r3317 39 39 public override IDeepCloneable Clone(Cloner cloner) { 40 40 DoubleMatrix clone = new DoubleMatrix(matrix); 41 cloner.RegisterClonedObject(this, clone); 42 clone.ReadOnlyView = ReadOnlyView; 41 43 clone.ColumnNames = new List<string>(ColumnNames); 42 44 clone.RowNames = new List<string>(RowNames); 43 cloner.RegisterClonedObject(this, clone);44 45 return clone; 45 46 } -
trunk/sources/HeuristicLab.Data/3.3/DoubleValue.cs
r3306 r3317 40 40 DoubleValue clone = new DoubleValue(value); 41 41 cloner.RegisterClonedObject(this, clone); 42 clone.ReadOnlyView = ReadOnlyView; 42 43 return clone; 43 44 } -
trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleArray.cs
r3048 r3317 25 25 namespace HeuristicLab.Data { 26 26 public interface IStringConvertibleArray { 27 bool ReadOnlyView { get; set; } 27 28 int Length { get; set; } 28 29 … … 31 32 bool SetValue(string value, int index); 32 33 34 event EventHandler ReadOnlyViewChanged; 33 35 event EventHandler<EventArgs<int>> ItemChanged; 34 36 event EventHandler Reset; -
trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleMatrix.cs
r3310 r3317 26 26 namespace HeuristicLab.Data { 27 27 public interface IStringConvertibleMatrix { 28 bool ReadOnlyView { get; set; } 28 29 int Rows { get; set; } 29 30 int Columns { get; set; } … … 37 38 bool SetValue(string value, int rowIndex, int columnIndex); 38 39 40 event EventHandler ReadOnlyViewChanged; 39 41 event EventHandler<EventArgs<int, int>> ItemChanged; 40 42 event EventHandler Reset; -
trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleValue.cs
r3048 r3317 24 24 namespace HeuristicLab.Data { 25 25 public interface IStringConvertibleValue { 26 bool ReadOnlyView { get; set; } 27 26 28 bool Validate(string value, out string errorMessage); 27 29 string GetValue(); 28 30 bool SetValue(string value); 29 31 32 event EventHandler ReadOnlyViewChanged; 30 33 event EventHandler ValueChanged; 31 34 } -
trunk/sources/HeuristicLab.Data/3.3/IntArray.cs
r3160 r3317 35 35 IntArray clone = new IntArray(array); 36 36 cloner.RegisterClonedObject(this, clone); 37 clone.ReadOnlyView = ReadOnlyView; 37 38 return clone; 38 39 } -
trunk/sources/HeuristicLab.Data/3.3/IntMatrix.cs
r3310 r3317 39 39 public override IDeepCloneable Clone(Cloner cloner) { 40 40 IntMatrix clone = new IntMatrix(matrix); 41 cloner.RegisterClonedObject(this, clone); 42 clone.ReadOnlyView = ReadOnlyView; 41 43 clone.ColumnNames = new List<string>(ColumnNames); 42 44 clone.RowNames = new List<string>(RowNames); 43 cloner.RegisterClonedObject(this, clone);44 45 return clone; 45 46 } -
trunk/sources/HeuristicLab.Data/3.3/IntValue.cs
r3306 r3317 40 40 IntValue clone = new IntValue(value); 41 41 cloner.RegisterClonedObject(this, clone); 42 clone.ReadOnlyView = ReadOnlyView; 42 43 return clone; 43 44 } -
trunk/sources/HeuristicLab.Data/3.3/PercentValue.cs
r3160 r3317 34 34 PercentValue clone = new PercentValue(value); 35 35 cloner.RegisterClonedObject(this, clone); 36 clone.ReadOnlyView = ReadOnlyView; 36 37 return clone; 37 38 } -
trunk/sources/HeuristicLab.Data/3.3/StringArray.cs
r3306 r3317 80 80 StringArray clone = new StringArray(); 81 81 cloner.RegisterClonedObject(this, clone); 82 clone.ReadOnlyView = ReadOnlyView; 82 83 clone.array = (string[])array.Clone(); 83 84 return clone; -
trunk/sources/HeuristicLab.Data/3.3/StringMatrix.cs
r3310 r3317 147 147 StringMatrix clone = new StringMatrix(); 148 148 cloner.RegisterClonedObject(this, clone); 149 clone.ReadOnlyView = ReadOnlyView; 149 150 clone.matrix = (string[,])matrix.Clone(); 150 151 clone.columnNames = new List<string>(columnNames); -
trunk/sources/HeuristicLab.Data/3.3/StringValue.cs
r3306 r3317 57 57 StringValue clone = new StringValue(value); 58 58 cloner.RegisterClonedObject(this, clone); 59 clone.ReadOnlyView = ReadOnlyView; 59 60 return clone; 60 61 } -
trunk/sources/HeuristicLab.Data/3.3/TimeSpanValue.cs
r3160 r3317 35 35 TimeSpanValue clone = new TimeSpanValue(value); 36 36 cloner.RegisterClonedObject(this, clone); 37 clone.ReadOnlyView = ReadOnlyView; 37 38 return clone; 38 39 } -
trunk/sources/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/BinaryVector.cs
r3160 r3317 44 44 BinaryVector clone = new BinaryVector(array); 45 45 cloner.RegisterClonedObject(this, clone); 46 clone.ReadOnlyView = ReadOnlyView; 46 47 return clone; 47 48 } -
trunk/sources/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/Tests/TestRandom.cs
r3306 r3317 112 112 } 113 113 114 public bool ReadOnlyView { 115 get { throw new NotImplementedException(); } 116 set { throw new NotImplementedException(); } 117 } 118 114 119 public event EventHandler ItemImageChanged; 120 public event EventHandler ReadOnlyViewChanged; 115 121 public event EventHandler ToStringChanged; 116 122 -
trunk/sources/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/IntegerVector.cs
r3160 r3317 44 44 IntegerVector clone = new IntegerVector(array); 45 45 cloner.RegisterClonedObject(this, clone); 46 clone.ReadOnlyView = ReadOnlyView; 46 47 return clone; 47 48 } -
trunk/sources/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Tests/TestRandom.cs
r3306 r3317 112 112 } 113 113 114 public bool ReadOnlyView { 115 get { throw new NotImplementedException(); } 116 set { throw new NotImplementedException(); } 117 } 118 114 119 public event EventHandler ItemImageChanged; 120 public event EventHandler ReadOnlyViewChanged; 115 121 public event EventHandler ToStringChanged; 116 122 -
trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/Permutation.cs
r3231 r3317 65 65 Permutation clone = new Permutation(permutationType, array); 66 66 cloner.RegisterClonedObject(this, clone); 67 clone.ReadOnlyView = ReadOnlyView; 67 68 return clone; 68 69 } -
trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/PermutationType.cs
r3231 r3317 34 34 PermutationType clone = new PermutationType(value); 35 35 cloner.RegisterClonedObject(this, clone); 36 clone.ReadOnlyView = ReadOnlyView; 36 37 return clone; 37 38 } -
trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/Tests/Random.cs
r3306 r3317 112 112 } 113 113 114 public bool ReadOnlyView { 115 get { throw new NotImplementedException(); } 116 set { throw new NotImplementedException(); } 117 } 118 114 119 public event EventHandler ItemImageChanged; 120 public event EventHandler ReadOnlyViewChanged; 115 121 public event EventHandler ToStringChanged; 116 122 -
trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/RealVector.cs
r3160 r3317 44 44 RealVector clone = new RealVector(array); 45 45 cloner.RegisterClonedObject(this, clone); 46 clone.ReadOnlyView = ReadOnlyView; 46 47 return clone; 47 48 } -
trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/Tests/TestRandom.cs
r3306 r3317 112 112 } 113 113 114 public bool ReadOnlyView { 115 get { throw new NotImplementedException(); } 116 set { throw new NotImplementedException(); } 117 } 118 114 119 public event EventHandler ItemImageChanged; 120 public event EventHandler ReadOnlyViewChanged; 115 121 public event EventHandler ToStringChanged; 116 122 -
trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.3/SymbolicExpressionTree.cs
r3294 r3317 99 99 SymbolicExpressionTree clone = new SymbolicExpressionTree(); 100 100 cloner.RegisterClonedObject(this, clone); 101 clone.ReadOnlyView = ReadOnlyView; 101 102 clone.root = (SymbolicExpressionTreeNode)this.root.Clone(); 102 103 clone.allowedFunctionsInBranch = new Dictionary<int, IEnumerable<string>>(allowedFunctionsInBranch); -
trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs
r3303 r3317 418 418 public override IDeepCloneable Clone(Cloner cloner) { 419 419 ProgrammableOperator clone = (ProgrammableOperator)base.Clone(cloner); 420 clone. Description = Description;420 clone.description = description; 421 421 clone.code = Code; 422 422 clone.executeMethod = executeMethod; -
trunk/sources/HeuristicLab.Operators/3.3/MultipleCallsOperator.cs
r3212 r3317 37 37 private List<IValueParameter<IOperator>> operatorParameters; 38 38 39 [Storable] 39 40 private OperatorList operators; 40 [Storable]41 41 public OperatorList Operators { 42 42 get { return operators; } 43 private set {44 if (operators != null) DeregisterOperatorsEvents();45 operators = value;46 if (operators != null) RegisterOperatorsEvents();47 }48 43 } 49 44 50 45 public MultipleCallsOperator() 51 46 : base() { 52 Operators = new OperatorList();47 operators = new OperatorList(); 53 48 Initialize(); 54 49 } 50 [StorableConstructor] 51 protected MultipleCallsOperator(bool deserializing) : base(deserializing) { } 55 52 56 53 [StorableHook(HookType.AfterDeserialization)] 57 54 private void Initialize() { 55 if (operators != null) RegisterOperatorsEvents(); 58 56 operatorParameters = new List<IValueParameter<IOperator>>(); 59 57 for (int i = 0; i < Operators.Count; i++) { … … 66 64 public override IDeepCloneable Clone(Cloner cloner) { 67 65 MultipleCallsOperator clone = (MultipleCallsOperator)base.Clone(cloner); 68 clone. Operators = (OperatorList)cloner.Clone(operators);66 clone.operators = (OperatorList)cloner.Clone(operators); 69 67 clone.Initialize(); 70 68 return clone; -
trunk/sources/HeuristicLab.Operators/3.3/Operator.cs
r3306 r3317 113 113 breakpoint = false; 114 114 } 115 [StorableConstructor] 116 protected Operator(bool deserializing) : base(deserializing) { } 115 117 116 118 /// <summary> -
trunk/sources/HeuristicLab.Operators/3.3/SingleSuccessorOperator.cs
r3160 r3317 43 43 Parameters.Add(new OperatorParameter("Successor", "Operator which is executed next.")); 44 44 } 45 [StorableConstructor] 46 protected SingleSuccessorOperator(bool deserializing) : base(deserializing) { } 45 47 46 48 public override IOperation Apply() { -
trunk/sources/HeuristicLab.Operators/3.3/ValuesCollector.cs
r3160 r3317 31 31 [StorableClass] 32 32 public abstract class ValuesCollector : SingleSuccessorOperator, IOperator { 33 [Storable] 33 34 private ParameterCollection collectedValues; 34 [Storable]35 35 public ParameterCollection CollectedValues { 36 36 get { return collectedValues; } 37 private set {38 collectedValues = value;39 collectedValues.ItemsAdded += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_ItemsAdded);40 collectedValues.ItemsRemoved += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_ItemsRemoved);41 collectedValues.CollectionReset += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_CollectionReset);42 }43 37 } 44 38 45 39 public ValuesCollector() 46 40 : base() { 47 CollectedValues = new ParameterCollection(); 41 collectedValues = new ParameterCollection(); 42 Initialize(); 43 } 44 [StorableConstructor] 45 protected ValuesCollector(bool deserializing) : base(deserializing) { } 46 47 [StorableHook(HookType.AfterDeserialization)] 48 private void Initialize() { 49 collectedValues.ItemsAdded += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_ItemsAdded); 50 collectedValues.ItemsRemoved += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_ItemsRemoved); 51 collectedValues.CollectionReset += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_CollectionReset); 48 52 } 49 53 50 54 public override IDeepCloneable Clone(Cloner cloner) { 51 55 ValuesCollector clone = (ValuesCollector)base.Clone(cloner); 52 clone.CollectedValues = (ParameterCollection)cloner.Clone(collectedValues); 56 clone.collectedValues = (ParameterCollection)cloner.Clone(collectedValues); 57 clone.Initialize(); 53 58 return clone; 54 59 } -
trunk/sources/HeuristicLab.Optimization/3.3/OptimizerList.cs
r3274 r3317 33 33 public OptimizerList(int capacity) : base(capacity) { } 34 34 public OptimizerList(IEnumerable<IOptimizer> collection) : base(collection) { } 35 36 public override IDeepCloneable Clone(Cloner cloner) {37 OptimizerList clone = new OptimizerList(this.Select(x => (IOptimizer)cloner.Clone(x)));38 cloner.RegisterClonedObject(this, clone);39 return clone;40 }41 35 } 42 36 } -
trunk/sources/HeuristicLab.Optimization/3.3/Result.cs
r3226 r3317 45 45 } 46 46 47 [Storable] 47 48 private IItem value; 48 [Storable]49 49 public IItem Value { 50 50 get { return value; } … … 84 84 this.dataType = value == null ? typeof(IItem) : value.GetType(); 85 85 this.value = value; 86 if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged);86 Initialize(); 87 87 } 88 88 public Result(string name, string description, IItem value) … … 90 90 this.dataType = value == null ? typeof(IItem) : value.GetType(); 91 91 this.value = value; 92 if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged); 92 Initialize(); 93 } 94 [StorableConstructor] 95 private Result(bool deserializing) : base(deserializing) { } 96 97 [StorableHook(HookType.AfterDeserialization)] 98 private void Initialize() { 99 if (value != null) value.ToStringChanged += new EventHandler(Value_ToStringChanged); 93 100 } 94 101 95 102 public override IDeepCloneable Clone(Cloner cloner) { 96 Result clone = new Result(Name, Description, (IItem)cloner.Clone(value));103 Result clone = new Result(Name, Description, DataType); 97 104 cloner.RegisterClonedObject(this, clone); 98 clone.dataType = dataType; 105 clone.ReadOnlyView = ReadOnlyView; 106 clone.value = (IItem)cloner.Clone(value); 107 clone.Initialize(); 99 108 return clone; 100 109 } -
trunk/sources/HeuristicLab.Optimization/3.3/ResultCollection.cs
r3274 r3317 32 32 public ResultCollection(int capacity) : base(capacity) { } 33 33 public ResultCollection(IEnumerable<IResult> collection) : base(collection) { } 34 35 public override IDeepCloneable Clone(Cloner cloner) {36 ResultCollection clone = new ResultCollection(this.Select(x => (IResult)cloner.Clone(x)));37 cloner.RegisterClonedObject(this, clone);38 return clone;39 }40 34 } 41 35 } -
trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs
r3280 r3317 32 32 public RunCollection(int capacity) : base(capacity) { } 33 33 public RunCollection(IEnumerable<IRun> collection) : base(collection) { } 34 35 public override IDeepCloneable Clone(Cloner cloner) {36 RunCollection clone = new RunCollection(this.Select(x => (IRun)cloner.Clone(x)));37 cloner.RegisterClonedObject(this, clone);38 return clone;39 }40 34 } 41 35 } -
trunk/sources/HeuristicLab.Parameters/3.3/LookupParameter.cs
r3136 r3317 71 71 this.actualName = actualName == null ? string.Empty : actualName; 72 72 } 73 [StorableConstructor] 74 protected LookupParameter(bool deserializing) : base(deserializing) { } 73 75 74 76 public override IDeepCloneable Clone(Cloner cloner) { -
trunk/sources/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs
r3136 r3317 33 33 [StorableClass] 34 34 public class OptionalConstrainedValueParameter<T> : Parameter, IValueParameter<T> where T : class, IItem { 35 [Storable] 35 36 private ItemSet<T> validValues; 36 [Storable]37 37 public ItemSet<T> ValidValues { 38 38 get { return validValues; } 39 private set {40 DeregisterValidValuesEvents();41 validValues = value;42 RegisterValidValuesEvents();43 }44 39 } 45 40 41 [Storable] 46 42 private T value; 47 [Storable]48 43 public virtual T Value { 49 44 get { return this.value; } … … 74 69 public OptionalConstrainedValueParameter() 75 70 : base("Anonymous", typeof(T)) { 76 ValidValues = new ItemSet<T>(); 71 this.validValues = new ItemSet<T>(); 72 Initialize(); 77 73 } 78 74 public OptionalConstrainedValueParameter(string name) 79 75 : base(name, typeof(T)) { 80 ValidValues = new ItemSet<T>(); 76 this.validValues = new ItemSet<T>(); 77 Initialize(); 81 78 } 82 79 public OptionalConstrainedValueParameter(string name, ItemSet<T> validValues) 83 80 : base(name, typeof(T)) { 84 ValidValues = validValues; 81 this.validValues = validValues; 82 Initialize(); 85 83 } 86 84 public OptionalConstrainedValueParameter(string name, ItemSet<T> validValues, T value) 87 85 : base(name, typeof(T)) { 88 ValidValues = validValues; 89 Value = value; 86 this.validValues = validValues; 87 this.value = value; 88 Initialize(); 90 89 } 91 90 public OptionalConstrainedValueParameter(string name, string description) 92 91 : base(name, description, typeof(T)) { 93 ValidValues = new ItemSet<T>(); 92 this.validValues = new ItemSet<T>(); 93 Initialize(); 94 94 } 95 95 public OptionalConstrainedValueParameter(string name, string description, ItemSet<T> validValues) 96 96 : base(name, description, typeof(T)) { 97 ValidValues = validValues; 97 this.validValues = validValues; 98 Initialize(); 98 99 } 99 100 public OptionalConstrainedValueParameter(string name, string description, ItemSet<T> validValues, T value) 100 101 : base(name, description, typeof(T)) { 101 ValidValues = validValues; 102 Value = value; 102 this.validValues = validValues; 103 this.value = value; 104 Initialize(); 105 } 106 [StorableConstructor] 107 protected OptionalConstrainedValueParameter(bool deserializing) : base(deserializing) { } 108 109 [StorableHook(HookType.AfterDeserialization)] 110 private void Initialize() { 111 RegisterValidValuesEvents(); 112 if (value != null) value.ToStringChanged += new EventHandler(Value_ToStringChanged); 103 113 } 104 114 105 115 public override IDeepCloneable Clone(Cloner cloner) { 106 116 OptionalConstrainedValueParameter<T> clone = (OptionalConstrainedValueParameter<T>)base.Clone(cloner); 107 clone.ValidValues = (ItemSet<T>)cloner.Clone(validValues); 108 clone.Value = (T)cloner.Clone(value); 117 clone.validValues = (ItemSet<T>)cloner.Clone(validValues); 118 clone.value = (T)cloner.Clone(value); 119 clone.Initialize(); 109 120 return clone; 110 121 } -
trunk/sources/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs
r3136 r3317 32 32 [StorableClass] 33 33 public class OptionalValueParameter<T> : Parameter, IValueParameter<T> where T : class, IItem { 34 [Storable] 34 35 private T value; 35 [Storable]36 36 public virtual T Value { 37 37 get { return this.value; } … … 66 66 public OptionalValueParameter(string name, T value) 67 67 : base(name, typeof(T)) { 68 Value = value; 68 this.value = value; 69 Initialize(); 69 70 } 70 71 public OptionalValueParameter(string name, string description) … … 73 74 public OptionalValueParameter(string name, string description, T value) 74 75 : base(name, description, typeof(T)) { 75 Value = value; 76 this.value = value; 77 Initialize(); 78 } 79 [StorableConstructor] 80 protected OptionalValueParameter(bool deserializing) : base(deserializing) { } 81 82 [StorableHook(HookType.AfterDeserialization)] 83 private void Initialize() { 84 if (value != null) value.ToStringChanged += new EventHandler(Value_ToStringChanged); 76 85 } 77 86 78 87 public override IDeepCloneable Clone(Cloner cloner) { 79 88 OptionalValueParameter<T> clone = (OptionalValueParameter<T>)base.Clone(cloner); 80 clone.Value = (T)cloner.Clone(value); 89 clone.value = (T)cloner.Clone(value); 90 clone.Initialize(); 81 91 return clone; 82 92 } -
trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs
r3136 r3317 91 91 this.dataType = dataType; 92 92 } 93 [StorableConstructor] 94 protected Parameter(bool deserializing) : base(deserializing) { } 93 95 94 96 public override IDeepCloneable Clone(Cloner cloner) { -
trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs
r3080 r3317 32 32 [StorableClass] 33 33 public class ValueLookupParameter<T> : LookupParameter<T>, IValueLookupParameter<T> where T : class, IItem { 34 [Storable] 34 35 private T value; 35 [Storable]36 36 public T Value { 37 37 get { return this.value; } … … 66 66 public ValueLookupParameter(string name, T value) 67 67 : base(name) { 68 Value = value; 68 this.value = value; 69 Initialize(); 69 70 } 70 71 public ValueLookupParameter(string name, string description) … … 73 74 public ValueLookupParameter(string name, string description, T value) 74 75 : base(name, description) { 75 Value = value; 76 this.value = value; 77 Initialize(); 76 78 } 77 79 public ValueLookupParameter(string name, string description, string actualName) 78 80 : base(name, description, actualName) { 79 81 } 82 [StorableConstructor] 83 protected ValueLookupParameter(bool deserializing) : base(deserializing) { } 84 85 [StorableHook(HookType.AfterDeserialization)] 86 private void Initialize() { 87 if (value != null) value.ToStringChanged += new EventHandler(Value_ToStringChanged); 88 } 80 89 81 90 public override IDeepCloneable Clone(Cloner cloner) { 82 91 ValueLookupParameter<T> clone = (ValueLookupParameter<T>)base.Clone(cloner); 83 clone.Value = (T)cloner.Clone(value); 92 clone.value = (T)cloner.Clone(value); 93 clone.Initialize(); 84 94 return clone; 85 95 } -
trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/AntTrail.cs
r3239 r3317 34 34 [StorableClass] 35 35 public sealed class AntTrail : Item { 36 [Storable] 36 37 private SymbolicExpressionTree expression; 37 [Storable]38 38 public SymbolicExpressionTree SymbolicExpressionTree { 39 39 get { return expression; } … … 48 48 } 49 49 50 [Storable] 50 51 private BoolMatrix world; 51 [Storable]52 52 public BoolMatrix World { 53 53 get { return world; } … … 61 61 } 62 62 } 63 [Storable] 63 64 private IntValue maxTimeSteps; 64 [Storable]65 65 public IntValue MaxTimeSteps { 66 66 get { return maxTimeSteps; } … … 80 80 public AntTrail(BoolMatrix world, SymbolicExpressionTree expression, IntValue maxTimeSteps) 81 81 : this() { 82 World = world; 83 SymbolicExpressionTree = expression; 84 MaxTimeSteps = maxTimeSteps; 82 this.world = world; 83 this.expression = expression; 84 this.maxTimeSteps = maxTimeSteps; 85 Initialize(); 86 } 87 [StorableConstructor] 88 private AntTrail(bool deserializing) : base(deserializing) { } 89 90 [StorableHook(HookType.AfterDeserialization)] 91 private void Initialize() { 92 //if (expression != null) RegisterSymbolicExpressionTreeEvents(); 93 if (world != null) RegisterWorldEvents(); 94 if (maxTimeSteps != null) RegisterMaxTimeStepsEvents(); 85 95 } 86 96 … … 88 98 AntTrail clone = new AntTrail(); 89 99 cloner.RegisterClonedObject(this, clone); 100 clone.ReadOnlyView = ReadOnlyView; 90 101 clone.expression = (SymbolicExpressionTree)cloner.Clone(expression); 91 102 clone.world = (BoolMatrix)cloner.Clone(world); 92 103 clone.maxTimeSteps = (IntValue)cloner.Clone(maxTimeSteps); 104 clone.Initialize(); 93 105 return clone; 94 106 } -
trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/PathTSPTour.cs
r3306 r3317 39 39 } 40 40 41 [Storable] 41 42 private DoubleMatrix coordinates; 42 [Storable]43 43 public DoubleMatrix Coordinates { 44 44 get { return coordinates; } … … 52 52 } 53 53 } 54 [Storable] 54 55 private Permutation permutation; 55 [Storable]56 56 public Permutation Permutation { 57 57 get { return permutation; } … … 69 69 public PathTSPTour(DoubleMatrix coordinates) 70 70 : base() { 71 Coordinates = coordinates; 71 this.coordinates = coordinates; 72 Initialize(); 72 73 } 73 74 public PathTSPTour(DoubleMatrix coordinates, Permutation permutation) 74 : this(coordinates) { 75 Permutation = permutation; 75 : base() { 76 this.coordinates = coordinates; 77 this.permutation = permutation; 78 Initialize(); 79 } 80 [StorableConstructor] 81 private PathTSPTour(bool deserializing) : base(deserializing) { } 82 83 [StorableHook(HookType.AfterDeserialization)] 84 private void Initialize() { 85 if (coordinates != null) RegisterCoordinatesEvents(); 86 if (permutation != null) RegisterPermutationEvents(); 76 87 } 77 88 … … 79 90 PathTSPTour clone = new PathTSPTour(); 80 91 cloner.RegisterClonedObject(this, clone); 81 clone.Coordinates = (DoubleMatrix)cloner.Clone(coordinates); 82 clone.Permutation = (Permutation)cloner.Clone(permutation); 92 clone.ReadOnlyView = ReadOnlyView; 93 clone.coordinates = (DoubleMatrix)cloner.Clone(coordinates); 94 clone.permutation = (Permutation)cloner.Clone(permutation); 95 clone.Initialize(); 83 96 return clone; 84 97 } -
trunk/sources/HeuristicLab.Random/3.3/MersenneTwister.cs
r3017 r3317 84 84 /// <returns>The cloned object as <see cref="MersenneTwister"/>.</returns> 85 85 public override IDeepCloneable Clone(Cloner cloner) { 86 MersenneTwister clone = new MersenneTwister(); 87 cloner.RegisterClonedObject(this, clone); 86 MersenneTwister clone = (MersenneTwister)base.Clone(cloner); 88 87 clone.state = (uint[])state.Clone(); 89 88 clone.p = p; -
trunk/sources/HeuristicLab.Random/3.3/NormalDistributedRandom.cs
r3017 r3317 553 553 /// <returns>The cloned object as <see cref="NormalDistributedRandom"/>.</returns> 554 554 public override IDeepCloneable Clone(Cloner cloner) { 555 NormalDistributedRandom clone = new NormalDistributedRandom((IRandom)cloner.Clone(uniform), mu, sigma); 556 cloner.RegisterClonedObject(this, clone); 555 NormalDistributedRandom clone = (NormalDistributedRandom)base.Clone(cloner); 556 clone.uniform = (IRandom)cloner.Clone(uniform); 557 clone.mu = mu; 558 clone.sigma = sigma; 557 559 return clone; 558 560 }
Note: See TracChangeset
for help on using the changeset viewer.