public virtual void RemoveRelated(ConceptualRelatedTopic item) { if (item == null || (_relatedTopics == null || _relatedTopics.Count == 0)) { return; } _relatedTopics.Remove(item); }
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); } }
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); }
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); }
/// <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); } }