ArcGIS Select and Delete USNG Graphics Tool

SelectDeleteGraphicsTool

/// Updated Aug 15,2009. ArcGIS 9.3.1 Web ADF

using ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer;

using ESRI.ArcGIS.ADF.Web.UI.WebControls;

using ESRI.ArcGIS.ADF.Web.UI.WebControls.Tools;

 

/// <summary>

/// Summary description for SelectDeleteGraphicsTool

/// This Select and Delete graphics tool provides the ability to delete all graphic elements added using the USNG Coordinate Tool from the Graphic Element Array by drawing a rectangle on the map.

/// </summary>

 

public class SelectDeleteGraphicsTool : IMapServerToolAction

{

public void ServerAction(ToolEventArgs args)

{

Map map = (Map)args.Control;

RectangleEventArgs rect = (RectangleEventArgs)args;

System.Drawing.Rectangle screenRectangle = rect.ScreenExtent;

ESRI.ArcGIS.ADF.Web.Geometry.Point minimumAdfPoint = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(screenRectangle.Left, screenRectangle.Bottom, map.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));

ESRI.ArcGIS.ADF.Web.Geometry.Point maximumAdfPoint = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(screenRectangle.Right, screenRectangle.Top, map.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));

 

MapFunctionality mf = (MapFunctionality)map.GetFunctionality(0);

ESRI.ArcGIS.ADF.ArcGISServer.MapDescription mapDescription = mf.MapDescription;

if (mapDescription.CustomGraphics != null)

{

ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement[] oldges = mapDescription.CustomGraphics;

int cnt = oldges.Length;

ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement[] newges = new ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement[cnt];

oldges.CopyTo(newges, 0);

do

{

ESRI.ArcGIS.ADF.ArcGISServer.TextElement ges = (ESRI.ArcGIS.ADF.ArcGISServer.TextElement)oldges[cnt – 2];

if (ges != null)

{

ESRI.ArcGIS.ADF.ArcGISServer.PointN pText = (ESRI.ArcGIS.ADF.ArcGISServer.PointN)ges.TextGeometry;

if ((pText.X >= minimumAdfPoint.X) && (pText.X <= maximumAdfPoint.X) && (pText.Y >= minimumAdfPoint.Y) && (pText.Y <= maximumAdfPoint.Y))

{

newges[cnt – 1] = null;

newges[cnt – 2] = null;

mapDescription.CustomGraphics = newges;

} // if loop

} // if loop

cnt = cnt – 2;

} while (cnt != 0); //do while loop ends

} // if loop ends

map.Refresh();

}

}