void AddNewEntitiesToSubModel(string submodelName) { Submodel subModel = Model.Submodels.Submodel.FirstOrDefault(submodel => submodel.Name == submodelName); if (subModel == null) { throw new ArgumentNullException($"Submodel '{submodelName}' does not exist in the current model."); } IEnumerable <string> mainModelNodeLabels = subModel.Node.Select(node => node.Label).OrderBy(label => label); IEnumerable <string> entityLabels = Model.Entities.Entity.Select(entity => entity.Label).OrderBy(label => label); List <Entity> entitiesToAddToMainModel = new List <Entity>(); foreach (var entityLabel in entityLabels.Except(mainModelNodeLabels)) { entitiesToAddToMainModel.Add(Model.Entities.Entity.FirstOrDefault(label => label.Label == entityLabel)); } subModel.AddEntities(entitiesToAddToMainModel, 0, 0); Model.CaptureCoordinates(); if (this.entityEditor.IsEditable) { entityEditor.Reload(); } }
private void btnOK_Click(object sender, EventArgs e) { Submodel.Name = txtName.Text; Submodel.Chapter = numericChapter.Value == 0 ? null : (int?)numericChapter.Value; Submodel.IsDraft = chkIsDraft.Checked; Submodel.IsLaboratory = chkIsLaboratory.Checked; Submodel.Explaination = ToXmlEscape(hteExplaination.GetHTMLAsText()); foreach (Submodel.NodeLocalType node in Submodel.Node.Where(item => !lbExisting.Items.Contains(item.Label)).ToList()) { Submodel.Node.Remove(node); } foreach (string item in lbExisting.Items.Cast <string>().Where(item => !Submodel.Node.Any(node => node.Label == item)).ToList()) { Submodel.AddEntities(Submodel.Model.Entities.Entity.Where(entity => entity.Label == item).ToList(), 0, 0); } DialogResult = DialogResult.OK; Close(); }