88 lines
3.8 KiB
C#
88 lines
3.8 KiB
C#
using System;
|
|
using System.Windows;
|
|
using Aitex.Core.RT.Log;
|
|
using Caliburn.Micro;
|
|
using MECF.Framework.Common.OperationCenter;
|
|
using OpenSEMI.Ctrlib.Controls;
|
|
|
|
namespace MECF.Framework.UI.Client.ClientBase
|
|
{
|
|
public class WaferMoveManager
|
|
{
|
|
#region single Instance
|
|
|
|
public bool ShowAligner { get; set; }
|
|
public bool ShowCooling { get; set; }
|
|
public bool ShowBlade { get; set; }
|
|
|
|
private WaferMoveManager()
|
|
{
|
|
ShowAligner = true;
|
|
ShowCooling = true;
|
|
ShowBlade = false;
|
|
}
|
|
|
|
private static WaferMoveManager m_Instance = null;
|
|
public static WaferMoveManager Instance
|
|
{
|
|
get
|
|
{
|
|
if (m_Instance == null)
|
|
{
|
|
m_Instance = new WaferMoveManager();
|
|
}
|
|
return m_Instance;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
public void TransferWafer(Slot p_from, Slot p_to)
|
|
{
|
|
try
|
|
{
|
|
if (p_from == null || p_to == null || !p_from.IsValidSlot() || !p_to.IsValidSlot())
|
|
return;
|
|
|
|
//DialogButton btns = DialogButton.Transfer | DialogButton.Cancel;
|
|
string info = " from " + p_from.ModuleID + " slot " + (p_from.SlotID + 1).ToString() + " to " + p_to.ModuleID + " slot " + (p_to.SlotID + 1).ToString();
|
|
string message = "Are you sure to transfer 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_to.ModuleID == "LP1" || p_to.ModuleID == "LP2" || p_to.ModuleID == "LP3" || p_to.ModuleID == "EfemRobot"));
|
|
|
|
displayAlignerCondition = displayAlignerCondition && (p_from.ModuleID != "Aligner" && p_to.ModuleID != "Aligner");
|
|
|
|
bool displayPassCoolingCondition = (p_from.ModuleID.Contains("PM") || p_from.ModuleID == "TMRobot");
|
|
|
|
displayPassCoolingCondition = displayPassCoolingCondition && (!p_to.ModuleID.Contains("PM")) && (p_to.ModuleID != "TMRobot")
|
|
&& (p_to.ModuleID != "LLA") && (p_to.ModuleID != "LLB") && (p_to.ModuleID != "LLC") && (p_to.ModuleID != "LLD");
|
|
|
|
bool displayBladeCondition = ShowBlade;
|
|
WindowManager wm = new WindowManager();
|
|
WaferTransferDialogViewModel _transferVM = new WaferTransferDialogViewModel(message, displayAlignerCondition, displayPassCoolingCondition, displayBladeCondition);
|
|
_transferVM.AlignerVisibility = ShowAligner ? Visibility.Visible : Visibility.Hidden;
|
|
_transferVM.CoolingVisibility = ShowCooling ? Visibility.Visible : Visibility.Hidden;
|
|
_transferVM.BladeVisibility = ShowBlade ? 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("System.MoveWafer",
|
|
p_from.ModuleID, p_from.SlotID, p_to.ModuleID, p_to.SlotID,
|
|
conditions.IsPassAligner, conditions.AlignerAngle, conditions.IsPassCooling, conditions.CoolingTime, (int)conditions.Blade);
|
|
}
|
|
|
|
p_from.ClearDragDropStatus();
|
|
p_to.ClearDragDropStatus();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LOG.Write(ex);
|
|
}
|
|
}
|
|
}
|
|
}
|