79 lines
2.3 KiB
C#
79 lines
2.3 KiB
C#
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;
|
|
}
|
|
}
|