コード例 #1
0
        /// <summary>
        /// This writes the current state or attributes of this object,
        /// in the <c>XML</c> format, to the media or storage accessible by the given writer.
        /// </summary>
        /// <param name="writer">
        /// The <c>XML</c> writer with which the <c>XML</c> format of this object's state
        /// is written.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// If the <paramref name="reader"/> is <see langword="null"/>.
        /// </exception>
        public override void WriteXml(XmlWriter writer)
        {
            BuildExceptions.NotNull(writer, "writer");

            if (this.IsEmpty)
            {
                return;
            }

            bool hasImageMap = this.HasImageMap;

            writer.WriteStartElement(TagName);  // start - item
            writer.WriteAttributeString("id", _itemId);
            if (_itemType != MediaItemType.None &&
                _itemType != MediaItemType.Image)
            {
                writer.WriteAttributeString("type", _itemType.ToString());
            }
            if (_itemWidth > 0 && _itemHeight > 0)
            {
                writer.WriteAttributeString("width", _itemWidth.ToString());
                writer.WriteAttributeString("height", _itemHeight.ToString());
                if (_itemUnit != MediaSizeUnit.None)
                {
                    writer.WriteAttributeString("unit", _itemUnit.ToString());
                }
            }

            BuildPathResolver pathResolver = BuildPathResolver.Resolver;

            writer.WriteStartElement("image");  // start - image
            if (_itemType == MediaItemType.YouTube)
            {
                writer.WriteAttributeString("file", _itemName);
            }
            else
            {
                writer.WriteAttributeString("file",
                                            pathResolver.ResolveRelative(_itemPath));
                //writer.WriteAttributeString("file", _itemPath.Name);
            }
            if (hasImageMap)
            {
                writer.WriteAttributeString("usemap", _useMap);
                writer.WriteAttributeString("resolveMapLinks",
                                            _resolveLinks.ToString());
            }
            writer.WriteStartElement("altText"); // start - altText
            writer.WriteString(_altText);
            writer.WriteEndElement();            // end - altText
            writer.WriteEndElement();            // end - image

            if (hasImageMap)
            {
                _imageMap.WriteXml(writer);
            }

            writer.WriteEndElement();           // end - item
        }
コード例 #2
0
        public void Save(BuildPathResolver resolver)
        {
            BuildExceptions.NotNull(resolver, "resolver");

            // If this is not yet located, and the contents is empty, we
            // will simply not continue from here...
            if (_contentFile != null && _contentFile.Exists)
            {
                if (!this._isLoaded && base.IsEmpty &&
                    (_relatedTopics == null || _relatedTopics.Count == 0))
                {
                    return;
                }

                // If loaded but not modified, there is no need to save it...
                if (this.IsLoaded && !this.Modified)
                {
                    return;
                }
            }

            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent             = true;
            settings.IndentChars        = new string(' ', 4);
            settings.Encoding           = Encoding.UTF8;
            settings.OmitXmlDeclaration = false;

            XmlWriter writer = null;

            try
            {
                writer = XmlWriter.Create(_contentFile, settings);

                string resolverId = BuildPathResolver.Push(resolver);
                {
                    writer.WriteStartDocument();

                    this.WriteXml(writer);

                    writer.WriteEndDocument();

                    BuildPathResolver.Pop(resolverId);
                }

                // The file content is now same as the memory, so it can be
                // considered loaded...
                _isLoaded     = true;
                this.Modified = false;
            }
            finally
            {
                if (writer != null)
                {
                    writer.Close();
                    writer = null;
                }
            }
        }
コード例 #3
0
        public void Load(BuildPathResolver resolver)
        {
            BuildExceptions.NotNull(resolver, "resolver");

            if (_isLoaded)
            {
                return;
            }

            if (String.IsNullOrEmpty(_contentFile) ||
                File.Exists(_contentFile) == false)
            {
                return;
            }

            if (_contentDir == null)
            {
                _contentDir = new BuildDirectoryPath(
                    Path.GetDirectoryName(_contentFile));
            }

            XmlReader reader = null;

            try
            {
                XmlReaderSettings settings = new XmlReaderSettings();

                settings.IgnoreComments               = true;
                settings.IgnoreWhitespace             = true;
                settings.IgnoreProcessingInstructions = true;

                reader = XmlReader.Create(_contentFile, settings);

                reader.MoveToContent();

                string resolverId = BuildPathResolver.Push(resolver);
                {
                    this.ReadXml(reader);

                    BuildPathResolver.Pop(resolverId);
                }

                _isLoaded     = true;
                this.Modified = false;
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// This writes the current state or attributes of this object,
        /// in the <c>XML</c> format, to the media or storage accessible by the given writer.
        /// </summary>
        /// <param name="writer">
        /// The <c>XML</c> writer with which the <c>XML</c> format of this object's state
        /// is written.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// If the <paramref name="reader"/> is <see langword="null"/>.
        /// </exception>
        public override void WriteXml(XmlWriter writer)
        {
            BuildExceptions.NotNull(writer, "writer");

            if (!this.IsValid)
            {
                return;
            }

            writer.WriteStartElement(TagName);  // start - TagName
            writer.WriteAttributeString("name", this.Name);

            writer.WriteStartElement("propertyGroup");  // start - propertyGroup
            writer.WriteAttributeString("name", "General");
            writer.WritePropertyElement("SourceId", _sourceId);
            writer.WritePropertyElement("VersionId", _versionId);
            writer.WritePropertyElement("VersionLabel", _versionLabel);
            writer.WritePropertyElement("Title", this.Title);
            writer.WriteEndElement();                   // end - propertyGroup

            if (_content != null)
            {
                BuildFilePath filePath = _content.ContentFile;
                writer.WriteStartElement("content");
                writer.WriteAttributeString("type", "Reference");
                if (filePath != null && filePath.IsValid)
                {
                    BuildPathResolver resolver = BuildPathResolver.Resolver;

                    writer.WriteAttributeString("source",
                                                resolver.ResolveRelative(filePath));

                    _content.Save();
                }
                else
                {
                    _content.WriteXml(writer);
                }
                writer.WriteEndElement();
            }

            // Write the user-defined contents...
            this.WriteContents(writer);

            // Write the filters...
            this.WriteFilters(writer);

            writer.WriteEndElement();           // end - TagName
        }
コード例 #5
0
        public void Save()
        {
            if (String.IsNullOrEmpty(_contentFile))
            {
                return;
            }

            if (_contentDir == null)
            {
                _contentDir = new BuildDirectoryPath(
                    Path.GetDirectoryName(_contentFile));
            }

            BuildPathResolver resolver = BuildPathResolver.Create(
                Path.GetDirectoryName(_contentFile), _contentId);

            this.Save(resolver);
        }
コード例 #6
0
        /// <summary>
        /// This writes the current state or attributes of this object,
        /// in the <c>XML</c> format, to the media or storage accessible by the given writer.
        /// </summary>
        /// <param name="writer">
        /// The <c>XML</c> writer with which the <c>XML</c> format of this object's state
        /// is written.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// If the <paramref name="reader"/> is <see langword="null"/>.
        /// </exception>
        protected virtual void WriteContents(XmlWriter writer)
        {
            BuildExceptions.NotNull(writer, "writer");

            // The various contents required for documentation
            writer.WriteComment(" The various contents required for documentation ");
            writer.WriteStartElement("contents");  // start - contents

            if (_commentContent != null)
            {
                BuildFilePath filePath = _commentContent.ContentFile;
                writer.WriteStartElement("content");
                writer.WriteAttributeString("type", "Comments");
                if (filePath != null && filePath.IsValid)
                {
                    BuildPathResolver resolver = BuildPathResolver.Resolver;

                    writer.WriteAttributeString("source",
                                                resolver.ResolveRelative(filePath));
                    _commentContent.Save();
                }
                else
                {
                    _commentContent.WriteXml(writer);
                }
                writer.WriteEndElement();
            }
            if (_tocContent != null)
            {
                writer.WriteStartElement("content");
                writer.WriteAttributeString("type", "HierarchicalToc");
                _tocContent.WriteXml(writer);
                writer.WriteEndElement();
            }

            this.OnWriteContents(writer);

            writer.WriteEndElement();              // end - contents
        }
コード例 #7
0
        protected override void OnWriteContentXml(XmlWriter writer)
        {
            if (_topicContent != null)
            {
                BuildFilePath filePath = _topicContent.ContentFile;
                writer.WriteStartElement("content");
                writer.WriteAttributeString("type", "Reference");
                if (filePath != null && filePath.IsValid)
                {
                    BuildPathResolver resolver = BuildPathResolver.Resolver;
                    Debug.Assert(resolver != null && resolver.Id == this.Id);

                    writer.WriteAttributeString("source",
                                                resolver.ResolveRelative(filePath));
                    _topicContent.Save();
                }
                else
                {
                    _topicContent.WriteXml(writer);
                }
                writer.WriteEndElement();
            }
        }
コード例 #8
0
        public void Load(BuildPathResolver resolver)
        {
            BuildExceptions.NotNull(resolver, "resolver");

            if (_isLoaded)
            {
                return;
            }

            if (String.IsNullOrEmpty(_contentFile) ||
                File.Exists(_contentFile) == false)
            {
                return;
            }

            if (_contentDir == null)
            {
                _contentDir = new BuildDirectoryPath(
                    Path.GetDirectoryName(_contentFile));
            }

            _hasFilter = false;
            if (_listFilters != null && _listFilters.Count != 0)
            {
                int itemCount = _listFilters.Count;
                for (int i = 0; i < itemCount; i++)
                {
                    ConceptualFilter filter = _listFilters[i];
                    if (filter != null && filter.IsValid && filter.Enabled)
                    {
                        _hasFilter = true;
                        break;
                    }
                }
            }

            XmlReader reader = null;

            try
            {
                XmlReaderSettings settings = new XmlReaderSettings();

                settings.IgnoreComments               = true;
                settings.IgnoreWhitespace             = true;
                settings.IgnoreProcessingInstructions = true;

                reader = XmlReader.Create(_contentFile, settings);

                reader.MoveToContent();

                string resolverId = BuildPathResolver.Push(resolver);
                {
                    this.ReadXml(reader);

                    BuildPathResolver.Pop(resolverId);
                }

                if (String.IsNullOrEmpty(_defaultTopic))
                {
                    // If not set, use the first topic...
                    if (this.Count != 0)
                    {
                        _defaultTopic = this[0].TopicId;
                    }
                }

                _isLoaded     = true;
                this.Modified = false;
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                    reader = null;
                }
            }
        }
コード例 #9
0
        /// <summary>
        /// This writes the current state or attributes of this object,
        /// in the <c>XML</c> format, to the media or storage accessible by the given writer.
        /// </summary>
        /// <param name="writer">
        /// The <c>XML</c> writer with which the <c>XML</c> format of this object's state
        /// is written.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// If the <paramref name="reader"/> is <see langword="null"/>.
        /// </exception>
        public override void WriteXml(XmlWriter writer)
        {
            BuildExceptions.NotNull(writer, "writer");

            writer.WriteStartElement(TagName);
            writer.WriteAttributeString("version", _contentVersion.ToString(2));

            // 1. The content directory, if not the same as the content file.
            writer.WriteComment(
                " 1. The content directory, if not the same as the content file. ");
            writer.WriteStartElement("location"); // start - location
            if (_contentDir != null &&
                !_contentDir.IsDirectoryOf(_contentFile))
            {
                _contentDir.WriteXml(writer);
            }
            writer.WriteEndElement();             // end - location

            // 2. The general content settings
            writer.WriteComment(" 2. The general content settings ");
            writer.WriteStartElement("propertyGroup");  // start - propertyGroup
            writer.WriteAttributeString("name", "General");

            writer.WritePropertyElement("Id", _contentId);
            writer.WritePropertyElement("FrameworkType", _frameworkType.ToString());

            writer.WriteEndElement();                   // end - propertyGroup

            // 3. The reference items defining the API content
            writer.WriteComment(" 3. The reference items defining the API content ");
            writer.WriteStartElement("referenceItems");  // start - referenceItems
            for (int i = 0; i < this.Count; i++)
            {
                ReferenceItem item = this[i];
                if (item != null && !item.IsEmpty)
                {
                    item.WriteXml(writer);
                }
            }
            writer.WriteEndElement();                    // end - referenceItems

            // 4. The various contents required for documentation
            writer.WriteComment(" 4. The various contents required for documentation ");
            writer.WriteStartElement("contents");  // start - contents

            if (_commentContent != null)
            {
                BuildFilePath filePath = _commentContent.ContentFile;
                writer.WriteStartElement("content");
                writer.WriteAttributeString("type", "Comments");
                if (filePath != null && filePath.IsValid)
                {
                    BuildPathResolver resolver = BuildPathResolver.Resolver;
                    Debug.Assert(resolver != null && resolver.Id == _contentId);

                    writer.WriteAttributeString("source",
                                                resolver.ResolveRelative(filePath));
                    _commentContent.Save();
                }
                else
                {
                    _commentContent.WriteXml(writer);
                }
                writer.WriteEndElement();
            }
            if (_dependencies != null)
            {
                writer.WriteStartElement("content");
                writer.WriteAttributeString("type", "Dependencies");
                _dependencies.WriteXml(writer);
                writer.WriteEndElement();
            }
            if (_tocContent != null)
            {
                writer.WriteStartElement("content");
                writer.WriteAttributeString("type", "HierarchicalToc");
                _tocContent.WriteXml(writer);
                writer.WriteEndElement();
            }
            writer.WriteEndElement();              // end - contents

            // 5. The API/attribute filters associated with the documentations
            writer.WriteComment(" 5. The API/attribute filters associated with the documentations ");
            writer.WriteStartElement("filters");  // start - filters
            if (_typeFilters != null)
            {
                _typeFilters.WriteXml(writer);
            }
            if (_attributeFilters != null)
            {
                _attributeFilters.WriteXml(writer);
            }
            writer.WriteEndElement();             // end - filters

            writer.WriteEndElement();
        }