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; } } } }