using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ArcGIS.Core.CIM;
using ArcGIS.Core.Data;
using ArcGIS.Core.Geometry;
using ArcGIS.Desktop.Catalog;
using ArcGIS.Desktop.Core;
using ArcGIS.Desktop.Editing;
using ArcGIS.Desktop.Extensions;
using ArcGIS.Desktop.Framework;
using ArcGIS.Desktop.Framework.Contracts;
using ArcGIS.Desktop.Framework.Dialogs;
using ArcGIS.Desktop.Framework.Threading.Tasks;
using ArcGIS.Desktop.Mapping;
namespace TKPrint
{
internal class MapTool1 : MapTool
{
public MapTool1()
{
IsSketchTool = true;
SketchType = SketchGeometryType.Line;
SketchOutputMode = SketchOutputMode.Map;
}
protected override Task OnToolActivateAsync(bool active)
{
return base.OnToolActivateAsync(active);
}
protected override Task<bool> OnSketchCompleteAsync(Geometry geometry)
{
QueuedTask.Run(() =>
{
//Delete all the selected features in the active view
//Select using a polygon (for example)
var selection = MapView.Active.SelectFeatures(geometry).Select(
k => new KeyValuePair<MapMember, List<long>>(k.Key as MapMember, k.Value));
foreach (var a in selection)
{
Layer featureLayer = a.Key as Layer;
foreach (var id in a.Value)
{
var deleteFeatures = new EditOperation();
deleteFeatures.Name = "Delete Features";
deleteFeatures.ShowProgressor = true;
deleteFeatures.EditOperationType = EditOperationType.Long;
deleteFeatures.Cut(featureLayer, id, geometry);
//deleteFeatures.Split(featureLayer, id, geometry);
deleteFeatures.ExecuteAsync();
}
}
//deleteFeatures.Delete(selection);
//Execute to execute the operation
//Must be called within QueuedTask.Run
});
return base.OnSketchCompleteAsync(geometry);
}
}
}