WaferMoveManager.cs 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Windows;
  3. using Aitex.Core.RT.Log;
  4. using Caliburn.Micro;
  5. using MECF.Framework.Common.OperationCenter;
  6. using OpenSEMI.Ctrlib.Controls;
  7. namespace MECF.Framework.UI.Client.ClientBase
  8. {
  9. public class WaferMoveManager
  10. {
  11. #region single Instance
  12. public bool ShowAligner { get; set; }
  13. public bool ShowCooling { get; set; }
  14. public bool ShowBlade { get; set; }
  15. private WaferMoveManager()
  16. {
  17. ShowAligner = true;
  18. ShowCooling = true;
  19. ShowBlade = false;
  20. }
  21. private static WaferMoveManager m_Instance = null;
  22. public static WaferMoveManager Instance
  23. {
  24. get
  25. {
  26. if (m_Instance == null)
  27. {
  28. m_Instance = new WaferMoveManager();
  29. }
  30. return m_Instance;
  31. }
  32. }
  33. #endregion
  34. public void TransferWafer(Slot p_from, Slot p_to)
  35. {
  36. try
  37. {
  38. if (p_from == null || p_to == null || !p_from.IsValidSlot() || !p_to.IsValidSlot())
  39. return;
  40. //DialogButton btns = DialogButton.Transfer | DialogButton.Cancel;
  41. string info = " from " + p_from.ModuleID + " slot " + (p_from.SlotID + 1).ToString() + " to " + p_to.ModuleID + " slot " + (p_to.SlotID + 1).ToString();
  42. string message = "Are you sure to transfer the wafer: \n" + info;
  43. //DialogButton m_dResult = DialogBox.ShowDialog(btns, DialogType.CONFIRM, message);
  44. bool displayAlignerCondition = (p_from.ModuleID == "LP1" || p_from.ModuleID == "LP2" || p_from.ModuleID == "LP3" || p_from.ModuleID == "EfemRobot")
  45. || ((p_from.ModuleID == "LLA" || p_from.ModuleID == "LLB" || p_from.ModuleID == "LLC" || p_from.ModuleID == "LLD") && (p_to.ModuleID == "LP1" || p_to.ModuleID == "LP2" || p_to.ModuleID == "LP3" || p_to.ModuleID == "EfemRobot"));
  46. displayAlignerCondition = displayAlignerCondition && (p_from.ModuleID != "Aligner" && p_to.ModuleID != "Aligner");
  47. bool displayPassCoolingCondition = (p_from.ModuleID.Contains("PM") || p_from.ModuleID == "TMRobot");
  48. displayPassCoolingCondition = displayPassCoolingCondition && (!p_to.ModuleID.Contains("PM")) && (p_to.ModuleID != "TMRobot")
  49. && (p_to.ModuleID != "LLA") && (p_to.ModuleID != "LLB") && (p_to.ModuleID != "LLC") && (p_to.ModuleID != "LLD");
  50. bool displayBladeCondition = ShowBlade;
  51. WindowManager wm = new WindowManager();
  52. WaferTransferDialogViewModel _transferVM = new WaferTransferDialogViewModel(message, displayAlignerCondition, displayPassCoolingCondition, displayBladeCondition);
  53. _transferVM.AlignerVisibility = ShowAligner ? Visibility.Visible : Visibility.Hidden;
  54. _transferVM.CoolingVisibility = ShowCooling ? Visibility.Visible : Visibility.Hidden;
  55. _transferVM.BladeVisibility = ShowBlade ? Visibility.Visible : Visibility.Hidden;
  56. bool? bret = wm.ShowDialogWithNoStyle(_transferVM);
  57. if ((bool)bret)
  58. {
  59. //get and use transfer conditions
  60. WaferTransferCondition conditions = _transferVM.DialogResult;
  61. InvokeClient.Instance.Service.DoOperation("System.MoveWafer",
  62. p_from.ModuleID, p_from.SlotID, p_to.ModuleID, p_to.SlotID,
  63. conditions.IsPassAligner, conditions.AlignerAngle, conditions.IsPassCooling, conditions.CoolingTime, (int)conditions.Blade);
  64. }
  65. p_from.ClearDragDropStatus();
  66. p_to.ClearDragDropStatus();
  67. }
  68. catch (Exception ex)
  69. {
  70. LOG.Write(ex);
  71. }
  72. }
  73. }
  74. }