private IDsmElement AddElement(int id, string name, string type, int order, bool expanded, int?parentId, bool deleted) { DsmElement element = new DsmElement(id, name, type) { Order = order, IsExpanded = expanded, IsDeleted = deleted }; if (parentId.HasValue) { DsmElement parent = null; if (_elementsById.ContainsKey(parentId.Value)) { parent = _elementsById[parentId.Value]; } if (_deletedElementsById.ContainsKey(parentId.Value)) { parent = _deletedElementsById[parentId.Value]; } if (parent != null) { parent.AddChild(element); } else { Logger.LogError($"Parent not found id={id}"); } } else { _root.AddChild(element); _root.IsExpanded = true; } if (deleted) { UnregisterElement(element); } else { RegisterElement(element); } return(element); }
public void ChangeElementParent(IDsmElement element, IDsmElement parent) { Logger.LogDataModelMessage($"Change element parent name={element.Name} from {element.Parent.Fullname} to {parent.Fullname}"); DsmElement changedElement = element as DsmElement; DsmElement currentParent = element.Parent as DsmElement; DsmElement newParent = parent as DsmElement; if ((currentParent != null) && (newParent != null)) { BeforeElementChangeParent?.Invoke(this, element); UnregisterElementNameHierarchy(changedElement); currentParent.RemoveChild(element); newParent.AddChild(element); RegisterElementNameHierarchy(changedElement); AfterElementChangeParent?.Invoke(this, element); } }
public void ReorderChildren(IDsmElement element, ISortResult sortResult) { DsmElement parent = element as DsmElement; if (parent != null) { List <IDsmElement> clonedChildren = new List <IDsmElement>(parent.Children); foreach (IDsmElement child in clonedChildren) { parent.RemoveChild(child); } for (int i = 0; i < sortResult.GetNumberOfElements(); i++) { parent.AddChild(clonedChildren[sortResult.GetIndex(i)]); } } }