using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using Bolt.Toolkit.Wpf.Data;
namespace VirgoUI.Client.Controls.Parts
{
	/// 
	/// SingleArmRobot.xaml 的交互逻辑
	/// 
	public partial class SingleArmRobot : UserControl, INotifyPropertyChanged
	{
		protected int moveTime = 300;
		private const int AnimationTimeout = 3000;
		private string CurrentPosition
		{
			get; set;
		}
		public int MoveTime
		{
			get => moveTime;
			set
			{
				moveTime = value;
			}
		}
		public int RotateAngle
		{
			get { return (int)GetValue(RotateAngleProperty); }
			set { SetValue(RotateAngleProperty, value); }
		}
		// Using a DependencyProperty as the backing store for RotateAngel.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty RotateAngleProperty =
			DependencyProperty.Register("RotateAngel", typeof(int), typeof(SingleArmRobot), new PropertyMetadata(0));
		public Dictionary StationPosition
		{
			get { return (Dictionary)GetValue(StationPositionProperty); }
			set { SetValue(StationPositionProperty, value); }
		}
		// Using a DependencyProperty as the backing store for StationPosition.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty StationPositionProperty =
			DependencyProperty.Register("StationPosition", typeof(Dictionary), typeof(SingleArmRobot), new PropertyMetadata(null, StationPositionChangedCallback));
		public RobotMoveInfo RobotMoveInfo
		{
			get { return (RobotMoveInfo)GetValue(RobotMoveInfoProperty); }
			set { SetValue(RobotMoveInfoProperty, value); }
		}
		public static readonly DependencyProperty RobotMoveInfoProperty =
			DependencyProperty.Register("RobotMoveInfo", typeof(RobotMoveInfo), typeof(SingleArmRobot), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
		public WaferData Wafer
		{
			get { return (WaferData)GetValue(WaferProperty); }
			set { SetValue(WaferProperty, value); }
		}
		// Using a DependencyProperty as the backing store for Wafer.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty WaferProperty =
			DependencyProperty.Register("Wafer", typeof(WaferData), typeof(SingleArmRobot), new PropertyMetadata(null));
		public string Station
		{
			get { return (string)GetValue(StationProperty); }
			set { SetValue(StationProperty, value); }
		}
		// Using a DependencyProperty as the backing store for Station.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty StationProperty =
			DependencyProperty.Register("Station", typeof(string), typeof(SingleArmRobot), new PropertyMetadata("Robot"));
		public ICommand CreateDeleteWaferCommand
		{
			get { return (ICommand)GetValue(CreateDeleteWaferCommandProperty); }
			set { SetValue(CreateDeleteWaferCommandProperty, value); }
		}
		// Using a DependencyProperty as the backing store for CreateDeleteWaferCommand.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty CreateDeleteWaferCommandProperty =
			DependencyProperty.Register("CreateDeleteWaferCommand", typeof(ICommand), typeof(SingleArmRobot), new PropertyMetadata(null));
		public ICommand MoveWaferCommand
		{
			get { return (ICommand)GetValue(MoveWaferCommandProperty); }
			set { SetValue(MoveWaferCommandProperty, value); }
		}
		// Using a DependencyProperty as the backing store for MoveWaferCommand.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty MoveWaferCommandProperty =
			DependencyProperty.Register("MoveWaferCommand", typeof(ICommand), typeof(SingleArmRobot), new PropertyMetadata(null));
		public bool WaferPresent
		{
			get { return (bool)GetValue(WaferPresentProperty); }
			set { SetValue(WaferPresentProperty, value); }
		}
		// Using a DependencyProperty as the backing store for WaferPresent.  This enables animation, styling, binding, etc...
		public static readonly DependencyProperty WaferPresentProperty =
			DependencyProperty.Register("WaferPresent", typeof(bool), typeof(SingleArmRobot), new PropertyMetadata(false));
		private List