Пример #1
0
        /// <summary>
        /// Gets the commit message.
        /// </summary>
        /// <param name="hParentWnd">Parent window for your provider's UI.</param>
        /// <param name="parameters">Parameters for your provider.</param>
        /// <param name="commonRoot">The common root.</param>
        /// <param name="pathList">The path list.</param>
        /// <param name="originalMessage">The text already present in the commit message. Your provider should include this text in the new message, where appropriate.</param>
        /// <returns>The new text for the commit message. This replaces the original message.</returns>
        /// <exception cref="Exception"><c>Exception</c>.</exception>
        public string GetCommitMessage(IntPtr hParentWnd, string parameters, string commonRoot, string[] pathList, string originalMessage)
        {
            try
            {
                feedsUrl = parameters;

                //Show form
                var form = new IssuesForm(this, originalMessage);

                //If don't click ok then return the original message.
                if (form.ShowDialog() != DialogResult.OK)
                {
                    return originalMessage;
                }

                //If we click ok but no items are selected then return the original message.
                if (form.ItemsFixed.Count <= 0)
                {
                    return originalMessage;
                }

                //Add issues to comment window
                var result = new StringBuilder();
                var regexObj = new Regex(@"([Ii]ssues?:?(\s*(,|and)?\s*#\d+)+)", RegexOptions.IgnoreCase);

                if (regexObj.Matches(originalMessage).Count <= 0)
                {
                    //Not found at all

                    //Check if we include summary
                    if (form.IncludeSummary)
                    {
                        if (originalMessage.Length > 0)
                        {
                            result.AppendLine(originalMessage);
                        }

                        //Add each checked issue
                        foreach (var item in form.ItemsFixed)
                        {
                            result.AppendLine(string.Format("({0} #{1}) : {2}", Strings.IssueText, item.Number,
                                                item.Description));
                        }
                    }
                    else
                    {
                        if (originalMessage.Length > 0)
                        {
                            //Add Original message and "Issues"
                            result.AppendFormat("{0} ({1}", originalMessage, Strings.IssueText);
                        }
                        else
                        {
                            //Add "Issues"
                            result.AppendFormat("({0}", Strings.IssueText);
                        }

                        //Add each checked issue
                        foreach (var item in form.ItemsFixed)
                        {
                            result.AppendFormat(" #{0},", item.Number);
                        }
                        //Remove trailing comma
                        result.Remove(result.Length - 1, 1);
                        result.Append(")");
                    }
                }
                else
                {
                    //Found

                    if (originalMessage.EndsWith(Environment.NewLine))
                    {
                        result.Append(originalMessage);
                    }
                    else
                    {
                        result.AppendLine(originalMessage);    
                    }

                    //Add each checked issue if not already there
                    foreach (var item in form.ItemsFixed)
                    {
                        if (form.IncludeSummary)
                        {
                            if (originalMessage.Contains(string.Format("({0} #{1}) : {2}", Strings.IssueText, item.Number,
                                                item.Description)))
                            {
                                //Number and summary are already included so skip this issue number
                                continue;
                            }
                            
                            if (originalMessage.Contains(string.Format("#{0}", item.Number)))
                            {
                                //Issue number is included but not description so add the description on a new line if it is
                                //not in the original comment somewhere else.
                                if (!originalMessage.Contains(item.Description))
                                {
                                    result.AppendLine(item.Description);    
                                }
                                
                                continue;
                            }

                            //Got here which means this is a new issue so add it.
                            result.AppendLine(string.Format("({0} #{1}) : {2}", Strings.IssueText, item.Number,
                                                item.Description));
                        }
                        else
                        {
                            if (originalMessage.Contains(string.Format("#{0}", item.Number)))
                            {
                                //Issue is already in the original comment so skip adding
                                continue;
                            }

                            //Got here which means this is a new issue so add it to the existing list.
                            //Find (Issues #xxx in original message and append to it.
                            var startpos =
                                originalMessage.LastIndexOf(
                                    string.Format("{0} #", Strings.IssueText),
                                    StringComparison.CurrentCultureIgnoreCase);
                            var endpos = originalMessage.IndexOf(")", startpos);

                            //If can't find closing brace then add after the word issue and before the #
                            if (endpos < 0)
                            {
                                endpos = startpos + Strings.IssueText.Length;
                                result.Insert(endpos, string.Format(" #{0},", item.Number));
                            }
                            else
                            {
                                result.Insert(endpos, string.Format(", #{0}", item.Number));
                            }
                        }
                    }
                }

                //If we have issues added to the list return them  otherwise return just the original message (This is if all selected issues were already in the list).
                return result.ToString() != originalMessage + " ()" ? result.ToString() : originalMessage;
            }
            catch (Exception ex)
            {
                var dialog = new ErrorDialog(ex, ErrorDialog.ButtonState.CloseContinue);
                dialog.ShowDialog(AppWindow);
                return originalMessage;
            }
        }
Пример #2
0
        /// <summary>
        /// Gets the ATOM Feed.
        /// </summary>
        internal void GetFeed()
        {
            try
            {
                _parser = new FeedParser(feedsUrl);
            }
            catch (Exception ex)
            {
                var dialog = new ErrorDialog(Strings.ErrorReadingIssuesListTitle, String.Format(Strings.ErrorReadingIssuesListMessage, Environment.NewLine + ex.Message), ex, ErrorDialog.ButtonState.CloseContinue);
                dialog.ShowDialog(AppWindow);

                FeedFailedToLoad = true;
            }
        }
Пример #3
0
        /// <summary>
        /// Gets the commit message.
        /// </summary>
        /// <param name="hParentWnd">Parent window for your provider's UI.</param>
        /// <param name="parameters">Parameters for your provider.</param>
        /// <param name="commonRoot">The common root.</param>
        /// <param name="pathList">The path list.</param>
        /// <param name="originalMessage">The text already present in the commit message. Your provider should include this text in the new message, where appropriate.</param>
        /// <returns>The new text for the commit message. This replaces the original message.</returns>
        /// <exception cref="Exception"><c>Exception</c>.</exception>
        public string GetCommitMessage(IntPtr hParentWnd, string parameters, string commonRoot, string[] pathList, string originalMessage)
        {
            try
            {
                feedsUrl = parameters;

                //Show form
                var form = new IssuesForm(this, originalMessage);

                //If don't click ok then return the original message.
                if (form.ShowDialog() != DialogResult.OK)
                {
                    return(originalMessage);
                }

                //If we click ok but no items are selected then return the original message.
                if (form.ItemsFixed.Count <= 0)
                {
                    return(originalMessage);
                }

                //Add issues to comment window
                var result   = new StringBuilder();
                var regexObj = new Regex(@"([Ii]ssues?:?(\s*(,|and)?\s*#\d+)+)", RegexOptions.IgnoreCase);

                if (regexObj.Matches(originalMessage).Count <= 0)
                {
                    //Not found at all

                    //Check if we include summary
                    if (form.IncludeSummary)
                    {
                        if (originalMessage.Length > 0)
                        {
                            result.AppendLine(originalMessage);
                        }

                        //Add each checked issue
                        foreach (var item in form.ItemsFixed)
                        {
                            result.AppendLine(string.Format("({0} #{1}) : {2}", Strings.IssueText, item.Number,
                                                            item.Description));
                        }
                    }
                    else
                    {
                        if (originalMessage.Length > 0)
                        {
                            //Add Original message and "Issues"
                            result.AppendFormat("{0} ({1}", originalMessage, Strings.IssueText);
                        }
                        else
                        {
                            //Add "Issues"
                            result.AppendFormat("({0}", Strings.IssueText);
                        }

                        //Add each checked issue
                        foreach (var item in form.ItemsFixed)
                        {
                            result.AppendFormat(" #{0},", item.Number);
                        }
                        //Remove trailing comma
                        result.Remove(result.Length - 1, 1);
                        result.Append(")");
                    }
                }
                else
                {
                    //Found

                    if (originalMessage.EndsWith(Environment.NewLine))
                    {
                        result.Append(originalMessage);
                    }
                    else
                    {
                        result.AppendLine(originalMessage);
                    }

                    //Add each checked issue if not already there
                    foreach (var item in form.ItemsFixed)
                    {
                        if (form.IncludeSummary)
                        {
                            if (originalMessage.Contains(string.Format("({0} #{1}) : {2}", Strings.IssueText, item.Number,
                                                                       item.Description)))
                            {
                                //Number and summary are already included so skip this issue number
                                continue;
                            }

                            if (originalMessage.Contains(string.Format("#{0}", item.Number)))
                            {
                                //Issue number is included but not description so add the description on a new line if it is
                                //not in the original comment somewhere else.
                                if (!originalMessage.Contains(item.Description))
                                {
                                    result.AppendLine(item.Description);
                                }

                                continue;
                            }

                            //Got here which means this is a new issue so add it.
                            result.AppendLine(string.Format("({0} #{1}) : {2}", Strings.IssueText, item.Number,
                                                            item.Description));
                        }
                        else
                        {
                            if (originalMessage.Contains(string.Format("#{0}", item.Number)))
                            {
                                //Issue is already in the original comment so skip adding
                                continue;
                            }

                            //Got here which means this is a new issue so add it to the existing list.
                            //Find (Issues #xxx in original message and append to it.
                            var startpos =
                                originalMessage.LastIndexOf(
                                    string.Format("{0} #", Strings.IssueText),
                                    StringComparison.CurrentCultureIgnoreCase);
                            var endpos = originalMessage.IndexOf(")", startpos);

                            //If can't find closing brace then add after the word issue and before the #
                            if (endpos < 0)
                            {
                                endpos = startpos + Strings.IssueText.Length;
                                result.Insert(endpos, string.Format(" #{0},", item.Number));
                            }
                            else
                            {
                                result.Insert(endpos, string.Format(", #{0}", item.Number));
                            }
                        }
                    }
                }

                //If we have issues added to the list return them  otherwise return just the original message (This is if all selected issues were already in the list).
                return(result.ToString() != originalMessage + " ()" ? result.ToString() : originalMessage);
            }
            catch (Exception ex)
            {
                var dialog = new ErrorDialog(ex, ErrorDialog.ButtonState.CloseContinue);
                dialog.ShowDialog(AppWindow);
                return(originalMessage);
            }
        }