diff options
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Models/HardwareParameter.cs')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Models/HardwareParameter.cs | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Models/HardwareParameter.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Models/HardwareParameter.cs new file mode 100644 index 000000000..33dbcad71 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Models/HardwareParameter.cs @@ -0,0 +1,122 @@ +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 +{ + public class HardwareParameter : ExtendedObject + { + public event EventHandler Selected; + + public HardwareComponent Component { get; set; } + + public RelayCommand DeleteCommand { get; set; } + + public String PropertyName { get; set; } + + private Object _defaultValue; + public Object DefaultValue + { + get { return _defaultValue; } + set + { + _defaultValue = value; + } + } + + public Type Type + { + get { return DefaultValue.GetType(); } + } + // updated after editing + private Object _actualValue = null; + public Object ActualValue + { + get { return _actualValue; } + set + { + _actualValue = value; + RaisePropertyChangedAuto(); + RaisePropertyChanged(nameof(IsDifferent)); + RaisePropertyChanged(nameof(IsValuesMatched)); + } + } + + // displayed during editing + 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()); + } + } + } + + + private void OnIsSelectedChanged() + { + if (IsSelected) + { + EditableValue = ActualValue != null ? ActualValue : DefaultValue; + } + else + { + if (EditableValue != null) + { + ActualValue = EditableValue; + } + } + } + + public bool IsDifferent + { + get + { + return (ActualValue != null); + } + } + + public bool IsValuesMatched + { + get + { + return ActualValue != null && ActualValue.ToString() == DefaultValue.ToString(); + } + } + + public void DeleteValue() + { + ActualValue = null; + EditableValue = null; + } + + public HardwareParameter() + { + DeleteCommand = new RelayCommand(DeleteValue); + } + } +} |
