Free cookie consent management tool by TermsFeed Policy Generator

source: addons/HeuristicLab.FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/BoxChart/StringValueBoxChartElementGenerator.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.2 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("E04F26F6-E8CF-4EF1-96AC-B3FFF38E4ACE")]
18  public class StringValueBoxChartElementGenerator : EmptyBoxChartElementGenerator {
19
20    public ValueParameter<StringValue> ValueNameParameter {
21      get { return (ValueParameter<StringValue>)Parameters["ValueName"]; }
22    }
23    public ValueParameter<IntValue> FontSizeParameter {
24      get { return (ValueParameter<IntValue>) Parameters["FontSize"]; }
25    }
26
27    protected string ValueName { get { return ValueNameParameter.Value.Value; } }
28    protected int FontSize { get { return FontSizeParameter.Value.Value; }}
29
30    #region Construction & Cloning
31
32    [StorableConstructor]
33    protected StringValueBoxChartElementGenerator(StorableConstructorFlag _) : base(_) { }
34    protected StringValueBoxChartElementGenerator(StringValueBoxChartElementGenerator original, Cloner cloner) : base(original, cloner) {
35      RegisterEvents();
36    }
37    public StringValueBoxChartElementGenerator() {
38      Parameters.Add(new ValueParameter<StringValue>("ValueName", "The name of the result of parameter ot be visualized.", new StringValue("Value")));
39      Parameters.Add(new ValueParameter<IntValue>("FontSize", "The font size to be used for the text.", new IntValue(11)));
40      RegisterEvents();
41      if (GetType() == typeof(StringValueBoxChartElementGenerator))
42        UpdateName();
43    }
44    public override IDeepCloneable Clone(Cloner cloner) {
45      return new StringValueBoxChartElementGenerator(this, cloner);
46    }
47    [StorableHook(HookType.AfterDeserialization)]
48    private void AfterDeserialization() {
49      RegisterEvents();
50    }
51    #endregion
52
53    private void RegisterEvents() {
54      ValueNameParameter.ToStringChanged += new EventHandler(Parameters_Changed);
55      FontSizeParameter.ToStringChanged += new EventHandler(Parameters_Changed);
56    }
57
58    private void Parameters_Changed(object sender, EventArgs eventArgs) {
59      UpdateName();
60    }
61
62    protected override string CalculateName() {
63      return string.Format("{0} str {1}", base.CalculateName(), ValueName);
64    }
65
66    private string GetValue(IRun run) {
67      IItem value;
68      run.Results.TryGetValue(ValueName, out value);
69      if (value != null)
70        return value.ToString();
71      run.Parameters.TryGetValue(ValueName, out value);
72      if (value != null)
73        return value.ToString();
74      return "";
75    }
76
77    public override void Draw(IRun run, Graphics g) {
78      var value = GetValue(run);
79      using(var font = new Font("Helvetica", FontSize)) {
80        var size = g.MeasureString(value, font);
81        g.DrawString(value, font, Brushes.Black,
82          g.ClipBounds.Left+(g.ClipBounds.Width - size.Width)/2,
83          g.ClipBounds.Top+(g.ClipBounds.Height - size.Height)/2);
84      }
85    }
86  }
87}
Note: See TracBrowser for help on using the repository browser.