using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Xml.Serialization; using Tango.Core; using Tango.Core.Helpers; using Tango.BL.Entities; using System.Reflection; using Tango.BL; using Tango.Core.DI; using Tango.MachineStudio.Common.Buid; namespace Tango.MachineStudio.Technician.TechItems { /// /// Represents a tech item base class. /// /// [XmlInclude(typeof(DispenserItem))] [XmlInclude(typeof(DigitalOutItem))] [XmlInclude(typeof(MeterItem))] [XmlInclude(typeof(MonitorItem))] [XmlInclude(typeof(MotorItem))] [XmlInclude(typeof(MultiGraphItem))] [XmlInclude(typeof(SingleGraphItem))] [XmlInclude(typeof(ThreadMotionItem))] [XmlInclude(typeof(MotorGroupItem))] [XmlInclude(typeof(DigitalInItem))] [XmlInclude(typeof(ControllerItem))] [XmlInclude(typeof(PidItem))] [XmlInclude(typeof(WinderItem))] [XmlInclude(typeof(DancerItem))] [XmlInclude(typeof(SpeedSensorItem))] [XmlInclude(typeof(BlowerItem))] [XmlInclude(typeof(BreakSensorItem))] [XmlInclude(typeof(ProcessParametersItem))] [XmlInclude(typeof(JobRunnerItem))] [XmlInclude(typeof(TextItem))] [XmlInclude(typeof(HeaterItem))] [XmlInclude(typeof(MonitorRecorderItem))] [XmlInclude(typeof(ValveItem))] public abstract class TechItem : ExtendedObject { /// /// Initializes a new instance of the class. /// public TechItem() { ID = Guid.NewGuid().ToString(); Name = "Untitled"; Adapter = ObservablesStaticCollections.Instance; _color = Colors.DodgerBlue; } private String _description; /// /// Gets or sets the description. /// [XmlIgnore] public String Description { get { return _description; } set { _description = value; RaisePropertyChangedAuto(); } } private BitmapSource _image; /// /// Gets or sets the image. /// [XmlIgnore] public BitmapSource Image { get { return _image; } set { _image = value; RaisePropertyChangedAuto(); } } /// /// Gets or sets the db adapter. /// [XmlIgnore] public ObservablesStaticCollections Adapter { get; set; } private String _id; /// /// Unique Item ID. /// public String ID { get { return _id; } set { _id = value; RaisePropertyChanged(nameof(ID)); } } private String _name; /// /// item Name. /// [XmlIgnore] public String Name { get { return _name; } set { _name = value; RaisePropertyChanged(nameof(Name)); } } private String _customName; /// /// Gets or sets the name of the custom. /// public String CustomName { get { return _customName; } set { _customName = value; RaisePropertyChangedAuto(); RaisePropertyChanged(nameof(TechNameFinal)); } } private double _left; /// /// Item Left. /// public double Left { get { return _left; } set { _left = value; RaisePropertyChanged(nameof(Left)); } } private double _top; /// /// Item Top. /// public double Top { get { return _top; } set { _top = value; RaisePropertyChanged(nameof(Top)); } } private double _width; /// /// Item Width. /// public double Width { get { return _width; } set { _width = value; RaisePropertyChanged(nameof(Width)); } } private double _height; /// /// Item Height. /// public double Height { get { return _height; } set { _height = value; RaisePropertyChanged(nameof(Height)); } } private double _angle; /// /// Item Angle. /// public double Angle { get { return _angle; } set { _angle = value; RaisePropertyChanged(nameof(Angle)); } } private String _techName; /// /// Gets or sets the tech item name. /// [XmlIgnore] public String TechName { get { return _techName; } set { _techName = value; RaisePropertyChangedAuto(); RaisePropertyChanged(nameof(TechNameFinal)); } } private String _techNameFinal; public String TechNameFinal { get { if (CustomName.IsNotNullOrEmpty()) { return CustomName; } else { return _techName; } } set { _techNameFinal = value; } } /// /// Gets or sets the db tech item guid. /// public String ItemGuid { get; set; } private Color _color; /// /// Gets or sets the item color. /// [XmlIgnore] public Color Color { get { return _color; } set { _color = value; RaisePropertyChanged(nameof(Color)); _colorNumber = ColorHelper.ColorToInteger(value); } } private int _colorNumber; /// /// Gets or sets the color number (for XML serialization). /// public int ColorNumber { get { return _colorNumber; } set { _colorNumber = value; _color = ColorHelper.IntegerToColor(value); _color.A = 255; RaisePropertyChanged(nameof(Color)); } } /// /// Clones this instance. /// /// public virtual TechItem Clone() { TechItem cloned = Activator.CreateInstance(this.GetType()) as TechItem; cloned.Left = Left; cloned.Top = Top; cloned.Width = Width; cloned.Height = Height; cloned.Angle = Angle; cloned.Color = Color; return cloned; } /// /// Gets the available tech items. /// /// public static List GetAvailableTechItems() { List items = new List(); var buildProvder = TangoIOC.Default.GetInstance(); foreach (var type in typeof(TechItem).Assembly.GetTypes().Where(x => typeof(TechItem).IsAssignableFrom(x) && !x.IsAbstract).Where(x => x.GetCustomAttribute().SupportsLite || buildProvder.BuildType == MSBuildType.Default).OrderBy(x => x.GetCustomAttribute().Index)) { items.Add(Activator.CreateInstance(type) as TechItem); } return items; } /// /// Sets the bounds. /// /// The bounds. public void SetBounds(Rect bounds) { Left = bounds.Left; Top = bounds.Top; Width = bounds.Width; Height = bounds.Height; } /// /// Gets the bounds. /// /// public Rect GetBounds() { return new Rect(Left, Top, Width, Height); } } }