ArcObjects Library Reference  

CreateNewDocument

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