DynamicLayerToolbar.vb
' 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. ' Imports Microsoft.VisualBasic Imports System Imports System.Runtime.InteropServices Imports ESRI.ArcGIS.ADF.CATIDs Imports ESRI.ArcGIS.SystemUI ''' <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("DynamicLayerToolbar"), ComVisible(True)> _ Public Class DynamicLayerToolbar : Implements IToolBarDef #Region "COM Registration Function(s)" <ComRegisterFunction(), ComVisible(False)> _ Private Shared Sub RegisterFunction(ByVal registerType As Type) ' Required for ArcGIS Component Category Registrar support ArcGISCategoryRegistration(registerType) ' ' TODO: Add any COM registration code here ' End Sub <ComUnregisterFunction(), ComVisible(False)> _ Private Shared Sub UnregisterFunction(ByVal registerType As Type) ' Required for ArcGIS Component Category Registrar support ArcGISCategoryUnregistration(registerType) End Sub #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 Shared Sub ArcGISCategoryRegistration(ByVal registerType As Type) Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID) ControlsToolbars.Register(regKey) End Sub ''' <summary> ''' Required method for ArcGIS Component Category unregistration - ''' Do not modify the contents of this method with the code editor. ''' </summary> Private Shared Sub ArcGISCategoryUnregistration(ByVal registerType As Type) Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID) ControlsToolbars.Unregister(regKey) End Sub #End Region #End Region 'class members Private m_sToolbarName As String Private m_sToolbarCaption As String ''' <summary> ''' a data-structure used in order to store and manage item definitions ''' </summary> Private Structure ToolDef Public itemDef As String Public group As Boolean Public subType As Integer ''' <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> 'INSTANT VB NOTE: The parameter subtype was renamed since Visual Basic will not uniquely identify class members when parameters have the same name: Public Sub New(ByVal itd As String, ByVal grp As Boolean, ByVal subtype_Renamed As Integer) itemDef = itd group = grp subType = subtype_Renamed End Sub End Structure 'an array of item definitions which will be used to create the commends for the toolbar 'add the 'AddMyDynamicLayerCmd' command onto the toolbar Private m_toolDefs As ToolDef() = { New ToolDef("AddMyDynamicLayerCmd", False, -1) } ''' <summary> ''' Class constructor ''' </summary> Public Sub New() 'name the toolbar and set its caption m_sToolbarName = "MyDynamicLayer" m_sToolbarCaption = "MyDynamicLayer" End Sub #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 Sub GetItemInfo(ByVal pos As Integer, ByVal itemDef As ESRI.ArcGIS.SystemUI.IItemDef) Implements IToolBarDef.GetItemInfo itemDef.ID = m_toolDefs(pos).itemDef itemDef.Group = m_toolDefs(pos).group itemDef.SubType = m_toolDefs(pos).subType End Sub ''' <summary> ''' The caption of this toolbar ''' </summary> Public ReadOnly Property Caption() As String Implements IToolBarDef.Caption Get Return m_sToolbarCaption End Get End Property ''' <summary> ''' The name of this toolbar ''' </summary> Public ReadOnly Property Name() As String Implements IToolBarDef.Name Get Return m_sToolbarName End Get End Property ''' <summary> ''' The number of items in this toolbar ''' </summary> Public ReadOnly Property ItemCount() As Integer Implements IToolBarDef.ItemCount Get Return m_toolDefs.Length End Get End Property #End Region End Class