Ejemplo n.º 1
0
        public void ViewBuilds()
        {
            //get all build definitions if not leaf.
            BaseHierarchyNode node = NodePriority != (int)TeamExplorerNodePriority.Leaf
                                         ? FindAssociated.AssociatedNode("All Build Definitions", this, separator)
                                         : FindAssociated.AssociatedNode(this, separator);

            node.ParentHierarchy.CallMethod("ViewBuilds", node);
        }
Ejemplo n.º 2
0
 private void RecursiveBuildNodes(IBuildDefinitionTreeNode root, BaseHierarchyNode teNode, char sep)
 {
     //create nodes on this level and call recursive on children.
     foreach (var buildNode in root.Children.Select(node => new BuildDefinitionExplorerNode(node, sep, TFS)))
     {
         buildNode.AddChildren();
         teNode.AddChild(buildNode);
     }
     teNode.Expand(false);
 }
Ejemplo n.º 3
0
        public void QueueNewBuild()
        {
            //get all build definitions if not leaf.
            BaseHierarchyNode node = NodePriority != (int)TeamExplorerNodePriority.Leaf
                                         ? FindAssociated.AssociatedNode("All Build Definitions", this, separator)
                                         : FindAssociated.AssociatedNode(this, separator);

            if (!(NodePriority == (int)TeamExplorerNodePriority.Leaf && IsDisabled))
            {
                node.ParentHierarchy.CallMethod("QueueBuild", node);
            }
        }
Ejemplo n.º 4
0
        public void QueueDefaultSubFolderBuilds()
        {
            // if (NodePriority == (int)TeamExplorerNodePriority.Leaf)
            //     return;  // just ignore, we should never be here
            IBuildServer buildServer = GetBuildServer();

            foreach (IBuildDefinition buildDef in
                     FindAssociated.AssociatedNodes(CanonicalName, this, separator).Select(
                         item => buildServer.GetBuildDefinition(item.ProjectName, item.Name)))
            {
                if (buildDef.Enabled)
                {
                    buildServer.QueueBuild(buildDef);
                }
            }
            BaseHierarchyNode node = FindAssociated.AssociatedNode("All Build Definitions", this, separator);

            node.ParentHierarchy.CallMethod("ViewBuilds", node);
        }
Ejemplo n.º 5
0
        internal static BaseHierarchyNode AssociatedNode(string nodeName, BaseHierarchyNode hierarchyNode, char sep)
        {
            var folderChars = new[] { '$', sep };

            lock (_syncLock)
            {
                try
                {
                    string nodeNameToFind = nodeName.TrimEnd(folderChars);
                    var    nodes          =
                        hierarchyNode.ParentHierarchy.ParentHierarchy.GetFieldValue("m_hierarchyManager").GetFieldValue(
                            "m_hierarchyNodes") as Dictionary <uint, BaseHierarchyNode>;

                    foreach (var build in from baseHierarchyNode in nodes
                             where baseHierarchyNode.Value.CanonicalName.EndsWith("/Builds")
                             select baseHierarchyNode.Value
                             into node
                             select node.NestedHierarchy as BaseUIHierarchy
                             into buildHier
                             select
                             buildHier.GetFieldValue("m_hierarchyManager").GetFieldValue(
                                 "m_hierarchyNodes") as Dictionary <uint, BaseHierarchyNode>
                             into builds
                             from build in builds.Where(build => Compare(nodeNameToFind, build.Value.Name))
                             select build)
                    {
                        //this is the origional builddefinition node.
                        return(build.Value);
                    }
                }
                catch
                {
                }
                // BuildDefinitionUIHierarchy.Hierarchy.RefreshTree();
                throw new ArgumentException("Build definition with path name '" + nodeName + "' does not exist!");
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Finds multiple matching build nodes, based on a partly name, like the name of the folder.
        /// </summary>
        /// <param name="canonicalnodeName"></param>
        /// <param name="hierarchyNode"></param>
        /// <param name="sep"></param>
        /// <returns></returns>
        internal static List <BaseHierarchyNode> AssociatedNodes(string canonicalnodeName, BaseHierarchyNode hierarchyNode, char sep)
        {
            var    folderChars = new[] { '$', sep };
            string nodeName    = canonicalnodeName.Split('/')[0];

            lock (_syncLock)
            {
                string nodeNameToFind = nodeName.TrimEnd(folderChars);
                var    nodes          =
                    hierarchyNode.ParentHierarchy.ParentHierarchy.GetFieldValue("m_hierarchyManager").GetFieldValue(
                        "m_hierarchyNodes") as Dictionary <uint, BaseHierarchyNode>;

                var nodeList = new List <BaseHierarchyNode>();
                foreach (var node in nodes)
                {
                    if (node.Value.CanonicalName.EndsWith("/Builds"))
                    {
                        var nodeNH    = node.Value.NestedHierarchy as BaseUIHierarchy;
                        var buildHier =
                            nodeNH.GetFieldValue("m_hierarchyManager").GetFieldValue("m_hierarchyNodes") as
                            Dictionary <uint, BaseHierarchyNode>;
                        foreach (var build in buildHier)
                        {
                            if (build.Value != null && build.Value.Name != null && build.Value.Name.Contains(nodeNameToFind))
                            {
                                nodeList.Add(build.Value);
                            }
                        }
                    }
                }
                return(nodeList);
            }
        }
Ejemplo n.º 7
0
 internal static BaseHierarchyNode AssociatedNode(BaseHierarchyNode node, char sep)
 {
     //split at leaf level
     return(AssociatedNode(node.CanonicalName.Split('/')[0], node, sep));
 }
Ejemplo n.º 8
0
        public void ViewAllBuilds()
        {
            BaseHierarchyNode node = FindAssociated.AssociatedNode("All Build Definitions", this, separator);

            node.ParentHierarchy.CallMethod("ViewBuilds", node);
        }
Ejemplo n.º 9
0
        public void GotoTeamExplorerBuildNode()
        {
            BaseHierarchyNode node = FindAssociated.AssociatedNode(this, separator);

            node.Select();
        }
Ejemplo n.º 10
0
        public void OpenEditBuildDefintion()
        {
            BaseHierarchyNode node = FindAssociated.AssociatedNode(this, separator);

            node.ParentHierarchy.CallMethod("OpenBuildDefinition", node);
        }
Ejemplo n.º 11
0
 protected override void InstallNewTree(BaseUIHierarchy hierarchy, BaseHierarchyNode newRoot)
 {
     base.InstallNewTree(hierarchy, newRoot);
 }
Ejemplo n.º 12
0
 protected override System.Collections.ArrayList[] DoTreeMerge(BaseUIHierarchy hierarchy, BaseHierarchyNode newRoot)
 {
     return(base.DoTreeMerge(hierarchy, newRoot));
 }
Ejemplo n.º 13
0
        public int PopulateTree(BaseHierarchyNode teNode)
        {
            var options    = new Options(this, TFS);
            var sep        = options.SeparatorToken;
            var root       = BuildDefinitionTreeNodeFactory.CreateOrMergeIntoTree("root", sep, null, false);
            int noOfBuilds = 0;

            try
            {
                //This code uses reflection since this is the only way to get hold of the associated build nodes.
                //The code goes up the hierarchy and finds the 'Builds' plugin and then get hold of its build nodes.
                var nodes = teNode.ParentHierarchy.ParentHierarchy
                            .GetFieldValue("m_hierarchyManager")
                            .GetFieldValue("m_hierarchyNodes") as Dictionary <uint, BaseHierarchyNode>;

                foreach (var builds in from baseHierarchyNode in nodes
                         where baseHierarchyNode.Value.CanonicalName.EndsWith("/Builds")
                         select baseHierarchyNode.Value
                         into node
                         select node.NestedHierarchy as BaseUIHierarchy
                         into buildHier
                         select buildHier.GetFieldValue("m_hierarchyManager").GetFieldValue("m_hierarchyNodes") as Dictionary <uint, BaseHierarchyNode>

                         )
                {
                    foreach (var buildNodeKV in
                             builds.Reverse().Where(buildNodeKV => buildNodeKV.Value != null && !String.IsNullOrEmpty(buildNodeKV.Value.Name)))
                    {
                        bool disabled = buildNodeKV.Value.OverlayIconIndex == 6;   // Number found through investigation, we only look in the Build folder, we dont access the Build definitions, in order to keep performance up
                        BuildDefinitionTreeNodeFactory.CreateOrMergeIntoTree("root" + sep + buildNodeKV.Value.Name,
                                                                             sep, root, disabled);
                        noOfBuilds++;
                    }
                    break;
                }

                //merge tree with UI nodes.
                if (noOfBuilds > 0)
                {
                    RecursiveBuildNodes(root, teNode, sep);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(ex);
                try
                {
                    //clean up
                    while (HierarchyNode.FirstChild != null)
                    {
                        HierarchyNode.FirstChild.Remove();
                    }
                }
                catch
                {
                    //ignore something is very wrong.
                }

                throw;
            }
            return(noOfBuilds);
        }