using System;
using UnityEditor;
using UnityEngine;
using PlasticGui;
using Unity.PlasticSCM.Editor.UI;
using Unity.PlasticSCM.Editor.UI.Tree;
namespace Unity.PlasticSCM.Editor.Toolbar.PopupWindow.BranchesList
{
internal class ErrorEmptyState : CenteredContentPanel
{
internal bool HasError
{
get { return mError != null; }
}
internal ErrorEmptyState(Action retryAction, Action repaintAction) : base(repaintAction)
{
mRetryAction = retryAction;
}
internal void SetError(Exception error)
{
mError = error;
mIsRetryButtonEnabled = true;
}
protected override void DrawGUI()
{
CenterContent(
() =>
{
GUILayout.Label(
PlasticLocalization.Name.CannotLoadBranches.GetString(),
EditorStyles.boldLabel);
if (HasError)
{
GUILayout.Label(
new GUIContent(Images.GetInfoDialogIcon(), mError.Message),
GUILayout.Width(16), GUILayout.Height(16));
}
},
() =>
{
GUIStyle labelWrapStyle = new GUIStyle(EditorStyles.label);
labelWrapStyle.wordWrap = true;
labelWrapStyle.alignment = TextAnchor.MiddleCenter;
labelWrapStyle.padding = new RectOffset(15, 15, 0, 0);
GUILayout.Label(
PlasticLocalization.Name.CannotLoadBranchesExplanation.GetString(),
labelWrapStyle);
},
() =>
{
GUI.enabled = mIsRetryButtonEnabled;
if (GUILayout.Button(PlasticLocalization.Name.RetryButton.GetString()))
{
mRetryAction();
mIsRetryButtonEnabled = false;
mRepaintAction();
}
GUI.enabled = true;
}
);
}
readonly Action mRetryAction;
Exception mError;
bool mIsRetryButtonEnabled = true;
}
}