Esempio n. 1
0
        private IEnumerable <AbstractIssueGroupNode> getSortedPriorityNodes()
        {
            IssueNode node = null;

            foreach (var groupNode in groupNodes)
            {
                node = groupNode.Value.IssueNodes[0];
            }
            if (node != null)
            {
                var sortedPrioIds = JiraServerCache.Instance.getPriorities(node.Issue.Server);

                List <AbstractIssueGroupNode> list = new List <AbstractIssueGroupNode>();

                foreach (var prio in sortedPrioIds)
                {
                    foreach (var prioGroup in groupNodes)
                    {
                        if (prio.Id == prioGroup.Key)
                        {
                            list.Add(prioGroup.Value);
                        }
                    }
                }
                // everthing else lands in the "unknown" priority bucket
                if (groupNodes.ContainsKey(UNKNOWN_PRIORITY.Id))
                {
                    list.Add(groupNodes[UNKNOWN_PRIORITY.Id]);
                }
                return(list);
            }
            return(null);
        }
Esempio n. 2
0
        protected override void fillModel(IEnumerable <JiraIssue> issues)
        {
            nodes.Clear();

            List <JiraIssue> subs       = new List <JiraIssue>();
            List <JiraIssue> orphanSubs = new List <JiraIssue>();

            foreach (var issue in issues)
            {
                if (!(issue.IsSubtask && GroupSubtasksUnderParent))
                {
                    nodes.Add(new IssueNode(issue));
                }
                else
                {
                    subs.Add(issue);
                }
            }

            foreach (JiraIssue sub in subs)
            {
                IssueNode parent = null;
                foreach (IssueNode n in nodes)
                {
                    if (!sub.ParentKey.Equals(n.Issue.Key))
                    {
                        continue;
                    }
                    parent = n;
                    break;
                }
                if (parent != null)
                {
                    parent.SubtaskNodes.Add(new IssueNode(sub));
                }
                else
                {
                    orphanSubs.Add(sub);
                }
            }

            // orphaned subtasks go at the end of the tree.
            // Not really kosher, priority order is lost :(
            foreach (JiraIssue sub in orphanSubs)
            {
                nodes.Add(new IssueNode(sub));
            }

            if (TreeAboutToChange != null)
            {
                TreeAboutToChange(this, new EventArgs());
            }

            if (StructureChanged != null)
            {
                StructureChanged(this, new TreePathEventArgs(TreePath.Empty));
            }
        }
            public string GetToolTip(TreeNodeAdv node, NodeControl nodeControl)
            {
                IssueNode issueNode = node.Tag as IssueNode;

                if (issueNode != null)
                {
                    return(issueNode.Issue.ToolTipText);
                }
                return(null);
            }
Esempio n. 4
0
        public override IEnumerable GetChildren(TreePath treePath)
        {
            if (treePath.IsEmpty())
            {
                return(nodes);
            }
            IssueNode n = treePath.LastNode as IssueNode;

            return(n != null ? n.SubtaskNodes : null);
        }
Esempio n. 5
0
 public override bool IsLeaf(TreePath treePath)
 {
     if (GroupSubtasksUnderParent)
     {
         IssueNode n = treePath.LastNode as IssueNode;
         if (n != null)
         {
             return(n.Issue.IsSubtask || !n.Issue.HasSubtasks);
         }
     }
     return(true);
 }
Esempio n. 6
0
        protected override void fillModel(IEnumerable <JiraIssue> issues)
        {
            clearGroupNodes();

            List <JiraIssue> subs       = new List <JiraIssue>();
            List <JiraIssue> orphanSubs = new List <JiraIssue>();

            foreach (var issue in issues)
            {
                if (!(issue.IsSubtask && GroupSubtasksUnderParent))
                {
                    AbstractIssueGroupNode group = findGroupNode(issue);
                    if (group != null)
                    {
                        group.IssueNodes.Add(new IssueNode(issue));
                    }
                }
                else
                {
                    subs.Add(issue);
                }
            }

            foreach (JiraIssue sub in subs)
            {
                IssueNode parent = findIssueNodeByKey(sub.ParentKey);
                if (parent != null)
                {
                    parent.SubtaskNodes.Add(new IssueNode(sub));
                }
                else
                {
                    orphanSubs.Add(sub);
                }
            }

            // orphaned subtasks go at the end of the tree.
            // Not really kosher, priority order is lost :(
            foreach (JiraIssue sub in orphanSubs)
            {
                AbstractIssueGroupNode group = findGroupNode(sub);
                if (group != null)
                {
                    group.IssueNodes.Add(new IssueNode(sub));
                }
            }

            if (StructureChanged != null)
            {
                StructureChanged(this, new TreePathEventArgs(TreePath.Empty));
            }
        }
        private void jiraIssueTreeItemDrag(object sender, ItemDragEventArgs e)
        {
            if (SelectedNode == null || !(SelectedNode.Tag is IssueNode))
            {
                return;
            }

            IssueNode  n = (IssueNode)SelectedNode.Tag;
            DataObject d = new DataObject();

            d.SetText("ISSUE:" + n.Issue.Key + ":SERVER:{" + n.Issue.Server.GUID + "}");

            DoDragDrop(d, DragDropEffects.Copy | DragDropEffects.Move);
        }
Esempio n. 8
0
        private IssueNode ExtractForUser(string user, IssueNode node)
        {
            var userWorkLogs = node.WorkLogs
                               .Where(p => p.Author == user)
                               .ToArray();

            if (node.Issue.Assignee == user)
            {
                return(new IssueNode(node.Issue, userWorkLogs, GetStatusByName(node.Issue.StatusName), ExtractForUser(user, node.Children)));
            }
            else
            {
                return(new IssueNode(node.Issue.RemoveStoryPoints(), userWorkLogs, GetStatusByName(node.Issue.StatusName), ExtractForUser(user, node.Children)));
            }
        }
Esempio n. 9
0
        public override IEnumerable GetChildren(TreePath treePath)
        {
            if (treePath.IsEmpty())
            {
                return(getGroupNodes());
            }
            AbstractIssueGroupNode groupNode = treePath.LastNode as AbstractIssueGroupNode;

            if (groupNode != null)
            {
                return(groupNode.IssueNodes);
            }
            IssueNode issueNode = treePath.LastNode as IssueNode;

            return(issueNode != null ? issueNode.SubtaskNodes : null);
        }