About the Schematics Engine application Sample
[C#]
CreateNewDocument.cs
using System; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; using ESRI.ArcGIS.ADF.BaseClasses; using ESRI.ArcGIS.ADF.CATIDs; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.SystemUI; namespace SchematicApplication { /// <summary> /// Summary description for CreateNewDocument. /// </summary> public class CreateNewDocument : BaseCommand { private IHookHelper m_hookHelper = null; //constructor public CreateNewDocument() { //update the base properties base.m_category = ".NET Samples"; base.m_caption = "NewDocument"; base.m_message = "Create a new map"; base.m_toolTip = "Create a new map"; base.m_name = "DotNetTemplate_NewDocumentCommand"; } #region Overriden Class Methods /// <summary> /// Occurs when this command is created /// </summary> /// <param name="hook">Instance of the application</param> public override void OnCreate(object hook) { if (m_hookHelper == null) m_hookHelper = new HookHelperClass(); m_hookHelper.Hook = hook; } /// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { IMapControl3 mapControl = null; //get the MapControl from the hook in case the container is a ToolbarControl if (m_hookHelper.Hook is IToolbarControl) { mapControl = (IMapControl3)((IToolbarControl)m_hookHelper.Hook).Buddy; } //In case the container is MapControl else if (m_hookHelper.Hook is IMapControl3) { mapControl = (IMapControl3)m_hookHelper.Hook; } else { MessageBox.Show("Active control must be MapControl!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } //check to see if there is an active edit session and whether edits have been made DialogResult result; IEngineEditor engineEditor = new EngineEditorClass(); if ((engineEditor.EditState == esriEngineEditState.esriEngineStateEditing) && (engineEditor.HasEdits() == true)) { result = MessageBox.Show("Would you like to save your edits", "Save Edits", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); switch (result) { case DialogResult.Cancel: return; case DialogResult.No: engineEditor.StopEditing(false); break; case DialogResult.Yes: engineEditor.StopEditing(true); break; } } //allow the user to save the current document DialogResult res = MessageBox.Show("Would you like to save the current document?", "AoView", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (res == DialogResult.Yes) { //launch the save command ICommand command = new ControlsSaveAsDocCommandClass(); command.OnCreate(m_hookHelper.Hook); command.OnClick(); } //create a new Map IMap map = new MapClass(); map.Name = "Map"; //assign the new map to the MapControl mapControl.DocumentFilename = string.Empty; mapControl.Map = map; } #endregion } }
[Visual Basic .NET]
CreateNewDocument.vb
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