144 lines
4.9 KiB
C#
144 lines
4.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
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;
|
|
|
|
using bsmd.database;
|
|
|
|
namespace ENI2.Controls
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for ValueMappingsControl.xaml
|
|
/// </summary>
|
|
public partial class ValueMappingsControl : UserControl
|
|
{
|
|
private ObservableCollection<ValueMapping> _mappings = new ObservableCollection<ValueMapping>();
|
|
private DataGridCellInfo activeCellAtEdit;
|
|
|
|
public ValueMappingsControl()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
this.comboBoxType.ItemsSource = Enum.GetValues(typeof(ValueMapping.MappingType)).Cast<ValueMapping.MappingType>();
|
|
this.dataGridValueMappings.ItemsSource = _mappings;
|
|
|
|
this.dataGridValueMappings.ContextMenu = new ContextMenu();
|
|
MenuItem addItem = new MenuItem
|
|
{
|
|
Header = Properties.Resources.textAdd,
|
|
Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/add.png")) }
|
|
};
|
|
|
|
addItem.Click += AddItem_Click;
|
|
this.dataGridValueMappings.ContextMenu.Items.Add(addItem);
|
|
|
|
MenuItem delItem = new MenuItem
|
|
{
|
|
Header = Properties.Resources.textAdd,
|
|
Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/delete.png")) }
|
|
};
|
|
|
|
delItem.Click += DelItem_Click;
|
|
this.dataGridValueMappings.ContextMenu.Items.Add(delItem);
|
|
}
|
|
|
|
private async void DelItem_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
ValueMapping vm = this.dataGridValueMappings.SelectedItem as ValueMapping;
|
|
if(vm != null)
|
|
{
|
|
if(MessageBox.Show($"Are you sure to delete {vm.Key} -> {vm.Value}?", Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) ==
|
|
MessageBoxResult.Yes)
|
|
{
|
|
int result = await DBManagerAsync.DeleteAsync(vm);
|
|
if(result == 1)
|
|
{
|
|
_mappings.Remove(vm);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void AddItem_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
ValueMapping vm = new ValueMapping();
|
|
_mappings.Add(vm);
|
|
}
|
|
|
|
private void dataGridValueMappings_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
|
{
|
|
// we need to check that there are no keys entered twice or changed into something that is already here
|
|
if(e.Column == columnKey)
|
|
{
|
|
TextBox t = e.EditingElement as TextBox;
|
|
string editedCellValue = t.Text;
|
|
ValueMapping editedMapping = e.Row.Item as ValueMapping;
|
|
editedMapping.IsDirty = true;
|
|
foreach(ValueMapping vm in _mappings)
|
|
{
|
|
if (vm.Key == editedCellValue)
|
|
e.Cancel = true; // hopefully this avoids writing back to the model
|
|
}
|
|
}
|
|
}
|
|
|
|
private void dataGridValueMappings_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void buttonImport_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void buttonExport_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private async void comboBoxType_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
this._mappings.Clear();
|
|
|
|
if(this.comboBoxType.SelectedItem != null)
|
|
{
|
|
ValueMapping.MappingType mappingType = (ValueMapping.MappingType)this.comboBoxType.SelectedItem;
|
|
List<ValueMapping> mappings = await DBManagerAsync.LoadValuesForType(mappingType);
|
|
foreach (ValueMapping vm in mappings)
|
|
_mappings.Add(vm);
|
|
}
|
|
|
|
}
|
|
|
|
private void dataGridValueMappings_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
|
|
{
|
|
this.activeCellAtEdit = this.dataGridValueMappings.CurrentCell;
|
|
}
|
|
|
|
private async void buttonSave_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
foreach(ValueMapping vm in _mappings)
|
|
{
|
|
if (vm.Key.IsNullOrEmpty()) continue;
|
|
if (vm.IsNew || vm.IsDirty)
|
|
await DBManagerAsync.SaveAsync(vm);
|
|
}
|
|
}
|
|
}
|
|
}
|