using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Input; using OpenSEMI.ClientBase; using OpenSEMI.ClientBase.Command; using MECF.Framework.Common.RecipeCenter; using RecipeEditorLib.DGExtension.CustomColumn; using Caliburn.Micro.Core; using MECF.Framework.UI.Client.CenterViews.Configs.SystemConfig; using MECF.Framework.Common.OperationCenter; using System.Windows.Data; using System; namespace FurnaceUI.Client.Dialog { public class N2PurgeSelectDialogViewModel : DialogViewModel { #region properties private string _SelectedName; public string SelectedName { get { return _SelectedName; } set { _SelectedName = value; } } public Visibility TransferRoomVisible { get; set; } = Visibility.Collapsed; public Visibility FOUPOpenVisible { get; set; } = Visibility.Collapsed; public Visibility O2DetectorVisible { get; set; } = Visibility.Collapsed; public Visibility ClampOFFVisible { get; set; } = Visibility.Collapsed; public Visibility FurnaceOpenVisible { get; set; } = Visibility.Collapsed; public Visibility OperationCheckVisible { get; set; } = Visibility.Collapsed; public Visibility O2DensityQuickDownVisible { get; set; } = Visibility.Collapsed; public Visibility FoupEnterVisible { get; set; } = Visibility.Collapsed; public Visibility WaferChargeVisible { get; set; } = Visibility.Collapsed; public Visibility BoatLoadVisible { get; set; } = Visibility.Collapsed; public Visibility FoupInhibitAfterVisible { get; set; } = Visibility.Collapsed; public Visibility BoatUnloadVisible { get; set; } = Visibility.Collapsed; public Visibility BoatUnloadPreVisible { get; set; } = Visibility.Collapsed; public Visibility WaferCoolingVisible { get; set; } = Visibility.Collapsed; public Visibility WaferDishargeVisible { get; set; } = Visibility.Collapsed; #endregion #region Command private ICommand _BtnSelectCommand; public ICommand SelectCommand { get { if (this._BtnSelectCommand == null) this._BtnSelectCommand = new BaseCommand>((EventCommandParameter arg) => this.OnSelectCommand(arg)); return this._BtnSelectCommand; } } private ICommand _BtnCancelCommand; public ICommand CancelCommand { get { if (this._BtnCancelCommand == null) this._BtnCancelCommand = new BaseCommand>((EventCommandParameter arg) => this.OnCancelCommand(arg)); return this._BtnCancelCommand; } } private ICommand _ListViewDoubleClick; public ICommand ListViewDoubleClick { get { if (this._ListViewDoubleClick == null) this._ListViewDoubleClick = new BaseCommand>((EventCommandParameter arg) => this.OnListViewDoubleClick(arg)); return this._ListViewDoubleClick; } } #endregion #region Function public N2PurgeSelectDialogViewModel(string ButtonPara) { switch (ButtonPara) { case "TransferRoomVisible": TransferRoomVisible = Visibility.Visible; break; case "FOUPOpenVisible": FOUPOpenVisible = Visibility.Visible; break; case "O2DetectorVisible": O2DetectorVisible = Visibility.Visible; break; case "ClampOFFVisible": ClampOFFVisible = Visibility.Visible; break; case "FurnaceOpenVisible": FurnaceOpenVisible = Visibility.Visible; break; case "OperationCheckVisible": OperationCheckVisible = Visibility.Visible; break; case "O2DensityQuickDownVisible": O2DensityQuickDownVisible = Visibility.Visible; break; case "FoupEnterVisible": FoupEnterVisible = Visibility.Visible; break; case "WaferChargeVisible": WaferChargeVisible = Visibility.Visible; break; case "BoatLoadVisible": BoatLoadVisible = Visibility.Visible; break; case "FoupInhibitAfterVisible": FoupInhibitAfterVisible = Visibility.Visible; break; case "BoatUnloadVisible": BoatUnloadVisible = Visibility.Visible; break; case "BoatUnloadPreVisible": BoatUnloadPreVisible = Visibility.Visible; break; case "WaferCoolingVisible": WaferCoolingVisible = Visibility.Visible; break; case "WaferDishargeVisible": WaferDishargeVisible = Visibility.Visible; break; } } protected override void OnInitialize() { base.OnInitialize(); this.DisplayName = "Select Dialog"; } public double TransferRoomArrivalWaitTime { get { return _transferRoomArrivalWaitTime; } set { _transferRoomArrivalWaitTime = value; NotifyOfPropertyChange(() => TransferRoomArrivalWaitTime); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.TransferRoomArrivalWaitTime", _transferRoomArrivalWaitTime); } } private double _transferRoomArrivalWaitTime; public double TransferRoomStableWaitTime { get { return _transferRoomStableWaitTime; } set { _transferRoomStableWaitTime = value; NotifyOfPropertyChange(() => TransferRoomStableWaitTime); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.TransferRoomStableWaitTime", _transferRoomStableWaitTime); } } private double _transferRoomStableWaitTime; public double FOUPOpenerArrivalWaitTime { get { return _fOUPOpenerArrivalWaitTime; } set { _fOUPOpenerArrivalWaitTime = value; NotifyOfPropertyChange(() => FOUPOpenerArrivalWaitTime); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.FOUPOpenerArrivalWaitTime", _fOUPOpenerArrivalWaitTime); } } private double _fOUPOpenerArrivalWaitTime; public double FOUPOpenerStableWaitTime { get { return _fOUPOpenerStableWaitTime; } set { _fOUPOpenerStableWaitTime = value; NotifyOfPropertyChange(() => FOUPOpenerStableWaitTime); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.FOUPOpenerStableWaitTime", _fOUPOpenerStableWaitTime); } } private double _fOUPOpenerStableWaitTime; public double O2DetectorTransferRoomToFOUPTime { get { return _o2DetectorTransferRoomToFOUPTime; } set { _o2DetectorTransferRoomToFOUPTime = value; NotifyOfPropertyChange(() => O2DetectorTransferRoomToFOUPTime); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.O2DetectorTransferRoomToFOUPTime", _o2DetectorTransferRoomToFOUPTime); } } private double _o2DetectorTransferRoomToFOUPTime; public double O2DetectorFOUPToTransferRoomTime { get { return _o2DetectorFOUPToTransferRoomTime; } set { _o2DetectorFOUPToTransferRoomTime = value; NotifyOfPropertyChange(() => O2DetectorFOUPToTransferRoomTime); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.O2DetectorFOUPToTransferRoomTime", _o2DetectorFOUPToTransferRoomTime); } } private double _o2DetectorFOUPToTransferRoomTime; public double O2DetectorFOUPToFOUPTime { get { return _o2DetectorFOUPToFOUPTime; } set { _o2DetectorFOUPToFOUPTime = value; NotifyOfPropertyChange(() => O2DetectorFOUPToFOUPTime); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.O2DetectorFOUPToFOUPTime", _o2DetectorFOUPToFOUPTime); } } private double _o2DetectorFOUPToFOUPTime; public bool TransferRoomN2PurgeChargeEnable { get { return _transferRoomN2PurgeChargeEnable; } set { _transferRoomN2PurgeChargeEnable = value; NotifyOfPropertyChange(() => TransferRoomN2PurgeChargeEnable); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable", _transferRoomN2PurgeChargeEnable); } } private bool _transferRoomN2PurgeChargeEnable; public bool TransferRoomO2DensityCheckChargeEnable { get { return _transferRoomO2DensityCheckChargeEnable; } set { _transferRoomO2DensityCheckChargeEnable = value; NotifyOfPropertyChange(() => TransferRoomO2DensityCheckChargeEnable); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.WaferCharge.TransferRoomO2DensityCheckEnable", _transferRoomO2DensityCheckChargeEnable); } } private bool _transferRoomO2DensityCheckChargeEnable; public bool TransferRoomO2DensityKeepChargeEnable { get { return _transferRoomO2DensityKeepChargeEnable; } set { _transferRoomO2DensityKeepChargeEnable = value; NotifyOfPropertyChange(() => TransferRoomO2DensityKeepChargeEnable); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.WaferCharge.TransferRoomO2DensityKeepEnable", _transferRoomO2DensityKeepChargeEnable); } } private bool _transferRoomO2DensityKeepChargeEnable; public bool FOUPN2PurgeChargeEnable { get { return _fOUPN2PurgeChargeEnable; } set { _fOUPN2PurgeChargeEnable = value; NotifyOfPropertyChange(() => FOUPN2PurgeChargeEnable); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.WaferCharge.FOUPN2PurgeEnable", _fOUPN2PurgeChargeEnable); } } private bool _fOUPN2PurgeChargeEnable; public bool TransferRoomN2PurgeDischargeEnable { get { return _transferRoomN2PurgeDischargeEnable; } set { _transferRoomN2PurgeDischargeEnable = value; NotifyOfPropertyChange(() => TransferRoomN2PurgeDischargeEnable); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.WaferDischarge.TransferRoomN2PurgeEnable", _transferRoomN2PurgeDischargeEnable); } } private bool _transferRoomN2PurgeDischargeEnable; public bool TransferRoomO2DensityCheckDischargeEnable { get { return _transferRoomO2DensityCheckDischargeEnable; } set { _transferRoomO2DensityCheckDischargeEnable = value; NotifyOfPropertyChange(() => TransferRoomO2DensityCheckDischargeEnable); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.WaferDischarge.TransferRoomO2DensityCheckEnable", _transferRoomO2DensityCheckDischargeEnable); } } private bool _transferRoomO2DensityCheckDischargeEnable; public bool TransferRoomO2DensityKeepDischargeEnable { get { return _transferRoomO2DensityKeepDischargeEnable; } set { _transferRoomO2DensityKeepDischargeEnable = value; NotifyOfPropertyChange(() => TransferRoomO2DensityKeepDischargeEnable); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.WaferDischarge.TransferRoomO2DensityKeepEnable", _transferRoomO2DensityKeepDischargeEnable); } } private bool _transferRoomO2DensityKeepDischargeEnable; public bool FOUPN2PurgeDischargeEnable { get { return _fOUPN2PurgeDischargeEnable; } set { _fOUPN2PurgeDischargeEnable = value; NotifyOfPropertyChange(() => FOUPN2PurgeDischargeEnable); InvokeClient.Instance.Service.DoOperation("System.SetConfig", "PM1.N2Purge.WaferDischarge.FOUPN2PurgeEnable", _fOUPN2PurgeDischargeEnable); } } private bool _fOUPN2PurgeDischargeEnable; protected override void OnActivate() { base.OnActivate(); string valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.TransferRoomArrivalWaitTime"); if (!string.IsNullOrEmpty(valueConfig) && double.TryParse(valueConfig, out double transferRoomArrivalWaitTime)) { _transferRoomArrivalWaitTime = transferRoomArrivalWaitTime; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.TransferRoomStableWaitTime"); if (!string.IsNullOrEmpty(valueConfig) && double.TryParse(valueConfig, out double transferRoomStableWaitTime)) { _transferRoomStableWaitTime = transferRoomStableWaitTime; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.FOUPOpenerArrivalWaitTime"); if (!string.IsNullOrEmpty(valueConfig) && double.TryParse(valueConfig, out double fOUPOpenerArrivalWaitTime)) { _fOUPOpenerArrivalWaitTime = fOUPOpenerArrivalWaitTime; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.FOUPOpenerStableWaitTime"); if (!string.IsNullOrEmpty(valueConfig) && double.TryParse(valueConfig, out double fOUPOpenerStableWaitTime)) { _fOUPOpenerStableWaitTime = fOUPOpenerStableWaitTime; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.O2DetectorTransferRoomToFOUPTime"); if (!string.IsNullOrEmpty(valueConfig) && double.TryParse(valueConfig, out double o2DetectorTransferRoomToFOUPTime)) { _o2DetectorTransferRoomToFOUPTime = o2DetectorTransferRoomToFOUPTime; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.O2DetectorFOUPToTransferRoomTime"); if (!string.IsNullOrEmpty(valueConfig) && double.TryParse(valueConfig, out double o2DetectorFOUPToTransferRoomTime)) { _o2DetectorFOUPToTransferRoomTime = o2DetectorFOUPToTransferRoomTime; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.O2DetectorFOUPToFOUPTime"); if (!string.IsNullOrEmpty(valueConfig) && double.TryParse(valueConfig, out double o2DetectorFOUPToFOUPTime)) { _o2DetectorFOUPToFOUPTime = o2DetectorFOUPToFOUPTime; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.WaferCharge.TransferRoomN2PurgeEnable"); if (!string.IsNullOrEmpty(valueConfig) && bool.TryParse(valueConfig, out bool transferRoomN2PurgeChargeEnable)) { _transferRoomN2PurgeChargeEnable = transferRoomN2PurgeChargeEnable; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.WaferCharge.TransferRoomO2DensityCheckEnable"); if (!string.IsNullOrEmpty(valueConfig) && bool.TryParse(valueConfig, out bool transferRoomO2DensityCheckChargeEnable)) { _transferRoomO2DensityCheckChargeEnable = transferRoomO2DensityCheckChargeEnable; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.WaferCharge.TransferRoomO2DensityKeepEnable"); if (!string.IsNullOrEmpty(valueConfig) && bool.TryParse(valueConfig, out bool transferRoomO2DensityKeepChargeEnable)) { _transferRoomO2DensityKeepChargeEnable = transferRoomO2DensityKeepChargeEnable; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.WaferCharge.FOUPN2PurgeEnable"); if (!string.IsNullOrEmpty(valueConfig) && bool.TryParse(valueConfig, out bool fOUPN2PurgeChargeEnable)) { _fOUPN2PurgeChargeEnable = fOUPN2PurgeChargeEnable; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.WaferDischarge.TransferRoomN2PurgeEnable"); if (!string.IsNullOrEmpty(valueConfig) && bool.TryParse(valueConfig, out bool transferRoomN2PurgeDischargeEnable)) { _transferRoomN2PurgeDischargeEnable = transferRoomN2PurgeDischargeEnable; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.WaferDischarge.TransferRoomO2DensityCheckEnable"); if (!string.IsNullOrEmpty(valueConfig) && bool.TryParse(valueConfig, out bool transferRoomO2DensityCheckDischargeEnable)) { _transferRoomO2DensityCheckDischargeEnable = transferRoomO2DensityCheckDischargeEnable; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.WaferDischarge.TransferRoomO2DensityKeepEnable"); if (!string.IsNullOrEmpty(valueConfig) && bool.TryParse(valueConfig, out bool transferRoomO2DensityKeepDischargeEnable)) { _transferRoomO2DensityKeepDischargeEnable = transferRoomO2DensityKeepDischargeEnable; } valueConfig = SystemConfigProvider.Instance.GetValueByName("PM1.N2Purge.WaferDischarge.FOUPN2PurgeEnable"); if (!string.IsNullOrEmpty(valueConfig) && bool.TryParse(valueConfig, out bool fOUPN2PurgeDischargeEnable)) { _fOUPN2PurgeDischargeEnable = fOUPN2PurgeDischargeEnable; } } protected override void OnViewLoaded(object view) { base.OnViewLoaded(view); } private void OnSelectCommand(EventCommandParameter arg) { DialogResult = SelectedName; IsCancel = false; TryClose(true); } private void OnListViewDoubleClick(EventCommandParameter arg) { if (arg != null) { this.DialogResult = SelectedName; IsCancel = false; TryClose(true); } } private void OnCancelCommand(EventCommandParameter arg) { IsCancel = true; TryClose(false); } #endregion } public class InverseBoolConverter : IValueConverter { //源转目标 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is bool) { return !(bool)value; } return value; } //目标转源 public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is bool) { return !(bool)value; } return value; } } }