IncludedAssembliesPopupWindow.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using UnityEngine;
  2. using UnityEditor.IMGUI.Controls;
  3. namespace UnityEditor.TestTools.CodeCoverage
  4. {
  5. class IncludedAssembliesPopupWindow : PopupWindowContent
  6. {
  7. SearchField m_SearchField;
  8. IncludedAssembliesTreeView m_TreeView;
  9. const float kWindowHeight = 221;
  10. public float Width { get; set; }
  11. class Styles
  12. {
  13. public static GUIContent SelectAllButtonLabel = EditorGUIUtility.TrTextContent("Select All");
  14. public static GUIContent DeselectAllButtonLabel = EditorGUIUtility.TrTextContent("Deselect All");
  15. }
  16. public IncludedAssembliesPopupWindow(CodeCoverageWindow parent, string assembliesToInclude)
  17. {
  18. m_SearchField = new SearchField();
  19. m_TreeView = new IncludedAssembliesTreeView(parent, assembliesToInclude);
  20. }
  21. public override void OnGUI(Rect rect)
  22. {
  23. const int border = 4;
  24. const int topPadding = 12;
  25. const int searchHeight = 20;
  26. const int buttonHeight = 16;
  27. const int remainTop = topPadding + searchHeight + buttonHeight + border + border;
  28. float selectAllWidth = EditorStyles.miniButton.CalcSize(Styles.SelectAllButtonLabel).x;
  29. float deselectAllWidth = EditorStyles.miniButton.CalcSize(Styles.DeselectAllButtonLabel).x;
  30. Rect searchRect = new Rect(border, topPadding, rect.width - border * 2, searchHeight);
  31. Rect selectAllRect = new Rect(border, topPadding + searchHeight + border, selectAllWidth, buttonHeight);
  32. Rect deselectAllRect = new Rect(border + selectAllWidth + border, topPadding + searchHeight + border, deselectAllWidth, buttonHeight);
  33. Rect remainingRect = new Rect(border, remainTop, rect.width - border * 2, rect.height - remainTop - border);
  34. m_TreeView.searchString = m_SearchField.OnGUI(searchRect, m_TreeView.searchString);
  35. if (GUI.Button(selectAllRect, Styles.SelectAllButtonLabel, EditorStyles.miniButton))
  36. {
  37. m_TreeView.SelectAll();
  38. }
  39. if (GUI.Button(deselectAllRect, Styles.DeselectAllButtonLabel, EditorStyles.miniButton))
  40. {
  41. m_TreeView.DeselectAll();
  42. }
  43. m_TreeView.OnGUI(remainingRect);
  44. }
  45. public override Vector2 GetWindowSize()
  46. {
  47. return new Vector2(Mathf.Max(Width, m_TreeView.Width), kWindowHeight);
  48. }
  49. public override void OnOpen()
  50. {
  51. m_SearchField.SetFocus();
  52. base.OnOpen();
  53. }
  54. }
  55. }