blob: 5bddfb02ee54b89ccc882efc920cd3a1c789a102 (
plain)
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Core;
using Tango.Core.Commands;
namespace Tango.MachineStudio.MachineDesigner.Models
{
/// <summary>
/// The HardwareParameter class.
/// Contains default/editable/actual value and data type of each hardware parameter reflected in .
/// </summary>
public class HardwareParameter : ExtendedObject, IHasDifference
{
#region Properties
public HardwareComponent Component { get; set; }
public String PropertyName { get; set; }
private Object _defaultValue;
/// <summary>
/// The default value contains data from database
/// </summary>
public Object DefaultValue
{
get { return _defaultValue; }
set
{
_defaultValue = value;
}
}
/// <summary>
/// The type of hardware parameter is used for display correct ui element.
/// Can be boolean, int32, or Double
/// </summary>
public Type Type
{
get { return DefaultValue.GetType(); }
}
private Object _actualValue = null;
/// <summary>
/// The value contains modified data, saved in database or immediately after editing in this session.
/// </summary>
public Object ActualValue
{
get { return _actualValue; }
set
{
_actualValue = value;
RaisePropertyChangedAuto();
RaisePropertyChanged(nameof(HasDifferences));
RaisePropertyChanged(nameof(IsValuesMatched));
}
}
private Object _editableValue = null;
/// <summary>
/// The editable value contains value displayed in edit box in UI.
/// Initialization the value occurs by clicking in UI and the value will be equal actual value if it exists or default value.
/// </summary>
public Object EditableValue
{
get { return _editableValue; }
set
{
_editableValue = value;
RaisePropertyChangedAuto();
}
}
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
OnIsSelectedChanged();
RaisePropertyChangedAuto();
if (_isSelected)
{
Selected?.Invoke(this, new EventArgs());
}
}
}
/// <summary>
/// Used in UI to display modified value
/// </summary>
public bool HasDifferences
{
get
{
return (ActualValue != null);
}
}
/// <summary>
/// Used to display warning explanation icon in case actual value equals default value
/// </summary>
public bool IsValuesMatched
{
get
{
return ActualValue != null && ActualValue.ToString() == DefaultValue.ToString();
}
}
#endregion
#region events
/// <summary>
/// Occurs when start select mode.
/// Used to set in all others Parameter IsSelected to false except this.
/// </summary>
public event EventHandler Selected;
private void OnIsSelectedChanged()
{
if (IsSelected)
{
EditableValue = ActualValue != null ? ActualValue : DefaultValue;
}
else
{
if (EditableValue != null)
{
ActualValue = EditableValue;
}
}
}
#endregion
#region Constructors
public HardwareParameter()
{
DeleteCommand = new RelayCommand(DeleteValue);
}
#endregion
#region Commands
public RelayCommand DeleteCommand { get; set; }
public void DeleteValue()
{
ActualValue = null;
EditableValue = null;
}
#endregion
}
}
|