Esempio n. 1
0
 public virtual void RemoveRelated(ConceptualRelatedTopic item)
 {
     if (item == null ||
         (_relatedTopics == null || _relatedTopics.Count == 0))
     {
         return;
     }
     _relatedTopics.Remove(item);
 }
Esempio n. 2
0
 public virtual void AddRelated(ConceptualRelatedTopic item)
 {
     if (item == null)
     {
         return;
     }
     if (_relatedTopics == null)
     {
         _relatedTopics = new BuildKeyedList <ConceptualRelatedTopic>();
     }
     if (!_relatedTopics.Contains(item.TopicId))
     {
         _relatedTopics.Add(item);
     }
 }
Esempio n. 3
0
        private void ReadRelatedTopics(XmlReader reader)
        {
            if (reader.IsEmptyElement)
            {
                return;
            }

            if (_relatedTopics == null)
            {
                _relatedTopics = new BuildKeyedList <ConceptualRelatedTopic>();
            }

            string relatedType = ConceptualItemType.Related.ToString();
            string startName   = reader.Name;

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (String.Equals(reader.Name, ConceptualItem.TagName,
                                      StringComparison.OrdinalIgnoreCase) && String.Equals(
                            reader.GetAttribute("type"), relatedType,
                            StringComparison.OrdinalIgnoreCase))
                    {
                        ConceptualRelatedTopic topicItem = new ConceptualRelatedTopic();

                        if (topicItem != null)
                        {
                            topicItem.Content = this;
                            topicItem.BeginInit();
                            topicItem.ReadXml(reader);
                            topicItem.EndInit();

                            _relatedTopics.Add(topicItem);
                        }
                    }
                }
                else if (reader.NodeType == XmlNodeType.EndElement)
                {
                    if (String.Equals(reader.Name, startName,
                                      StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }
                }
            }
        }
        public bool Equals(ConceptualRelatedTopic other)
        {
            if (other == null)
            {
                return(false);
            }
            //if (!String.Equals(this._name, other._name))
            //{
            //    return false;
            //}
            //if (!String.Equals(this._value, other._value))
            //{
            //    return false;
            //}

            return(true);
        }
Esempio n. 5
0
        public override void WriteXml(XmlWriter writer)
        {
            BuildExceptions.NotNull(writer, "writer");

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

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

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

            writer.WritePropertyElement("Id", _contentId);
            writer.WritePropertyElement("CompanionFiles", _companionFiles.ToString());

            writer.WriteEndElement();                   // end - propertyGroup

            writer.WriteComment(
                " 3. The list of categories defined by this conceptual contents. ");
            if (_categories != null)
            {
                _categories.WriteXml(writer);
            }
            else
            {
                writer.WriteStartElement("categories"); // categories
                writer.WriteEndElement();               // categories
            }

            writer.WriteComment(
                " 4. The hierarchical list of topics in this contents. ");
            writer.WriteStartElement("topics"); // topics
            if (String.IsNullOrEmpty(_defaultTopic))
            {
                // If not set, use the first topic...
                if (this.Count != 0)
                {
                    _defaultTopic = this[0].TopicId;
                }
            }
            if (!String.IsNullOrEmpty(_defaultTopic))
            {
                writer.WriteAttributeString("default", _defaultTopic);
            }

            for (int i = 0; i < this.Count; i++)
            {
                ConceptualItem item = this[i];
                if (item != null && !item.IsEmpty)
                {
                    item.WriteXml(writer);
                }
            }
            writer.WriteEndElement();           // topics

            writer.WriteComment(
                " 5. A list of related topics, which may or may not be compiled, but not included in the TOC. ");
            writer.WriteStartElement("relatedTopics"); // relatedTopics
            if (_relatedTopics != null && _relatedTopics.Count != 0)
            {
                for (int i = 0; i < _relatedTopics.Count; i++)
                {
                    ConceptualRelatedTopic relatedTopic = _relatedTopics[i];
                    if (relatedTopic != null && !relatedTopic.IsEmpty)
                    {
                        relatedTopic.WriteXml(writer);
                    }
                }
            }
            writer.WriteEndElement();                  // relatedTopics

            writer.WriteEndElement();                  //conceptualContent
        }
 public ConceptualRelatedTopic(ConceptualRelatedTopic source)
     : base(source)
 {
     _topicType = source._topicType;
 }
        public override ConceptualItem Clone()
        {
            ConceptualRelatedTopic item = new ConceptualRelatedTopic(this);

            return(item);
        }
Esempio n. 8
0
        /// <summary>
        /// Applies the processing operations defined by this visitor to the
        /// specified conceptual group.
        /// </summary>
        /// <param name="group">
        /// The <see cref="ConceptualGroup">conceptual group</see> to which
        /// the processing operations defined by this visitor will be applied.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// If the <paramref name="group"/> is <see langword="null"/>.
        /// </exception>
        protected override void OnVisit(ConceptualGroup group)
        {
            BuildExceptions.NotNull(group, "group");

            if (!this.IsInitialized)
            {
                throw new BuildException(
                          "ConceptualProjectVisitor: The conceptual table of contents generator is not initialized.");
            }

            BuildContext context = this.Context;
            BuildLogger  logger  = context.Logger;

            BuildGroupContext groupContext = context.GroupContexts[group.Id];

            if (groupContext == null)
            {
                throw new BuildException(
                          "The group context is not provided, and it is required by the build system.");
            }

            if (logger != null)
            {
                logger.WriteLine("Begin - Creating Conceptual Resource Settings.",
                                 BuildLoggerLevel.Info);
            }

            _tocAdapter       = new ConceptualTocAdapter();
            _metadataAdapter  = new ConceptualMetadataAdapter();
            _manifestAdapters = new ConceptualManifestAdapter();

            try
            {
                _tocAdapter.Initialize(group, context);
                _metadataAdapter.Initialize(group, context);
                _manifestAdapters.Initialize(group, context);

                string workingDir = context.WorkingDirectory;

                _ddueXmlDir  = Path.Combine(workingDir, groupContext["$DdueXmlDir"]);
                _ddueCompDir = Path.Combine(workingDir, groupContext["$DdueXmlCompDir"]);
                _ddueHtmlDir = Path.Combine(workingDir, groupContext["$DdueHtmlDir"]);

                if (!Directory.Exists(_ddueXmlDir))
                {
                    Directory.CreateDirectory(_ddueXmlDir);
                }
                if (!Directory.Exists(_ddueCompDir))
                {
                    Directory.CreateDirectory(_ddueCompDir);
                }
                if (!Directory.Exists(_ddueHtmlDir))
                {
                    Directory.CreateDirectory(_ddueHtmlDir);
                }

                ConceptualContent content = group.Content;
                int itemCount             = content.Count;
                for (int i = 0; i < itemCount; i++)
                {
                    this.WriteTopic(content[i]);
                }

                IList <ConceptualRelatedTopic> relatedTopics = content.RelatedTopics;
                if (relatedTopics != null && relatedTopics.Count != 0)
                {
                    itemCount = relatedTopics.Count;
                    for (int i = 0; i < itemCount; i++)
                    {
                        ConceptualRelatedTopic topicItem = relatedTopics[i];
                        if (topicItem == null || topicItem.IsEmpty)
                        {
                            continue;
                        }

                        this.WriteTopic(topicItem);
                    }
                }
            }
            finally
            {
                _tocAdapter.Uninitialize();
                _metadataAdapter.Uninitialize();
                _manifestAdapters.Uninitialize();
            }

            if (logger != null)
            {
                logger.WriteLine("Completed - Creating Conceptual Resource Settings.",
                                 BuildLoggerLevel.Info);
            }
        }