130 lines
5.2 KiB
C#
130 lines
5.2 KiB
C#
using System.Collections.Generic;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using DTS.Common.Controls;
|
|
using DTS.Common.Interface.ISO.ExtraProperties;
|
|
using DTS.Common.Utils;
|
|
|
|
namespace ExtraProperties
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for ExtraPropertiesListView.xaml
|
|
/// </summary>
|
|
public partial class ExtraPropertiesListView : IExtraPropertiesListView
|
|
{
|
|
public ExtraPropertiesListView()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void GridViewColumnHeaderSearchable_OnSearch(object sender, RoutedEventArgs e)
|
|
{
|
|
var searchTerm = (string)e.OriginalSource;
|
|
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag;
|
|
var viewModel = (IExtraPropertiesListViewModel)DataContext;
|
|
viewModel.Filter(columnTag, searchTerm);
|
|
}
|
|
|
|
private void GridViewColumnHeader_OnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
var vm = (IExtraPropertiesListViewModel)DataContext;
|
|
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag ?? Utils.FindChild<GridViewColumnHeaderSearchable>((DependencyObject)e.OriginalSource, null)?.Tag;
|
|
vm?.Sort(columnTag, true);
|
|
}
|
|
|
|
private void ExtraPropertyKeyTextBox_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (!(DataContext is ExtraPropertiesListViewModel vm)) { return; }
|
|
if (!(((System.Windows.Controls.Control)e.Source).DataContext is IExtraProperty iep)) { return; }
|
|
|
|
vm.MarkModified(iep);
|
|
}
|
|
|
|
private void ExtraPropertyKeyTextBox_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ExtraPropertiesListViewModel vm)) { return; }
|
|
if (!(e.Source is TextBox textBox)) { return; }
|
|
if (!(textBox.DataContext is IExtraProperty iep)) { return; }
|
|
|
|
vm.MarkModified(iep);
|
|
var notUsed1 = new List<string>();
|
|
var notUsed2 = new List<string>();
|
|
vm.Validate(ref notUsed1, ref notUsed2);
|
|
}
|
|
|
|
private void ExtraProperties_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ExtraPropertiesListViewModel vm)) { return; }
|
|
if (!(sender is ListView lv)) { return; }
|
|
|
|
var list = new List<IExtraProperty>();
|
|
foreach (var item in lv.SelectedItems)
|
|
{
|
|
if (!(item is IExtraProperty exp))
|
|
{
|
|
continue;
|
|
}
|
|
list.Add(exp);
|
|
}
|
|
vm.SetSelection(list.ToArray());
|
|
}
|
|
|
|
private void ExtraPropertiesListView_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
|
{
|
|
var point = e.GetPosition(ExtraPropertiesListViewLV);
|
|
|
|
//we have to do multiple hittests unfortunately, because borders and rectangles...
|
|
var result = VisualTreeHelper.HitTest((UIElement)sender, point);
|
|
if (null == result) { return; }
|
|
if (!(result.VisualHit is UIElement element)) { return; }
|
|
var result2 = ExtraPropertiesListViewLV.InputHitTest(point);
|
|
if (!(result2 is UIElement element2)) { return; }
|
|
|
|
//clicking on the bottom of the listview produces a scrollviewer, if we get that we can return
|
|
if (element is ScrollViewer)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var vm = (IExtraPropertiesListViewModel)DataContext;
|
|
if (element is TextBlock tb)
|
|
{
|
|
if (tb.Text == ExtraProperties.Resources.StringResources.Key) { vm?.Sort(KeyColumnHeader.Tag, true); }
|
|
if (tb.Text == ExtraProperties.Resources.StringResources.Value) { vm?.Sort(ValueColumnHeader.Tag, true); }
|
|
return;
|
|
}
|
|
if (KeyColumnHeader.IsDescendantOf(element) || KeyColumnHeader.IsDescendantOf(element2))
|
|
{
|
|
vm?.Sort(KeyColumnHeader.Tag, true);
|
|
return;
|
|
}
|
|
if (ValueColumnHeader.IsDescendantOf(element) || ValueColumnHeader.IsDescendantOf(element2))
|
|
{
|
|
vm?.Sort(ValueColumnHeader.Tag, true);
|
|
}
|
|
}
|
|
|
|
private void ExtraPropertyValueTextBox_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (!(DataContext is ExtraPropertiesListViewModel vm)) { return; }
|
|
if (!(((System.Windows.Controls.Control)e.Source).DataContext is IExtraProperty iep)) { return; }
|
|
|
|
vm.MarkModified(iep);
|
|
}
|
|
|
|
private void ExtraPropertyValueTextBox_TextChanged(object sender, TextChangedEventArgs e)
|
|
{
|
|
if (!(DataContext is ExtraPropertiesListViewModel vm)) { return; }
|
|
if (!(e.Source is TextBox textBox)) { return; }
|
|
if (!(textBox.DataContext is IExtraProperty iep)) { return; }
|
|
|
|
vm.MarkModified(iep);
|
|
var notUsed1 = new List<string>();
|
|
var notUsed2 = new List<string>();
|
|
vm.Validate(ref notUsed1, ref notUsed2);
|
|
}
|
|
}
|
|
}
|