Editor customizations and deployment options
The editing framework can be customized to add your own commands, tools, tasks, extensions, shape constructors, and object inspectors. For an overview of these customizations, see ArcGIS for Desktop editing for developers.
Many of these customizations can be built and deployed as add-ins, while others require development of custom components. For more information on customizing using add-ins, see Building add-ins for ArcGIS for Desktop. For information on how to create editor customizations using components, see Editor framework customizations. For general information on components, see Extending ArcObjects.
Developing and deploying your customizations as add-ins is the preferred method.
The following table shows the various editor customization types and their supported customization methods:
Customization type
|
Add-in
|
Component
|
Commands
|
Yes
|
Yes
|
|
Yes
|
Yes
|
Tools
|
Yes
|
Yes
|
|
Yes
|
Yes
|
Extensions
|
Yes
|
Yes
|
Shape constructors
|
No
|
Yes
|
Tasks
|
No
|
Yes
|
Object inspectors
|
No
|
Yes
|
Snap agents
|
No
|
Yes
|
Edit sketch extensions
|
No
|
Yes
|
Creating an editor command add-in
Creating an editor command add-in follows the same workflow as creating a regular ArcGIS command add-in. A reference to the editor is obtained in the add-in constructor. To enable the command while editing, set the Enabled property in the OnUpdate method. See the following code example:
[C#]
public class EditCommand: ESRI.ArcGIS.Desktop.AddIns.Button private IEditor3
m_Editor;
public EditCommand()
{
//Get the editor extension.
UID uID = new UIDClass();
uID.Value = "esriEditor.Editor";
m_Editor = ArcMap.Application.FindExtensionByCLSID(uID)as IEditor3;
}
protected override void OnUpdate()
{
Enabled = (m_Editor.EditState == esriEditState.esriStateEditing);
}
[VB.NET]
Public Class Button1
Inherits ESRI.ArcGIS.Desktop.AddIns.Button
Dim m_Editor As IEditor3
Public Sub New()
'Get the editor extension.
Dim editorUID As UID
editorUID = New UID
editorUID.Value = "esriEditor.Editor"
m_Editor = (My.ArcMap.Application.FindExtensionByCLSID(editorUID))
End Sub
Protected Overrides Sub OnUpdate()
Enabled = (m_Editor.EditState = esriEditState.esriStateEditing)
End Sub
The Curve conversion add-in is an example of an editor command add-in.
Tools
Editor tools are created to interact with the display. They can be divided into two main types, those that use the shape constructors (straight, arc, trace, right angle, and so on) to provide geometry via the sketch and those that provide their own geometry (via tool events).
Both types can be further subdivided into two other subtypes, construction tools and non-construction tools. Construction tools are used to create new features and are found within the construction tools pane in the Create Features window. The polygon, polyline and rectangle tools are examples of construction tools whereas the split polygons tool is an example of regular or non-construction edit tool. It is important to understand what type of tool you want to create as this determines how you go about creating it.
Creating an edit tool that uses shape constructors
To build a tool that uses the shape constructors, you must create a tool add-in that implements ISketchTool, and IShapeConstructorTool. Your custom tool forwards its mouse events (such as mouse move and mouse down) to the current shape constructor, which internally calls the editor's sketch tool. Your tool must also listen to the IEditEvents.OnSketchFinished event so you can obtain the edit sketch geometry (IEditSketch.Geometry) when you finish sketching and perform an edit operation.
If your tool is used to create new features, you should also make it a construction tool so that it appears in the construction tools pane within the Create Features window. To make your tool a construction tool, register it in a construction tool component category for the type of geometry you want to create. For example, if your tool creates polylines, register it in the polyline feature construction tools category.
To create the tool using the Visual Studio wizard, follow the steps for Creating a custom button and tool in the topic, Building custom UI elements using add-ins until Step 4. At Step 4, choose Construction tool as the add-in type and complete the rest of the information. If the tool is to be a construction tool, select the appropriate category.
The resulting .NET class contains the code to create the add-in using the shape constructors. Modify the existing code as required for your tool. You can obtain the sketch geometry in the OnSketchFinished event from the m_edSketch.Geometry property.
Creating an edit tool that does not use shape constructors
If your tool provides its own geometry, that is, will not use the shape constructors, you can build a regular add-in tool to use with the editor. For information on how to build a tool add-in, see the previously mentioned topic, Building custom UI elements using add-ins. As with command add-ins, you'll have to put the editor initialization in the tool add-in constructor and check for the edit state in the OnUpdate method. You need to add code to the tool's mouse events to create your geometry to complete the tool's operation.
If your tool is used to create new features, make it a construction tool so that it appears in the construction tools pane within the Create Features window. To make your tool a construction tool, register it in a construction tool component category for the type of geometry you want to create.
To create the tool using the Visual Studio wizard, follow the steps for Creating a custom button and tool in the previously mentioned topic, Building custom UI elements using add-ins until Step 4. At Step 4, choose Construction tool as the add-in type, uncheck Shape Constructors and complete the rest of the information. If the tool is to be a construction tool, select the appropriate category.
Creating an editor extension add-in
For information on using add-ins to create editor extensions, see Building editor extensions using add-ins.
See Also:
ArcGIS for Desktop editing for developersEditor framework customizations
Building custom UI elements using add-ins
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
Development licensing | Deployment licensing |
---|---|
ArcGIS for Desktop Advanced | ArcGIS for Desktop Advanced |
ArcGIS for Desktop Standard | ArcGIS for Desktop Standard |
ArcGIS for Desktop Basic | ArcGIS for Desktop Basic |