public void InsertAfterChild(VcProjectElement element, VcProjectElement reference) { ProjectExceptions.NotNull(element, "element"); if (reference == null) { this.PrependChild(element); return; } if (element.Parent != this || reference.Parent != this) { throw new InvalidOperationException( "The element is not created by this container."); } if (_children.Count != 0 && _children.Contains(element)) { return; } int index = _children.IndexOf(reference); if (index < 0) { throw new InvalidOperationException( "The referenced child is not found."); } _children.Insert(index + 1, element); }
public override void ReadXml(XmlReader reader) { ProjectExceptions.NotNull(reader, "reader"); Debug.Assert(reader.NodeType == XmlNodeType.Element); if (reader.NodeType != XmlNodeType.Element) { return; } if (!String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { return; } // Keep this, after reading the attributes, the reader will be // on the last attribute, and this property will return false... bool isEmptyElement = reader.IsEmptyElement; while (reader.MoveToNextAttribute()) { _properties.Add(reader.Name, reader.Value); } if (isEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (this.IsChildElement(reader.Name)) { VcProjectElement element = this.CreateChildElement(reader.Name); element.ReadXml(reader); this.AppendChild(element); } else { throw new InvalidOperationException(String.Format( "The element '{0}' is not a child element of {1}", reader.Name, TagName)); } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { break; } } } }
public int IndexOfChild(VcProjectElement element) { ProjectExceptions.NotNull(element, "element"); if (_children.Count == 0) { return(-1); } return(_children.IndexOf(element)); }
public bool RemoveChild(VcProjectElement element) { ProjectExceptions.NotNull(element, "element"); if (_children.Count == 0) { return(false); } return(_children.Remove(element)); }
public bool ContainsChild(VcProjectElement element) { ProjectExceptions.NotNull(element, "element"); if (element.Parent == null || element.Parent != this || _children.Count == 0) { return(false); } if (element.Parent == this) { return(true); } return(_children.Contains(element)); }
public void InsertChild(int index, VcProjectElement element) { ProjectExceptions.NotNull(element, "element"); if (element.Parent != this) { throw new InvalidOperationException( "The element is not created by this container."); } if (_children.Count != 0 && _children.Contains(element)) { return; } _children.Insert(index, element); }
public override void ReadXml(XmlReader reader) { ProjectExceptions.NotNull(reader, "reader"); Debug.Assert(reader.NodeType == XmlNodeType.Element); if (reader.NodeType != XmlNodeType.Element) { return; } string tagName = this.XmlTagName; if (!String.Equals(reader.Name, tagName, StringComparison.OrdinalIgnoreCase)) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (this.IsChildElement(reader.Name)) { VcProjectElement element = this.CreateChildElement(reader.Name); element.ReadXml(reader); this.AppendChild(element); } else { throw new InvalidOperationException(String.Format( "The element '{0}' is not a child element of {1}", reader.Name, tagName)); } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, tagName, StringComparison.OrdinalIgnoreCase)) { break; } } } }