private void highlightFragment(ViewerNode selectedNode) { if (_editor == null) { return; } //show fragment in fragment view if (selectedNode == null) { _editor.SetFragmentText(""); } else { StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings { ConformanceLevel = ConformanceLevel.Auto, Indent = true }; using (XmlWriter w = XmlWriter.Create(sb, settings)) { selectedNode.OriginalNode.WriteTo(w); } _editor.SetFragmentText(sb.ToString()); } //select node in editor if (selectedNode != null) { IXmlLineInfo lineInfo = selectedNode.LineInfo; if (lineInfo != null) { var offset = _editor.XmlEditor.Document.GetOffset(lineInfo.LineNumber, lineInfo.LinePosition); _editor.XmlEditor.Select(offset, selectedNode.Name.Length); Debug.Assert(_editor.XmlEditor.SelectedText == selectedNode.Name); _editor.XmlEditor.ScrollTo(lineInfo.LineNumber, lineInfo.LinePosition); } } }
public void SetDescription(IXsdNode o) { if (_editor == null) { return; } _editor._lstXsdSelectedProperties.Items.Clear(); _editor._lstXsdSelectedProperties.Items.Add(string.Format("{0}", o.GetType().Name)); PropertyInfo[] props = o.GetType().GetProperties(); foreach (PropertyInfo propertyInfo in props) { object value = propertyInfo.GetValue(o, null); if (value != null) { if (value is ICollection) { foreach (object item in (IEnumerable)value) { _editor._lstXsdSelectedProperties.Items.Add(string.Format("{0}: {1}", propertyInfo.Name, item)); } } else { _editor._lstXsdSelectedProperties.Items.Add(string.Format("{0}: {1}", propertyInfo.Name, value)); } } } //TODO is this neccesary? FragmentView will prettyprint nonetheless... XmlWriterSettings settings = new XmlWriterSettings { CheckCharacters = true, OmitXmlDeclaration = true, Indent = true, CloseOutput = true, }; StringWriter sw; using (sw = new StringWriter()) using (XmlWriter w = XmlWriter.Create(sw, settings)) { o.XmlNode.WriteTo(w); } _editor.SetFragmentText(sw.ToString()); }