260 lines
10 KiB
C#
260 lines
10 KiB
C#
using MainShell.Models;
|
|
using MainShell.ParaSetting.Model;
|
|
using MaxwellFramework.Core.Interfaces;
|
|
using MwFramework.ManagerService;
|
|
using System;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.Windows;
|
|
using StyletIoC;
|
|
|
|
namespace MainShell.ParaSetting.ViewModel
|
|
{
|
|
public class ProcessParameterSettingViewModel : BaseScreen
|
|
{
|
|
private readonly IParamList _paramList;
|
|
private ObservableCollection<MenuItemWrap> _processMenuItemWraps;
|
|
private MenuItemWrap _selectedProcessMenuItem;
|
|
private object _currentScreen;
|
|
|
|
private ProductLoadProcessParameterViewModel _productLoadProcessParameterViewModel;
|
|
[Inject]
|
|
public ProductLoadProcessParameterViewModel ProductLoadProcessParameterViewModel
|
|
{
|
|
get { return _productLoadProcessParameterViewModel; }
|
|
set { _productLoadProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private ProductUnloadProcessParameterViewModel _productUnloadProcessParameterViewModel;
|
|
[Inject]
|
|
public ProductUnloadProcessParameterViewModel ProductUnloadProcessParameterViewModel
|
|
{
|
|
get { return _productUnloadProcessParameterViewModel; }
|
|
set { _productUnloadProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private ProductPositionProcessParameterViewModel _productPositionProcessParameterViewModel;
|
|
[Inject]
|
|
public ProductPositionProcessParameterViewModel ProductPositionProcessParameterViewModel
|
|
{
|
|
get { return _productPositionProcessParameterViewModel; }
|
|
set { _productPositionProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private ProductHeightMeasureProcessParameterViewModel _productHeightMeasureProcessParameterViewModel;
|
|
[Inject]
|
|
public ProductHeightMeasureProcessParameterViewModel ProductHeightMeasureProcessParameterViewModel
|
|
{
|
|
get { return _productHeightMeasureProcessParameterViewModel; }
|
|
set { _productHeightMeasureProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private WaferLoadProcessParameterViewModel _waferLoadProcessParameterViewModel;
|
|
[Inject]
|
|
public WaferLoadProcessParameterViewModel WaferLoadProcessParameterViewModel
|
|
{
|
|
get { return _waferLoadProcessParameterViewModel; }
|
|
set { _waferLoadProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private WaferUnloadProcessParameterViewModel _waferUnloadProcessParameterViewModel;
|
|
[Inject]
|
|
public WaferUnloadProcessParameterViewModel WaferUnloadProcessParameterViewModel
|
|
{
|
|
get { return _waferUnloadProcessParameterViewModel; }
|
|
set { _waferUnloadProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private WaferStraightenProcessParameterViewModel _waferStraightenProcessParameterViewModel;
|
|
[Inject]
|
|
public WaferStraightenProcessParameterViewModel WaferStraightenProcessParameterViewModel
|
|
{
|
|
get { return _waferStraightenProcessParameterViewModel; }
|
|
set { _waferStraightenProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private DieRecognizeProcessParameterViewModel _dieRecognizeProcessParameterViewModel;
|
|
[Inject]
|
|
public DieRecognizeProcessParameterViewModel DieRecognizeProcessParameterViewModel
|
|
{
|
|
get { return _dieRecognizeProcessParameterViewModel; }
|
|
set { _dieRecognizeProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private BondingProcessParameterViewModel _bondingProcessParameterViewModel;
|
|
[Inject]
|
|
public BondingProcessParameterViewModel BondingProcessParameterViewModel
|
|
{
|
|
get { return _bondingProcessParameterViewModel; }
|
|
set { _bondingProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private RecheckProcessParameterViewModel _recheckProcessParameterViewModel;
|
|
[Inject]
|
|
public RecheckProcessParameterViewModel RecheckProcessParameterViewModel
|
|
{
|
|
get { return _recheckProcessParameterViewModel; }
|
|
set { _recheckProcessParameterViewModel = value; }
|
|
}
|
|
|
|
private RunSetting _runSetting;
|
|
|
|
public RunSetting RunSetting
|
|
{
|
|
get { return _runSetting; }
|
|
set
|
|
{
|
|
_runSetting = value;
|
|
OnPropertyChanged(nameof(RunSetting));
|
|
}
|
|
}
|
|
|
|
public ObservableCollection<MenuItemWrap> ProcessMenuItemWraps
|
|
{
|
|
get { return _processMenuItemWraps; }
|
|
private set
|
|
{
|
|
_processMenuItemWraps = value;
|
|
OnPropertyChanged(nameof(ProcessMenuItemWraps));
|
|
}
|
|
}
|
|
|
|
public MenuItemWrap SelectedProcessMenuItem
|
|
{
|
|
get { return _selectedProcessMenuItem; }
|
|
set
|
|
{
|
|
_selectedProcessMenuItem = value;
|
|
CurrentScreen = value != null ? value.Tag : null;
|
|
OnPropertyChanged(nameof(SelectedProcessMenuItem));
|
|
OnPropertyChanged(nameof(CurrentProcessHeader));
|
|
}
|
|
}
|
|
|
|
public object CurrentScreen
|
|
{
|
|
get { return _currentScreen; }
|
|
private set
|
|
{
|
|
_currentScreen = value;
|
|
OnPropertyChanged(nameof(CurrentScreen));
|
|
}
|
|
}
|
|
|
|
public string CurrentProcessHeader
|
|
{
|
|
get { return SelectedProcessMenuItem != null ? SelectedProcessMenuItem.Header : string.Empty; }
|
|
}
|
|
|
|
public ProcessParameterSettingViewModel(IParameterManager parameterManager)
|
|
{
|
|
_paramList = parameterManager as IParamList;
|
|
if (_paramList == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(parameterManager));
|
|
}
|
|
|
|
ProcessMenuItemWraps = new ObservableCollection<MenuItemWrap>();
|
|
}
|
|
|
|
protected override void OnViewLoaded()
|
|
{
|
|
base.OnViewLoaded();
|
|
RunSetting = _paramList.GetParameter<RunSetting>();
|
|
BindSectionParameters();
|
|
InitializeProcessMenuItems();
|
|
}
|
|
|
|
private void BindSectionParameters()
|
|
{
|
|
if (RunSetting == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
ProductLoadProcessParameterViewModel.SetParameter(RunSetting.ProductLoadProcessParameter);
|
|
ProductUnloadProcessParameterViewModel.SetParameter(RunSetting.ProductUnloadProcessParameter);
|
|
ProductPositionProcessParameterViewModel.SetParameter(RunSetting.ProductPositionProcessParameter);
|
|
ProductHeightMeasureProcessParameterViewModel.SetParameter(RunSetting.ProductHeightMeasureProcessParameter);
|
|
WaferLoadProcessParameterViewModel.SetParameter(RunSetting.WaferLoadProcessParameter);
|
|
WaferUnloadProcessParameterViewModel.SetParameter(RunSetting.WaferUnloadProcessParameter);
|
|
WaferStraightenProcessParameterViewModel.SetParameter(RunSetting.WaferStraightenProcessParameter);
|
|
DieRecognizeProcessParameterViewModel.SetParameter(RunSetting.DieRecognizeProcessParameter);
|
|
BondingProcessParameterViewModel.SetParameter(RunSetting.BondingProcessParameter);
|
|
RecheckProcessParameterViewModel.SetParameter(RunSetting.RecheckProcessParameter);
|
|
|
|
RunSetting.WaferStraightenProcessParameter.PropertyChanged -= OnWaferStraightenProcessParameterChanged;
|
|
RunSetting.WaferStraightenProcessParameter.PropertyChanged += OnWaferStraightenProcessParameterChanged;
|
|
}
|
|
|
|
private void InitializeProcessMenuItems()
|
|
{
|
|
ProcessMenuItemWraps.Clear();
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabProductLoad", ProductLoadProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabProductUnload", ProductUnloadProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabProductPosition", ProductPositionProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabProductHeightMeasure", ProductHeightMeasureProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabWaferLoad", WaferLoadProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabWaferUnload", WaferUnloadProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabWaferStraighten", WaferStraightenProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabDieRecognize", DieRecognizeProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabBonding", BondingProcessParameterViewModel));
|
|
ProcessMenuItemWraps.Add(CreateProcessMenuItem("ProcessTabRecheck", RecheckProcessParameterViewModel));
|
|
|
|
if (ProcessMenuItemWraps.Count > 0)
|
|
{
|
|
SelectedProcessMenuItem = ProcessMenuItemWraps[0];
|
|
}
|
|
}
|
|
|
|
private MenuItemWrap CreateProcessMenuItem(string resourceKey, object screen)
|
|
{
|
|
MenuItemWrap menuItemWrap = new MenuItemWrap();
|
|
menuItemWrap.Header = ResolveResourceText(resourceKey);
|
|
menuItemWrap.Tag = screen;
|
|
return menuItemWrap;
|
|
}
|
|
|
|
private string ResolveResourceText(string resourceKey)
|
|
{
|
|
if (Application.Current == null)
|
|
{
|
|
return resourceKey;
|
|
}
|
|
|
|
object resource = Application.Current.TryFindResource(resourceKey);
|
|
string text = resource as string;
|
|
if (string.IsNullOrWhiteSpace(text))
|
|
{
|
|
return resourceKey;
|
|
}
|
|
|
|
return text;
|
|
}
|
|
|
|
private void OnWaferStraightenProcessParameterChanged(object sender, PropertyChangedEventArgs e)
|
|
{
|
|
if (RunSetting == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (e.PropertyName == nameof(WaferStraightenProcessParameter.UseSingleStraighten))
|
|
{
|
|
bool useSingleStraighten = RunSetting.WaferStraightenProcessParameter.UseSingleStraighten;
|
|
if (RunSetting.DieRecognizeProcessParameter.UseSingleWaferPosition != useSingleStraighten)
|
|
{
|
|
RunSetting.DieRecognizeProcessParameter.UseSingleWaferPosition = useSingleStraighten;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void BtnSave()
|
|
{
|
|
if (RunSetting != null)
|
|
{
|
|
RunSetting.Write();
|
|
}
|
|
}
|
|
}
|
|
} |