internal override void ReadChildElement(MSBuildXmlReader reader) { MSBuildObject ob = null; switch (reader.LocalName) { case "ItemGroup": ob = new MSBuildItemGroup(); break; case "PropertyGroup": ob = new MSBuildPropertyGroup(); break; case "ImportGroup": ob = new MSBuildImportGroup(); break; case "Import": ob = new MSBuildImport(); break; case "Target": ob = new MSBuildTarget(); break; case "Choose": ob = new MSBuildChoose(); break; case "ProjectExtensions": ob = new MSBuildProjectExtensions(); break; default: ob = new MSBuildXmlElement(); break; } if (ob != null) { ob.ParentNode = this; ob.Read(reader); ChildNodes = ChildNodes.Add(ob); } else { base.ReadChildElement(reader); } }
internal void ResetIndent(bool closeInNewLine, MSBuildProject project, MSBuildObject parent, MSBuildNode previousSibling) { StartInnerWhitespace = StartWhitespace = EndWhitespace = EndInnerWhitespace = null; if (previousSibling != null) { StartWhitespace = previousSibling.StartWhitespace; if (closeInNewLine) { EndInnerWhitespace = StartWhitespace; } } else if (parent != null) { if (parent.StartInnerWhitespace == null) { parent.StartInnerWhitespace = project.TextFormat.NewLine; parent.EndInnerWhitespace = parent.StartWhitespace; } object parentStartWhitespace = (parent != project) ? parent.StartWhitespace : ""; StartWhitespace = parentStartWhitespace + " "; if (closeInNewLine) { EndInnerWhitespace = StartWhitespace; } } EndWhitespace = project.TextFormat.NewLine; if (closeInNewLine) { StartInnerWhitespace = project.TextFormat.NewLine; } ResetChildrenIndent(); }
public MSBuildItemGroup AddNewItemGroup() { AssertCanModify(); var group = new MSBuildItemGroup(); MSBuildObject refNode = null; var lastGroup = ItemGroups.LastOrDefault(); if (lastGroup != null) { refNode = lastGroup; } else { var g = PropertyGroups.LastOrDefault(); if (g != null) { refNode = g; } } group.ParentNode = this; if (refNode != null) { ChildNodes = ChildNodes.Insert(ChildNodes.IndexOf(refNode) + 1, group); } else { ChildNodes = ChildNodes.Add(group); } group.ResetIndent(true); NotifyChanged(); return(group); }
public MSBuildPropertyGroup AddNewPropertyGroup(bool insertAtEnd = true, MSBuildObject beforeObject = null) { var group = new MSBuildPropertyGroup(); AddPropertyGroup(group, insertAtEnd); return(group); }
public void Remove(MSBuildObject ob) { AssertCanModify(); if (ob.ParentObject == this) { ob.RemoveIndent(); ChildNodes = ChildNodes.Remove(ob); } }
internal override void ReadChildElement(MSBuildXmlReader reader) { MSBuildObject ob = null; switch (reader.LocalName) { case "ItemGroup": ob = new MSBuildItemGroup(); break; case "PropertyGroup": ob = new MSBuildPropertyGroup(); break; case "ImportGroup": ob = new MSBuildImportGroup(); break; case "Choose": ob = new MSBuildChoose(); break; default: ob = new MSBuildXmlElement(); break; } ob.ParentNode = this; ob.Read(reader); ChildNodes = ChildNodes.Add(ob); }
public MSBuildImport AddNewImport(string name, string condition = null, MSBuildObject beforeObject = null) { AssertCanModify(); var import = new MSBuildImport { Project = name, Condition = condition }; int index = -1; if (beforeObject != null) { index = ChildNodes.IndexOf(beforeObject); } else { index = ChildNodes.FindLastIndex(ob => ob is MSBuildImport); if (index != -1) { index++; } } import.ParentNode = this; if (index != -1) { ChildNodes = ChildNodes.Insert(index, import); } else { ChildNodes = ChildNodes.Add(import); } import.ResetIndent(false); NotifyChanged(); return(import); }
internal override void ReadChildElement(MSBuildXmlReader reader) { MSBuildObject ob = null; switch (reader.LocalName) { case "ItemGroup": ob = new MSBuildItemGroup(); break; case "PropertyGroup": ob = new MSBuildPropertyGroup(); break; } if (ob != null) { ob.ParentNode = this; ob.Read(reader); ChildNodes = ChildNodes.Add(ob); return; } var task = new MSBuildTask(); task.ParentNode = this; task.Read(reader); ChildNodes = ChildNodes.Add(task); }
public void AddPropertyGroup(MSBuildPropertyGroup group, bool insertAtEnd = true, MSBuildObject beforeObject = null) { AssertCanModify(); if (group.ParentProject != null) { throw new InvalidOperationException("Group already belongs to a project"); } group.ParentNode = this; bool added = false; if (beforeObject != null) { var index = ChildNodes.IndexOf(beforeObject); if (index != -1) { ChildNodes = ChildNodes.Insert(index, group); added = true; } } if (!added) { if (insertAtEnd) { var last = ChildNodes.FindLastIndex(g => g is MSBuildPropertyGroup); if (last != -1) { ChildNodes = ChildNodes.Insert(last + 1, group); added = true; } } else { var first = ChildNodes.FindIndex(g => g is MSBuildPropertyGroup); if (first != -1) { ChildNodes = ChildNodes.Insert(first, group); added = true; } } if (!added) { var first = ChildNodes.FindIndex(g => g is MSBuildItemGroup); if (first != -1) { ChildNodes = ChildNodes.Insert(first, group); } else { ChildNodes = ChildNodes.Add(group); } } } group.ResetIndent(true); NotifyChanged(); }
internal void ResetIndent (bool closeInNewLine, MSBuildProject project, MSBuildObject parent, MSBuildNode previousSibling) { StartInnerWhitespace = StartWhitespace = EndWhitespace = EndInnerWhitespace = null; if (previousSibling != null) { StartWhitespace = previousSibling.StartWhitespace; if (closeInNewLine) EndInnerWhitespace = StartWhitespace; } else if (parent != null) { if (parent.StartInnerWhitespace == null) { parent.StartInnerWhitespace = project.TextFormat.NewLine; parent.EndInnerWhitespace = parent.StartWhitespace; } object parentStartWhitespace = (parent != project) ? parent.StartWhitespace : ""; StartWhitespace = parentStartWhitespace + " "; if (closeInNewLine) EndInnerWhitespace = StartWhitespace; } EndWhitespace = project.TextFormat.NewLine; if (closeInNewLine) StartInnerWhitespace = project.TextFormat.NewLine; ResetChildrenIndent (); }
public void Remove (MSBuildObject ob) { AssertCanModify (); if (ob.ParentObject == this) { ob.RemoveIndent (); ChildNodes = ChildNodes.Remove (ob); ob.ParentNode = null; } }
public void AddPropertyGroup (MSBuildPropertyGroup group, bool insertAtEnd = true, MSBuildObject beforeObject = null) { AssertCanModify (); if (group.ParentProject != null) throw new InvalidOperationException ("Group already belongs to a project"); group.ParentNode = this; bool added = false; if (beforeObject != null) { var index = ChildNodes.IndexOf (beforeObject); if (index != -1) { ChildNodes = ChildNodes.Insert (index, group); added = true; } } if (!added) { if (insertAtEnd) { var last = ChildNodes.FindLastIndex (g => g is MSBuildPropertyGroup); if (last != -1) { ChildNodes = ChildNodes.Insert (last + 1, group); added = true; } } else { var first = ChildNodes.FindIndex (g => g is MSBuildPropertyGroup); if (first != -1) { ChildNodes = ChildNodes.Insert (first, group); added = true; } } if (!added) { var first = ChildNodes.FindIndex (g => g is MSBuildItemGroup); if (first != -1) ChildNodes = ChildNodes.Insert (first, group); else ChildNodes = ChildNodes.Add (group); } } group.ResetIndent (true); NotifyChanged (); }
public MSBuildPropertyGroup AddNewPropertyGroup (bool insertAtEnd = true, MSBuildObject beforeObject = null) { var group = new MSBuildPropertyGroup (); AddPropertyGroup (group, insertAtEnd); return group; }
public MSBuildImport AddNewImport (string name, string condition = null, MSBuildObject beforeObject = null) { AssertCanModify (); var import = new MSBuildImport { Project = name, Condition = condition }; int index = -1; if (beforeObject != null) index = ChildNodes.IndexOf (beforeObject); else { index = ChildNodes.FindLastIndex (ob => ob is MSBuildImport); if (index != -1) index++; } import.ParentNode = this; if (index != -1) ChildNodes = ChildNodes.Insert (index, import); else ChildNodes = ChildNodes.Add (import); import.ResetIndent (false); NotifyChanged (); return import; }