AutoGRAPH.5PRO Module SetElementNodes

Материал из TK
Перейти к: навигация, поиск

// Создаёт новые или перемещает элементы с указанными идентификаторами в родительские узлы, указанные свойством Parent 
// Parent может указывать как на имеющиеся узлы, так и на создаваемые из массива elements 
// (в этом случае родительский элемент должен иметь меньший индекс в массиве, чем дочерний) 
bool SetElementNodes(ElementType elementType, GroupOrElementInfo[] elements);  

// Пример переименования элемента 
var targetNode = shellProvider.GetElementNodeInfo(elementType, Guid); 
var nodes = new List<GroupOrElementInfo>(); 
nodes.Add(new GroupOrElementInfo(targetNode) { Name = "noname" }); 
shellProvider.SetElementNodes(elementType, nodes.ToArray()); 

// Пример создания папки и элемента в ней 
var targetNode = shellProvider.GetElementNodeInfo(elementType, Guid); 
var nodes = new List<GroupOrElementInfo>(); 
var group = new GroupOrElementInfo(GroupNodeType.Group, "Group 1", targetNode); 
nodes.Add(group); 
nodes.Add(new GroupOrElementInfo(GroupNodeType.Element, "Element 1", group)); 
shellProvider.SetElementNodes(elementType, nodes.ToArray()); 

// Пример выноса папки/элемента из группы с сохранением всех индивидуальных настроек 
var targetNode = shellProvider.GetElementNodeInfo(elementType, Guid); 
var nodes = new List<GroupOrElementInfo>(); 
if (targetNode.Parent != null) nodes.Add(new GroupOrElementInfo(targetNode) { Parent = targetNode.Parent.Parent }); 
shellProvider.SetElementNodes(elementType, nodes.ToArray()); 

// Пример переноса папки/элемента в соседнюю группу с сохранением всех индивидуальных настроек 
var targetNode = shellProvider.GetElementNodeInfo(elementType, Guid); 
var nodes = new List<GroupOrElementInfo>(); 
if (targetNode.Parent != null && targetNode.Parent.Parent != null) 

    var children = targetNode.Parent.Parent.Children.Where(c => c.Type == GroupNodeType.Group).ToArray(); 
    if (children.Length > 1) 
    { 
        var index = Array.IndexOf(children, targetNode.Parent); 
        if (index > 0) index--; else index++; 
        nodes.Add(new GroupOrElementInfo(targetNode) { Parent = children[index] }); 
    } 

shellProvider.SetElementNodes(elementType, nodes.ToArray());