ProjektMWS/Projekt MWS/Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Components/ChangesGroupHeader.cs
2021-06-28 19:31:12 +02:00

68 lines
2.3 KiB
C#

using System;
using JetBrains.Annotations;
using Unity.Cloud.Collaborate.Assets;
using Unity.Cloud.Collaborate.UserInterface;
using Unity.Cloud.Collaborate.Utilities;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
namespace Unity.Cloud.Collaborate.Components
{
internal class ChangesGroupHeader : VisualElement
{
public const string UssClassName = "changes-group-header";
public const string NameUssClassName = UssClassName + "__name";
public const string OverflowButtonUssClassName = UssClassName + "__overflow-button";
static readonly string k_LayoutPath = $"{CollaborateWindow.LayoutPath}/{nameof(ChangesGroupHeader)}.uxml";
static readonly string k_StylePath = $"{CollaborateWindow.StylePath}/{nameof(ChangesGroupHeader)}.uss";
readonly Label m_GroupName;
readonly IconButton m_OverflowButton;
public event Action<float, float> OnOverflowButtonClicked;
public ChangesGroupHeader()
{
// Get the layout and style sheet
AddToClassList(UssClassName);
AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(k_LayoutPath).CloneTree(this);
styleSheets.Add(AssetDatabase.LoadAssetAtPath<StyleSheet>(k_StylePath));
// Initialise fields
m_GroupName = this.Q<Label>(className: NameUssClassName);
m_OverflowButton = this.Q<IconButton>(className: OverflowButtonUssClassName);
// Wire up overflow button
m_OverflowButton.Clicked += TriggerOverflowMenu;
}
public void SetEnableOverflowMenu(bool enable)
{
if (enable)
{
m_OverflowButton.RemoveFromClassList(UiConstants.ussHidden);
}
else
{
m_OverflowButton.AddToClassList(UiConstants.ussHidden);
}
}
void TriggerOverflowMenu()
{
var (x, y) = MenuUtilities.GetMenuPosition(m_OverflowButton, MenuUtilities.AnchorPoint.BottomRight);
OnOverflowButtonClicked?.Invoke(x, y);
}
public void UpdateGroupName(string text)
{
m_GroupName.text = text;
}
[UsedImplicitly]
public new class UxmlFactory : UxmlFactory<ChangesGroupHeader> { }
}
}