DynamicLayerToolbar.cs
// Copyright 2012 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // using System; using System.Runtime.InteropServices; using ESRI.ArcGIS.ADF.CATIDs; using ESRI.ArcGIS.SystemUI; namespace MyDynamicLayer { /// <summary> /// A toolbar class for ArcGIS applications. /// <para>In order to add commandItems to the toolbar, use the ToolDef array definition. The parameters passed to the /// ToolDef struct constructor are the commandItem's CLSID or ProgID, boolean flag which indicates whether /// to begin a new group on the menu and the subtype number of the command. If the CommnadItem does not implements /// any subtypes, just pass -1</para> /// </summary> [Guid("0515b4e8-83b9-409b-bcde-e7d59c6a86a8")] [ClassInterface(ClassInterfaceType.None)] [ProgId("MyDynamicLayer.DynamicLayerToolbar")] [ComVisible(true)] public class DynamicLayerToolbar : IToolBarDef { #region COM Registration Function(s) [ComRegisterFunction()] [ComVisible(false)] static void RegisterFunction(Type registerType) { // Required for ArcGIS Component Category Registrar support ArcGISCategoryRegistration(registerType); // // TODO: Add any COM registration code here // } [ComUnregisterFunction()] [ComVisible(false)] static void UnregisterFunction(Type registerType) { // Required for ArcGIS Component Category Registrar support ArcGISCategoryUnregistration(registerType); } #region ArcGIS Component Category Registrar generated code /// <summary> /// Required method for ArcGIS Component Category registration - /// Do not modify the contents of this method with the code editor. /// </summary> private static void ArcGISCategoryRegistration(Type registerType) { string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID); ControlsToolbars.Register(regKey); } /// <summary> /// Required method for ArcGIS Component Category unregistration - /// Do not modify the contents of this method with the code editor. /// </summary> private static void ArcGISCategoryUnregistration(Type registerType) { string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID); ControlsToolbars.Unregister(regKey); } #endregion #endregion //class members string m_sToolbarName; string m_sToolbarCaption; /// <summary> /// a data-structure used in order to store and manage item definitions /// </summary> struct ToolDef { public string itemDef; public bool group; public int subType; /// <summary> /// struct constructor /// </summary> /// <param name="itd">The CLSID or PROGID of the item being defined</param> /// <param name="grp">Indicates if the defined item should start a group on the toolbar.</param> /// <param name="subtype">The subtype of the item being defined</param> public ToolDef(string itd, bool grp, int subtype) { itemDef = itd; group = grp; subType = subtype; } }; //an array of item definitions which will be used to create the commends for the toolbar private ToolDef[] m_toolDefs = { //add the 'AddMyDynamicLayerCmd' command onto the toolbar new ToolDef("MyDynamicLayer.AddMyDynamicLayerCmd", false, -1) }; /// <summary> /// Class constructor /// </summary> public DynamicLayerToolbar() { //name the toolbar and set its caption m_sToolbarName = "MyDynamicLayer"; m_sToolbarCaption = "MyDynamicLayer"; } #region IToolBarDef Implementations /// <summary> /// The CLSID for the item on this toolbar at the specified index. /// </summary> /// <param name="pos">the locational index number of this item on the toolbar</param> /// <param name="itemDef">IItemDef object that defines the item at this position of the toolbar</param> public void GetItemInfo(int pos, ESRI.ArcGIS.SystemUI.IItemDef itemDef) { itemDef.ID = m_toolDefs[pos].itemDef; itemDef.Group = m_toolDefs[pos].group; itemDef.SubType = m_toolDefs[pos].subType; } /// <summary> /// The caption of this toolbar /// </summary> public string Caption { get { return m_sToolbarCaption; } } /// <summary> /// The name of this toolbar /// </summary> public string Name { get { return m_sToolbarName; } } /// <summary> /// The number of items in this toolbar /// </summary> public int ItemCount { get { return m_toolDefs.Length; } } #endregion } }