This example shows how to traverse the Project Tree for a specific item. This example uses the IProjectTree61 (FindItem, GetItemName, HiddenGroupName) property and methods.
function ScanTree()
{
try
{
alert("Click OK to find Vermont item by its path in the tree");
var id = sgworld.ProjectTree.FindItem("New England\\States\\Vermont");
if(id > 0)
alert("Found Vermont with id=" + id);
else
alert("New England\\States\\Vermont does not exist in tree");
// root is the first visible item in tree.
var root = sgworld.ProjectTree.GetNextItem(0, 18 /* ItemCode.ROOT*/);
var tree = BuildTreeRecursive(root, 1);
alert(tree);
}
catch (ex)
{
alert("Unexpected error: " + ex.description);
}
}
function BuildTreeRecursive(current, indent)
{
// build padding
var padding = "";
for (var i = 0; i < indent * 3; i++)
padding += "-";
var result = "";
// iterate over all siblings of current node
while (current > 0)
{
// append node name to the tree string
var currentName = sgworld.ProjectTree.GetItemName(current);
result += padding + currentName + "\r\n";
// if current node is group, recursively build tree from its first child;
if (sgworld.ProjectTree.IsGroup(current))
{
var child = sgworld.ProjectTree.GetNextItem(current,11 /* ItemCode.CHILD */);
result += BuildTreeRecursive(child, indent + 1);
}
// move to next sibling
current = sgworld.ProjectTree.GetNextItem(current,13 /* ItemCode.NEXT*/);
}
return result;
}