| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 | using Aitex.Core.Common;using Caliburn.Micro;using MECF.Framework.Common.OperationCenter;using OpenSEMI.Ctrlib.Controls;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;namespace PunkHPX8_MainPages.Unity{    public class MenuElement    {        public string Name { get; set; }        public string Invoke { get; set; }        public bool IsSeparator { get; set; }    }    public class ContextMenuManager    {        public bool ShowAligner { get; set; }        public bool ShowCooling { get; set; }        public ContextMenuManager()        {            _slotMenus = InitMenus(_SlotMenuElements);            _carrierMenus = InitMenus(_carrierMenuElements);            ShowAligner = true;            ShowCooling = true;        }        #region single Instance        private static ContextMenuManager m_Instance = null;        public static ContextMenuManager Instance        {            get            {                if (m_Instance == null)                {                    m_Instance = new ContextMenuManager();                }                return m_Instance;            }        }        #endregion        #region Slot Menus        private ContextMenu _slotMenus;        public ContextMenu SlotMenus        {            get { return _slotMenus; }        }        private readonly List<MenuElement> _SlotMenuElements = new List<MenuElement>() {            new MenuElement(){ Name="Create Wafer", Invoke="CreateWafer"},            new MenuElement(){ Name="Delete Wafer", Invoke="DeleteWafer"},            //new MenuElement(){ Name="-", IsSeparator = true},            //new MenuElement(){ Name="Return Wafer", Invoke="ReturnWafer"},            //new MenuElement(){ Name="Return Wafer", Invoke="ReturnWafer"}        };        public void OnContextMenuClick(object sender, RoutedEventArgs args)        {            try            {                MenuItem m_menu = sender as MenuItem;                Slot CurrentSlot = ContextMenuService.GetPlacementTarget(LogicalTreeHelper.GetParent(m_menu)) as Slot;                if (CurrentSlot == null)                    return;                MenuElement ele = m_menu.Tag as MenuElement;                             InvokeClient.Instance.Service.DoOperation(ele.Invoke, CurrentSlot.ModuleID, CurrentSlot.SlotID);            }            catch             {                //LOG.Write(ex);            }        }        private ContextMenu InitMenus(List<MenuElement> menus)        {            ContextMenu cm = new ContextMenu();            foreach (MenuElement element in menus)            {                if (element.IsSeparator)                {                    cm.Items.Add(new Separator());                }                else                {                    MenuItem m_item = new MenuItem();                    m_item.Header = element.Name;                    m_item.Tag = element;                    m_item.Click += new RoutedEventHandler(OnContextMenuClick);                    m_item.IsEnabled = true;                    cm.Items.Add(m_item);                }            }            return cm;        }        public bool IsAutoMode { get; set; }        public bool EnableAuto        {            get { return !IsAutoMode; }        }        public ContextMenu GetSlotMenus(Slot slot)        {                       if (slot != null)            {                MenuItem createWafer = _slotMenus.Items.GetItemAt(0) as MenuItem;                MenuItem deleteWafer = _slotMenus.Items.GetItemAt(1) as MenuItem;                //MenuItem returnWafer = _slotMenus.Items.GetItemAt(2) as MenuItem;                createWafer.IsEnabled = ((WaferStatus)slot.WaferStatus == WaferStatus.Empty ? true : false) && EnableAuto;                //createWafer.IsChecked= ((WaferStatus)slot.WaferStatus == WaferStatus.Empty ? false : true) && EnableAuto;                deleteWafer.IsEnabled = ((WaferStatus)slot.WaferStatus == WaferStatus.Empty ? false : true) && EnableAuto;                //deleteWafer.IsChecked = ((WaferStatus)slot.WaferStatus == WaferStatus.Empty ? true : false) && EnableAuto;                //returnWafer.Visibility = ((WaferStatus)slot.WaferStatus == WaferStatus.Empty ? false : true) && !(slot.ModuleID.StartsWith("LP")||slot.ModuleID.StartsWith("Dummy"))? Visibility.Visible : Visibility.Collapsed;            }            return _slotMenus;        }        #endregion        #region Carrier menus        private ContextMenu _carrierMenus;        public ContextMenu CarrierMenus        {            get { return _carrierMenus; }        }        private readonly List<MenuElement> _carrierMenuElements = new List<MenuElement>() {            new MenuElement(){ Name="Create Carrier", Invoke="System.CreateCarrier"},            new MenuElement(){ Name="Delete Carrier", Invoke="System.DeleteCarrier"},        };        public void OnCarrierContextMenuClick(object sender, RoutedEventArgs args)        {            //try            //{            //    MenuItem menuItem = sender as MenuItem;            //    CarrierContentControl locateCarrier = ContextMenuService.GetPlacementTarget(LogicalTreeHelper.GetParent(menuItem)) as CarrierContentControl;            //    if (locateCarrier == null)            //        return;            //    MenuElement ele = menuItem.Tag as MenuElement;            //    InvokeClient.Instance.Service.DoOperation(ele.Invoke, locateCarrier.ModuleID, locateCarrier.CarrierID);            //}            //catch (Exception ex)            //{            //    LOG.Write(ex);            //}        }        //public ContextMenu GetCarrierMenus(CarrierContentControl carrier)        //{        //    if (carrier != null)        //    {        //        MenuItem createCarrier = _carrierMenus.Items.GetItemAt(0) as MenuItem;        //        MenuItem deleteWafer = _carrierMenus.Items.GetItemAt(1) as MenuItem;        //        createCarrier.IsEnabled = (WaferStatus)carrier.WaferStatus == WaferStatus.Empty ? true : false;        //        deleteWafer.IsEnabled = (WaferStatus)carrier.WaferStatus == WaferStatus.Empty ? false : true;        //    }        //    return _carrierMenus;        //}        #endregion    }}
 |