Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/04/20 18:16:58 (5 years ago)
Author:
abeham
Message:

#2521: refactoring in progress

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2521_ProblemRefactoring/HeuristicLab.Parameters/3.3/ParameterChangeHandler.cs

    r17546 r17587  
    3939  }
    4040
    41   public class ParameterChangeHandler<TItem, TValue> : ParameterChangeHandler<TItem>
     41  public class ValueTypeValueParameterChangeHandler<TItem, TValue> : ParameterChangeHandler<TItem>
    4242    where TValue : struct
    4343    where TItem : ValueTypeValue<TValue> {
    4444    private ValueTypeValue<TValue> last;
    4545
    46     protected ParameterChangeHandler(IValueParameter<TItem> parameter, Action handler)
     46    protected ValueTypeValueParameterChangeHandler(IValueParameter<TItem> parameter, Action handler)
    4747      : base(parameter, handler) {
    4848      last = parameter.Value;
     
    6363    }
    6464
    65     public static ParameterChangeHandler<TItem, TValue> Create(IValueParameter<TItem> parameter, Action handler)
    66       => new ParameterChangeHandler<TItem, TValue>(parameter, handler);
    67   }
    68 
    69   public class BoolValueParameterChangeHandler : ParameterChangeHandler<BoolValue, bool> {
     65    public static ValueTypeValueParameterChangeHandler<TItem, TValue> Create(IValueParameter<TItem> parameter, Action handler)
     66      => new ValueTypeValueParameterChangeHandler<TItem, TValue>(parameter, handler);
     67  }
     68  public class ValueTypeArrayParameterChangeHandler<TItem, TValue> : ParameterChangeHandler<TItem>
     69    where TValue : struct
     70    where TItem : ValueTypeArray<TValue> {
     71    private ValueTypeArray<TValue> last;
     72
     73    protected ValueTypeArrayParameterChangeHandler(IValueParameter<TItem> parameter, Action handler)
     74      : base(parameter, handler) {
     75      last = parameter.Value;
     76      if (last != null && !last.ReadOnly)
     77        last.ToStringChanged += ParameterValueOnValueChanged;
     78    }
     79
     80    protected override void ParameterOnValueChanged(object sender, EventArgs e) {
     81      if (last != null) last.ToStringChanged -= ParameterValueOnValueChanged;
     82      last = ((IValueParameter<TItem>)sender).Value;
     83      if (last != null && !last.ReadOnly)
     84        last.ToStringChanged += ParameterValueOnValueChanged;
     85      base.ParameterOnValueChanged(sender, e);
     86    }
     87
     88    protected void ParameterValueOnValueChanged(object sender, EventArgs e) {
     89      handler();
     90    }
     91
     92    public static ValueTypeArrayParameterChangeHandler<TItem, TValue> Create(IValueParameter<TItem> parameter, Action handler)
     93      => new ValueTypeArrayParameterChangeHandler<TItem, TValue>(parameter, handler);
     94  }
     95
     96  public class ValueTypeMatrixParameterChangeHandler<TItem, TValue> : ParameterChangeHandler<TItem>
     97    where TValue : struct
     98    where TItem : ValueTypeMatrix<TValue> {
     99    private ValueTypeMatrix<TValue> last;
     100
     101    protected ValueTypeMatrixParameterChangeHandler(IValueParameter<TItem> parameter, Action handler)
     102      : base(parameter, handler) {
     103      last = parameter.Value;
     104      if (last != null && !last.ReadOnly)
     105        last.ToStringChanged += ParameterValueOnValueChanged;
     106    }
     107
     108    protected override void ParameterOnValueChanged(object sender, EventArgs e) {
     109      if (last != null) last.ToStringChanged -= ParameterValueOnValueChanged;
     110      last = ((IValueParameter<TItem>)sender).Value;
     111      if (last != null && !last.ReadOnly)
     112        last.ToStringChanged += ParameterValueOnValueChanged;
     113      base.ParameterOnValueChanged(sender, e);
     114    }
     115
     116    protected void ParameterValueOnValueChanged(object sender, EventArgs e) {
     117      handler();
     118    }
     119
     120    public static ValueTypeMatrixParameterChangeHandler<TItem, TValue> Create(IValueParameter<TItem> parameter, Action handler)
     121      => new ValueTypeMatrixParameterChangeHandler<TItem, TValue>(parameter, handler);
     122  }
     123
     124  public class BoolValueParameterChangeHandler : ValueTypeValueParameterChangeHandler<BoolValue, bool> {
    70125    private BoolValueParameterChangeHandler(IValueParameter<BoolValue> parameter, Action handler) : base(parameter, handler) { }
    71126    public static new BoolValueParameterChangeHandler Create(IValueParameter<BoolValue> parameter, Action handler)
    72127      => new BoolValueParameterChangeHandler(parameter, handler);
    73128  }
    74   public class IntValueParameterChangeHandler : ParameterChangeHandler<IntValue, int> {
     129  public class IntValueParameterChangeHandler : ValueTypeValueParameterChangeHandler<IntValue, int> {
    75130    private IntValueParameterChangeHandler(IValueParameter<IntValue> parameter, Action handler) : base(parameter, handler) { }
    76131    public static new IntValueParameterChangeHandler Create(IValueParameter<IntValue> parameter, Action handler)
    77132      => new IntValueParameterChangeHandler(parameter, handler);
    78133  }
    79   public class DoubleValueParameterChangeHandler : ParameterChangeHandler<DoubleValue, double> {
     134  public class DoubleValueParameterChangeHandler : ValueTypeValueParameterChangeHandler<DoubleValue, double> {
    80135    private DoubleValueParameterChangeHandler(IValueParameter<DoubleValue> parameter, Action handler) : base(parameter, handler) { }
    81136    public static new DoubleValueParameterChangeHandler Create(IValueParameter<DoubleValue> parameter, Action handler)
    82137      => new DoubleValueParameterChangeHandler(parameter, handler);
    83138  }
    84   public class PercentValueParameterChangeHandler : ParameterChangeHandler<PercentValue, double> {
     139  public class PercentValueParameterChangeHandler : ValueTypeValueParameterChangeHandler<PercentValue, double> {
    85140    private PercentValueParameterChangeHandler(IValueParameter<PercentValue> parameter, Action handler) : base(parameter, handler) { }
    86141    public static new PercentValueParameterChangeHandler Create(IValueParameter<PercentValue> parameter, Action handler)
    87142      => new PercentValueParameterChangeHandler(parameter, handler);
    88143  }
    89   public class DateTimeValueParameterChangeHandler : ParameterChangeHandler<DateTimeValue, DateTime> {
     144  public class DateTimeValueParameterChangeHandler : ValueTypeValueParameterChangeHandler<DateTimeValue, DateTime> {
    90145    private DateTimeValueParameterChangeHandler(IValueParameter<DateTimeValue> parameter, Action handler) : base(parameter, handler) { }
    91146    public static new DateTimeValueParameterChangeHandler Create(IValueParameter<DateTimeValue> parameter, Action handler)
    92147      => new DateTimeValueParameterChangeHandler(parameter, handler);
    93148  }
    94   public class TimeSpanValueParameterChangeHandler : ParameterChangeHandler<TimeSpanValue, TimeSpan> {
     149  public class TimeSpanValueParameterChangeHandler : ValueTypeValueParameterChangeHandler<TimeSpanValue, TimeSpan> {
    95150    private TimeSpanValueParameterChangeHandler(IValueParameter<TimeSpanValue> parameter, Action handler) : base(parameter, handler) { }
    96151    public static new TimeSpanValueParameterChangeHandler Create(IValueParameter<TimeSpanValue> parameter, Action handler)
    97152      => new TimeSpanValueParameterChangeHandler(parameter, handler);
    98153  }
    99   public class EnumValueParameterChangeHandler<TEnum> : ParameterChangeHandler<EnumValue<TEnum>, TEnum> where TEnum : struct, IComparable {
     154  public class EnumValueParameterChangeHandler<TEnum> : ValueTypeValueParameterChangeHandler<EnumValue<TEnum>, TEnum> where TEnum : struct, IComparable {
    100155    private EnumValueParameterChangeHandler(IValueParameter<EnumValue<TEnum>> parameter, Action handler) : base(parameter, handler) { }
    101156    public static new EnumValueParameterChangeHandler<TEnum> Create(IValueParameter<EnumValue<TEnum>> parameter, Action handler)
    102157      => new EnumValueParameterChangeHandler<TEnum>(parameter, handler);
    103158  }
     159  public class BoolArrayParameterChangeHandler : ValueTypeArrayParameterChangeHandler<BoolArray, bool> {
     160    private BoolArrayParameterChangeHandler(IValueParameter<BoolArray> parameter, Action handler) : base(parameter, handler) { }
     161    public static new BoolArrayParameterChangeHandler Create(IValueParameter<BoolArray> parameter, Action handler)
     162      => new BoolArrayParameterChangeHandler(parameter, handler);
     163  }
     164  public class IntArrayParameterChangeHandler : ValueTypeArrayParameterChangeHandler<IntArray, int> {
     165    private IntArrayParameterChangeHandler(IValueParameter<IntArray> parameter, Action handler) : base(parameter, handler) { }
     166    public static new IntArrayParameterChangeHandler Create(IValueParameter<IntArray> parameter, Action handler)
     167      => new IntArrayParameterChangeHandler(parameter, handler);
     168  }
     169  public class DoubleArrayParameterChangeHandler : ValueTypeArrayParameterChangeHandler<DoubleArray, double> {
     170    private DoubleArrayParameterChangeHandler(IValueParameter<DoubleArray> parameter, Action handler) : base(parameter, handler) { }
     171    public static new DoubleArrayParameterChangeHandler Create(IValueParameter<DoubleArray> parameter, Action handler)
     172      => new DoubleArrayParameterChangeHandler(parameter, handler);
     173  }
     174  public class BoolMatrixParameterChangeHandler : ValueTypeMatrixParameterChangeHandler<BoolMatrix, bool> {
     175    private BoolMatrixParameterChangeHandler(IValueParameter<BoolMatrix> parameter, Action handler) : base(parameter, handler) { }
     176    public static new BoolMatrixParameterChangeHandler Create(IValueParameter<BoolMatrix> parameter, Action handler)
     177      => new BoolMatrixParameterChangeHandler(parameter, handler);
     178  }
     179  public class IntMatrixParameterChangeHandler : ValueTypeMatrixParameterChangeHandler<IntMatrix, int> {
     180    private IntMatrixParameterChangeHandler(IValueParameter<IntMatrix> parameter, Action handler) : base(parameter, handler) { }
     181    public static new IntMatrixParameterChangeHandler Create(IValueParameter<IntMatrix> parameter, Action handler)
     182      => new IntMatrixParameterChangeHandler(parameter, handler);
     183  }
     184  public class DoubleMatrixParameterChangeHandler : ValueTypeMatrixParameterChangeHandler<DoubleMatrix, double> {
     185    private DoubleMatrixParameterChangeHandler(IValueParameter<DoubleMatrix> parameter, Action handler) : base(parameter, handler) { }
     186    public static new DoubleMatrixParameterChangeHandler Create(IValueParameter<DoubleMatrix> parameter, Action handler)
     187      => new DoubleMatrixParameterChangeHandler(parameter, handler);
     188  }
    104189  public class StringValueParameterChangeHandler : ParameterChangeHandler<StringValue> { // StringValue does not derive from ValueTypeValue
    105190    private StringValue last;
Note: See TracChangeset for help on using the changeset viewer.