#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