in Tools/UIRecorder/UIRecorder/MainWindow.xaml.cs [606:687]
private void treeUiPath_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (SelectChangedSource == UiSelectChangedSource.TreeViewItemSelected)
{
return;
}
var selectedItem = treeUiPath.SelectedItem as UiTreeNode;
if (selectedItem == null)
{
return;
}
if (SelectChangedSource != UiSelectChangedSource.ComboBoxSelected)
SelectChangedSource = UiSelectChangedSource.TreeViewItemSelected;
RecordedUiTask leafUiTask = selectedItem.UiTask;
if (leafUiTask == null)
{
if (treeUiPath.Items != null && treeUiPath.Items.Count > 0)
{
var x = (TreeViewItem)treeUiPath.ItemContainerGenerator.ContainerFromItem(treeUiPath.Items[0]);
if (x != null)
{
TreeViewItem tvi = UiTreeNode2TreeViewItem(x, UiTreeNode.s_uiTreeNodes.First(), selectedItem);
if (tvi != null)
{
// sync xpath with last selected tree view leaf if a parent node is selected
// and the selected parent has more than 1 expanded leaf children
leafUiTask = GetExpandedLeafNode(tvi, selectedItem, selectedTreeViewItem);
{
leafUiTask = GetExpandedLeafNode(tvi, selectedItem, null);
selectedTreeViewItem = leafUiTask;
}
}
}
}
}
if (leafUiTask == null)
{
if (SelectChangedSource != UiSelectChangedSource.ComboBoxSelected)
SelectChangedSource = UiSelectChangedSource.SelectChangeFinished;
return;
}
else
{
selectedTreeViewItem = leafUiTask;
}
if (leafUiTask != comboBoxRecordedUi.SelectedItem)
{
comboBoxRecordedUi.SelectedItem = leafUiTask;
}
int childCount = selectedItem.Items.Count;
if (childCount > 0)
{
treeUiPath.ContextMenu = treeUiPath.Resources["UiNode"] as System.Windows.Controls.ContextMenu;
}
else
{
treeUiPath.ContextMenu = treeUiPath.Resources["LeafNode"] as System.Windows.Controls.ContextMenu;
}
int nNodeCount = 1;
var pParent = selectedItem.Parent;
while (pParent != null)
{
nNodeCount++;
pParent = pParent.Parent;
}
HighlightPath(nNodeCount, true);
if (SelectChangedSource != UiSelectChangedSource.ComboBoxSelected)
SelectChangedSource = UiSelectChangedSource.SelectChangeFinished;
AppInsights.LogEvent("treeUiPath_SelectedItemChanged");
}