in src/StructuredLogViewer/Controls/BuildControl.xaml.cs [691:718]
private void ContextMenu_Opened(object sender, RoutedEventArgs e)
{
var node = treeView.SelectedItem as BaseNode;
var visibility = node is NameValueNode ? Visibility.Visible : Visibility.Collapsed;
copyNameItem.Visibility = visibility;
copyValueItem.Visibility = visibility;
viewSourceItem.Visibility = CanView(node) ? Visibility.Visible : Visibility.Collapsed;
viewFullTextItem.Visibility = HasFullText(node) ? Visibility.Visible : Visibility.Collapsed;
openFileItem.Visibility = CanOpenFile(node) ? Visibility.Visible : Visibility.Collapsed;
copyFilePathItem.Visibility = node is Import || (node is IHasSourceFile file && !string.IsNullOrEmpty(file.SourceFilePath))
? Visibility.Visible
: Visibility.Collapsed;
var hasChildren = node is TreeNode t && t.HasChildren;
copySubtreeItem.Visibility = hasChildren ? Visibility.Visible : Visibility.Collapsed;
viewSubtreeTextItem.Visibility = copySubtreeItem.Visibility;
showTimeItem.Visibility = node is TimedNode ? Visibility.Visible : Visibility.Collapsed;
searchInSubtreeItem.Visibility = hasChildren && node is TimedNode ? Visibility.Visible : Visibility.Collapsed;
excludeSubtreeFromSearchItem.Visibility = hasChildren && node is TimedNode ? Visibility.Visible : Visibility.Collapsed;
goToTimeLineItem.Visibility = node is TimedNode ? Visibility.Visible : Visibility.Collapsed;
goToTracingItem.Visibility = node is TimedNode ? Visibility.Visible : Visibility.Collapsed;
copyChildrenItem.Visibility = copySubtreeItem.Visibility;
sortChildrenItem.Visibility = copySubtreeItem.Visibility;
preprocessItem.Visibility = node is IPreprocessable p && preprocessedFileManager.CanPreprocess(p) ? Visibility.Visible : Visibility.Collapsed;
Visibility canRun = Build?.LogFilePath != null && node is Task ? Visibility.Visible : Visibility.Collapsed;
runItem.Visibility = canRun;
debugItem.Visibility = canRun;
hideItem.Visibility = node is TreeNode ? Visibility.Visible : Visibility.Collapsed;
}