using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace TFSWrappers
{
    public class AdvancedBuildTypeProperties
    {
        internal AdvancedBuildTypeProperties(XmlDocument buildTypeXmlDocument, XmlNamespaceManager xmlNamespaceManager)
        {
            skipClean = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.SkipCleanXPath,
                Boolean.FalseString, "Skip Clean", "Set this property to true to skip Clean target.");
            skipGet = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.SkipGetXPath,
                Boolean.FalseString, "Skip Get", "Set this property to true to skip Get task.");
            skipLabel = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.SkipLabelXPath,
                Boolean.FalseString, "Skip Label", "Set this property to true to skip Label task.");
            skipInitializeWorkspace = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.SkipInitializeWorkspaceXPath,
                Boolean.FalseString, "Skip Initialize Workspace", "Set this property to true to skip InitializeWorkspace target.");
            skipPostBuild = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.SkipPostBuildXPath,
                Boolean.FalseString, "Skip Post Build", "Set this property to true to skip PostBuild target.");
            skipDropBuild = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.SkipDropBuildXPath,
                Boolean.FalseString, "Skip Drop Build", "Set this property to true to skip DropBuild target.");
            skipWorkItemCreation = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.SkipWorkItemCreationXPath,
                Boolean.FalseString, "Skip Work Item Creation", "Set this property to true to skip executing CreateWorkItem task on build break.");
            labelQueryScope = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.LabelQueryScopeXPath,
                "@$/$(TeamProject)", "Label Query Scope", "Defining the scope of query for labels in non-desktop builds scenarios.");
            forceGet = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.ForceGetXPath,
                Boolean.TrueString, "Force Get", "Set this to false to do incremental get.");
            recursiveGet = new BuildTypeProperty(buildTypeXmlDocument, xmlNamespaceManager, Constants.RecursiveGetXPath,
                Boolean.TrueString, "Recursive Get", "Set this to false to do only top-level get.");
        }

        private BuildTypeProperty skipClean;

        public BuildTypeProperty SkipClean
        {
            get { return skipClean; }
            set { skipClean = value; }
        }

        private BuildTypeProperty skipGet;

        public BuildTypeProperty SkipGet
        {
            get { return skipGet; }
            set { skipGet = value; }
        }

        private BuildTypeProperty skipLabel;

        public BuildTypeProperty SkipLabel
        {
            get { return skipLabel; }
            set { skipLabel = value; }
        }

        private BuildTypeProperty skipInitializeWorkspace;

        public BuildTypeProperty SkipInitializeWorkspace
        {
            get { return skipInitializeWorkspace; }
            set { skipInitializeWorkspace = value; }
        }

        private BuildTypeProperty skipPostBuild;

        public BuildTypeProperty SkipPostBuild
        {
            get { return skipPostBuild; }
            set { skipPostBuild = value; }
        }

        private BuildTypeProperty skipDropBuild;

        public BuildTypeProperty SkipDropBuild
        {
            get { return skipDropBuild; }
            set { skipDropBuild = value; }
        }

        private BuildTypeProperty skipWorkItemCreation;

        public BuildTypeProperty SkipWorkItemCreation
        {
            get { return skipWorkItemCreation; }
            set { skipWorkItemCreation = value; }
        }

        private BuildTypeProperty labelQueryScope;

        public BuildTypeProperty LabelQueryScope
        {
            get { return labelQueryScope; }
            set { labelQueryScope = value; }
        }

        private BuildTypeProperty forceGet;

        public BuildTypeProperty ForceGet
        {
            get { return forceGet; }
            set { forceGet = value; }
        }

        private BuildTypeProperty recursiveGet;

        public BuildTypeProperty RecursiveGet
        {
            get { return recursiveGet; }
            set { recursiveGet = value; }
        }
    }
}
