using MECF.Framework.Common.CommonData.PUF;
using MECF.Framework.Common.CommonData.SRD;
using MECF.Framework.Common.OperationCenter;
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;
namespace CyberX8_Themes.UserControls
{
    /// 
    /// SRDMoveControl.xaml 的交互逻辑
    /// 
    public partial class SRDMoveControl : UserControl
    {
        public SRDMoveControl()
        {
            InitializeComponent();
        }
        #region 属性
        public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
           "ModuleName", typeof(string), typeof(SRDMoveControl),
           new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// 模块名称
        /// 
        public string ModuleName
        {
            get
            {
                return (string)this.GetValue(ModuleNameProperty);
            }
            set
            {
                this.SetValue(ModuleNameProperty, value);
            }
        }
        public static readonly DependencyProperty InputRotationTimeProperty = DependencyProperty.Register(
           "InputRotationTime", typeof(double), typeof(SRDMoveControl), new FrameworkPropertyMetadata(0.00, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// InputRotationTime
        /// 
        public double InputRotationTime
        {
            get
            {
                return (double)this.GetValue(InputRotationTimeProperty);
            }
            set
            {
                this.SetValue(InputRotationTimeProperty, value);
            }
        }
        public static readonly DependencyProperty InputRotationSpeedProperty = DependencyProperty.Register(
            "InputRotationSpeed", typeof(double), typeof(SRDMoveControl), new FrameworkPropertyMetadata(0.00, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// InputRotationSpeed
        /// 
        public double InputRotationSpeed
        {
            get
            {
                return (double)this.GetValue(InputRotationSpeedProperty);
            }
            set
            {
                this.SetValue(InputRotationSpeedProperty, value);
            }
        }
        public static readonly DependencyProperty CommonDataProperty = DependencyProperty.Register(
          "CommonData", typeof(SrdCommonData), typeof(SRDMoveControl), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// CommonData
        /// 
        public SrdCommonData CommonData
        {
            get
            {
                return (SrdCommonData)this.GetValue(CommonDataProperty);
            }
            set
            {
                this.SetValue(CommonDataProperty, value);
            }
        }
        #endregion
        /// 
        /// SRD关门
        /// 
        /// 
        /// 
        private void Closed_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.DoorClose");
        }
        /// 
        /// SRD开门
        /// 
        /// 
        /// 
        private void Open_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Common.DoorOpen");
        }
        /// 
        /// Arm运动到SRD1/2.Arm.Center位置
        /// 
        /// 
        /// 
        private void Out_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Arm.GotoSavedPosition", "TargetPosition", $"{ModuleName}.Arm.Center");
        }
        /// 
        /// Arm运动到SRD1/2.Arm.Home位置
        /// 
        /// 
        /// 
        private void In_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Arm.GotoSavedPosition", "TargetPosition", $"{ModuleName}.Arm.Home");
        }
        /// 
        /// Rotation旋转开始
        /// 
        /// 
        /// 
        private void Start_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.StartRotation", InputRotationTime, InputRotationSpeed);
        }
        /// 
        /// Rotation旋转停止
        /// 
        /// 
        /// 
        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Rotation.Stop");
        }            
    }
}