protected override float GetCustomRowHeight(int row, TreeViewItem item) { BugTrackerTreeItem itm = item as BugTrackerTreeItem; if (itm.isDescription) { BugReporterPlugin.IssueEntry issue = BugReporterPlugin.issues[itm.issueID]; float h = _descriptionStyle.CalcHeight(new GUIContent(issue.description), Screen.width); //add space for a row of buttons h += BUTTON_ROW_HEIGHT; return(h); } return(base.GetCustomRowHeight(row, item)); }
protected override TreeViewItem BuildRoot() { TreeViewItem root = new TreeViewItem(); root.depth = -1; root.id = -1; root.parent = null; root.children = new List <TreeViewItem>(); int uniqueId = 0; for (int i = 0; i < BugReporterPlugin.issues.Count; ++i) { BugTrackerTreeItem itm = new BugTrackerTreeItem(uniqueId); uniqueId += 1; itm.depth = 0; itm.issueID = i; itm.entry = BugReporterPlugin.issues[i]; itm.isDescription = false; if (BugReporterPlugin.issues[i].description != "") { BugTrackerTreeItem descItm = new BugTrackerTreeItem(uniqueId); uniqueId += 1; descItm.depth = 1; descItm.issueID = i; descItm.entry = itm.entry; descItm.isDescription = true; itm.AddChild(descItm); } root.AddChild(itm); } return(root); }
object GetKeyToCompare(BugTrackerTreeItem item, int column) { switch (column) { case 1: return(item.entry.title); case 2: return(item.entry.assigneesString); case 3: return(item.entry.labelsString); case 4: return(item.entry.severity); default: break; } return(null); }
protected override void RowGUI(RowGUIArgs args) { if (_descriptionStyle == null) { _descriptionStyle = new GUIStyle("box"); _descriptionStyle.alignment = TextAnchor.LowerLeft; _descriptionStyle.richText = true; _descriptionStyle.wordWrap = true; } BugTrackerTreeItem itm = args.item as BugTrackerTreeItem; BugReporterPlugin.IssueEntry issue = itm.entry; if (!itm.isDescription) { for (int i = 0; i < args.GetNumVisibleColumns(); ++i) { float indent = GetContentIndent(itm); Rect r = args.GetCellRect(i); int column = args.GetColumn(i); int idx = column; switch (idx) { case 0: if (_bugTrackerWindow.IsCurrentSceneIssue(issue) && GUI.Button(r, "Go")) { _bugTrackerWindow.GoToIssue(issue); } break; case 1: r.x += indent; r.width -= indent; EditorGUI.LabelField(r, issue.title); break; case 2: EditorGUI.LabelField(r, issue.assigneesString); break; case 3: EditorGUI.LabelField(r, issue.labelsString); break; case 4: EditorGUI.LabelField(r, issue.severity.ToString()); break; default: break; } } } else { Rect r = args.rowRect; r.height -= BUTTON_ROW_HEIGHT; EditorGUI.LabelField(r, issue.description, _descriptionStyle); r.y += r.height; r.height = BUTTON_ROW_HEIGHT; r.width = 200; if (GUI.Button(r, "Open in Browser")) { Application.OpenURL(issue.webUrl); } r.x += r.width; if (EditorGUIUtility.systemCopyBuffer == issue.webUrl) { EditorGUI.LabelField(r, "Url copied"); } else if (GUI.Button(r, "Copy Url")) { EditorGUIUtility.systemCopyBuffer = issue.webUrl; } } }