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); }
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); }
public override IEnumerable GetChildren(TreePath treePath) { if (treePath.IsEmpty()) { return(nodes); } IssueNode n = treePath.LastNode as IssueNode; return(n != null ? n.SubtaskNodes : null); }
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); }
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); }
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))); } }
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); }