private void expandReferences() { foreach (IXsdNode node in GetAllNodes()) { if (node is IXsdHasAttribute) { ICollection <XsdAttribute> col = ((IXsdHasAttribute)node).GetAttributes(); foreach (XsdAttribute xsdAttribute in col) { if (xsdAttribute.TypeTarget == null) { xsdAttribute.TypeTarget = getNodeByName(xsdAttribute.TypeName); } } } IXsdHasRef refable = node as IXsdHasRef; if (refable != null && refable.RefTarget == null) { refable.RefTarget = getNodeByName(refable.RefName); } IXsdHasType typeable = node as IXsdHasType; if (typeable != null && typeable.TypeTarget == null) { typeable.TypeTarget = getNodeByName(typeable.TypeName); } XsdExtension extension = node as XsdExtension; if (extension != null && extension.BaseTarget == null) { extension.BaseTarget = getNodeByName(extension.Base); } } }
private void getChildNames(IXsdNode node, ICollection <XsdElement> result) { var kids = node.GetChildren(); foreach (IXsdNode xsdNode in kids) { if (xsdNode is XsdElement) { result.Add((XsdElement)xsdNode); } else if (xsdNode is XsdAllSequenceChoice) { XsdAllSequenceChoice list = (XsdAllSequenceChoice)xsdNode; getChildNames(list, result); } } if ((node as IXsdHasType)?.TypeTarget != null) { IXsdHasType n = (IXsdHasType)node; getChildNames(n.TypeTarget, result); } if ((node as IXsdHasRef)?.RefTarget != null) { IXsdHasRef n = (IXsdHasRef)node; getChildNames(n.RefTarget, result); } }
protected static void addMouseEvents(XsdVisualizer.PaintOptions po, FrameworkElement pnl, IXsdNode node) { pnl.MouseDown += (sender, args) => { if (args.ClickCount == 2) { IXsdNode xsdNode = node; if (xsdNode is IXsdHasRef) { IXsdHasRef refer = (IXsdHasRef)xsdNode; if (refer.RefTarget != null) { po.Visualizer.SetRoot(refer.RefTarget); return; } } po.Visualizer.SetRoot(xsdNode); } args.Handled = true; }; pnl.MouseMove += (sender, args) => { po.Visualizer.SetDescription(node); args.Handled = true; }; ContextMenu mainMenu = new ContextMenu(); mainMenu.Items.Add(new MenuItem { Header = node.ToString(), IsEnabled = false }); MenuItem item1 = new MenuItem { Header = "Hide" }; item1.Click += (e, args) => { po.Visualizer.IgnoreNodes.Add(node); po.Visualizer.Refresh(); }; mainMenu.Items.Add(item1); pnl.ContextMenu = mainMenu; }