Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/18/20 00:25:54 (4 years ago)
Author:
abeham
Message:

#2521: working on problems / fixing P3

File:
1 edited

Legend:

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

    r17614 r17680  
    2121
    2222using System;
     23using System.ComponentModel;
    2324using HeuristicLab.Core;
    2425using HeuristicLab.Data;
     
    214215     => new StringValueParameterChangeHandler(parameter, handler);
    215216  }
     217
     218  public class ItemListParameterChangeHandler<T> : ParameterChangeHandler<ItemList<T>> where T : class,IItem {
     219    private ItemList<T> last;
     220
     221    private ItemListParameterChangeHandler(IValueParameter<ItemList<T>> parameter, Action handler)
     222      : base(parameter, handler) {
     223      last = parameter.Value;
     224      if (last != null && !(last is ReadOnlyItemList<T>)) {
     225        last.PropertyChanged += ParameterValueOnListChanged;
     226      }
     227    }
     228
     229    protected override void ParameterOnValueChanged(object sender, EventArgs e) {
     230      if (last != null && !(last is ReadOnlyItemList<T>))
     231        last.PropertyChanged -= ParameterValueOnListChanged;
     232      last = ((IValueParameter<ItemList<T>>)sender).Value;
     233      if (last != null && !(last is ReadOnlyItemList<T>))
     234        last.PropertyChanged += ParameterValueOnListChanged;
     235      base.ParameterOnValueChanged(sender, e);
     236    }
     237
     238    private void ParameterValueOnListChanged(object sender, PropertyChangedEventArgs e) {
     239      if (e.PropertyName == "Item[]") handler();
     240    }
     241    public static ItemListParameterChangeHandler<T> Create(IValueParameter<ItemList<T>> parameter, Action handler)
     242     => new ItemListParameterChangeHandler<T>(parameter, handler);
     243  }
    216244}
Note: See TracChangeset for help on using the changeset viewer.