void OnStartEditing() { // Don't do anything if the extension is disabled if (IsExtensionEnabled != true) { return; } // Check that the workspace being edited is NCGMP-valid. m_EditWorkspace = theEditor.EditWorkspace; m_DatabaseIsValid = ncgmpChecks.IsWorkspaceMinNCGMPCompliant(m_EditWorkspace); //// Check that the SysInfo table is present. //if (m_DatabaseIsValid == true) //{ // m_DatabaseIsValid = ncgmpChecks.IsSysInfoPresent(m_EditWorkspace); //} // Open the SysInfo Table, Look for ProjectID values if (m_DatabaseIsValid == true) { m_SysInfo = new sysInfo(m_EditWorkspace); // If Project Name has not yet been specified, then open the form to set it. if (m_SysInfo.ProjName == null) { Forms.newDatabaseInfo NewInfoForm = new Forms.newDatabaseInfo(); NewInfoForm.ShowDialog(); m_SysInfo.ProjName = NewInfoForm.projTitle; m_SysInfo.ProjAbbr = NewInfoForm.projAbbr; } // Check other Database-validity things m_DatabaseUsesRepresentation = ncgmpChecks.AreRepresentationsUsed(m_EditWorkspace); //m_DatabaseHasStations = ncgmpChecks.IsAzgsStationAddinPresent(m_EditWorkspace); } // From http://resources.esri.com/help/9.3/ArcGISDesktop/ArcObjects/esrigeodatabase/IWorkspaceEditControl.htm // "By default on simple classes, insert cursors handed out by the geodatabase will internally bypass the CreateRow // and Store mechanisms when creating and updating objects. Tools that use insert cursors include Planarize, // Create Features and the Object Loader. When CreateRow and Store are bypassed, subsequent events are not fired // for clients listening to IEditEvents and IObjectClassEvents." // // I have to do this because the topology tool uses an Insert cursor, bypassing the OnCreate event! IWorkspaceEditControl wsEditControl = (IWorkspaceEditControl)m_EditWorkspace; wsEditControl.SetStoreEventsRequired(); // Set the Global variable that notifies other classes that the database is valid NCGMP g_EditWorkspaceIsValid = true; }
void OnStartEditing() { // Don't do anything if the extension is disabled if (IsExtensionEnabled != true) { return; } // Check that the workspace being edited is NCGMP-valid. m_EditWorkspace = theEditor.EditWorkspace; m_DatabaseIsValid = ncgmpChecks.IsWorkspaceMinNCGMPCompliant(m_EditWorkspace); // Check that the SysInfo table is present. if (m_DatabaseIsValid == true) { m_DatabaseIsValid = ncgmpChecks.IsSysInfoPresent(m_EditWorkspace); } // Open the SysInfo Table, Look for ProjectID values if (m_DatabaseIsValid == true) { m_SysInfo = new sysInfo(m_EditWorkspace); // If Project Name has not yet been specified, then open the form to set it. if (m_SysInfo.ProjName == null) { Forms.newDatabaseInfo NewInfoForm = new Forms.newDatabaseInfo(); NewInfoForm.ShowDialog(); m_SysInfo.ProjName = NewInfoForm.projTitle; m_SysInfo.ProjAbbr = NewInfoForm.projAbbr; } // Check other Database-validity things m_DatabaseUsesRepresentation = ncgmpChecks.AreRepresentationsUsed(m_EditWorkspace); m_DatabaseHasStations = ncgmpChecks.IsAzgsStationAddinPresent(m_EditWorkspace); } // From http://resources.esri.com/help/9.3/ArcGISDesktop/ArcObjects/esrigeodatabase/IWorkspaceEditControl.htm // "By default on simple classes, insert cursors handed out by the geodatabase will internally bypass the CreateRow // and Store mechanisms when creating and updating objects. Tools that use insert cursors include Planarize, // Create Features and the Object Loader. When CreateRow and Store are bypassed, subsequent events are not fired // for clients listening to IEditEvents and IObjectClassEvents." // // I have to do this because the topology tool uses an Insert cursor, bypassing the OnCreate event! IWorkspaceEditControl wsEditControl = (IWorkspaceEditControl)m_EditWorkspace; wsEditControl.SetStoreEventsRequired(); // Set the Global variable that notifies other classes that the database is valid NCGMP g_EditWorkspaceIsValid = true; }