using MECF.Framework.Common.OperationCenter;
using PunkHPX8_Themes.CustomControls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
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;
using PunkHPX8_Core;
namespace PunkHPX8_Themes.UserControls
{
    /// 
    /// Clamp.xaml 的交互逻辑
    /// 
    public partial class Clamp : UserControl
    {
        public Clamp()
        {
            InitializeComponent();
        }
        public static readonly DependencyProperty LabelValueProperty = DependencyProperty.Register(
            "LabelValue", typeof(string), typeof(Clamp));
        public string LabelValue
        {
            get { return (string)this.GetValue(LabelValueProperty); }
            set { this.SetValue(LabelValueProperty, value); }
        }
        public static readonly DependencyProperty IsShowSignalProperty = DependencyProperty.Register(
            "IsShowSignal", typeof(bool), typeof(Clamp));
        public bool IsShowSignal
        {
            get { return (bool)this.GetValue(IsShowSignalProperty); }
            set { this.SetValue(IsShowSignalProperty, value); }
        }
        public static readonly DependencyProperty IsFlowing1Property = DependencyProperty.Register(
            "IsFlowing1", typeof(bool), typeof(Clamp), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsFlowing1
        {
            get { return (bool)this.GetValue(IsFlowing1Property); }
            set { this.SetValue(IsFlowing1Property, value); }
        }
        public static readonly DependencyProperty IsFlowing2Property = DependencyProperty.Register(
            "IsFlowing2", typeof(bool), typeof(Clamp),new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsFlowing2
        {
            get { return (bool)this.GetValue(IsFlowing2Property); }
            set { this.SetValue(IsFlowing2Property, value); }
        }
        public static readonly DependencyProperty IsFlowing3Property = DependencyProperty.Register(
    "IsFlowing3", typeof(bool), typeof(Clamp), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsFlowing3
        {
            get { return (bool)this.GetValue(IsFlowing3Property); }
            set { this.SetValue(IsFlowing3Property, value); }
        }
        public static readonly DependencyProperty IsFlowing3EnableProperty = DependencyProperty.Register(
"IsFlowing3Enable", typeof(bool), typeof(Clamp), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsFlowing3Enable
        {
            get { return (bool)this.GetValue(IsFlowing3EnableProperty); }
            set { this.SetValue(IsFlowing3EnableProperty, value); }
        }
        public static readonly DependencyProperty IsMetalCellHighProperty = DependencyProperty.Register(
                "IsMetalCellHigh", typeof(bool), typeof(Clamp), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsMetalCellHigh
        {
            get { return (bool)this.GetValue(IsMetalCellHighProperty); }
            set { this.SetValue(IsMetalCellHighProperty, value); }
        }
        public static readonly DependencyProperty IsMetalCellLowProperty = DependencyProperty.Register(
        "IsMetalCellLow", typeof(bool), typeof(Clamp), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        public bool IsMetalCellLow
        {
            get { return (bool)this.GetValue(IsMetalCellLowProperty); }
            set { this.SetValue(IsMetalCellLowProperty, value); }
        }
        public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
           "ModuleName", typeof(string), typeof(Clamp),
           new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// 模块名称
        /// 
        public string ModuleName
        {
            get
            {
                return (string)this.GetValue(ModuleNameProperty);
            }
            set
            {
                this.SetValue(ModuleNameProperty, value);
            }
        }
        /// 
        /// Clamp Valve Control
        /// 
        /// 
        /// 
        private void ClampValveControl_Click(object sender, RoutedEventArgs e)
        {
            CommonValveControl commonValveControl = (CommonValveControl)sender;
            if (!commonValveControl.Status)
            {
                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.WHClampOn");
            }
            else
            {
                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.WHClampOff");
            }
        }
        /// 
        /// Unclamp Valve Control
        /// 
        /// 
        /// 
        private void UnclampValveControl_Click(object sender, RoutedEventArgs e)
        {
            CommonValveControl commonValveControl = (CommonValveControl)sender;
            if (!commonValveControl.Status)
            {
                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.WHUnclampOn");
            }
            else
            {
                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.WHUnclampOff");
            }
        }
        /// 
        /// Unclamp Valve Control
        /// 
        /// 
        /// 
        private void CellFlowValve_Click(object sender, RoutedEventArgs e)
        {
            CommonValveControl commonValveControl = (CommonValveControl)sender;
            if (!commonValveControl.Status)
            {
                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.CellFlowValveOn");
            }
            else
            {
                InvokeClient.Instance.Service.DoOperation($"{ModuleName}.CellFlowValveOff");
            }
        }
        private void StackPanel_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            GlobalEvents.OnSwitchFixedTabItem("HardWare", "Modules", $"{ModuleName}");
        }
    }
}