// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System.Collections.Generic;
using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Xml;
+using Microsoft.Build.Exceptions;
+using Microsoft.Build.Internal;
namespace Microsoft.Build.Construction
{
+ [System.Diagnostics.DebuggerDisplayAttribute ("#Children={Count} Condition={Condition}")]
public class ProjectWhenElement : ProjectElementContainer
{
+ internal ProjectWhenElement (string condition, ProjectRootElement containingProject)
+ {
+ Condition = condition;
+ ContainingProject = containingProject;
+ }
public ICollection<ProjectPropertyGroupElement> PropertyGroups {
- get {
- throw new NotImplementedException ();
- }
+ get { return new CollectionFromEnumerable<ProjectPropertyGroupElement> (
+ new FilteredEnumerable<ProjectPropertyGroupElement> (Children)); }
}
public ICollection<ProjectItemGroupElement> ItemGroups {
- get {
- throw new NotImplementedException ();
- }
+ get { return new CollectionFromEnumerable<ProjectItemGroupElement> (
+ new FilteredEnumerable<ProjectItemGroupElement> (Children)); }
}
public ICollection<ProjectChooseElement> ChooseElements {
- get {
- throw new NotImplementedException ();
- }
+ get { return new CollectionFromEnumerable<ProjectChooseElement> (
+ new FilteredEnumerable<ProjectChooseElement> (Children));}
}
internal override string XmlName {
- get {
- throw new NotImplementedException ();
+ get { return "When"; }
+ }
+ internal override ProjectElement LoadChildElement (XmlReader reader)
+ {
+ switch (reader.LocalName) {
+ case "PropertyGroup":
+ var property = ContainingProject.CreatePropertyGroupElement ();
+ AppendChild (property);
+ return property;
+ case "ItemGroup":
+ var item = ContainingProject.CreateItemGroupElement ();
+ AppendChild (item);
+ return item;
+ case "When":
+ var when = ContainingProject.CreateWhenElement (null);
+ AppendChild (when);
+ return when;
+ default:
+ throw new InvalidProjectFileException (string.Format (
+ "Child \"{0}\" is not a known node type.", reader.LocalName));
}
}
}