CreateNewDocument.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 ESRI.ArcGIS.ADF.BaseClasses Imports ESRI.ArcGIS.Controls Imports ESRI.ArcGIS.Carto Imports ESRI.ArcGIS.SystemUI ''' <summary> ''' Summary description for CreateNewDocument. ''' </summary> Public Class CreateNewDocument Inherits BaseCommand Private m_hookHelper As IHookHelper = Nothing 'constructor Public Sub New() 'update the base properties MyBase.m_category = ".NET Samples" MyBase.m_caption = "NewDocument" MyBase.m_message = "Create a new map" MyBase.m_toolTip = "Create a new map" MyBase.m_name = "DotNetTemplate_NewDocumentCommand" End Sub #Region "Override Class Methods" ''' <summary> ''' Occurs when this command is created ''' </summary> ''' <param name="hook">Instance of the application</param> Public Overrides Sub OnCreate(ByVal hook As Object) If m_hookHelper Is Nothing Then m_hookHelper = New HookHelperClass() End If m_hookHelper.Hook = hook End Sub ''' <summary> ''' Occurs when this command is clicked ''' </summary> Public Overrides Sub OnClick() Dim mapControl As IMapControl3 = Nothing 'get the MapControl from the hook in case the container is a ToolbatControl If TypeOf m_hookHelper.Hook Is IToolbarControl Then mapControl = CType((CType(m_hookHelper.Hook, IToolbarControl)).Buddy, IMapControl3) 'In case the container is MapControl ElseIf TypeOf m_hookHelper.Hook Is IMapControl3 Then mapControl = CType(m_hookHelper.Hook, IMapControl3) Else MsgBox("Active control must be MapControl!", MsgBoxStyle.Exclamation, "Warning") Return End If 'check to see if there is an active edit session and whether edits have been made Dim engineEditor As IEngineEditor = New EngineEditorClass() If ((engineEditor.EditState = esriEngineEditState.esriEngineStateEditing) And (engineEditor.HasEdits() = True)) Then Dim mbInStyle As Integer = CInt(MsgBoxStyle.Question) + CInt(MsgBoxStyle.YesNoCancel) Dim result As MsgBoxResult = MsgBox("Would you like to save your edits?", CType(mbInStyle, Microsoft.VisualBasic.MsgBoxStyle), "Save Edits") If result = MsgBoxResult.Cancel Then Return ElseIf result = MsgBoxResult.No Then engineEditor.StopEditing(False) ElseIf result = MsgBoxResult.Yes Then engineEditor.StopEditing(True) End If End If 'allow the user to save the current document Dim mbInVal As Integer = CInt(MsgBoxStyle.Question) + CInt(MsgBoxStyle.YesNo) Dim res As MsgBoxResult = MsgBox("Would you like to save the current document?", CType(mbInVal, Microsoft.VisualBasic.MsgBoxStyle), "AoView") If res = MsgBoxResult.Yes Then 'launch the save command (why work hard!?) Dim command As ICommand = New ControlsSaveAsDocCommandClass() command.OnCreate(m_hookHelper.Hook) command.OnClick() End If 'create a new Map Dim map As IMap = New MapClass() map.Name = "Map" 'assign the new map to the MapControl mapControl.DocumentFilename = String.Empty mapControl.Map = map End Sub #End Region End Class