About the Simple point plug-in data source Sample
[C#]
OpenSimplePointDlg.cs
using System; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Geodatabase; namespace ESRI.ArcGIS.Samples.SimplePointPlugin { public partial class OpenSimplePointDlg : Form { #region class memebers private IHookHelper m_hookHelper = null; IWorkspace m_workspace = null; #endregion #region class constructor public OpenSimplePointDlg(IHookHelper hookHelper) { if (null == hookHelper) throw new Exception("Hook helper is not initialize"); InitializeComponent(); m_hookHelper = hookHelper; } #endregion #region UI event handlers private void btnOpenDataSource_Click(object sender, EventArgs e) { m_workspace = OpenPlugInWorkspace(); ListFeatureClasses(); } private void lstDeatureClasses_DoubleClick(object sender, EventArgs e) { this.Hide(); OpenDataset(); this.Close(); } private void btnOK_Click(object sender, EventArgs e) { this.Hide(); OpenDataset(); this.Close(); } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } #endregion #region private methods private string GetFileName() { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Simple Point (*.csp)|*.csp"; dlg.Title = "Open Simple Point file"; dlg.RestoreDirectory = true; dlg.CheckPathExists = true; dlg.CheckFileExists = true; dlg.Multiselect = false; DialogResult dr = dlg.ShowDialog(); if (DialogResult.OK == dr) return dlg.FileName; return string.Empty; } private IWorkspace OpenPlugInWorkspace() { try { string path = GetFileName(); if (string.Empty == path) return null; //update the path textbox txtPath.Text = path; //get the type using the ProgID Type t = Type.GetTypeFromProgID("esriGeoDatabase.SimplePointPluginWorkspaceFactory"); //Use activator in order to create an instance of the workspace factory IWorkspaceFactory workspaceFactory = Activator.CreateInstance(t) as IWorkspaceFactory; //open the workspace return workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(path), 0); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); return null; } } private void ListFeatureClasses() { lstDeatureClasses.Items.Clear(); if (null == m_workspace) return; IEnumDatasetName datasetNames = m_workspace.get_DatasetNames(esriDatasetType.esriDTAny); datasetNames.Reset(); IDatasetName dsName; while ((dsName = datasetNames.Next()) != null) { lstDeatureClasses.Items.Add(dsName.Name); } //select the first dataset on the list if (lstDeatureClasses.Items.Count > 0) { lstDeatureClasses.SelectedIndex = 0; lstDeatureClasses.Refresh(); } } private void OpenDataset() { try { if (null == m_hookHelper || null == m_workspace) return; if (string.Empty == (string)lstDeatureClasses.SelectedItem) return; //get the selected item from the listbox string dataset = (string)lstDeatureClasses.SelectedItem; //cast the workspace into a feature workspace IFeatureWorkspace featureWorkspace = m_workspace as IFeatureWorkspace; if (null == featureWorkspace) return; //get a featureclass from the workspace IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(dataset); //create a new feature layer and add it to the map IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.Name = featureClass.AliasName; featureLayer.FeatureClass = featureClass; m_hookHelper.FocusMap.AddLayer((ILayer)featureLayer); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } } #endregion } }
[Visual Basic .NET]
OpenSimplePointDlg.vb
Imports Microsoft.VisualBasic Imports System Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Text Imports System.Windows.Forms Imports ESRI.ArcGIS.Controls Imports ESRI.ArcGIS.Carto Imports ESRI.ArcGIS.Geodatabase Partial Public Class OpenSimplePointDlg Inherits Form #Region "class members" Private m_hookHelper As IHookHelper = Nothing Private m_workspace As IWorkspace = Nothing #End Region #Region "class constructor" Public Sub New(ByVal hookHelper As IHookHelper) If Nothing Is hookHelper Then Throw New Exception("Hook helper is not initialize") End If InitializeComponent() m_hookHelper = hookHelper End Sub #End Region #Region "UI event handlers" Private Sub btnOpenDataSource_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnOpenDataSource.Click m_workspace = OpenPlugInWorkspace() ListFeatureClasses() End Sub Private Sub lstDeatureClasses_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles lstDeatureClasses.DoubleClick Me.Hide() OpenDataset() Me.Close() End Sub Private Sub btnOK_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnOK.Click Me.Hide() OpenDataset() Me.Close() End Sub Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCancel.Click Me.Close() End Sub #End Region #Region "private methods" Private Function GetFileName() As String Dim dlg As OpenFileDialog = New OpenFileDialog() dlg.Filter = "Simple Point (*.csp)|*.csp" dlg.Title = "Open Simple Point file" dlg.RestoreDirectory = True dlg.CheckPathExists = True dlg.CheckFileExists = True dlg.Multiselect = False Dim dr As DialogResult = dlg.ShowDialog() If System.Windows.Forms.DialogResult.OK = dr Then Return dlg.FileName End If Return String.Empty End Function Private Function OpenPlugInWorkspace() As IWorkspace Try Dim path As String = GetFileName() If String.Empty = path Then Return Nothing End If 'update the path textbox txtPath.Text = path 'get the type using the ProgID Dim t As Type = Type.GetTypeFromProgID("esriGeoDatabase.SimplePointPluginWorkspaceFactory") 'Use activator in order to create an instance of the workspace factory Dim workspaceFactory As IWorkspaceFactory = TryCast(Activator.CreateInstance(t), IWorkspaceFactory) 'open the workspace Return workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(path), 0) Catch ex As Exception System.Diagnostics.Trace.WriteLine(ex.Message) Return Nothing End Try End Function Private Sub ListFeatureClasses() lstDeatureClasses.Items.Clear() If Nothing Is m_workspace Then Return End If Dim datasetNames As IEnumDatasetName = m_workspace.DatasetNames(esriDatasetType.esriDTAny) datasetNames.Reset() Dim dsName As IDatasetName dsName = datasetNames.Next() Do While Not dsName Is Nothing lstDeatureClasses.Items.Add(dsName.Name) dsName = datasetNames.Next() Loop 'select the first dataset on the list If lstDeatureClasses.Items.Count > 0 Then lstDeatureClasses.SelectedIndex = 0 lstDeatureClasses.Refresh() End If End Sub Private Sub OpenDataset() Try If Nothing Is m_hookHelper OrElse Nothing Is m_workspace Then Return End If If String.Empty Is CStr(lstDeatureClasses.SelectedItem) Then Return End If 'get the selected item from the listbox Dim dataset As String = CStr(lstDeatureClasses.SelectedItem) 'cast the workspace into a feature workspace Dim featureWorkspace As IFeatureWorkspace = TryCast(m_workspace, IFeatureWorkspace) If Nothing Is featureWorkspace Then Return End If 'get a featureclass from the workspace Dim featureClass As IFeatureClass = featureWorkspace.OpenFeatureClass(dataset) 'create a new feature layer and add it to the map Dim featureLayer As IFeatureLayer = New FeatureLayerClass() featureLayer.Name = featureClass.AliasName featureLayer.FeatureClass = featureClass m_hookHelper.FocusMap.AddLayer(CType(featureLayer, ILayer)) Catch ex As Exception System.Diagnostics.Trace.WriteLine(ex.Message) End Try End Sub #End Region End Class