93 lines
2.9 KiB
C#
93 lines
2.9 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace Paps.UnityToolbarExtenderUIToolkit
|
|
{
|
|
internal class GroupDropdownWindowPopup : EditorWindow
|
|
{
|
|
private VisualElement[] _groupElements;
|
|
private ScrollView _scrollView;
|
|
|
|
public void Initialize(VisualElement[] groupElements)
|
|
{
|
|
_groupElements = groupElements;
|
|
hideFlags = HideFlags.DontSave;
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
AssemblyReloadEvents.beforeAssemblyReload += Close;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
AssemblyReloadEvents.beforeAssemblyReload -= Close;
|
|
}
|
|
|
|
private void CreateGUI()
|
|
{
|
|
_scrollView = new ScrollView(ScrollViewMode.Vertical);
|
|
_scrollView.contentContainer.style.alignContent = Align.Center;
|
|
_scrollView.contentContainer.style.alignItems = Align.Center;
|
|
_scrollView.horizontalScrollerVisibility = ScrollerVisibility.Hidden;
|
|
|
|
foreach (var groupElement in _groupElements)
|
|
{
|
|
var container = CreateGroupElementContainer();
|
|
container.Add(groupElement);
|
|
groupElement.style.flexWrap = Wrap.Wrap;
|
|
container.style.display = groupElement.style.display;
|
|
_scrollView.Add(container);
|
|
}
|
|
|
|
var baseContainer = CreateBaseContainer();
|
|
baseContainer.Add(_scrollView);
|
|
|
|
rootVisualElement.Add(baseContainer);
|
|
}
|
|
|
|
private VisualElement CreateBaseContainer()
|
|
{
|
|
return new VisualElement()
|
|
{
|
|
style =
|
|
{
|
|
flexGrow = 1,
|
|
borderBottomColor = Color.black,
|
|
borderTopColor = Color.black,
|
|
borderLeftColor = Color.black,
|
|
borderRightColor = Color.black,
|
|
borderBottomWidth = 2,
|
|
borderTopWidth = 2,
|
|
borderLeftWidth = 2,
|
|
borderRightWidth = 2,
|
|
}
|
|
};
|
|
}
|
|
|
|
private VisualElement CreateGroupElementContainer()
|
|
{
|
|
return new Box()
|
|
{
|
|
style =
|
|
{
|
|
alignContent = Align.Center,
|
|
alignItems = Align.Center,
|
|
flexDirection = FlexDirection.Row,
|
|
flexGrow = 1,
|
|
width = Length.Percent(100),
|
|
height = Length.Auto(),
|
|
justifyContent = Justify.Center,
|
|
borderTopColor = Color.black,
|
|
borderTopWidth = 1,
|
|
paddingTop = 3f,
|
|
paddingBottom = 3f,
|
|
paddingLeft = 8,
|
|
paddingRight = 8,
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|