using Aitex.Core.UI.View.Common;
using Aitex.Sorter.Common;
using Aitex.Sorter.UI.ViewModel;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Aitex.Sorter.UI.Views
{
///
/// RecipeView.xaml 的交互逻辑
///
public partial class RecipeView : UserControl, IBaseView
{
private RecipeViewModel recipeViewModel;
public RecipeView()
{
InitializeComponent();
recipeViewModel = new RecipeViewModel();
DataContext = recipeViewModel;
cbRecipeType.SelectedValuePath = "Key";
cbRecipeType.DisplayMemberPath = "Value";
cbRecipeType.ItemsSource = EnumHelper.ToDictionary();
cbRecipeType.SelectedIndex = 0;
IsVisibleChanged += RecipeView_IsVisibleChanged;
}
private void RecipeView_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
recipeViewModel.EnableTimer(IsVisible);
if (IsVisible)
{
recipeViewModel.Refresh();
lstRecipe.SelectedIndex = 0;
}
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
var inputName = new RecipeNameDialog();
inputName.Owner = Window.GetWindow(this);
if (inputName.ShowDialog() == true)
{
recipeViewModel.AddNewRecipe(inputName.RecipeName);
lstRecipe.SelectedItem = inputName.RecipeName;
}
}
private void lstRecipe_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
recipeViewModel.LoadRecipe((string)lstRecipe.SelectedValue);
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
recipeViewModel.SaveRecipe();
}
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
if ((recipeViewModel.CurrentRecipe != null && MessageBox.Show(string.Format("Are you sure you want to delete recipe [{0}]?", recipeViewModel.CurrentRecipe.Name), "Delete Recipe", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes))
{
recipeViewModel.DeleteRecipe();
lstRecipe.SelectedIndex = lstRecipe.Items.Count - 1;
}
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
recipeViewModel.LoadRecipe((string)lstRecipe.SelectedValue);
}
private void btnRename_Click(object sender, RoutedEventArgs e)
{
if (recipeViewModel.CurrentRecipe != null)
{
var inputName = new RecipeNameDialog(recipeViewModel.CurrentRecipe.Name);
inputName.Owner = Window.GetWindow(this);
if (inputName.ShowDialog() == true)
{
recipeViewModel.RenameRecipe(inputName.RecipeName);
lstRecipe.SelectedItem = inputName.RecipeName;
}
}
}
private void btnCopy_Click(object sender, RoutedEventArgs e)
{
if (recipeViewModel.CurrentRecipe != null)
{
var newName = string.Format("Copy of {0}", recipeViewModel.CurrentRecipe.Name);
var inputName = new RecipeNameDialog(newName);
inputName.Owner = Window.GetWindow(this);
if (inputName.ShowDialog() == true)
{
recipeViewModel.CopyRecipe(inputName.RecipeName);
lstRecipe.SelectedItem = inputName.RecipeName;
}
}
}
}
public class RecipeLayoutConvert : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var root = values[1] as FrameworkElement;
if (values[0] != null)
{
var type = (SorterRecipeType)values[0];
switch (type)
{
case SorterRecipeType.Transfer1To1:
return root.FindResource("1To1");
case SorterRecipeType.TransferNToN:
return root.FindResource("NToN");
case SorterRecipeType.Pack:
return root.FindResource("Pack");
case SorterRecipeType.Order:
return root.FindResource("Order");
case SorterRecipeType.Align:
return root.FindResource("Default");
case SorterRecipeType.ReadWaferId:
return root.FindResource("Default");
case SorterRecipeType.HostNToN:
return root.FindResource("Host");
default:
break;
}
}
return null;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}