summaryrefslogtreecommitdiff
path: root/grapher/Models/Options/ActiveValueLabel.cs
blob: b2355b5db9beac80f63d4a14b569c3aa7df308b1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace grapher.Models.Options
{
    public class ActiveValueLabel
    {
        #region Constants

        public const string DefaultFormatString = "0.######";
        public static readonly Color ActiveValueFontColor = Color.FromArgb(255, 65, 65, 65);

        #endregion Constants

        #region Fields

        private string _prefix;
        private string _value;

        #endregion Fields

        #region Constructors

        public ActiveValueLabel(Label valueLabel, Label centeringLabel)
        {
            ValueLabel = valueLabel;
            ValueLabel.ForeColor = ActiveValueFontColor;
            Left = centeringLabel.Left;
            Width = centeringLabel.Width;
            ValueLabel.AutoSize = false;
            ValueLabel.TextAlign = ContentAlignment.MiddleCenter;

            FormatString = DefaultFormatString;
            Prefix = string.Empty;
        }

        #endregion Constructors

        #region Properties

        public Label ValueLabel { get; }

        public string FormatString { get; set; }

        public string Prefix 
        { 
            get { return _prefix; }
            set 
            {
                _prefix = value;
                RefreshText();
            } 
        }

        private string Value
        { 
            get { return _value; }
            set 
            {
                _value = value;
                RefreshText();
            } 
        }

        public int Left
        {
            get 
            {
                return ValueLabel.Left;
            }

            set
            {
                ValueLabel.Left = value;
            }
        }

        public int Width
        {
            get 
            {
                return ValueLabel.Width;
            }

            set
            {
                ValueLabel.Width = value;
            }
        }

        #endregion Properties

        #region Methods

        public void Hide()
        {
            ValueLabel.Hide();
        }

        public void Show()
        {
            ValueLabel.Show();
        }

        public void SetValue(double value)
        {
            SetValue(value.ToString(FormatString));
        }

        public void SetValue(string value)
        {
            Value = value;
        }

        public void RefreshText()
        {
            ValueLabel.Text = string.IsNullOrWhiteSpace(Prefix) ? Value: $"{Prefix}: {Value}";
        }

        #endregion Methods
    }
}