60 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			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; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | } |