RecentFilesCombo.vb
' Copyright 2010 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 System.IO Imports System.Runtime.InteropServices Imports System.Drawing Imports ESRI.ArcGIS.ADF.BaseClasses Imports ESRI.ArcGIS.ADF.CATIDs Imports ESRI.ArcGIS.Framework Imports ESRI.ArcGIS.SystemUI <ComClass(RecentFilesCombo.ClassId, RecentFilesCombo.InterfaceId, RecentFilesCombo.EventsId), _ ProgId("RecentFilesCommandsVB.RecentFilesCombo")> _ Public NotInheritable Class RecentFilesCombo Inherits BaseCommand Implements IComboBox #Region "COM GUIDs" ' These GUIDs provide the COM identity for this class ' and its COM interfaces. If you change them, existing ' clients will no longer be able to access the class. Public Const ClassId As String = "3b7bd3f6-246d-4761-8996-aa1409281cef" Public Const InterfaceId As String = "e88f97f3-afc2-41a0-a6a0-6375f1a3d6cf" Public Const EventsId As String = "077db9cd-d208-4452-8266-26b4fbae5ff0" #End Region #Region "COM Registration Function(s)" <ComRegisterFunction(), ComVisibleAttribute(False)> _ Public Shared Sub RegisterFunction(ByVal registerType As Type) ' Required for ArcGIS Component Category Registrar support ArcGISCategoryRegistration(registerType) 'Add any COM registration code after the ArcGISCategoryRegistration() call End Sub <ComUnregisterFunction(), ComVisibleAttribute(False)> _ Public Shared Sub UnregisterFunction(ByVal registerType As Type) ' Required for ArcGIS Component Category Registrar support ArcGISCategoryUnregistration(registerType) 'Add any COM unregistration code after the ArcGISCategoryUnregistration() call End Sub #Region "ArcGIS Component Category Registrar generated code" Private Shared Sub ArcGISCategoryRegistration(ByVal registerType As Type) Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID) MxCommands.Register(regKey) End Sub Private Shared Sub ArcGISCategoryUnregistration(ByVal registerType As Type) Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID) MxCommands.Unregister(regKey) End Sub #End Region #End Region Private m_application As IApplication Private m_itemMap As System.Collections.Generic.Dictionary(Of Integer, String) Private m_strWidth As String = "c:\documents\map documents" ' A creatable COM class must have a Public Sub New() ' with no parameters, otherwise, the class will not be ' registered in the COM registry and cannot be created ' via CreateObject. Public Sub New() MyBase.New() MyBase.m_category = ".NET Samples" MyBase.m_caption = "Recent Documents: " MyBase.m_message = "Recent Documents" MyBase.m_toolTip = "Recent Documents" MyBase.m_name = "RecentDocsCombo" m_itemMap = New System.Collections.Generic.Dictionary(Of Integer, String)() End Sub Public Overrides Sub OnCreate(ByVal hook As Object) Dim comboHook As IComboBoxHook = TryCast(hook, IComboBoxHook) If comboHook Is Nothing Then m_enabled = False Return End If m_application = TryCast(comboHook.Hook, IApplication) Dim cookie As Integer = 0 For Each fileName As String In RecentFilesRegistryHelper.GetRecentFiles(m_application) If File.Exists(fileName) Then 'Add item to list cookie = comboHook.Add(fileName) m_itemMap.Add(cookie, fileName) End If Next End Sub Public Overrides Sub OnClick() End Sub Public ReadOnly Property DropDownHeight() As Integer Implements ESRI.ArcGIS.SystemUI.IComboBox.DropDownHeight Get Return 50 End Get End Property Public ReadOnly Property DropDownWidth() As String Implements ESRI.ArcGIS.SystemUI.IComboBox.DropDownWidth Get Return m_strWidth End Get End Property Public ReadOnly Property Editable() As Boolean Implements ESRI.ArcGIS.SystemUI.IComboBox.Editable Get Return False End Get End Property Public ReadOnly Property HintText() As String Implements ESRI.ArcGIS.SystemUI.IComboBox.HintText Get Return "Select document" End Get End Property Public Sub OnEditChange(ByVal editString As String) Implements ESRI.ArcGIS.SystemUI.IComboBox.OnEditChange End Sub Public Sub OnEnter() Implements ESRI.ArcGIS.SystemUI.IComboBox.OnEnter End Sub Public Sub OnFocus(ByVal [set] As Boolean) Implements ESRI.ArcGIS.SystemUI.IComboBox.OnFocus End Sub Public Sub OnSelChange(ByVal cookie As Integer) Implements ESRI.ArcGIS.SystemUI.IComboBox.OnSelChange Dim selectedPath As String = m_itemMap(cookie) m_application.OpenDocument(selectedPath) End Sub Public ReadOnly Property ShowCaption() As Boolean Implements ESRI.ArcGIS.SystemUI.IComboBox.ShowCaption Get Return False End Get End Property Public ReadOnly Property Width() As String Implements ESRI.ArcGIS.SystemUI.IComboBox.Width Get Return m_strWidth End Get End Property End Class