SW-Wiktor-Bombola/SW-Unity/Library/PackageCache/com.unity.collab-proxy@1.10.2/Editor/PlasticSCM/DrawStatusBar.cs
2021-12-04 15:15:29 +01:00

105 lines
3.0 KiB
C#

using UnityEditor;
using UnityEngine;
using Codice.CM.Common;
using PlasticGui;
using PlasticGui.Gluon;
using PlasticGui.WorkspaceWindow;
using Unity.PlasticSCM.Editor.UI;
namespace Unity.PlasticSCM.Editor
{
internal static class DrawStatusBar
{
internal static void For(
WorkspaceInfo workspaceInfo,
WorkspaceWindow workspaceWindow,
IMergeViewLauncher mergeViewLauncher,
IGluonViewSwitcher gluonSwitcher,
bool isGluonMode,
IIncomingChangesNotificationPanel notificationPanel)
{
var barStyle = new GUIStyle();
var barTexture = GetBarTexture();
barTexture.SetPixel(0, 0, UnityStyles.Colors.BackgroundBar);
barTexture.Apply();
barStyle.normal.background = barTexture;
EditorGUILayout.BeginVertical(barStyle, GUILayout.Height(mBarHeight));
GUILayout.FlexibleSpace();
EditorGUILayout.BeginHorizontal();
if (notificationPanel.IsVisible)
{
DrawIncomingChangesNotificationPanel.For(
workspaceInfo,
workspaceWindow,
mergeViewLauncher,
gluonSwitcher,
isGluonMode,
notificationPanel.IsVisible,
notificationPanel.Data);
}
GUILayout.FlexibleSpace();
DrawStatusBarIcon();
DrawStatusBarLabel(workspaceWindow.WorkspaceStatus);
EditorGUILayout.EndHorizontal();
GUILayout.FlexibleSpace();
EditorGUILayout.EndVertical();
}
static void DrawStatusBarIcon()
{
GUILayout.BeginVertical();
GUILayout.FlexibleSpace();
var icon = Images.GetImage(Images.Name.IconBranch);
GUILayout.Label(
icon,
UnityStyles.PlasticWindow.StatusBarIcon,
GUILayout.Height(mBarIconSize),
GUILayout.Width(mBarIconSize));
GUILayout.FlexibleSpace();
GUILayout.EndVertical();
}
static void DrawStatusBarLabel(WorkspaceStatusString.Data status)
{
GUILayout.BeginVertical();
GUILayout.FlexibleSpace();
if (status != null)
{
GUILayout.Label(
string.Format("{0}@{1}@{2}",
status.ObjectSpec,
status.RepositoryName,
status.Server),
UnityStyles.PlasticWindow.StatusBarLabel);
}
GUILayout.FlexibleSpace();
GUILayout.EndVertical();
}
static Texture2D GetBarTexture()
{
if (mBarTexture == null)
{
mBarTexture = new Texture2D(1, 1);
}
return mBarTexture;
}
static Texture2D mBarTexture = null;
static readonly float mBarHeight = 24f;
static readonly float mBarIconSize = 16f;
}
}