From c25bfc9f1b6b0011e40cf7fe01d1205d16bb38b8 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Fri, 24 Nov 2023 23:38:55 +0100 Subject: [PATCH] Windows: Add OriginHierarchyWindow --- Elwig/App.xaml | 34 +++- Elwig/App.xaml.cs | 18 ++ Elwig/Helpers/AppDbContext.cs | 2 + Elwig/Helpers/ControlUtils.cs | 9 + Elwig/Models/Entities/AT_Kg.cs | 2 +- Elwig/Windows/AdministrationWindow.cs | 4 - Elwig/Windows/AreaComAdminWindow.xaml.cs | 8 + Elwig/Windows/BaseDataWindow.xaml | 4 + Elwig/Windows/BaseDataWindow.xaml.cs | 4 + Elwig/Windows/ContextWindow.cs | 10 +- Elwig/Windows/DeliveryAdminWindow.xaml | 2 +- Elwig/Windows/MemberAdminWindow.xaml.cs | 8 + Elwig/Windows/OriginHierarchyWindow.xaml | 74 ++++++++ Elwig/Windows/OriginHierarchyWindow.xaml.cs | 184 ++++++++++++++++++++ 14 files changed, 353 insertions(+), 10 deletions(-) create mode 100644 Elwig/Windows/OriginHierarchyWindow.xaml create mode 100644 Elwig/Windows/OriginHierarchyWindow.xaml.cs diff --git a/Elwig/App.xaml b/Elwig/App.xaml index bba2122..e351b55 100644 --- a/Elwig/App.xaml +++ b/Elwig/App.xaml @@ -84,6 +84,12 @@ + + + + + + @@ -95,7 +101,7 @@ - + @@ -103,5 +109,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Elwig/App.xaml.cs b/Elwig/App.xaml.cs index 23d2767..2c78bf4 100644 --- a/Elwig/App.xaml.cs +++ b/Elwig/App.xaml.cs @@ -15,6 +15,7 @@ using System.Reflection; using Elwig.Helpers.Printing; using Elwig.Windows; using Elwig.Dialogs; +using System.Threading.Tasks; namespace Elwig { public partial class App : Application { @@ -175,6 +176,13 @@ namespace Elwig { } } + public static async Task HintContextChange() { + foreach (Window w in CurrentApp.Windows) { + if (w is not ContextWindow c) continue; + await c.HintContextChange(); + } + } + private static T FocusWindow(Func constructor, Predicate? selector = null) where T : Window { foreach (Window w in CurrentApp.Windows) { if (w is T t && (selector == null || selector(t))) { @@ -218,5 +226,15 @@ namespace Elwig { public static DeliveryConfirmationsWindow FocusDeliveryConfirmations(int year) { return FocusWindow(() => new(year), w => w.Year == year); } + + public static OriginHierarchyWindow FocusOriginHierarchy() { + return FocusWindow(() => new()); + } + + public static OriginHierarchyWindow FocusOriginHierarchyKg(int kgnr) { + var w = FocusOriginHierarchy(); + w.FocusKgNr(kgnr); + return w; + } } } diff --git a/Elwig/Helpers/AppDbContext.cs b/Elwig/Helpers/AppDbContext.cs index cb28a14..b0f8071 100644 --- a/Elwig/Helpers/AppDbContext.cs +++ b/Elwig/Helpers/AppDbContext.cs @@ -27,6 +27,8 @@ namespace Elwig.Helpers { public DbSet WineVarieties { get; private set; } public DbSet ClientParameters { get; private set; } + public DbSet WbGls { get; private set; } + public DbSet WbGems { get; private set; } public DbSet WbKgs { get; private set; } public DbSet WbRde { get; private set; } public DbSet WineAttributes { get; private set; } diff --git a/Elwig/Helpers/ControlUtils.cs b/Elwig/Helpers/ControlUtils.cs index b196505..47c1a3d 100644 --- a/Elwig/Helpers/ControlUtils.cs +++ b/Elwig/Helpers/ControlUtils.cs @@ -183,6 +183,15 @@ namespace Elwig.Helpers { SelectComboBoxItem(cb, getId, getId(item)); } + public static void SelectListBoxItem(ListBox lb, Func getId, object? id) { + lb.SelectedItem = GetItemFromSource(lb.ItemsSource, getId, id); + lb.ScrollIntoView(lb.SelectedItem); + } + + public static void SelectListBoxItem(ListBox lb, object? item, Func getId) { + SelectListBoxItem(lb, getId, getId(item)); + } + public static IEnumerable GetItemsFromSource(IEnumerable source, Func getId, IEnumerable ids) { if (source == null) return Array.Empty(); diff --git a/Elwig/Models/Entities/AT_Kg.cs b/Elwig/Models/Entities/AT_Kg.cs index fd96035..0a2191e 100644 --- a/Elwig/Models/Entities/AT_Kg.cs +++ b/Elwig/Models/Entities/AT_Kg.cs @@ -17,6 +17,6 @@ namespace Elwig.Models.Entities { public virtual AT_Gem Gem { get; private set; } [InverseProperty("AtKg")] - public virtual WbKg WbKg { get; private set; } + public virtual WbKg? WbKg { get; private set; } } } diff --git a/Elwig/Windows/AdministrationWindow.cs b/Elwig/Windows/AdministrationWindow.cs index a946daa..4331253 100644 --- a/Elwig/Windows/AdministrationWindow.cs +++ b/Elwig/Windows/AdministrationWindow.cs @@ -573,10 +573,6 @@ namespace Elwig.Windows { InputLostFocus((TextBox)sender, Validator.CheckUpperCase); } - protected void KgDetailsButton_Click(object sender, RoutedEventArgs evt) { - // TODO open origin window - } - protected void AreaComTypeDetailsButton_Click(object sender, RoutedEventArgs evt) { App.FocusBaseDataAreaComType(); } diff --git a/Elwig/Windows/AreaComAdminWindow.xaml.cs b/Elwig/Windows/AreaComAdminWindow.xaml.cs index 7029974..3f5e6e5 100644 --- a/Elwig/Windows/AreaComAdminWindow.xaml.cs +++ b/Elwig/Windows/AreaComAdminWindow.xaml.cs @@ -401,6 +401,14 @@ namespace Elwig.Windows { ComboBox_SelectionChanged(sender, evt); } + private void KgDetailsButton_Click(object sender, RoutedEventArgs evt) { + if (KgInput.SelectedItem is AT_Kg kg) { + App.FocusOriginHierarchyKg(kg.KgNr); + } else { + App.FocusOriginHierarchy(); + } + } + private void RdInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) { RdAddButton.IsEnabled = RdInput.SelectedIndex == -1; } diff --git a/Elwig/Windows/BaseDataWindow.xaml b/Elwig/Windows/BaseDataWindow.xaml index 805fa97..ee96be4 100644 --- a/Elwig/Windows/BaseDataWindow.xaml +++ b/Elwig/Windows/BaseDataWindow.xaml @@ -545,6 +545,10 @@ +