| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 | 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 Venus_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")? Visibility.Visible : Visibility.Collapsed;            }            return _slotMenus;        }        public void ReturnWafer(string menu, Slot p_from)        {            //try            //{            //    if (p_from == null || !p_from.IsValidSlot())            //        return;            //    //DialogButton btns = DialogButton.Transfer | DialogButton.Cancel;                   //    string info = " from " + p_from.ModuleID + " slot " + (p_from.SlotID + 1).ToString();            //    string message = "Are you sure to return the wafer: \n" + info;            //    //DialogButton m_dResult = DialogBox.ShowDialog(btns, DialogType.CONFIRM, message);            //    bool displayAlignerCondition = p_from.ModuleID == "LP1" || p_from.ModuleID == "LP2" || p_from.ModuleID == "LP3" || p_from.ModuleID == "EfemRobot"            //        || p_from.ModuleID == "LLA" || p_from.ModuleID == "LLB" || p_from.ModuleID == "LLC" || p_from.ModuleID == "LLD" || p_from.ModuleID == "Buffer";            //    displayAlignerCondition = displayAlignerCondition && (p_from.ModuleID != "Aligner");            //    bool displayPassCoolingCondition = (p_from.ModuleID.Contains("PM") || p_from.ModuleID == "TMRobot");            //    WindowManager wm = new WindowManager();            //    WaferTransferDialogViewModel _transferVM = new WaferTransferDialogViewModel(message, displayAlignerCondition, displayPassCoolingCondition);            //    _transferVM.AlignerVisibility = ShowAligner ? Visibility.Visible : Visibility.Hidden;            //    _transferVM.CoolingVisibility = ShowCooling ? Visibility.Visible : Visibility.Hidden;            //    bool? bret = wm.ShowDialogWithNoStyle(_transferVM);            //    if ((bool)bret)            //    {            //        //get and use transfer conditions            //        WaferTransferCondition conditions = _transferVM.DialogResult;            //        InvokeClient.Instance.Service.DoOperation(menu, p_from.ModuleID, p_from.SlotID,            //            conditions.IsPassCooling, conditions.CoolingTime);            //    }            //    p_from.ClearDragDropStatus();            //}            //catch (Exception ex)            //{            //    LOG.Write(ex);            //}        }        #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    }}
 |