mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Execute method implementation
This commit is contained in:
parent
45ab678d5b
commit
388e446b96
|
|
@ -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>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,58 +47,54 @@ 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;
|
||||||
|
IsChecked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
map.MapLayer = layer;
|
|
||||||
return 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);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var index = 1;
|
|
||||||
|
|
||||||
foreach (var itemLayer in ParentMenuItems?
|
|
||||||
.OfType<MapOverlayMenuItem>()
|
|
||||||
.Select(item => item.MapLayer)
|
|
||||||
.Where(itemLayer => itemLayer != null))
|
|
||||||
{
|
{
|
||||||
if (itemLayer == layer)
|
map.Children.Remove(layer);
|
||||||
{
|
}
|
||||||
map.Children.Insert(index, itemLayer);
|
else
|
||||||
break;
|
{
|
||||||
}
|
var index = 1;
|
||||||
|
|
||||||
if (map.Children.Contains(itemLayer))
|
foreach (var itemLayer in ParentMenuItems?
|
||||||
|
.OfType<MapOverlayMenuItem>()
|
||||||
|
.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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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>();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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>();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue