Execute method implementation

This commit is contained in:
ClemensFischer 2025-03-21 18:48:33 +01:00
parent 45ab678d5b
commit 388e446b96
6 changed files with 43 additions and 43 deletions

View file

@ -26,7 +26,7 @@ namespace MapControl.UiTools
set => Header = value; set => Header = value;
} }
public abstract Task<bool> Execute(MapBase map); public abstract Task Execute(MapBase map);
protected IEnumerable<MapMenuItem> ParentMenuItems => ((ItemsControl)Parent).Items.OfType<MapMenuItem>(); protected IEnumerable<MapMenuItem> ParentMenuItems => ((ItemsControl)Parent).Items.OfType<MapMenuItem>();

View file

@ -35,8 +35,10 @@ namespace MapControl.UiTools
{ {
Click += async (s, e) => 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<MapLayerMenuItem>()) foreach (var item in ParentMenuItems.OfType<MapLayerMenuItem>())
{ {
item.IsChecked = map.Children.Contains(item.MapLayer); item.IsChecked = map.Children.Contains(item.MapLayer);
@ -45,31 +47,26 @@ namespace MapControl.UiTools
}; };
} }
public override async Task<bool> Execute(MapBase map) public override async Task Execute(MapBase map)
{ {
var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke()); var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke());
if (layer == null) if (layer != null)
{ {
return false;
}
map.MapLayer = layer; map.MapLayer = layer;
return true; IsChecked = true;
}
} }
} }
public class MapOverlayMenuItem : MapLayerMenuItem public class MapOverlayMenuItem : MapLayerMenuItem
{ {
public override async Task<bool> Execute(MapBase map) public override async Task Execute(MapBase map)
{ {
var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke()); var layer = MapLayer ?? (MapLayer = await MapLayerFactory.Invoke());
if (layer == null) if (layer != null)
{ {
return false;
}
if (map.Children.Contains(layer)) if (map.Children.Contains(layer))
{ {
map.Children.Remove(layer); map.Children.Remove(layer);
@ -96,7 +93,8 @@ namespace MapControl.UiTools
} }
} }
return true; IsChecked = true;
}
} }
} }
} }

View file

@ -30,8 +30,10 @@ namespace MapControl.UiTools
{ {
Click += async (s, e) => 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<MapProjectionMenuItem>()) foreach (var item in ParentMenuItems.OfType<MapProjectionMenuItem>())
{ {
item.IsChecked = map.MapProjection.CrsId == item.MapProjection; item.IsChecked = map.MapProjection.CrsId == item.MapProjection;
@ -40,7 +42,7 @@ namespace MapControl.UiTools
}; };
} }
public override Task<bool> Execute(MapBase map) public override Task Execute(MapBase map)
{ {
bool success = true; bool success = true;
@ -57,7 +59,9 @@ namespace MapControl.UiTools
} }
} }
return Task.FromResult(success); IsChecked = success;
return Task.CompletedTask;
} }
} }
} }

View file

@ -33,11 +33,9 @@ namespace MapControl.UiTools
{ {
DataContext = Map; DataContext = Map;
if (Items.Count > 0 && if (Items.Count > 0 && Items[0] is MapMenuItem item)
Items[0] is MapMenuItem item &&
await item.Execute(Map))
{ {
item.IsChecked = true; await item.Execute(Map);
} }
} }
} }

View file

@ -13,7 +13,7 @@ namespace MapControl.UiTools
set => Header = value; set => Header = value;
} }
public abstract Task<bool> Execute(MapBase map); public abstract Task Execute(MapBase map);
protected IEnumerable<MapMenuItem> ParentMenuItems => ((ItemsControl)Parent).Items.OfType<MapMenuItem>(); protected IEnumerable<MapMenuItem> ParentMenuItems => ((ItemsControl)Parent).Items.OfType<MapMenuItem>();
} }

View file

@ -13,7 +13,7 @@ namespace MapControl.UiTools
{ {
public abstract class MapMenuItem : ToggleMenuFlyoutItem public abstract class MapMenuItem : ToggleMenuFlyoutItem
{ {
public abstract Task<bool> Execute(MapBase map); public abstract Task Execute(MapBase map);
protected IEnumerable<MapMenuItem> ParentMenuItems protected IEnumerable<MapMenuItem> ParentMenuItems
=> ((Panel)VisualTreeHelper.GetParent(this)).Children.OfType<MapMenuItem>(); => ((Panel)VisualTreeHelper.GetParent(this)).Children.OfType<MapMenuItem>();