Sic.Framework/MECF.Framework.UI.Client/Ctrlib/UnitControls/FoupTopView3.xaml.cs

193 lines
7.1 KiB
C#

using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using MECF.Framework.Common.CommonData;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.UI.Client.Annotations;
namespace MECF.Framework.UI.Client.Ctrlib.UnitControls
{
/// <summary>
/// Door.xaml 的交互逻辑
/// </summary>
public partial class FoupTopView3 : UserControl, INotifyPropertyChanged
{
public double CanvasYPosition { get; set; }
public bool _isFoupLoaded;
public bool IsFoupLoaded
{
get { return (bool)GetValue(IsFoupLoadedProperty); }
set
{
SetValue(IsFoupLoadedProperty, value);
CanvasYPosition = value ? -20 : 0;
OnPropertyChanged(nameof(CanvasYPosition));
}
}
public static readonly DependencyProperty IsFoupLoadedProperty =
DependencyProperty.Register("IsFoupLoaded", typeof(bool), typeof(FoupTopView3),
new PropertyMetadata(false, PropertyChangedCallback));
public string ModuleName
{
get { return (string)GetValue(ModuleNameProperty); }
set { SetValue(ModuleNameProperty, value); }
}
public static readonly DependencyProperty ModuleNameProperty =
DependencyProperty.Register("ModuleName", typeof(string), typeof(FoupTopView3),
new PropertyMetadata("LP1", PropertyChangedCallback));
public Visibility MenuVisibility
{
get { return (Visibility)this.GetValue(MenuVisibilityProperty); }
set { this.SetValue(MenuVisibilityProperty, value); }
}
public static readonly DependencyProperty MenuVisibilityProperty =
DependencyProperty.Register("MenuVisibility", typeof(Visibility), typeof(FoupTopView3),
new FrameworkPropertyMetadata(Visibility.Visible, FrameworkPropertyMetadataOptions.AffectsRender));
public LPMenuEnable DeviceData
{
get
{
return (LPMenuEnable)this.GetValue(DeviceDataProperty);
}
set
{
this.SetValue(DeviceDataProperty, value);
}
}
public static readonly DependencyProperty DeviceDataProperty = DependencyProperty.Register(
"DeviceData", typeof(LPMenuEnable), typeof(FoupTopView3),
new FrameworkPropertyMetadata(new LPMenuEnable(), FrameworkPropertyMetadataOptions.AffectsRender));
public FoupTopView3()
{
InitializeComponent();
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
static void PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var self = (FoupTopView3)d;
switch (e.Property.Name)
{
case "IsFoupLoaded":
self.CanvasYPosition = (bool)e.NewValue ? -30 : 0;
self.OnPropertyChanged(nameof(CanvasYPosition));
break;
default:
self.OnPropertyChanged(nameof(e.Property.Name));
break;
}
}
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
canvas.ContextMenu.Visibility = MenuVisibility;
if (DeviceData == null)
return;
if (MenuVisibility == Visibility.Visible && canvas.ContextMenu.Items != null && canvas.ContextMenu.Items.Count == 13)
{
((MenuItem)canvas.ContextMenu.Items[1]).IsEnabled = DeviceData.IsResetEnable;
((MenuItem)canvas.ContextMenu.Items[2]).IsEnabled = DeviceData.IsAbortEnable;
((MenuItem)canvas.ContextMenu.Items[3]).IsEnabled = DeviceData.IsLoadEnable;
((MenuItem)canvas.ContextMenu.Items[4]).IsEnabled = DeviceData.IsUnloadEnable;
((MenuItem)canvas.ContextMenu.Items[5]).IsEnabled = DeviceData.IsReadCarrierIDEnable;
((MenuItem)canvas.ContextMenu.Items[6]).IsEnabled = DeviceData.IsClampEnable;
((MenuItem)canvas.ContextMenu.Items[7]).IsEnabled = DeviceData.IsUnclampEnable;
((MenuItem)canvas.ContextMenu.Items[8]).IsEnabled = DeviceData.IsDockEnable;
((MenuItem)canvas.ContextMenu.Items[9]).IsEnabled = DeviceData.IsUndockEnable;
((MenuItem)canvas.ContextMenu.Items[10]).IsEnabled = DeviceData.IsOpenEnable;
((MenuItem)canvas.ContextMenu.Items[11]).IsEnabled = DeviceData.IsCloseEnable;
((MenuItem)canvas.ContextMenu.Items[12]).IsEnabled = DeviceData.IsMapEnable;
}
}
private void Home(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Home");
}
private void Reset(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Reset");
}
private void Abort(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");
}
private void ReadCarrierID(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ReadCarrierId");
}
private void Load(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Load");
}
private void Unload(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Unload");
}
private void Clamp(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Clamp");
}
private void Unclamp(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Unclamp");
}
private void Dock(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Dock");
}
private void Undock(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Undock");
}
private void OpenDoor(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.OpenDoor");
}
private void CloseDoor(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.CloseDoor");
}
private void Map(object sender, RoutedEventArgs e)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Map");
}
}
}