#if UNITY_2019_4_OR_NEWER
using com.zibra.liquid.Foundation.Editor;
using JetBrains.Annotations;
using UnityEngine.UIElements;
namespace com.zibra.liquid.Foundation.UIElements
{
///
/// The layout control that created a block with bold settings title and 10px intended content.
///
internal class SettingsBlock : BindableElement
{
[UsedImplicitly]
internal new class UxmlFactory : UxmlFactory
{
}
internal new class UxmlTraits : BindableElement.UxmlTraits {
readonly UxmlStringAttributeDescription m_Label = new UxmlStringAttributeDescription { name = "label" };
public override void Init(VisualElement ve, IUxmlAttributes bag, CreationContext cc)
{
base.Init(ve, bag, cc);
((SettingsBlock)ve).Label = m_Label.GetValueFromBag(bag, cc);
}
}
///
/// Control Uss class name.
///
public const string USSClassName = "zibraai-settings-block";
///
/// Header Uss class name.
///
public const string HeaderUssClassName = USSClassName + "__header";
///
/// Content Uss class name.
///
public const string ContentUssClassName = USSClassName + "__content";
readonly Label m_Label;
readonly VisualElement m_Container;
public override VisualElement contentContainer => m_Container;
///
/// Block header label.
///
public string Label
{
get => m_Label.text;
set => m_Label.text = value;
}
///
/// Creates new settings block.
///
public SettingsBlock()
{
AddToClassList(USSClassName);
UIToolkitEditorUtility.ApplyStyleForInternalControl(this, nameof(SettingsBlock));
var header = new VisualElement() {
name = "header",
};
header.AddToClassList(HeaderUssClassName);
hierarchy.Add(header);
m_Label = new Label();
header.Add(m_Label);
m_Container = new VisualElement() {
name = "content",
};
m_Container.AddToClassList(ContentUssClassName);
hierarchy.Add(m_Container);
}
}
}
#endif