using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; using System.Xml.Serialization; using Tango.BL.Entities; using Tango.Core.Commands; using Tango.PMR.Diagnostics; using Tango.SharedUI.Helpers; namespace Tango.MachineStudio.Technician.TechItems { /// /// Represents a heater controller. /// /// [TechItem(10, true)] public class HeaterItem : TechItem { public event Action SetCommandClicked; private TechHeater _techHeater; /// /// Gets or sets the db tech monitor. /// [XmlIgnore] public TechHeater TechHeater { get { return _techHeater; } set { _techHeater = value; RaisePropertyChangedAuto(); TechName = _techHeater != null ? _techHeater.Description : null; ItemGuid = value != null ? value.Guid : null; } } /// /// Gets or sets the set command. /// [XmlIgnore] public RelayCommand SetCommand { get; set; } /// /// Initializes a new instance of the class. /// public HeaterItem() : base() { Name = "Heater Controller"; Color = Colors.White; Description = "Heater Controller"; Image = ResourceHelper.GetImageFromResources("Images/heater-controller.png"); SetCommand = new RelayCommand(() => { SetCommandClicked?.Invoke(); IsEditing = false; }, (x) => HeaterState.CurrentValue != SetPoint); HeaterState = new HeaterState(); } /// /// Initializes a new instance of the class. /// /// The db tech monitor. public HeaterItem(TechHeater techHeater) : this() { TechHeater = techHeater; } private HeaterState _heaterState; /// /// Gets or sets the state of the heater. /// public HeaterState HeaterState { get { return _heaterState; } set { _heaterState = value; RaisePropertyChangedAuto(); if (!IsEditing) { SetPoint = _heaterState.SetPoint; } InvokeUI(() => { SetCommand.RaiseCanExecuteChanged(); }); } } private double _setPoint; /// /// Gets or sets the set point. /// public double SetPoint { get { return _setPoint; } set { _setPoint = value; RaisePropertyChangedAuto(); } } private bool _isEditing; [XmlIgnore] public bool IsEditing { get { return _isEditing; } set { _isEditing = value; RaisePropertyChangedAuto(); } } /// /// Clones this instance. /// /// public override TechItem Clone() { HeaterItem cloned = base.Clone() as HeaterItem; cloned.TechHeater = TechHeater; return cloned; } } }