BEurtle.IssueDetail.loadIssue C# (CSharp) Метод

loadIssue() приватный Метод

private loadIssue ( ) : void
Результат void
        private void loadIssue()
        {
            Comments.Nodes.Clear();
            if (uuid != Guid.Empty)
            {
                var issues_nav = plugin.issues.CreateNavigator();
                var iter=(XPathNodeIterator)issues_nav.Select("//bug[uuid='"+uuid.ToString()+"']");
                iter.MoveNext();
                XPathNavigator issue = iter.Current;

                BoxUUID.Text = issue.Evaluate("string(uuid)").ToString();
                BoxShortName.Text = issue.Evaluate("string(short-name)").ToString();
                BoxCreated.Text = issue.Evaluate("string(created)").ToString();
                BoxCreator.Text = issue.Evaluate("string(creator)").ToString();
                BoxReporter.Text = issue.Evaluate("string(reporter)").ToString();
                BoxAssigned.Text = issue.Evaluate("string(assigned)").ToString();
                BoxSeverity.SelectedItem = issue.Evaluate("string(severity)").ToString();
                BoxStatus.SelectedItem = issue.Evaluate("string(status)").ToString();
                BoxSummary.Text = issue.Evaluate("string(summary)").ToString();

                // Iterate all root comments and append
                commentToUUID.Clear();
                var UUIDtoComment = new Dictionary<Guid, TreeNode>();
                XPathNodeIterator comments = (XPathNodeIterator)issue.Select("comment[not(in-reply-to)]");
                foreach (XPathNavigator comment in comments)
                {
                    var node = NewCommentTreeNode(comment);
                    var uuidpath=new uuid_xpath(new Guid(comment.Evaluate("string(uuid)").ToString()), comment);
                    UUIDtoComment.Add(uuidpath.Item1, node);
                    commentToUUID.Add(node, uuidpath);
                    Comments.Nodes.Add(node);
                }
                // Recursively apply replies to comments
                XPathNodeIterator replies_ = (XPathNodeIterator)issue.Select("comment[in-reply-to]");
                var replies = new List<uuid_xpath>();
                foreach (XPathNavigator reply in replies_)
                    replies.Add(new uuid_xpath(new Guid(reply.Evaluate("string(in-reply-to)").ToString()), reply));
                while (replies.Count > 0)
                {
                    var oldcount = replies.Count;
                    for(var i=0; i<replies.Count; )
                    {
                        uuid_xpath reply = replies[i];
                        TreeNode commentnode = UUIDtoComment[reply.Item1];
                        if (commentnode !=null)
                        {
                            var node = NewCommentTreeNode(reply.Item2);
                            var uuidpath=new uuid_xpath(new Guid(reply.Item2.Evaluate("string(uuid)").ToString()), reply.Item2);
                            UUIDtoComment.Add(uuidpath.Item1, node);
                            commentToUUID.Add(node, uuidpath);
                            commentnode.Nodes.Add(node);
                            replies.Remove(reply);
                        }
                        else i++;
                    }
                    if (oldcount == replies.Count)
                    {
                        // BE repo is corrupt, so just add as root items and exit
                        foreach (uuid_xpath reply in replies)
                        {
                            var node = NewCommentTreeNode(reply.Item2, "Corrupted BE repo in-reply-to-unknown(" + reply.Item1 + ") ");
                            var uuidpath = new uuid_xpath(new Guid(reply.Item2.Evaluate("string(uuid)").ToString()), reply.Item2);
                            commentToUUID.Add(node, uuidpath);
                            Comments.Nodes.Add(node);
                        }
                        break;
                    }
                }
            }
            setEditable(uuid == Guid.Empty);
            CommentAdd.Enabled = true;
            Application.DoEvents(); // Let MSHTML get around to binding
            if (Comments.Nodes.Count > 0)
            {
                Comments.ExpandAll();
                Commentary.Panel2.Enabled = true;
                Comments.SelectedNode = Comments.Nodes[0];
                CommentReply.Enabled = CommentDelete.Enabled = CommentEdit.Enabled = true;
                CommentDelete.Enabled = CommentEdit.Enabled = false;
            }
        }