188 lines
5.8 KiB
C#
188 lines
5.8 KiB
C#
|
|
using System;
|
||
|
|
using UnityEditor.UIElements;
|
||
|
|
using UnityEngine;
|
||
|
|
using UnityEngine.UIElements;
|
||
|
|
|
||
|
|
namespace Unity.PlasticSCM.Editor.UI.UIElements
|
||
|
|
{
|
||
|
|
internal static class Styles
|
||
|
|
{
|
||
|
|
internal static class Toolbar
|
||
|
|
{
|
||
|
|
internal static void ApplyImageButtonStyle(ToolbarButton button)
|
||
|
|
{
|
||
|
|
button.style.width = ImageButtonWidth;
|
||
|
|
button.style.justifyContent = Justify.Center;
|
||
|
|
button.style.alignItems = Align.Center;
|
||
|
|
button.style.paddingBottom = 1;
|
||
|
|
button.focusable = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
static StyleLength ImageButtonWidth = 28;
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static class Button
|
||
|
|
{
|
||
|
|
internal static void ApplyImageButtonStyle(UnityEngine.UIElements.Button button)
|
||
|
|
{
|
||
|
|
button.style.justifyContent = Justify.Center;
|
||
|
|
button.style.alignItems = Align.Center;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static class ButtonGroup
|
||
|
|
{
|
||
|
|
internal static void ApplyTopButtonStyle(UnityEngine.UIElements.Button button)
|
||
|
|
{
|
||
|
|
button.style.marginBottom = 0;
|
||
|
|
button.style.borderBottomLeftRadius = 0;
|
||
|
|
button.style.borderBottomRightRadius = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static void ApplyBottomButtonStyle(UnityEngine.UIElements.Button button)
|
||
|
|
{
|
||
|
|
button.style.marginTop = 0;
|
||
|
|
button.style.borderTopWidth = 0;
|
||
|
|
button.style.borderTopLeftRadius = 0;
|
||
|
|
button.style.borderTopRightRadius = 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static class ControlBuilder
|
||
|
|
{
|
||
|
|
internal static class Toolbar
|
||
|
|
{
|
||
|
|
internal static UnityEditor.UIElements.Toolbar Create()
|
||
|
|
{
|
||
|
|
return new UnityEditor.UIElements.Toolbar();
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static ToolbarSearchField CreateSearchField(string tooltip = null)
|
||
|
|
{
|
||
|
|
ToolbarSearchField searchField = new ToolbarSearchField();
|
||
|
|
searchField.tooltip = tooltip;
|
||
|
|
searchField.style.width = 200;
|
||
|
|
return searchField;
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static ToolbarButton CreateImageButtonLeft(
|
||
|
|
Texture image,
|
||
|
|
string tooltip,
|
||
|
|
Action onClick)
|
||
|
|
{
|
||
|
|
ToolbarButton button = CreateImageButton(
|
||
|
|
image,
|
||
|
|
tooltip,
|
||
|
|
onClick);
|
||
|
|
|
||
|
|
// apply a negative margin to blend with next button
|
||
|
|
button.style.marginRight = -1;
|
||
|
|
return button;
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static ToolbarButton CreateImageButton(
|
||
|
|
Texture image,
|
||
|
|
string tooltip,
|
||
|
|
Action onClick)
|
||
|
|
{
|
||
|
|
var button = new ToolbarButton(onClick)
|
||
|
|
{
|
||
|
|
tooltip = tooltip,
|
||
|
|
};
|
||
|
|
|
||
|
|
var icon = new Image
|
||
|
|
{
|
||
|
|
image = image,
|
||
|
|
};
|
||
|
|
|
||
|
|
Styles.Toolbar.ApplyImageButtonStyle(button);
|
||
|
|
|
||
|
|
button.Add(icon);
|
||
|
|
|
||
|
|
return button;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static class Button
|
||
|
|
{
|
||
|
|
internal static UnityEngine.UIElements.Button CreateImageButton(
|
||
|
|
Texture image,
|
||
|
|
string tooltip,
|
||
|
|
System.Action onClick)
|
||
|
|
{
|
||
|
|
UnityEngine.UIElements.Button button = new UnityEngine.UIElements.Button(onClick)
|
||
|
|
{
|
||
|
|
tooltip = tooltip,
|
||
|
|
focusable = false
|
||
|
|
};
|
||
|
|
|
||
|
|
Image icon = new Image()
|
||
|
|
{
|
||
|
|
image = image,
|
||
|
|
};
|
||
|
|
|
||
|
|
Styles.Button.ApplyImageButtonStyle(button);
|
||
|
|
|
||
|
|
button.Add(icon);
|
||
|
|
|
||
|
|
return button;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static UnityEngine.UIElements.Button CreateButton(string text, Action handler)
|
||
|
|
{
|
||
|
|
UnityEngine.UIElements.Button result = new UnityEngine.UIElements.Button(handler);
|
||
|
|
result.text = text;
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static UnityEngine.UIElements.Button CreateDropDownButton(string text, Action handler)
|
||
|
|
{
|
||
|
|
UnityEngine.UIElements.Button button = new UnityEngine.UIElements.Button(handler);
|
||
|
|
button.style.flexDirection = FlexDirection.Row;
|
||
|
|
|
||
|
|
TextElement textElement = new TextElement();
|
||
|
|
textElement.text = text;
|
||
|
|
|
||
|
|
VisualElement dropDownIcon = new VisualElement();
|
||
|
|
dropDownIcon.AddToClassList("unity-base-popup-field__arrow");
|
||
|
|
dropDownIcon.style.marginLeft = 4;
|
||
|
|
|
||
|
|
button.Add(textElement);
|
||
|
|
button.Add(dropDownIcon);
|
||
|
|
|
||
|
|
return button;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static class ButtonGroup
|
||
|
|
{
|
||
|
|
internal static UnityEngine.UIElements.Button CreateImageTopButton(
|
||
|
|
Texture image,
|
||
|
|
string tooltip,
|
||
|
|
System.Action onClick)
|
||
|
|
{
|
||
|
|
UnityEngine.UIElements.Button button =
|
||
|
|
Button.CreateImageButton(image, tooltip, onClick);
|
||
|
|
|
||
|
|
Styles.ButtonGroup.ApplyTopButtonStyle(button);
|
||
|
|
|
||
|
|
return button;
|
||
|
|
}
|
||
|
|
|
||
|
|
internal static UnityEngine.UIElements.Button CreateImageBottomButton(
|
||
|
|
Texture image,
|
||
|
|
string tooltip,
|
||
|
|
System.Action onClick)
|
||
|
|
{
|
||
|
|
UnityEngine.UIElements.Button button =
|
||
|
|
Button.CreateImageButton(image, tooltip, onClick);
|
||
|
|
|
||
|
|
Styles.ButtonGroup.ApplyBottomButtonStyle(button);
|
||
|
|
|
||
|
|
return button;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|