SimplePointWkspFact.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 Microsoft.Win32 Imports ESRI.ArcGIS.ADF.CATIDs Imports ESRI.ArcGIS.ADF Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.Geodatabase ''' <summary> ''' Summary description for SimplePointWkspFact. ''' </summary> ''' <ClassInterface(ClassInterfaceType.None), Guid("6e167940-6d49-485b-a2b8-061c144d805f"), ProgId("SimplePointPlugin.SimplePointWFHelper")> _ Public NotInheritable Class SimplePointWkspFact Implements IPlugInWorkspaceFactoryHelper #Region "Component Category Registration" <ComRegisterFunction()> _ Public Shared Sub RegisterFunction(ByVal regKey As String) 'proxy PluginWorkspaceFactoryHelper PlugInWorkspaceFactoryHelpers.Register(regKey) End Sub <ComUnregisterFunction()> _ Public Shared Sub UnregisterFunction(ByVal regKey As String) PlugInWorkspaceFactoryHelpers.Unregister(regKey) End Sub #End Region #Region "class constructor" Public Sub New() End Sub #End Region #Region "IPlugInWorkspaceFactoryHelper Members" Public ReadOnly Property DatasetDescription(ByVal DatasetType As ESRI.ArcGIS.Geodatabase.esriDatasetType) As String Implements ESRI.ArcGIS.Geodatabase.IPlugInWorkspaceFactoryHelper.DatasetDescription Get Select Case DatasetType Case esriDatasetType.esriDTTable Return "SimplePoint Table" Case esriDatasetType.esriDTFeatureClass Return "SimplePoint Feature Class" Case esriDatasetType.esriDTFeatureDataset Return "SimplePoint Feature Dataset" Case Else Return Nothing End Select End Get End Property Public ReadOnly Property WorkspaceDescription(ByVal plural As Boolean) As String Implements ESRI.ArcGIS.Geodatabase.IPlugInWorkspaceFactoryHelper.WorkspaceDescription Get If plural Then Return "Simple Points" Else Return "Simple Point" End If End Get End Property Public ReadOnly Property CanSupportSQL() As Boolean Implements IPlugInWorkspaceFactoryHelper.CanSupportSQL Get Return False End Get End Property Public ReadOnly Property DataSourceName() As String Implements IPlugInWorkspaceFactoryHelper.DataSourceName 'HIGHLIGHT: ProgID = esriGeoDatabase.<DataSourceName>WorkspaceFactory Get Return "SimplePointPlugin" End Get End Property Public Function ContainsWorkspace(ByVal parentDirectory As String, ByVal fileNames As IFileNames) As Boolean Implements IPlugInWorkspaceFactoryHelper.ContainsWorkspace If fileNames Is Nothing Then Return Me.IsWorkspace(parentDirectory) End If If (Not System.IO.Directory.Exists(parentDirectory)) Then Return False End If Dim sFileName As String sFileName = fileNames.Next() Do While Not sFileName Is Nothing If Not fileNames.IsDirectory() Then If System.IO.Path.GetExtension(sFileName).Equals(".csp") Then Return True End If End If sFileName = fileNames.Next() Loop Return False End Function Public ReadOnly Property WorkspaceFactoryTypeID() As UID Implements IPlugInWorkspaceFactoryHelper.WorkspaceFactoryTypeID 'HIGHLIGHT: Generate a new GUID to identify the workspace factory Get Dim wkspFTypeID As UID = New UIDClass() wkspFTypeID.Value = "{b8a25f89-2adc-43c0-ac2e-16b3a88e3915}" 'proxy Return wkspFTypeID End Get End Property Public Function IsWorkspace(ByVal wksString As String) As Boolean Implements ESRI.ArcGIS.Geodatabase.IPlugInWorkspaceFactoryHelper.IsWorkspace 'IsWorkspace is True when the folder contains csp files If System.IO.Directory.Exists(wksString) Then Return System.IO.Directory.GetFiles(wksString, "*.csp").Length > 0 End If Return False End Function Public ReadOnly Property WorkspaceType() As esriWorkspaceType Implements IPlugInWorkspaceFactoryHelper.WorkspaceType 'HIGHLIGHT: WorkspaceType - FileSystem type strongly recommended Get Return esriWorkspaceType.esriFileSystemWorkspace End Get End Property Public Function OpenWorkspace(ByVal wksString As String) As IPlugInWorkspaceHelper Implements IPlugInWorkspaceFactoryHelper.OpenWorkspace 'HIGHLIGHT: OpenWorkspace 'Don't have to check if wksString contains valid data file. 'Any valid folder path is fine since we want paste to work in any folder If System.IO.Directory.Exists(wksString) Then Dim openWksp As SimplePointWksp = New SimplePointWksp(wksString) Return CType(openWksp, IPlugInWorkspaceHelper) End If Return Nothing End Function Public Function GetWorkspaceString(ByVal parentDirectory As String, ByVal fileNames As IFileNames) As String Implements IPlugInWorkspaceFactoryHelper.GetWorkspaceString 'return the path to the workspace location if If (Not System.IO.Directory.Exists(parentDirectory)) Then Return Nothing End If If fileNames Is Nothing Then 'don't have to check.csp file Return parentDirectory End If 'HIGHLIGHT: GetWorkspaceString - claim and remove file names from list Dim sFileName As String Dim fileFound As Boolean = False sFileName = fileNames.Next() Do While Not sFileName Is Nothing If Not fileNames.IsDirectory() Then If System.IO.Path.GetExtension(sFileName).Equals(".csp") Then fileFound = True fileNames.Remove() End If End If sFileName = fileNames.Next() Loop If fileFound Then Return parentDirectory Else Return Nothing End If End Function #End Region End Class