playtest-unity/playtest/Library/PackageCache/com.unity.collab-proxy@2.0.4/Editor/PlasticSCM/UI/DropDownTextField.cs

79 lines
2.3 KiB
C#
Raw Normal View History

2023-06-19 23:21:21 -04:00
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace Unity.PlasticSCM.Editor.UI
{
internal static class DropDownTextField
{
internal static string DoDropDownTextField(
string text,
string controlName,
List<string> dropDownOptions,
GenericMenu.MenuFunction2 optionSelected,
params GUILayoutOption[] options)
{
GUIContent textContent = new GUIContent(text);
Rect textFieldRect = GUILayoutUtility.GetRect(
textContent,
EditorStyles.textField,
options);
return DoDropDownTextField(
text,
controlName,
dropDownOptions,
optionSelected,
textFieldRect);
}
internal static string DoDropDownTextField(
string text,
string controlName,
List<string> dropDownOptions,
GenericMenu.MenuFunction2 optionSelected,
Rect textFieldRect)
{
Texture popupIcon = Images.GetDropDownIcon();
Rect popupButtonRect = new Rect(
textFieldRect.x + textFieldRect.width - BUTTON_WIDTH,
textFieldRect.y,
BUTTON_WIDTH,
textFieldRect.height);
if (GUI.Button(popupButtonRect, string.Empty, EditorStyles.label))
{
GenericMenu menu = new GenericMenu();
foreach (string option in dropDownOptions)
{
menu.AddItem(
new GUIContent(UnityMenuItem.EscapedText(option)),
false,
optionSelected,
option);
}
menu.DropDown(textFieldRect);
}
Rect popupIconRect = new Rect(
popupButtonRect.x,
popupButtonRect.y + UnityConstants.DROPDOWN_ICON_Y_OFFSET,
popupButtonRect.width,
popupButtonRect.height);
GUI.SetNextControlName(controlName);
string result = GUI.TextField(textFieldRect, text);
GUI.Label(popupIconRect, popupIcon);
return result;
}
const int BUTTON_WIDTH = 16;
}
}