using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Diagnostics; namespace ETHZurich.OrigoVSIntegration.Workitems { public class Workitem { public int workitemId; public int type; public string typeName; public DateTime creationTime; public int projectId; public string project; public string user; public bool isDetailed; public List links; public Workitem() { typeName = "Unknown"; links = new List(); } public override string ToString() { return "Unknown Workitem Type: " + type.ToString(); } public virtual string GetLabelText() { string str = "Type: " + typeName + " (ID: " + type.ToString() + ")\n"; str += "Workitem ID: " + workitemId.ToString() + "\n"; str += "Creation time: " + creationTime.ToString() + "\n"; str += "Project: " + project + " (ID: " + projectId.ToString() + ")\n"; str += "User: " + user; return str; } public virtual string GetTextfieldText() { return ""; } protected string ShortenString(string a_string) { if (a_string.Length > Constants.ShortStringMaxLength) { a_string = a_string.Remove(Constants.ShortStringMaxLength - 3); a_string += "..."; } return a_string; } } //*********************************************************************** public class IssueWorkitem : Workitem { public bool isNew; public int projectIssueId; public string title; public string description; public string url; public IssueWorkitem() { type = Constants.WorkitemTypeIssue; typeName = "Issue"; isNew = false; } public override string ToString() { string str = ""; if (isNew) { str += "New issue: "; } else { str += "Issue reply: "; } str += "#" + projectIssueId.ToString(); str += title; return ShortenString(str); } public override string GetLabelText() { Debug.Assert(links.Count >= 1); string str = base.GetLabelText(); str += "\n\nTitle: " + title + "\n"; str += "Issue number: " + projectIssueId.ToString() + "\n"; str += "URL: "; links[0].Start = str.Length; links[0].Length = links[0].LinkData.ToString().Length; str += links[0].LinkData.ToString() + "\n"; str += "Description:"; return str; } public override string GetTextfieldText() { return description; } } //*********************************************************************** public class ReleaseWorkitem : Workitem { public string name; public string version; public string description; public Dictionary> files; public List platforms; //public List>> files; public ReleaseWorkitem() { type = Constants.WorkitemTypeRelease; typeName = "Release"; } public override string ToString() { string str = project; str += " " + name; str += " " + version; str += ": " + description; str = str.Replace('\n', ' '); str = str.Replace("\r", ""); return ShortenString(str); } public override string GetLabelText() { string str = base.GetLabelText(); str += "\n\nRelease Name: " + name + "\n"; str += "Program Version: " + version + "\n"; str += "\nDescription and Files:"; return str; } public override string GetTextfieldText() { string str = description; str += "\n\n\nFiles:\n"; List fileList; for (int i = 0; i < platforms.Count; i++) { str += "\n" + platforms[i] + ":\n"; fileList = files[platforms[i]]; for (int j = 0; j < fileList.Count; j++) { str += fileList[j] + "\n"; } } return str; } } //*********************************************************************** public class CommitWorkitem : Workitem { public int revision; public string log; public string diff; public CommitWorkitem() { type = Constants.WorkitemTypeCommit; typeName = "Commit"; } public override string ToString() { string str = "r: "; str += revision.ToString() + " "; str += "log: " + log; str = str.Replace('\n', ';'); return ShortenString(str); } public override string GetLabelText() { string str = base.GetLabelText(); str += "\n\nRevision: " + revision.ToString() + "\n"; str += "Log:\n" + log + "\n"; str += "\nDiff:"; return str; } public override string GetTextfieldText() { return diff; } } //*********************************************************************** public class WikiWorkitem : Workitem { public string title; public int revision; public int oldRevision; public string diff; public bool isNew; public WikiWorkitem() { type = Constants.WorkitemTypeWiki; typeName = "Wiki"; isNew = false; } public override string ToString() { string str = ""; if (isNew) { str += "New wiki page: "; } else { str += "Changes on wiki page "; } str += title; return ShortenString(str); } public override string GetLabelText() { Debug.Assert(links.Count >= 1); string str = base.GetLabelText(); str += "\n\nTitle: " + title + "\n"; str += "URL: "; links[0].Start = str.Length; links[0].Length = links[0].LinkData.ToString().Length; str += links[0].LinkData.ToString() + "\n"; //check if it's a wiki change and add the revision if so if (!isNew) { Debug.Assert(links.Count == 2); str += "Revisions: " + oldRevision.ToString() + " -> " + revision.ToString() + "\n"; str += "\nDiff: ("; links[1].Start = str.Length; links[1].Length = links[1].LinkData.ToString().Length; str += links[1].LinkData.ToString() + ")"; } else { str += "\nContent:"; } return str; } public override string GetTextfieldText() { return diff; } } //*********************************************************************** public class BlogWorkitem : Workitem { public string title; public int revision; public int oldRevision; public string diff; public bool isNew; public BlogWorkitem() { type = Constants.WorkitemTypeBlog; typeName = "Blog"; isNew = false; } public override string ToString() { string str = ""; if (isNew) { str += "New blog entry: "; } else { str += "Changes on blog entry "; } str += title; return ShortenString(str); } public override string GetLabelText() { Debug.Assert(links.Count >= 1); string str = base.GetLabelText(); str += "\n\nTitle: " + title + "\n"; str += "URL: "; links[0].Start = str.Length; links[0].Length = links[0].LinkData.ToString().Length; str += links[0].LinkData.ToString() + "\n"; //check if it's a wiki change and add the revision if so if (!isNew) { Debug.Assert(links.Count == 2); str += "Revisions: " + oldRevision.ToString() + " -> " + revision.ToString() + "\n"; str += "\nDiff: ("; links[1].Start = str.Length; links[1].Length = links[1].LinkData.ToString().Length; str += links[1].LinkData.ToString() + ")"; } else { str += "\nContent:"; } return str; } public override string GetTextfieldText() { return diff; } } //*********************************************************************** public class CommentWorkitem : Workitem { public string title; public string url; public string text; public CommentWorkitem() { type = Constants.WorkitemTypeComment; typeName = "Comment"; } public override string ToString() { string str = "New comment: " + title; return ShortenString(str); } public override string GetLabelText() { Debug.Assert(links.Count >= 1); string str = base.GetLabelText(); str += "\n\nTitle: " + title + "\n"; str += "URL: "; links[0].Start = str.Length; links[0].Length = links[0].LinkData.ToString().Length; str += links[0].LinkData.ToString() + "\n"; str += "Text:"; return str; } public override string GetTextfieldText() { return text; } } //*********************************************************************** }