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.Screen;
}
protected override Task OnToolActivateAsync(bool active)
{
return base.OnToolActivateAsync(active);
}
//protected override Task<bool> OnSketchCompleteAsync(Geometry geometry)
//{
// Map activeMap = MapView.Active.Map;
// var polygonLayer = activeMap.GetLayersAsFlattenedList().OfType<FeatureLayer>().Where(
// lyr => lyr.ShapeType == ArcGIS.Core.CIM.esriGeometryType.esriGeometryPolygon).FirstOrDefault();
// if (polygonLayer == null)
// return Task.FromResult(false);
// return QueuedTask.Run(() =>
// {
// var newPolygon = geometry as Polygon;
// FeatureClass featureClass = polygonLayer.GetFeatureClass();
// RowBuffer rowBuffer = featureClass.CreateRowBuffer();
// rowBuffer["Shape"] = newPolygon;
// featureClass.CreateRow(rowBuffer);
// rowBuffer.Dispose();
// return Task.FromResult(true);
// });
//}
protected override Task<bool> OnSketchCompleteAsync(Geometry geometry)
{
if (CurrentTemplate == null || geometry == null)
return Task.FromResult(false);
try
{
// Create an edit operation
var createOperation = new EditOperation();
createOperation.Name = string.Format("Create {0}", CurrentTemplate.Layer.Name);
createOperation.SelectNewFeatures = true;
// pass the point geometry to the Create method
createOperation.Create(CurrentTemplate, geometry);
// Execute the operation
return createOperation.ExecuteAsync();
}
finally
{
MapView.Active.RedrawAsync(true);
}
//Map activeMap = MapView.Active.Map;
//var polygonLayer = activeMap.GetLayersAsFlattenedList().OfType<FeatureLayer>().Where(
// lyr => lyr.ShapeType == ArcGIS.Core.CIM.esriGeometryType.esriGeometryPolyline).FirstOrDefault();
//if (polygonLayer == null)
// return Task.FromResult(false);
//return QueuedTask.Run(() =>
//{
// var createOperation = new EditOperation()
// {
// Name = "Create polylins",
// SelectNewFeatures = false
// };
// var newPolygon = geometry as Polyline;
// // queue the polygon creation
// createOperation.Create(polygonLayer, newPolygon);
// // execute the edit (polygon create) operation
// return Task.FromResult(createOperation.Execute());
//});
}
}
}