public static VisualizationNode ToTree(IEnumerable <XamlInstruction> xamlNodes) { var enumerator = xamlNodes.GetEnumerator(); var stack = new Stack <VisualizationNode>(); stack.Push(new VisualizationNode("Root")); while (enumerator.MoveNext()) { var current = enumerator.Current; if (LowersLevel(current)) { stack.Pop(); } else { var item = new VisualizationNode(current); stack.Peek().Children.Add(item); if (RaisesLevel(current)) { stack.Push(item); } } } return(stack.Peek()); }
public static VisualizationNode ToTree(IEnumerable<XamlNode> xamlNodes) { var enumerator = xamlNodes.GetEnumerator(); var stack = new Stack<VisualizationNode>(); stack.Push(new VisualizationNode("Root")); while (enumerator.MoveNext()) { var current = enumerator.Current; if (LowersLevel(current)) { stack.Pop(); } else { var item = new VisualizationNode(current); stack.Peek().Children.Add(item); if (RaisesLevel(current)) { stack.Push(item); } } } return stack.Peek(); }
public VisualizerNodeViewModel(VisualizationNode model) { this.model = model; this.IsExpanded = true; children = model.Children.Select(node => new VisualizerNodeViewModel(node)).ToList(); CollapseBranchCommand = new RelayCommand(o => CollapseChildren()); ExpandBranchCommand = new RelayCommand(o => ExpandChildren()); }
private static string GetMemberName(VisualizationNode visualizationNode) { var mutableXamlMember = visualizationNode.XamlNode.Member as MutableXamlMember; if (mutableXamlMember != null) { if (!mutableXamlMember.IsAttachable) { return mutableXamlMember.Name; } return mutableXamlMember.DeclaringType.Name + "." + mutableXamlMember.Name; } var member = visualizationNode.XamlNode.Member; return member.IsDirective ? "[(" + member.Name + ") Directive]": member.Name; }
private string GetName(VisualizationNode visualizationNode) { switch (NodeType) { case NodeType.Member: return GetMemberName(visualizationNode); case NodeType.Object: return visualizationNode.XamlNode.XamlType.Name; case NodeType.GetObject: return "Collection"; case NodeType.NamespaceDeclaration: return "Namespace Declaration: Mapping " + visualizationNode.XamlNode.NamespaceDeclaration; case NodeType.Value: return $"\"{visualizationNode.XamlNode.Value}\""; case NodeType.Root: return "Root"; } throw new InvalidOperationException("The node type {NodeType} cannot be handled."); }
private static void OpenTreeVisualizer(VisualizationNode root) { var visualizerWindow = new TreeVisualizerWindow { DataContext = new TreeVisualizerViewModel(root) }; visualizerWindow.Show(); }
public TreeVisualizerViewModel(VisualizationNode root) { Nodes = new Collection<VisualizerNodeViewModel> { new VisualizerNodeViewModel(root) }; }