A game about forced loneliness, made by TACStudios
1using UnityEditor;
2
3using Codice.Client.Common;
4using PlasticGui;
5
6namespace Unity.PlasticSCM.Editor.UI
7{
8 internal class UnityPlasticGuiMessage : GuiMessage.IGuiMessage
9 {
10 void GuiMessage.IGuiMessage.ShowMessage(
11 string title,
12 string message,
13 GuiMessage.GuiMessageType messageType)
14 {
15 if (!PlasticPlugin.ConnectionMonitor.IsConnected)
16 return;
17
18 EditorUtility.DisplayDialog(
19 GetDialogTitleForMessageType(title, messageType),
20 message,
21 PlasticLocalization.GetString(PlasticLocalization.Name.CloseButton));
22 }
23
24 void GuiMessage.IGuiMessage.ShowError(string message)
25 {
26 if (!PlasticPlugin.ConnectionMonitor.IsConnected)
27 return;
28
29 EditorUtility.DisplayDialog(
30 GetDialogTitleForMessageType(null, GuiMessage.GuiMessageType.Critical),
31 message,
32 PlasticLocalization.GetString(PlasticLocalization.Name.CloseButton));
33 }
34
35 GuiMessage.GuiMessageResponseButton GuiMessage.IGuiMessage.ShowQuestion(
36 string title,
37 string message,
38 string positiveActionButton,
39 string neutralActionButton,
40 string negativeActionButton)
41 {
42 if (string.IsNullOrEmpty(negativeActionButton))
43 {
44 bool result = EditorUtility.DisplayDialog(
45 GetDialogTitle(title),
46 message,
47 positiveActionButton,
48 neutralActionButton);
49
50 return (result) ?
51 GuiMessage.GuiMessageResponseButton.Positive :
52 GuiMessage.GuiMessageResponseButton.Neutral;
53 }
54
55 int intResult = EditorUtility.DisplayDialogComplex(
56 GetDialogTitle(title),
57 message,
58 positiveActionButton,
59 neutralActionButton,
60 negativeActionButton);
61
62 return GetResponse(intResult);
63 }
64
65 bool GuiMessage.IGuiMessage.ShowQuestion(
66 string title,
67 string message,
68 string yesButton)
69 {
70 return EditorUtility.DisplayDialog(
71 GetDialogTitle(title),
72 message,
73 yesButton,
74 PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
75 }
76
77 bool GuiMessage.IGuiMessage.ShowQuestionWithLearnMore(
78 string title,
79 string message,
80 string yesButton,
81 string noButton,
82 MultiLinkLabelData learnMoreContent)
83 {
84 return EditorUtility.DisplayDialog(
85 GetDialogTitle(title),
86 message,
87 yesButton,
88 noButton);
89 }
90
91 bool GuiMessage.IGuiMessage.ShowYesNoQuestion(string title, string message)
92 {
93 return EditorUtility.DisplayDialog(
94 GetDialogTitle(title),
95 message,
96 PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
97 PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
98 }
99
100 GuiMessage.GuiMessageResponseButton GuiMessage.IGuiMessage.ShowYesNoCancelQuestion(
101 string title, string message)
102 {
103 int intResult = EditorUtility.DisplayDialogComplex(
104 GetDialogTitle(title),
105 message,
106 PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
107 PlasticLocalization.GetString(PlasticLocalization.Name.CancelButton),
108 PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
109
110 return GetResponse(intResult);
111 }
112
113 bool GuiMessage.IGuiMessage.ShowYesNoQuestionWithType(
114 string title, string message, GuiMessage.GuiMessageType messageType)
115 {
116 return EditorUtility.DisplayDialog(
117 GetDialogTitleForMessageType(title, messageType),
118 message,
119 PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
120 PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
121 }
122
123 GuiMessage.GuiMessageResponseButton GuiMessage.IGuiMessage.ShowQuestionWithCheckBox(
124 string title,
125 string message,
126 string positiveButtonText,
127 string neutralButtonText,
128 string negativeButtonText,
129 MultiLinkLabelData dontShowAgainContent,
130 out bool checkBoxValue)
131 {
132 return DialogWithCheckBox.Show(
133 title,
134 message,
135 positiveButtonText,
136 neutralButtonText,
137 negativeButtonText,
138 dontShowAgainContent,
139 ParentWindow.Get(),
140 out checkBoxValue);
141 }
142
143 static string GetDialogTitle(string title)
144 {
145 if (string.IsNullOrEmpty(title))
146 return UnityConstants.PLASTIC_WINDOW_TITLE;
147
148 if (title.Contains(UnityConstants.PLASTIC_WINDOW_TITLE))
149 return title;
150
151 return string.Format("{0} - {1}",
152 UnityConstants.PLASTIC_WINDOW_TITLE, title);
153 }
154
155 static string GetDialogTitleForMessageType(
156 string title,
157 GuiMessage.GuiMessageType messageType)
158 {
159 string alertTypeText = GetMessageTypeText(messageType);
160 return string.Format("{0} - {1}", alertTypeText, GetDialogTitle(title));
161 }
162
163 static string GetMessageTypeText(GuiMessage.GuiMessageType messageType)
164 {
165 string alertTypeText = string.Empty;
166
167 switch (messageType)
168 {
169 case GuiMessage.GuiMessageType.Informational:
170 alertTypeText = "Information";
171 break;
172 case GuiMessage.GuiMessageType.Warning:
173 alertTypeText = "Warning";
174 break;
175 case GuiMessage.GuiMessageType.Critical:
176 alertTypeText = "Error";
177 break;
178 case GuiMessage.GuiMessageType.Question:
179 alertTypeText = "Question";
180 break;
181 }
182
183 return alertTypeText;
184 }
185
186 static GuiMessage.GuiMessageResponseButton GetResponse(int dialogResult)
187 {
188 switch (dialogResult)
189 {
190 case 0:
191 return GuiMessage.GuiMessageResponseButton.Positive;
192 case 1:
193 return GuiMessage.GuiMessageResponseButton.Neutral;
194 case 2:
195 return GuiMessage.GuiMessageResponseButton.Negative;
196 default:
197 return GuiMessage.GuiMessageResponseButton.Neutral;
198 }
199 }
200 }
201}