public string GetCommitMessage(IntPtr hParentWnd, string parameters, string commonRoot, string[] pathList, string originalMessage) { String server; String ticketQuery; Selection selection = new Selection(); if (!Validate(parameters, out server, out ticketQuery, out selection)) { MessageBox.Show("Parameters are invalid", "TracExplorer"); return originalMessage; } CommonRoot servers = CommonRoot.Instance; ServerDetails serverDetails; serverDetails = servers.Servers.Find(delegate(ServerDetails obj) { return (obj.Server == server); }); if (serverDetails == null) { MessageBox.Show("Can't find server information!", "TracExplorer"); return originalMessage; } List<TicketQueryDefinition> ticketQueries = serverDetails.TicketQueries; TicketQueryDefinition ticketQueryDef; ticketQueryDef = ticketQueries.Find(delegate(TicketQueryDefinition obj) { return (obj.Name == ticketQuery); }); if (ticketQueryDef == null) { MessageBox.Show("Can't find ticket query!", "TracExplorer"); return originalMessage; } if (selection.Items.Count <= 1) { MessageBox.Show("Can't find selection definitions!", "TracExplorer"); return originalMessage; } TicketSelector form = new TicketSelector(serverDetails, ticketQueryDef, selection); if (form.ShowDialog() != DialogResult.OK) return originalMessage; StringBuilder result = new StringBuilder(originalMessage); if (originalMessage.Length != 0 && !originalMessage.EndsWith("\n")) result.AppendLine(); // Correct wrong format in new line selection.Format = selection.Format.Replace("\\n", "\n"); foreach (Ticket ticket in form.TicketsFixed) { result.AppendFormat(selection.Format, ticket.Selection, ticket.Id, ticket.Summary); } return result.ToString(); }
private bool AddSelection(ref XmlDocument doc, Selection selection) { try { XmlElement childElement = doc.CreateElement("Selection"); XmlAttribute formatAttribute = doc.CreateAttribute("Format"); formatAttribute.Value = selection.Format; childElement.Attributes.Append(formatAttribute); foreach (string item in selection.Items) { XmlElement itemElement = doc.CreateElement("Item"); itemElement.InnerText = item; childElement.AppendChild(itemElement); } doc.DocumentElement.AppendChild(childElement); return true; } catch (XmlException) { return false; } }
private bool Validate(string parameters, out string server, out string ticketQuery, out Selection selection) { try { XmlDocument doc = new XmlDocument(); doc.LoadXml(parameters); server = doc.DocumentElement.GetAttribute("server"); ticketQuery = doc.DocumentElement.GetAttribute("ticketquery"); selection = new Selection(); // Add empty selection selection.Items.Add(""); XmlElement childSelection = (XmlElement) doc.DocumentElement.FirstChild; selection.Format = childSelection.GetAttribute("Format"); foreach (XmlElement childElement in childSelection.ChildNodes) { String item = childElement.InnerText; selection.Items.Add(item); } } catch (XmlException) { server = ""; ticketQuery = ""; selection = new Selection(); return false; } return true; }
private String AddDefaultSelections(string parameters, Selection selection) { try { // Add default Selection definitions: XmlDocument doc = new XmlDocument(); doc.LoadXml(parameters); AddSelection(ref doc, selection); return doc.OuterXml; } catch (XmlException) { return null; } }