/// <summary> /// Fills the template ComboBox. /// </summary> private void FillTemplateComboBox() { _savedTemplates = LoadSavedTemplates(); if (_savedTemplates.Templates == null) { return; } var templateList = new List <TemplateListItem>(); cmbTemplate.ValueMember = "TemplateId"; cmbTemplate.DisplayMember = "TemplateName"; templateList.Add(new TemplateListItem { TemplateId = 0, TemplateName = "" }); foreach (var item in _savedTemplates.Templates) { templateList.Add(new TemplateListItem { TemplateId = item.TemplateId, TemplateName = item.TemplateName }); } cmbTemplate.DataSource = templateList; }
/// <summary> /// Saves the form configuration changes. /// </summary> private void SaveFormConfigChanges() { var serializer = new XmlSerializer(typeof(AtomUITemplates)); if (_savedTemplates == null) { _savedTemplates = new AtomUITemplates { Templates = new List <Template>() } } ; else if (_savedTemplates.Templates == null) { _savedTemplates.Templates = new List <Template>(); } bool isNewTemplate = cmbTemplate.SelectedIndex == -1 || (int)cmbTemplate.SelectedValue == 0; string templateName = string.Empty; if (isNewTemplate) { templateName = Prompt.ShowDialog("Enter template name", "Template Name"); if (string.IsNullOrEmpty(templateName)) { MessageBox.Show("Template was not saved.", "Save failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } Template template; if (isNewTemplate) { var templateId = _savedTemplates.Templates?.Count > 0 ? _savedTemplates.Templates[_savedTemplates.Templates.Count - 1].TemplateId + 1 : 1; template = new Template { TemplateId = templateId, TemplateName = templateName, ConnectionString = txtConnectionString.Text, MasterworksUrl = txtMasterworksUrl.Text, UserName = txtMasterworksUserName.Text, Password = txtMasterworksPassword.Text, Modules = new List <ModuleConfig>() }; _savedTemplates.Templates.Add(template); } else { template = _savedTemplates.Templates.Find(t => t.TemplateId == (int)cmbTemplate.SelectedValue); template.ConnectionString = txtConnectionString.Text; template.MasterworksUrl = txtMasterworksUrl.Text; template.UserName = txtMasterworksUserName.Text; template.Password = txtMasterworksPassword.Text; } template.SolutionTargetPath = txtSolutionTargetPath.Text; template.DeploymentPath = txtDeploymentPath.Text; template.AtomReactorExecutableFilePath = txtAtomReactorPath.Text; template.CompileAndGenerateLibrary = chkCompileAndGenerateLibrary.Checked; template.IsAutoDeploy = chkAutoDeploy.Checked; ModuleConfig moduleConfig = template.Modules.Find(m => m.ModuleId == cmbModules.SelectedValue.ToString()); if (moduleConfig == null) { moduleConfig = new ModuleConfig { ModuleId = cmbModules.SelectedValue.ToString(), ModuleName = cmbModules.SelectedText, Controls = new List <ControlConfig>() }; template.Modules.Add(moduleConfig); } moduleConfig.IncludeNegativeTestCase = chkIncludeNegativeTestCase.Checked; moduleConfig.IncludeSecurityTestCase = chkIncludeSecurityTestCase.Checked; moduleConfig.IncludeEditModeValidation = chkIncludeEditModeValidation.Checked; moduleConfig.IncludeViewModeValidation = chkIncludeViewModeValidation.Checked; moduleConfig.AutomationGuidFieldName = cmbAutomationGuidField.SelectedValue?.ToString(); moduleConfig.IncludeDBValidation = chkIncludeDbValidation.Checked; moduleConfig.GenerateDistinctDLLs = chkGenerateDistinctDLL.Checked; moduleConfig.GenerateDistinctSuiteXMLConfig = chkGenerateDistinctSuiteXmlConfig.Checked; moduleConfig.AutoGenerateSolutionName = chkAutoGenerateSolutionName.Checked; //moduleConfig.CompileAndGenerateLibrary = chkCompileAndGenerateLibrary.Checked; //moduleConfig.SolutionName = txtSolutionName.Text; //moduleConfig.SolutionTargetPath = txtSolutionTargetPath.Text; for (var i = 0; i < tvControlsTree.Nodes.Count; i++) { var node = tvControlsTree.Nodes[i]; var control = _formControls[node.Text]; var controlConfig = moduleConfig.Controls.Find(c => c.Name == node.Text); bool isNewControl = false, hasAttributes = false; if (controlConfig == null) { isNewControl = true; controlConfig = new ControlConfig { Name = node.Text, Type = control.Type.ToString(), Attributes = new List <string>() }; } for (var j = 0; j < node.Nodes.Count; j++) { var subNode = node.Nodes[j]; var attribute = controlConfig.Attributes.Find(a => a == subNode.Text); if (!subNode.Checked && attribute != null) { controlConfig.Attributes.Remove(attribute); continue; } else if (subNode.Checked && attribute == null) { controlConfig.Attributes.Add(subNode.Text); hasAttributes = true; } } if (isNewControl || hasAttributes) { moduleConfig.Controls.Add(controlConfig); } } using (var fs = new FileStream(AppConfig.AtomUITemplate, FileMode.Truncate)) { serializer.Serialize(fs, _savedTemplates); } FillTemplateComboBox(); cmbTemplate.SelectedValue = template.TemplateId; MessageBox.Show("Template saved successfully.", "Save successful", MessageBoxButtons.OK, MessageBoxIcon.Information); }