You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/Plugins/Smart-Inspector/Runtime/Fluent UITK/FluentElement.Factory.cs

130 lines
3.8 KiB
C#

using UnityEngine;
using UnityEngine.UIElements;
using Space = AV.UITK.FluentUITK.Space;
using Button = AV.UITK.FluentUITK.Button;
using UIE = UnityEngine.UIElements;
using static AV.UITK.FluentUITK;
namespace AV.UITK
{
public partial class FluentElement<T>
{
internal FluentElement<T> AddCoreStyles()
{
FluentUITK.AddCoreStyles(x); return x;
}
public FluentElement NewElement()
{
return new VisualElement();
}
public FluentElement<TElement> New<TElement>() where TElement : VisualElement, new()
{
return new TElement();
}
public FluentElement<Text> NewText(string text)
{
return new Text(text);
}
public FluentElement<Icon> NewIcon(Texture background)
{
return new Icon(background);
}
public FluentElement<FluentUITK.HelpBox> NewHelpBox(string text, HelpMessageType type, Texture customIcon = null)
{
return new FluentUITK.HelpBox(text, type, customIcon);
}
public FluentElement<Separator> NewSeparator()
{
return new Separator();
}
public FluentElement<Header> NewHeader(string text, Texture icon = null)
{
return new Header(text, icon);
}
public FluentElement<Foldout> NewFoldout(string text)
{
return new Foldout { text = text };
}
public FluentElement<Row> NewRow(bool reverse = false)
{
return new Row(reverse);
}
public FluentElement<FluentUITK.Column> NewColumn(bool reverse = false)
{
return new FluentUITK.Column(reverse);
}
public FluentElement<Group> NewGroup()
{
return new Group();
}
public FluentElement<Group> NewIndentedGroup(int left = 15, int right = 1, int top = 0, int bottom = 0,
bool useMargin = false, FlexDirection direction = UnityEngine.UIElements.FlexDirection.Column)
{
var group = new Group(direction).Fluent();
if (useMargin)
group.Margin(top, left, right, bottom);
else
group.Padding(top, left, right, bottom);
return group;
}
public FluentElement<Space> NewSpace(float width = float.NaN, float height = float.NaN)
{
return new Space(width, height);
}
public FluentElement<FlexibleSpace> NewFlexibleSpace(float flexGrow = 1)
{
return new FlexibleSpace(flexGrow);
}
public FluentElement<FluentUITK.TabsBar> NewTabsBar(Styles tabsStyle)
{
return new FluentUITK.TabsBar(tabsStyle);
}
public FluentElement<FluentUITK.Tab> NewTab(string text = null, Texture icon = null, Styles style = Styles.None)
{
return new FluentUITK.Tab(text, icon, style);
}
public FluentElement<Button> NewButton(string text = null, Texture icon = null, Styles style = Styles.None)
{
return new Button(text, icon, style);
}
public FluentElement<Text> NewBullet()
{
return NewText("•").AddClass("bullet");
}
public FluentElement<Text> NewHyperlink(string text, string url)
{
var link = NewText(text)
.OnClick(() => Application.OpenURL(url), MouseButton.LeftMouse)
.AddClass("hyperlink");
link.x.tooltip = url;
#if UNITY_2020_1_OR_NEWER
link.TextOverflow(UIE.TextOverflow.Ellipsis);
#endif
return link;
}
}
}