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)]); } } }