Files
GameDevTVObstacleDodge/Library/PackageCache/com.unity.collab-proxy@1ec4e416a4af/Editor/UI/UnityPlasticGuiMessage.cs

255 lines
8.4 KiB
C#

using UnityEditor;
using Codice.Client.Common;
using PlasticGui;
using Unity.PlasticSCM.Editor.CloudDrive;
namespace Unity.PlasticSCM.Editor.UI
{
internal class UnityPlasticGuiMessage : GuiMessage.IGuiMessage
{
internal UnityPlasticGuiMessage()
{
Execute.WhenEditorIsReady(() =>
{
mIsEditorReady = true;
});
}
void GuiMessage.IGuiMessage.ShowMessage(
string title,
string message,
GuiMessage.GuiMessageType messageType)
{
if (!UVCSPlugin.Instance.ConnectionMonitor.IsConnected)
return;
if (!mIsEditorReady)
{
LogMessage(title, message, messageType);
return;
}
EditorUtility.DisplayDialog(
GetDialogTitleForMessageType(title, messageType),
message,
PlasticLocalization.GetString(PlasticLocalization.Name.CloseButton));
}
void GuiMessage.IGuiMessage.ShowError(string message)
{
if (!UVCSPlugin.Instance.ConnectionMonitor.IsConnected)
return;
if (!mIsEditorReady)
{
LogMessage(GetDialogTitle(string.Empty), message, GuiMessage.GuiMessageType.Critical);
return;
}
EditorUtility.DisplayDialog(
GetDialogTitleForMessageType(null, GuiMessage.GuiMessageType.Critical),
message,
PlasticLocalization.GetString(PlasticLocalization.Name.CloseButton));
}
GuiMessage.GuiMessageResponseButton GuiMessage.IGuiMessage.ShowQuestion(
string title,
string message,
string positiveActionButton,
string neutralActionButton,
string negativeActionButton)
{
if (string.IsNullOrEmpty(negativeActionButton))
{
bool result = EditorUtility.DisplayDialog(
title,
message,
positiveActionButton,
neutralActionButton);
return (result) ?
GuiMessage.GuiMessageResponseButton.Positive :
GuiMessage.GuiMessageResponseButton.Neutral;
}
int intResult = EditorUtility.DisplayDialogComplex(
title,
message,
positiveActionButton,
neutralActionButton,
negativeActionButton);
return GetResponse(intResult);
}
bool GuiMessage.IGuiMessage.ShowQuestion(
string title,
string message,
string yesButton)
{
return EditorUtility.DisplayDialog(
title,
message,
yesButton,
PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
}
bool GuiMessage.IGuiMessage.ShowQuestionWithLearnMore(
string title,
string message,
string yesButton,
string noButton,
MultiLinkLabelData learnMoreContent)
{
return EditorUtility.DisplayDialog(
title,
message,
yesButton,
noButton);
}
bool GuiMessage.IGuiMessage.ShowYesNoQuestion(string title, string message)
{
return EditorUtility.DisplayDialog(
title,
message,
PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
}
GuiMessage.GuiMessageResponseButton GuiMessage.IGuiMessage.ShowYesNoCancelQuestion(
string title, string message)
{
int intResult = EditorUtility.DisplayDialogComplex(
title,
message,
PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
PlasticLocalization.GetString(PlasticLocalization.Name.CancelButton),
PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
return GetResponse(intResult);
}
bool GuiMessage.IGuiMessage.ShowYesNoQuestionWithType(
string title, string message, GuiMessage.GuiMessageType messageType)
{
return EditorUtility.DisplayDialog(
GetDialogTitleForMessageType(title, messageType),
message,
PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
}
GuiMessage.GuiMessageResponseButton GuiMessage.IGuiMessage.ShowQuestionWithCheckBox(
string title,
string message,
string positiveButtonText,
string neutralButtonText,
string negativeButtonText,
GuiMessage.GuiMessageType messageType,
MultiLinkLabelData dontShowAgainContent,
out bool checkBoxValue)
{
return DialogWithCheckBox.Show(
title,
message,
positiveButtonText,
neutralButtonText,
negativeButtonText,
messageType,
dontShowAgainContent,
ParentWindow.Get(),
out checkBoxValue);
}
static string GetDialogTitle(string title)
{
string defaultWindowTitle =
CloudDrivePlugin.Instance.IsEnabled() && !UVCSPlugin.Instance.IsEnabled() ?
UnityConstants.CloudDrive.WINDOW_TITLE :
UnityConstants.UVCS_WINDOW_TITLE;
if (string.IsNullOrEmpty(title))
return defaultWindowTitle;
if (title.Contains(defaultWindowTitle))
return title;
return string.Format("{0} - {1}", defaultWindowTitle, title);
}
static string GetDialogTitleForMessageType(
string title,
GuiMessage.GuiMessageType messageType)
{
string alertTypeText = GetMessageTypeText(messageType);
return string.Format("{0} - {1}", alertTypeText, GetDialogTitle(title));
}
static string GetMessageTypeText(GuiMessage.GuiMessageType messageType)
{
string alertTypeText = string.Empty;
switch (messageType)
{
case GuiMessage.GuiMessageType.Informational:
alertTypeText = "Information";
break;
case GuiMessage.GuiMessageType.Warning:
alertTypeText = "Warning";
break;
case GuiMessage.GuiMessageType.Critical:
alertTypeText = "Error";
break;
case GuiMessage.GuiMessageType.Question:
alertTypeText = "Question";
break;
}
return alertTypeText;
}
static GuiMessage.GuiMessageResponseButton GetResponse(int dialogResult)
{
switch (dialogResult)
{
case 0:
return GuiMessage.GuiMessageResponseButton.Positive;
case 1:
return GuiMessage.GuiMessageResponseButton.Neutral;
case 2:
return GuiMessage.GuiMessageResponseButton.Negative;
default:
return GuiMessage.GuiMessageResponseButton.Neutral;
}
}
static void LogMessage(
string title,
string message,
GuiMessage.GuiMessageType messageType)
{
string fullMessage = string.Format(
"{0}: {1}",
GetDialogTitle(title),
message);
switch (messageType)
{
case GuiMessage.GuiMessageType.Critical:
UnityEngine.Debug.LogError(fullMessage);
break;
case GuiMessage.GuiMessageType.Informational:
UnityEngine.Debug.Log(fullMessage);
break;
case GuiMessage.GuiMessageType.Warning:
UnityEngine.Debug.LogWarning(fullMessage);
break;
}
}
volatile bool mIsEditorReady = false;
}
}