Free cookie consent management tool by TermsFeed Policy Generator

source: addons/HeuristicLab.FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/EmptyBoxChartElementGenerator.cs @ 16573

Last change on this file since 16573 was 16573, checked in by gkronber, 5 years ago

#2520: changed HeuristicLab.FLA addon to compile with new HL.Persistence

File size: 3.7 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Drawing;
4using System.Drawing.Drawing2D;
5using System.Linq;
6using System.Text;
7using HeuristicLab.Common;
8using HeuristicLab.Core;
9using HeuristicLab.Data;
10using HeuristicLab.Optimization;
11using HeuristicLab.Parameters;
12using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
13using HEAL.Attic;
14
15namespace HeuristicLab.Analysis.FitnessLandscape.BoxCharts {
16 
17  [StorableType("A3B05023-AFF2-4550-A78C-F0513F308316")]
18  public class EmptyBoxChartElementGenerator : ParameterizedNamedItem, IBoxChartElementGenerator {
19
20    public ValueParameter<IntValue> XParameter {
21      get { return (ValueParameter<IntValue>)Parameters["X"]; }
22    }
23    public ValueParameter<IntValue> YParameter {
24      get { return (ValueParameter<IntValue>)Parameters["Y"]; }
25    }
26    public ValueParameter<IntValue> RowSpanParameter {
27      get { return (ValueParameter<IntValue>)Parameters["RowSpan"]; }
28    }
29    public ValueParameter<IntValue> ColSpanParameter {
30      get { return (ValueParameter<IntValue>)Parameters["ColSpan"]; }
31    }
32
33    public int X {
34      get { return XParameter.Value.Value; }
35      set { XParameter.Value.Value = value; }
36    }
37    public int Y {
38      get { return YParameter.Value.Value; }
39      set { YParameter.Value.Value = value; }
40    }
41    public int ColSpan {
42      get { return ColSpanParameter.Value.Value; }
43      set { ColSpanParameter.Value.Value = value; }
44    }
45    public int RowSpan {
46      get { return RowSpanParameter.Value.Value; }
47      set { RowSpanParameter.Value.Value = value; }
48    }
49
50    #region Construction & Cloning
51    [StorableConstructor]
52    protected EmptyBoxChartElementGenerator(StorableConstructorFlag _) : base(_) { }
53    protected EmptyBoxChartElementGenerator(EmptyBoxChartElementGenerator original, Cloner cloner) : base(original, cloner) {
54      RegisterEvents();
55    }
56    public EmptyBoxChartElementGenerator() {
57      Parameters.Add(new ValueParameter<IntValue>("X", "The x coordinate of the generated element.", new IntValue(0)));
58      Parameters.Add(new ValueParameter<IntValue>("Y", "The y coordinate of the generated element.", new IntValue(0)));
59      Parameters.Add(new ValueParameter<IntValue>("RowSpan", "The number of rows occupied by the generated element.", new IntValue(1)));
60      Parameters.Add(new ValueParameter<IntValue>("ColSpan", "The number of columns occupied by the generated element.", new IntValue(1)));
61      RegisterEvents();
62      if (GetType() == typeof(EmptyBoxChartElementGenerator))
63        UpdateName();
64    }
65    public override IDeepCloneable Clone(Cloner cloner) {
66      return new EmptyBoxChartElementGenerator(this, cloner);
67    }
68    [StorableHook(HookType.AfterDeserialization)]
69    private void AfterDeserialization() {
70      RegisterEvents();
71    }
72    #endregion
73
74    private void RegisterEvents() {
75      XParameter.ToStringChanged += new EventHandler(Parameters_Changed);
76      YParameter.ToStringChanged += new EventHandler(Parameters_Changed);
77      RowSpanParameter.ToStringChanged +=new EventHandler(Parameters_Changed);
78      ColSpanParameter.ToStringChanged += new EventHandler(Parameters_Changed);
79    }
80
81    private void Parameters_Changed(object sender, EventArgs e) {
82      UpdateName();
83    }
84
85    protected virtual string CalculateName() {
86      var sb = new StringBuilder();
87      sb.AppendFormat("({0}, {1})", X, Y);
88      if (RowSpan != 1 || ColSpan != 1)
89        sb.AppendFormat("+[{0}, {1}]", ColSpan, RowSpan);
90      return sb.ToString();
91    }
92
93    protected void UpdateName() {
94      name = CalculateName();
95      OnNameChanged();
96    }
97
98    public virtual void Draw(IRun run, Graphics g) { }
99  }
100}
Note: See TracBrowser for help on using the repository browser.