using InABox.Wpf;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace InABox.WPF
{
///
/// Interaction logic for PrinterSelection.xaml
///
public partial class DictionaryEdit : ThemableWindow
{
public string Description
{
get => Label.Content as string ?? "Select Value";
set => Label.Content = value;
}
public DictionaryEdit(string[] values, ref int index)
{
InitializeComponent();
Combo.Items.Clear();
Combo.Items.Add("");
foreach (var val in values)
Combo.Items.Add(val);
Index = index;
}
public int Index
{
get => Combo.SelectedIndex - 1;
set => Combo.SelectedIndex = value + 1;
}
private void OK_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
private void Cancel_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
Close();
}
public static bool Execute(Dictionary values, ref T value, string? title = null, string? description = null) where T : notnull
{
var index = values.Keys.ToList().IndexOf(value);
var edit = new DictionaryEdit(values.Values.ToArray(), ref index);
edit.Title = title ?? "Value Selection";
edit.Description = description ?? "Select Value";
if (edit.ShowDialog() == true)
{
value = edit.Index > -1 ? values.Keys.ToList()[edit.Index] : default;
return true;
}
return false;
}
private void Combo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
OK.IsEnabled = Combo.SelectedIndex > 0;
}
}
}