From 388e446b96d49911987eb7d7a7b66868103e5ea6 Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Fri, 21 Mar 2025 18:48:33 +0100 Subject: [PATCH] Execute method implementation --- MapUiTools/Avalonia/MapMenuItem.Avalonia.cs | 2 +- MapUiTools/Shared/MapLayerMenuItem.cs | 64 ++++++++++----------- MapUiTools/Shared/MapProjectionMenuItem.cs | 10 +++- MapUiTools/Shared/MenuButton.cs | 6 +- MapUiTools/WPF/MapMenuItem.WPF.cs | 2 +- MapUiTools/WinUI/MapMenuItem.WinUI.cs | 2 +- 6 files changed, 43 insertions(+), 43 deletions(-) diff --git a/MapUiTools/Avalonia/MapMenuItem.Avalonia.cs b/MapUiTools/Avalonia/MapMenuItem.Avalonia.cs index 8466ec02..ad3b1d80 100644 --- a/MapUiTools/Avalonia/MapMenuItem.Avalonia.cs +++ b/MapUiTools/Avalonia/MapMenuItem.Avalonia.cs @@ -26,7 +26,7 @@ namespace MapControl.UiTools set => Header = value; } - public abstract Task Execute(MapBase map); + public abstract Task Execute(MapBase map); protected IEnumerable ParentMenuItems => ((ItemsControl)Parent).Items.OfType(); diff --git a/MapUiTools/Shared/MapLayerMenuItem.cs b/MapUiTools/Shared/MapLayerMenuItem.cs index 77c8f019..c5ae6d73 100644 --- a/MapUiTools/Shared/MapLayerMenuItem.cs +++ b/MapUiTools/Shared/MapLayerMenuItem.cs @@ -35,8 +35,10 @@ namespace MapControl.UiTools { Click += async (s, e) => { - if (DataContext is MapBase map && await Execute(map)) + if (DataContext is MapBase map) { + await Execute(map); + foreach (var item in ParentMenuItems.OfType()) { item.IsChecked = map.Children.Contains(item.MapLayer); @@ -45,58 +47,54 @@ namespace MapControl.UiTools }; } - public override async Task Execute(MapBase map) + public override async Task Execute(MapBase map) { var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke()); - if (layer == null) + if (layer != null) { - return false; + map.MapLayer = layer; + IsChecked = true; } - - map.MapLayer = layer; - return true; } } public class MapOverlayMenuItem : MapLayerMenuItem { - public override async Task Execute(MapBase map) + public override async Task Execute(MapBase map) { var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke()); - if (layer == null) + if (layer != null) { - return false; - } - - if (map.Children.Contains(layer)) - { - map.Children.Remove(layer); - } - else - { - var index = 1; - - foreach (var itemLayer in ParentMenuItems? - .OfType() - .Select(item => item.MapLayer) - .Where(itemLayer => itemLayer != null)) + if (map.Children.Contains(layer)) { - if (itemLayer == layer) - { - map.Children.Insert(index, itemLayer); - break; - } + map.Children.Remove(layer); + } + else + { + var index = 1; - if (map.Children.Contains(itemLayer)) + foreach (var itemLayer in ParentMenuItems? + .OfType() + .Select(item => item.MapLayer) + .Where(itemLayer => itemLayer != null)) { - index++; + if (itemLayer == layer) + { + map.Children.Insert(index, itemLayer); + break; + } + + if (map.Children.Contains(itemLayer)) + { + index++; + } } } - } - return true; + IsChecked = true; + } } } } diff --git a/MapUiTools/Shared/MapProjectionMenuItem.cs b/MapUiTools/Shared/MapProjectionMenuItem.cs index 74d46e69..f4ee4cbc 100644 --- a/MapUiTools/Shared/MapProjectionMenuItem.cs +++ b/MapUiTools/Shared/MapProjectionMenuItem.cs @@ -30,8 +30,10 @@ namespace MapControl.UiTools { Click += async (s, e) => { - if (DataContext is MapBase map && await Execute(map)) + if (DataContext is MapBase map) { + await Execute(map); + foreach (var item in ParentMenuItems.OfType()) { item.IsChecked = map.MapProjection.CrsId == item.MapProjection; @@ -40,7 +42,7 @@ namespace MapControl.UiTools }; } - public override Task Execute(MapBase map) + public override Task Execute(MapBase map) { bool success = true; @@ -57,7 +59,9 @@ namespace MapControl.UiTools } } - return Task.FromResult(success); + IsChecked = success; + + return Task.CompletedTask; } } } diff --git a/MapUiTools/Shared/MenuButton.cs b/MapUiTools/Shared/MenuButton.cs index fdacac77..596379cd 100644 --- a/MapUiTools/Shared/MenuButton.cs +++ b/MapUiTools/Shared/MenuButton.cs @@ -33,11 +33,9 @@ namespace MapControl.UiTools { DataContext = Map; - if (Items.Count > 0 && - Items[0] is MapMenuItem item && - await item.Execute(Map)) + if (Items.Count > 0 && Items[0] is MapMenuItem item) { - item.IsChecked = true; + await item.Execute(Map); } } } diff --git a/MapUiTools/WPF/MapMenuItem.WPF.cs b/MapUiTools/WPF/MapMenuItem.WPF.cs index 976a3445..ab18683f 100644 --- a/MapUiTools/WPF/MapMenuItem.WPF.cs +++ b/MapUiTools/WPF/MapMenuItem.WPF.cs @@ -13,7 +13,7 @@ namespace MapControl.UiTools set => Header = value; } - public abstract Task Execute(MapBase map); + public abstract Task Execute(MapBase map); protected IEnumerable ParentMenuItems => ((ItemsControl)Parent).Items.OfType(); } diff --git a/MapUiTools/WinUI/MapMenuItem.WinUI.cs b/MapUiTools/WinUI/MapMenuItem.WinUI.cs index cf910e6a..74ae540c 100644 --- a/MapUiTools/WinUI/MapMenuItem.WinUI.cs +++ b/MapUiTools/WinUI/MapMenuItem.WinUI.cs @@ -13,7 +13,7 @@ namespace MapControl.UiTools { public abstract class MapMenuItem : ToggleMenuFlyoutItem { - public abstract Task Execute(MapBase map); + public abstract Task Execute(MapBase map); protected IEnumerable ParentMenuItems => ((Panel)VisualTreeHelper.GetParent(this)).Children.OfType();