using Aurora.Api; using VisionAligner; using VisionCommon; using System; using System.Windows; using System.Windows.Controls; using VisionUI.Pattern; using System.Windows.Media; using VisionCommonUI; using VisionCommonUI.Resources; namespace VisionUI.Aligner { /// /// 얼라인 세팅 뷰 /// AlignSettingView.xaml BehindCode /// public partial class AlignSettingView : UserControl { private Logger _Logger = new Logger("AlignSettingView"); private SubSysInfo _SubSysInfo; private SubSysRecipe _SubSysRecipe; /// /// 생성자 /// /// 서브시스템 정보 public AlignSettingView(SubSysInfo subSysInfo) { _SubSysInfo = subSysInfo; _SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(_SubSysInfo); InitializeComponent(); CreateViews(); CreatePatternLogView(); CreateAlignLogView(); } private void CreateViews() { CreateAlignTabControl(); } /// /// 얼라인 탭 컨트롤 생성 /// public void CreateAlignTabControl() { var alignInfos = VisionRecipeManager.GetAlignInfos(_SubSysInfo.UnitId, _SubSysInfo.SubSysId); foreach (AlignInfo alignInfo in alignInfos) { var alignTabItem = new TabItem() { Header = alignInfo.AlignName, Content = CreateAlignRecipeSettingView(alignInfo) }; alignTabItem.TabIndex = (int)alignInfo.AlignId; alignTabItem.Style = FindResource("styleSubMenuRootTabItem") as Style; alignTabControl.Items.Add(alignTabItem); } alignTabControl.SelectionChanged += AlignTabControl_SelectionChanged; if (alignInfos.Count == 0 || alignTabControl.Items.Count < alignInfos.Count) { PrintRecipeError(typeof(AlignRecipe).Name, alignTabControl); } } private void AlignTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) { var tabControl = sender as TabControl; (DataContext as AlignSettingViewModel).SetCurrentAlignInfo((eAlignId)tabControl.SelectedIndex); } private AlignRecipeSettingView CreateAlignRecipeSettingView(AlignInfo alignInfo) { try { var alignRecipeSettingView = new AlignRecipeSettingView(alignInfo); var alignRecipeSettingViewModel = new AlignRecipeSettingViewModel(alignInfo); alignRecipeSettingView.DataContext = alignRecipeSettingViewModel; return alignRecipeSettingView; } catch (Exception e) { _Logger.FuncE(e.Message); } return null; } private void CreatePatternLogView() { var patternLogView = new PatternLogView(_SubSysInfo); var patternLogViewModel = new PatternLogViewModel(_SubSysInfo); patternLogView.DataContext = patternLogViewModel; gridPatternLogView.Children.Add(patternLogView); } private void CreateAlignLogView() { var alignLogView = new AlignLogView(_SubSysInfo); var alignLogViewModel = new AlignLogViewModel(_SubSysInfo, alignLogView); alignLogView.DataContext = alignLogViewModel; gridAlignLogView.Children.Add(alignLogView); } private void Button_Save_Click(object sender, RoutedEventArgs e) { UpdateRecipeFromUI_AlignRecipe(); RecipeFileManager.SaveVisionRecipe(); UpdateAlignRecipe(); // 레시피 저장 후, 갱신 MessageBoxUtil.ShowMessageBoxOk(StrTokens.MSG_O_SaveCompleted); } private void UpdateAlignRecipe() { AlignerFactory.Update(_SubSysInfo); } private void UpdateRecipeFromUI_AlignRecipe() { foreach (var item in alignTabControl.Items) { var tabItem = (TabItem)item; var alignRecipeSettingView = tabItem.Content as AlignRecipeSettingView; alignRecipeSettingView.UpdateRecipeFromUI(); } } private void PrintRecipeError(string recipeName, TabControl tabControl) { var errMsg = string.Format(StrTokens.RecipeErrorMessage, recipeName); var errTabItem = new TabItem() { Header = "Undefined", Content = new UCRecipeErrorTextBlock(errMsg) { Margin = new Thickness(15) } }; errTabItem.Style = FindResource("styleSubMenuRootTabItem") as Style; errTabItem.VerticalContentAlignment = VerticalAlignment.Center; errTabItem.HorizontalContentAlignment = HorizontalAlignment.Center; tabControl.Items.Add(errTabItem); } private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { bool isVisible = (bool)e.NewValue; if (isVisible == true) { UpdateVisionRecipes(); } } private void UpdateVisionRecipes() { _SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(_SubSysInfo); } } }