private void tlsbtnShowCopyPanel_Click(object sender, EventArgs e) { #region "Open the Database to Copy From" findDatabase: // Check the registry string regValue = commonFunctions.ReadReg("Software\\NCGMPTools", "getSqlDatabase"); // Find a Database IWorkspaceFactory wsFact = null; IWorkspace openedWorkspace = null; // Browse for a file, personal or SDE geodatabase IGxObjectFilter objectFilter = new GxFilterWorkspaces(); IGxObject openedObject = commonFunctions.OpenArcFile(objectFilter, "Please select an NCGMP database"); if (openedObject == null) { return; } // Check to see if it is a File, Personal or SDE database, create appropriate workspace factory string pathToOpen = null; switch (openedObject.Category) { case "Personal Geodatabase": wsFact = new AccessWorkspaceFactoryClass(); pathToOpen = openedObject.FullName; break; case "File Geodatabase": wsFact = new FileGDBWorkspaceFactoryClass(); pathToOpen = openedObject.FullName; break; case "Spatial Database Connection": case "Database Connection": wsFact = new SdeWorkspaceFactoryClass(); IGxRemoteDatabaseFolder remoteDatabaseFolder = (IGxRemoteDatabaseFolder)openedObject.Parent; pathToOpen = remoteDatabaseFolder.Path + openedObject.Name; break; default: break; } openedWorkspace = wsFact.OpenFromFile(pathToOpen, 0); // Check to see if the database is valid NCGMP bool isValid = ncgmpChecks.IsWorkspaceMinNCGMPCompliant(openedWorkspace); if (isValid == false) { MessageBox.Show("The selected database is not a valid NCGMP database.", "NCGMP Toolbar"); goto findDatabase; } //else //{ // isValid = ncgmpChecks.IsSysInfoPresent(openedWorkspace); // if (isValid == false) // { // MessageBox.Show("In order to use these tools, the NCGMP database must contain a SysInfo table.", "NCGMP Toolbar"); // goto findDatabase; // } //} #endregion // Show the copy form sourceLegendItemSelection sourceForm = new sourceLegendItemSelection(openedWorkspace); sourceForm.ShowDialog(); // Bail if they canceled if (sourceForm.Canceled == true) { return; } // Get the Ids from the form, then close it if (sourceForm.idsToCopy.Count == 0) { sourceForm.Close(); return; } List<string> idsToCopy = sourceForm.idsToCopy; sourceForm.Close(); // Build the Query to get the records to copy string sqlWhereClause = "DescriptionOfMapUnits_ID = '"; foreach (string idValue in idsToCopy) { sqlWhereClause += idValue + "' OR DescriptionOfMapUnits_ID = '"; } // Get the records if (sqlWhereClause == "DescriptionOfMapUnits_ID = '") { return; } DescriptionOfMapUnitsAccess sourceDmu = new DescriptionOfMapUnitsAccess(openedWorkspace); sourceDmu.AddDescriptionOfMapUnits(sqlWhereClause.Remove(sqlWhereClause.Length - 32)); // Get the next new Hierarchy Key string newHierarchy = GetNewHierarchyKey(); int newValue = int.Parse(newHierarchy.Substring(newHierarchy.Length - 4)); // Loop through the source records, add them to the target legend after adjusting the Hierarchy DescriptionOfMapUnitsAccess targetDmu = new DescriptionOfMapUnitsAccess(m_theWorkspace); foreach (KeyValuePair<string, DescriptionOfMapUnitsAccess.DescriptionOfMapUnit> sourceEntry in sourceDmu.DescriptionOfMapUnitsDictionary) { DescriptionOfMapUnitsAccess.DescriptionOfMapUnit sourceDmuEntry = sourceEntry.Value; string thisHierachyKey = newValue.ToString().PadLeft(4, '0'); targetDmu.NewDescriptionOfMapUnit(sourceDmuEntry.MapUnit, sourceDmuEntry.Name, sourceDmuEntry.FullName, sourceDmuEntry.Label, sourceDmuEntry.Age, sourceDmuEntry.Description, thisHierachyKey, sourceDmuEntry.ParagraphStyle, sourceDmuEntry.AreaFillRGB, sourceDmuEntry.AreaFillPatternDescription, commonFunctions.GetCurrentDataSourceID(), sourceDmuEntry.GeneralLithology, sourceDmuEntry.GeneralLithologyConfidence); newValue++; } // Save the target Dmu targetDmu.SaveDescriptionOfMapUnits(); // Refresh the tree ClearMapUnitInput(); PopulateMainLegendTree(); }
private void saveMapUnit() { // Get attributes from the form string thisDmuAge = txtMapUnitAge.Text; string thisDmuDefinitionSourceID = commonFunctions.GetCurrentDataSourceID(); string thisDmuDescription = txtMapUnitDescription.Text; string thisDmuFullName = txtMapUnitFullName.Text; string thisDmuLabel = txtMapUnitAbbreviation.Text; string thisDmuMapUnit = txtMapUnitAbbreviation.Text; string thisDmuName = txtUnitName.Text; // These attributes are dependant on whether this is a heading or not string thisDmuParagraphStyle = ""; string thisDmuAreaFillRGB = ""; if (chkIsHeading.Checked == true) { thisDmuParagraphStyle = "Heading"; thisDmuAreaFillRGB = ""; } else { thisDmuParagraphStyle = "Standard"; thisDmuAreaFillRGB = pnlColor.BackColor.R + ";" + pnlColor.BackColor.G + ";" + pnlColor.BackColor.B; } // Get the DMU reference that will be used to provide table access DescriptionOfMapUnitsAccess dmuAccess = new DescriptionOfMapUnitsAccess(m_theWorkspace); // Set the variable to represent the updated Dmu entry in the case of an update. This will be used to update polygons later DescriptionOfMapUnitsAccess.DescriptionOfMapUnit dmuEntry = new DescriptionOfMapUnitsAccess.DescriptionOfMapUnit(); switch (m_ThisIsAnUpdate) { case true: // Get the DMU entry that should be updated dmuAccess.AddDescriptionOfMapUnits("DescriptionOfMapUnits_ID = '" + trvLegendItems.SelectedNode.Name + "'"); dmuEntry = dmuAccess.DescriptionOfMapUnitsDictionary[trvLegendItems.SelectedNode.Name]; // Add attributes from the form dmuEntry.Age = thisDmuAge; dmuEntry.DescriptionSourceID = thisDmuDefinitionSourceID; dmuEntry.Description = thisDmuDescription; dmuEntry.FullName = thisDmuFullName; dmuEntry.Label = thisDmuLabel; dmuEntry.MapUnit = thisDmuMapUnit; dmuEntry.Name = thisDmuName; dmuEntry.RequiresUpdate = true; // These attributes are dependant on whether this is a heading or not if (chkIsHeading.Checked == true) { dmuEntry.ParagraphStyle = thisDmuParagraphStyle; dmuEntry.AreaFillRGB = thisDmuAreaFillRGB; } else { dmuEntry.ParagraphStyle = thisDmuParagraphStyle; dmuEntry.AreaFillRGB = thisDmuAreaFillRGB; } // Perform the update dmuAccess.UpdateDescriptionOfMapUnit(dmuEntry); break; case false: // This is a new entry, get an Hierarchy Key string thisDmuHierarchyKey = GetNewHierarchyKey(); // Add the record dmuAccess.NewDescriptionOfMapUnit(thisDmuMapUnit, thisDmuName, thisDmuFullName, thisDmuLabel, thisDmuAge, thisDmuDescription, thisDmuHierarchyKey, thisDmuParagraphStyle, thisDmuAreaFillRGB, "", thisDmuDefinitionSourceID, "", ""); break; } // All done - save dmuAccess.SaveDescriptionOfMapUnits(); // Refresh the tree PopulateMainLegendTree(); // Update polys if ((m_ThisIsAnUpdate == true) && (m_theOldMapUnitName != null)) { UpdatePolygons(m_theOldMapUnitName, dmuEntry); } // Clear Inputs ClearMapUnitInput(); }