UnityGame/Library/PackageCache/com.unity.test-framework/UnityEditor.TestRunner/GUI/TestRunnerGUI.cs
2024-10-27 10:53:47 +03:00

60 lines
2.2 KiB
C#

using System;
using UnityEditor.TestTools.TestRunner.GUI.Controls;
using UnityEngine;
namespace UnityEditor.TestTools.TestRunner.GUI
{
internal static class TestRunnerGUI
{
private static Styles s_Styles;
private static Styles Style => s_Styles ?? (s_Styles = new Styles());
internal static void TestPlatformSelectionDropDown(ISelectionDropDownContentProvider contentProvider)
{
var text = Style.TestPlatformButtonString;
for (int i = 0; i < contentProvider.Count; i++)
{
if (contentProvider.IsSelected(i))
{
text += " " + contentProvider.GetName(i);
break;
}
}
var content = new GUIContent(text);
SelectionDropDown(contentProvider, content, GUILayout.Width(EditorStyles.toolbarDropDown.CalcSize(content).x));
}
internal static void CategorySelectionDropDown(ISelectionDropDownContentProvider contentProvider)
{
SelectionDropDown(contentProvider, Style.CategoryButtonContent, GUILayout.Width(Style.CategoryButtonWidth));
}
private static void SelectionDropDown(ISelectionDropDownContentProvider listContentProvider, GUIContent buttonContent,
params GUILayoutOption[] options)
{
var rect = EditorGUILayout.GetControlRect(false, EditorGUI.kSingleLineHeight, Styles.DropdownButton, options);
if (!EditorGUI.DropdownButton(rect, buttonContent, FocusType.Passive, Styles.DropdownButton))
{
return;
}
var selectionDropDown = new SelectionDropDown(listContentProvider);
PopupWindow.Show(rect, selectionDropDown);
}
private class Styles
{
public static readonly GUIStyle DropdownButton = EditorStyles.toolbarDropDown;
public readonly string TestPlatformButtonString = "Run Location:";
public readonly GUIContent CategoryButtonContent = new GUIContent("Category");
public readonly float CategoryButtonWidth;
public Styles()
{
CategoryButtonWidth = DropdownButton.CalcSize(CategoryButtonContent).x;
}
}
}
}