using MECF.Framework.Common.OperationCenter;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace PunkHPX8_Themes.UserControls
{
    /// 
    /// VPWCellStatusControl.xaml 的交互逻辑
    /// 
    public partial class VPWCellStatusControl : UserControl
    {
        public VPWCellStatusControl()
        {
            InitializeComponent();
        }
        public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
         "ModuleName", typeof(string), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// 模块名称
        /// 
        public string ModuleName
        {
            get
            {
                return (string)this.GetValue(ModuleNameProperty);
            }
            set
            {
                this.SetValue(ModuleNameProperty, value);
            }
        }
        public static readonly DependencyProperty MachineStateProperty = DependencyProperty.Register(
            "MachineState", typeof(string), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// MachineState
        /// 
        public string MachineState
        {
            get
            {
                return (string)this.GetValue(MachineStateProperty);
            }
            set
            {
                this.SetValue(MachineStateProperty, value);
            }
        }
        public static readonly DependencyProperty WaterPressureProperty = DependencyProperty.Register(
            "WaterPressure", typeof(double), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// WaterPressure
        /// 
        public double WaterPressure
        {
            get
            {
                return (double)this.GetValue(WaterPressureProperty);
            }
            set
            {
                this.SetValue(WaterPressureProperty, value);
            }
        }
        public static readonly DependencyProperty PressureTargetProperty = DependencyProperty.Register(
            "PressureTarget", typeof(double), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// PressureTarget
        /// 
        public double PressureTarget
        {
            get
            {
                return (double)this.GetValue(PressureTargetProperty);
            }
            set
            {
                this.SetValue(PressureTargetProperty, value);
            }
        }
        public static readonly DependencyProperty ChamberOpenProperty = DependencyProperty.Register(
           "ChamberOpen", typeof(bool), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// ChamberOpen
        /// 
        public bool ChamberOpen
        {
            get
            {
                return (bool)this.GetValue(ChamberOpenProperty);
            }
            set
            {
                this.SetValue(ChamberOpenProperty, value);
            }
        }
        public static readonly DependencyProperty ChamberCloseProperty = DependencyProperty.Register(
    "ChamberClose", typeof(bool), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// ChamberClose
        /// 
        public bool ChamberClose
        {
            get
            {
                return (bool)this.GetValue(ChamberCloseProperty);
            }
            set
            {
                this.SetValue(ChamberCloseProperty, value);
            }
        }
        public static readonly DependencyProperty InputRotationSpeedProperty = DependencyProperty.Register(
            "InputRotationSpeed", typeof(int), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// InputRotationSpeed
        /// 
        public int InputRotationSpeed
        {
            get
            {
                return (int)this.GetValue(InputRotationSpeedProperty);
            }
            set
            {
                this.SetValue(InputRotationSpeedProperty, value);
            }
        }
        public static readonly DependencyProperty InputRotationTimeProperty = DependencyProperty.Register(
           "InputRotationTime", typeof(int), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// InputRotationTime
        /// 
        public int InputRotationTime
        {
            get
            {
                return (int)this.GetValue(InputRotationTimeProperty);
            }
            set
            {
                this.SetValue(InputRotationTimeProperty, value);
            }
        }
        public static readonly DependencyProperty WaferSizeProperty = DependencyProperty.Register(
    "WaferSize", typeof(int), typeof(VPWCellStatusControl), new FrameworkPropertyMetadata(200, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// WaferSize
        /// 
        public int WaferSize
        {
            get
            {
                return (int)this.GetValue(WaferSizeProperty);
            }
            set
            {
                this.SetValue(WaferSizeProperty, value);
            }
        }
        private void ChamberOpen_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"VPWMain1.ChamberDown");
        }
        private void ChamberClose_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"VPWMain1.ChamberUp");
        }
        private void RotationStart_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartRotation", InputRotationSpeed, InputRotationTime);
        }
        private void RotationStop_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StopRotation");
        }
    }
}