This document is archived and information here might be outdated.  Recommended version.


Application framework customizations (ArcObjects .NET 10.5 SDK)

Application framework customizations


In this topic


Extending the framework

All ArcGIS for Desktop applications share a similar architecture based on the application framework. Developing a customization for an application, such as ArcMap, is no different from creating a customization for another ArcGIS Desktop application, such as ArcGlobe or ArcCatalog. The ArcObjects that you consume will be different, but the implementation is essentially the same due to the common application framework that these applications share. The framework components are discussed in the follows subsections.

Commands and command bars

You can extend the ArcGIS framework by adding your own buttons, tools, tool palettes, combo boxes, tool controls, toolbars, and menus. To create these user interface (UI) components, create classes that implement certain interfaces. These classes are then compiled into assemblies that can plug into the ArcGIS applications.
  • Commands—These are button controls on the ArcGIS Desktop application UI. The simplest type of command is a button that generally appears as an icon on a toolbar, but it can also be placed on menus by the user. In both cases, an action occurs when the button is clicked.
  • Tools—These are similar to button commands, but they are designed to interact with the application's display. The Zoom In command is a good example of a tool—you click or drag a rectangle over a map before the display is redrawn to show the map contents in more detail. Tools can react to a number of events, including mouse up, mouse down, key up, key down, and double-click.
  • Tool palettes—These provide a compact way to group a collection of related tools on a toolbar. Tool palettes were introduced at ArcGIS 10.
  • Combo boxes—These provide a drop-down list of items, each consisting of an image and a line of text; optionally, they also provide an editable input area. Combo boxes were introduced at ArcGIS 10.
  • Subtyped commands, ToolControls and MultiItems—These are other types of command items that can be created and plugged into the ArcGIS Desktop framework.
  • Toolbars—These are containers for other controls. Toolbars can be floating or docked in the application.
  • Menus—These are also containers for commands. Menus can be stacked, employing a pull-right feature, by calling a command that is on another menu. The File, Edit, and View menus on the ArcMap Standard toolbar are examples of menus.
  • Context menus—These are shortcut menus that usually appear when the user right-clicks an item in the application.

Extensions  

Extensions provide users with additional geographic information system (GIS) functionality. Typically, GIS functions that perform a specific task are grouped into an extension. An extension is a suitable customization if you want to deliver a package of associated functionality, such as deliver controls and toolbars, perform event handling, store data commonly shared between controls, perform validation, and much more. You can design your extension to be one of the following:
  • Standard extensions—These are loaded when the application starts. They are often referred to as extensions.
  • Just-in-time extensions—These are delay loaded by request to improve startup performance.

Custom windows

The following types of custom windows can be used:
  • Dockable windows—These are windows that can exist in a floating state or be attached to the main application window.
  • Property pages—These are embedded in property sheets and contain controls to view and allow users to interact with objects by changing the values of their properties without writing code.
  • Contents views—These are also known as the table of contents (TOC) views and provide a graphical interface that allows users to interact with layers, data frames, and other elements on the main display window.
Most of the component implementations require referencing the ESRI.ArcGIS.System, ESRI.ArcGIS.SystemUI, and ESRI.ArcGIS.Framework assemblies.