Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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());
        }