Net-Game/Library/PackageCache/com.unity.collab-proxy@50ac96531b63/Editor/UI/UnityPlasticGuiMessage.cs
2025-03-28 08:33:16 -04:00

202 lines
6.9 KiB
C#

using UnityEditor;
using Codice.Client.Common;
using PlasticGui;
namespace Unity.PlasticSCM.Editor.UI
{
internal class UnityPlasticGuiMessage : GuiMessage.IGuiMessage
{
void GuiMessage.IGuiMessage.ShowMessage(
string title,
string message,
GuiMessage.GuiMessageType messageType)
{
if (!PlasticPlugin.ConnectionMonitor.IsConnected)
return;
EditorUtility.DisplayDialog(
GetDialogTitleForMessageType(title, messageType),
message,
PlasticLocalization.GetString(PlasticLocalization.Name.CloseButton));
}
void GuiMessage.IGuiMessage.ShowError(string message)
{
if (!PlasticPlugin.ConnectionMonitor.IsConnected)
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(
GetDialogTitle(title),
message,
positiveActionButton,
neutralActionButton);
return (result) ?
GuiMessage.GuiMessageResponseButton.Positive :
GuiMessage.GuiMessageResponseButton.Neutral;
}
int intResult = EditorUtility.DisplayDialogComplex(
GetDialogTitle(title),
message,
positiveActionButton,
neutralActionButton,
negativeActionButton);
return GetResponse(intResult);
}
bool GuiMessage.IGuiMessage.ShowQuestion(
string title,
string message,
string yesButton)
{
return EditorUtility.DisplayDialog(
GetDialogTitle(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(
GetDialogTitle(title),
message,
yesButton,
noButton);
}
bool GuiMessage.IGuiMessage.ShowYesNoQuestion(string title, string message)
{
return EditorUtility.DisplayDialog(
GetDialogTitle(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(
GetDialogTitle(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,
MultiLinkLabelData dontShowAgainContent,
out bool checkBoxValue)
{
return DialogWithCheckBox.Show(
title,
message,
positiveButtonText,
neutralButtonText,
negativeButtonText,
dontShowAgainContent,
ParentWindow.Get(),
out checkBoxValue);
}
static string GetDialogTitle(string title)
{
if (string.IsNullOrEmpty(title))
return UnityConstants.PLASTIC_WINDOW_TITLE;
if (title.Contains(UnityConstants.PLASTIC_WINDOW_TITLE))
return title;
return string.Format("{0} - {1}",
UnityConstants.PLASTIC_WINDOW_TITLE, 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;
}
}
}
}