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

57 lines
2.1 KiB
C#

using System;
using JetBrains.Annotations;
using Unity.Cloud.Collaborate.UserInterface;
using UnityEditor;
using UnityEngine.UIElements;
namespace Unity.Cloud.Collaborate.Components
{
internal class Paginator : VisualElement
{
public const string UssClassName = "paginator";
public const string PageTextUssClassName = UssClassName + "__page-text";
public const string BackButtonUssClassName = UssClassName + "__back-button";
public const string ForwardsButtonUssClassName = UssClassName + "__forwards-button";
static readonly string k_LayoutPath = $"{CollaborateWindow.LayoutPath}/{nameof(Paginator)}.uxml";
static readonly string k_StylePath = $"{CollaborateWindow.StylePath}/{nameof(Paginator)}.uss";
public const int MoveBackwards = -1;
public const int MoveForwards = 1;
public event Action<int> ClickedMovePage;
readonly Label m_PageText;
readonly Button m_BackButton;
readonly Button m_ForwardsButton;
public Paginator()
{
// Get the layout
AddToClassList(UssClassName);
AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(k_LayoutPath).CloneTree(this);
styleSheets.Add(AssetDatabase.LoadAssetAtPath<StyleSheet>(k_StylePath));
m_PageText = this.Q<Label>(className: PageTextUssClassName);
m_BackButton = this.Q<Button>(className: BackButtonUssClassName);
m_ForwardsButton = this.Q<Button>(className: ForwardsButtonUssClassName);
m_BackButton.text = "<";
m_ForwardsButton.text = ">";
m_BackButton.clickable.clicked += () => ClickedMovePage?.Invoke(MoveBackwards);
m_ForwardsButton.clickable.clicked += () => ClickedMovePage?.Invoke(MoveForwards);
}
public void SetPage(int page, int maxPage)
{
m_PageText.text = $"Page {page + 1} of {maxPage + 1}";
m_BackButton.SetEnabled(page != 0);
m_ForwardsButton.SetEnabled(page != maxPage);
}
[UsedImplicitly]
public new class UxmlFactory : UxmlFactory<Paginator> { }
}
}