Files

60 lines
1.7 KiB
C#

#if UNITY_6000_3_OR_NEWER
using UnityEditor;
using UnityEngine;
using UnityEditor.Toolbars;
using Unity.PlasticSCM.Editor.Toolbar;
namespace Assets.Plugins.PlasticSCM.Editor.Toolbar
{
[InitializeOnLoad]
static class UVCSToolbarBoostrap
{
static UVCSToolbarBoostrap()
{
UVCSToolbar.Controller.OnToolbarInvalidated += RebuildToolbarButton;
UVCSToolbar.Controller.OnToolbarButtonInvalidated += RebuildToolbarButton;
}
[MainToolbarElement(ToolbarController.ToolbarButtonPath, defaultDockPosition = MainToolbarDockPosition.Left, defaultDockIndex = 13)]
[UnityOnlyMainToolbarPreset]
static MainToolbarDropdown CreateControl()
{
UVCSToolbarButtonData buttonData = UVCSToolbar.Controller.GetButtonData();
if (!buttonData.IsVisible)
return null;
return new MainToolbarDropdown(
new MainToolbarContent(
Truncate(buttonData.Text, mMaxTextLength),
buttonData.Icon as Texture2D,
buttonData.Tooltip),
OpenDropdown);
}
static string Truncate(string text, int maxTextLength)
{
const string ellipsis = "...";
if (text.Length <= maxTextLength)
return text;
return string.Concat(text.Substring(0, maxTextLength - ellipsis.Length), ellipsis);
}
static void RebuildToolbarButton()
{
MainToolbar.Refresh(ToolbarController.ToolbarButtonPath);
}
static void OpenDropdown(Rect rect)
{
UVCSToolbar.Controller.PopupClicked(rect);
}
const int mMaxTextLength = 35;
}
}
#endif