blob: 9e30874e943e9b0c5004d9afe0bdf65f60be69cd (
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
|
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>
/// <remarks>
/// This class provides data state changes.
/// </remarks>
public class HardwareParameter : ExtendedObject, IHasDifference
{
#region properties
public HardwareComponent Component { get; set; }
public String PropertyName { get; set; }
/// <summary>
/// The default value contains data from database
/// </summary>
private Object _defaultValue;
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(); }
}
/// <summary>
/// The value contains modified data, saved in database or immediately after editing in this session
/// </summary>
private Object _actualValue = null;
public Object ActualValue
{
get { return _actualValue; }
set
{
_actualValue = value;
RaisePropertyChangedAuto();
RaisePropertyChanged(nameof(HasDifferences));
RaisePropertyChanged(nameof(IsValuesMatched));
}
}
/// <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>
private Object _editableValue = null;
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 properties
#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
}
}
|