- Timestamp:
- 02/10/10 03:39:02 (15 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Operators/3.3/ValuesCollector.cs
r2772 r2773 24 24 using System.Text; 25 25 using System.Xml; 26 using HeuristicLab.Collections; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Parameters; … … 32 33 /// An operator which collects the actual values of parameters. 33 34 /// </summary> 34 [Item("ValueCollector", "An operator which collects the actual values of parameters.")] 35 [EmptyStorableClass] 35 [Item("ValuesCollector", "An operator which collects the actual values of parameters.")] 36 36 [Creatable("Test")] 37 public abstract class ValueCollector : SingleSuccessorOperator, IOperator { 38 protected ValueParameter<ParameterCollection> CollectedValuesParameter { 39 get { return (ValueParameter<ParameterCollection>)Parameters["CollectedValues"]; } 40 } 37 public abstract class ValuesCollector : SingleSuccessorOperator, IOperator { 38 private ParameterCollection collectedValues; 39 [Storable] 41 40 public ParameterCollection CollectedValues { 42 get { return CollectedValuesParameter.Value; } 43 set { CollectedValuesParameter.Value = value; } 41 get { return collectedValues; } 42 private set { 43 collectedValues = value; 44 collectedValues.ItemsAdded += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_ItemsAdded); 45 collectedValues.ItemsRemoved += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_ItemsRemoved); 46 collectedValues.CollectionReset += new CollectionItemsChangedEventHandler<IParameter>(collectedValues_CollectionReset); 47 } 44 48 } 45 49 46 public Value Collector()50 public ValuesCollector() 47 51 : base() { 48 Parameters.Add(new ValueParameter<ParameterCollection>("CollectedValues", "The parameters whose actual values are collected.", new ParameterCollection()));52 CollectedValues = new ParameterCollection(); 49 53 } 50 54 51 protected override void OnExecutionContextChanged() { 52 foreach (IParameter param in CollectedValues) 53 param.ExecutionContext = ExecutionContext; 55 public override IDeepCloneable Clone(Cloner cloner) { 56 ValuesCollector clone = (ValuesCollector)base.Clone(cloner); 57 clone.CollectedValues = (ParameterCollection)cloner.Clone(collectedValues); 58 return clone; 59 } 60 61 private void collectedValues_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IParameter> e) { 62 Parameters.AddRange(e.Items); 63 } 64 private void collectedValues_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IParameter> e) { 65 Parameters.RemoveRange(e.Items); 66 } 67 #region NOTE 68 // NOTE: The ItemsReplaced event has not to be handled here as it is only fired when the name (i.e. key) of a parameter 69 // changes. As the same parameter is also contained in the Parameters collection of the operator, the Parameters collection 70 // will react on this name change on its own. 71 #endregion 72 private void collectedValues_CollectionReset(object sender, CollectionItemsChangedEventArgs<IParameter> e) { 73 Parameters.RemoveRange(e.OldItems); 74 Parameters.AddRange(e.Items); 54 75 } 55 76 }
Note: See TracChangeset
for help on using the changeset viewer.