Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/08/16 20:42:24 (8 years ago)
Author:
gkronber
Message:

#1966 refactoring

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingItem/CuboidPackingItem.cs

    r13574 r13605  
    3434  [StorableClass]
    3535  public class CuboidPackingItem : CuboidPackingShape, IPackingItem {
     36    public IValueParameter<CuboidPackingBin> TargetBinParameter {
     37      get { return (IValueParameter<CuboidPackingBin>)Parameters["TargetBin"]; }
     38    }
     39    public IFixedValueParameter<DoubleValue> WeightParameter {
     40      get { return (IFixedValueParameter<DoubleValue>)Parameters["Weight"]; }
     41    }
     42    public IFixedValueParameter<IntValue> MaterialParameter {
     43      get { return (IFixedValueParameter<IntValue>)Parameters["Material"]; }
     44    }
     45
    3646    public CuboidPackingBin TargetBin {
    37       get { return ((IValueParameter<CuboidPackingBin>)Parameters["TargetBin"]).Value; }
    38       set { ((IValueParameter<CuboidPackingBin>)Parameters["TargetBin"]).Value = value; }
     47      get { return TargetBinParameter.Value; }
     48      set { TargetBinParameter.Value = value; }
    3949    }
    4050
    4151    public double Weight {
    42       get { return ((IFixedValueParameter<DoubleValue>)Parameters["Weight"]).Value.Value; }
    43       set { ((IFixedValueParameter<DoubleValue>)Parameters["Weight"]).Value.Value = value; }
     52      get { return WeightParameter.Value.Value; }
     53      set { WeightParameter.Value.Value = value; }
    4454    }
    4555
    4656    public int Material {
    47       get { return ((IFixedValueParameter<IntValue>)Parameters["Material"]).Value.Value; }
    48       set { ((IFixedValueParameter<IntValue>)Parameters["Material"]).Value.Value = value; }
     57      get { return MaterialParameter.Value.Value; }
     58      set { MaterialParameter.Value.Value = value; }
    4959    }
    5060
     
    5767    protected CuboidPackingItem(CuboidPackingItem original, Cloner cloner)
    5868      : base(original, cloner) {
     69      RegisterEvents();
    5970    }
    6071    public CuboidPackingItem()
     
    6374      Parameters.Add(new FixedValueParameter<DoubleValue>("Weight"));
    6475      Parameters.Add(new FixedValueParameter<IntValue>("Material"));
     76
     77      RegisterEvents();
    6578    }
    6679
     
    8396    }
    8497
     98    [StorableHook(HookType.AfterDeserialization)]
     99    private void AfterDeserialization() {
     100      RegisterEvents();
     101    }
     102
    85103    public override IDeepCloneable Clone(Cloner cloner) {
    86104      return new CuboidPackingItem(this, cloner);
    87105    }
    88106
    89     public void AddTargetBinMeasures(int[] targetBinMeasures) {
    90       TargetBin = new CuboidPackingBin(targetBinMeasures[0], targetBinMeasures[1], targetBinMeasures[2]);
     107    private void RegisterEvents() {
     108      // only because of ToString override
     109      WeightParameter.Value.ValueChanged += (sender, args) => OnToStringChanged();
     110      MaterialParameter.Value.ValueChanged += (sender, args) => OnToStringChanged();
     111
     112      // target bin does not occur in ToString()
    91113    }
    92114
     115
    93116    public override string ToString() {
    94       return String.Format("CuboidPackingItem ({0}, {1}, {2}; w={3}, m={4})", this.Width, this.Height, this.Depth, this.Weight, this.Material);
     117      return string.Format("CuboidPackingItem ({0}, {1}, {2}; weight={3}, mat={4})", this.Width, this.Height, this.Depth, this.Weight, this.Material);
    95118    }
    96119  }
Note: See TracChangeset for help on using the changeset viewer.