The scenario is as follows:
I have created usercode to extract the correct TreeItem object from rawtext information. Now I want to return the TreeItem adapter from the usercode and execute a right-click operation on it outside of code. The returned TreeItem adapter is assigned to a variable, but no part of the repository. It seems I can only perform actions on repository items outside of code. How do I perform an action on the returned adapter object if it is not part of the repository?
Here is the usercode. The GetTreeItem function takes the rawtext regex as input, finds the TreeItem mapped to the rawtext element and returns the mapped TreeItem object. Problem is, how do I now perform actions on this returned TreeItem object from the UI?
Code: Select all
private void GatherTreeItems(List<TreeItem> treeItemList, TreeItem treeItem)
{
treeItemList.Add(treeItem);
if (treeItem.Expanded)
{
foreach (var childElem in treeItem.Children)
{
var childItem = childElem.Element.As<TreeItem>();
GatherTreeItems(treeItemList, childItem);
}
}
}
private TreeItem GetTreeItem(string treeLabel)
{
List<RawText> rawTextList = new List<RawText>();
List<TreeItem> treeItemList = new List<TreeItem>();
var rawText = repo.Teamcenter.Self.FindSingle<RawText>(".//element[@instance='3']/element[@instance='1']/element[@instance='2']/element[@instance='0']//tree[@class='SysTreeView32']/rawtext[@rawtext~'" + treeLabel + "']");
var treeChildren = Tree.FromElement(rawText.Parent.Element).Children;
foreach (var child in treeChildren)
{
if (child.Element.Role == Role.TreeItem)
{
GatherTreeItems(treeItemList, child.Element.As<TreeItem>());
}
else if (child.Element.Role == Role.Unknown && child.Element.FlavorName == "rawtext")
{
rawTextList.Add(child.As<RawText>());
}
}
int index = rawTextList.IndexOf(rawTextList.Where(x => x.Row == rawText.Row).SingleOrDefault());
return treeItemList[index];
}