UnityPlasticGuiMessage.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using UnityEditor;
  2. using Codice.Client.Common;
  3. using PlasticGui;
  4. namespace Unity.PlasticSCM.Editor.UI
  5. {
  6. internal class UnityPlasticGuiMessage : GuiMessage.IGuiMessage
  7. {
  8. internal UnityPlasticGuiMessage(EditorWindow parentWindow)
  9. {
  10. mParentWindow = parentWindow;
  11. }
  12. void GuiMessage.IGuiMessage.ShowMessage(
  13. string title,
  14. string message,
  15. GuiMessage.GuiMessageType alertType)
  16. {
  17. EditorUtility.DisplayDialog(
  18. BuildDialogTitle(title, alertType),
  19. message,
  20. PlasticLocalization.GetString(PlasticLocalization.Name.CloseButton));
  21. }
  22. void GuiMessage.IGuiMessage.ShowError(string message)
  23. {
  24. EditorUtility.DisplayDialog(
  25. PlasticLocalization.GetString(PlasticLocalization.Name.ErrorPlasticSCM),
  26. message,
  27. PlasticLocalization.GetString(PlasticLocalization.Name.CloseButton));
  28. }
  29. GuiMessage.GuiMessageResponseButton GuiMessage.IGuiMessage.ShowQuestion(
  30. string title,
  31. string message,
  32. string firstActionButton,
  33. string secondActionButton,
  34. string thirdActionButton,
  35. bool isFirstButtonEnabled)
  36. {
  37. if (!isFirstButtonEnabled)
  38. {
  39. bool result = EditorUtility.DisplayDialog(
  40. title,
  41. message,
  42. secondActionButton,
  43. thirdActionButton);
  44. return (result) ?
  45. GuiMessage.GuiMessageResponseButton.Second :
  46. GuiMessage.GuiMessageResponseButton.Third;
  47. }
  48. int intResult = EditorUtility.DisplayDialogComplex(
  49. title,
  50. message,
  51. firstActionButton,
  52. secondActionButton,
  53. thirdActionButton);
  54. return GetResponse(intResult);
  55. }
  56. bool GuiMessage.IGuiMessage.ShowQuestion(
  57. string title,
  58. string message,
  59. string yesButton)
  60. {
  61. return EditorUtility.DisplayDialog(
  62. title,
  63. message,
  64. yesButton,
  65. PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
  66. }
  67. bool GuiMessage.IGuiMessage.ShowYesNoQuestion(string title, string message)
  68. {
  69. return EditorUtility.DisplayDialog(
  70. title,
  71. message,
  72. PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
  73. PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
  74. }
  75. GuiMessage.GuiMessageResponseButton GuiMessage.IGuiMessage.ShowYesNoCancelQuestion(
  76. string title, string message)
  77. {
  78. int intResult = EditorUtility.DisplayDialogComplex(
  79. title,
  80. message,
  81. PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
  82. PlasticLocalization.GetString(PlasticLocalization.Name.NoButton),
  83. PlasticLocalization.GetString(PlasticLocalization.Name.CancelButton));
  84. return GetResponse(intResult);
  85. }
  86. bool GuiMessage.IGuiMessage.ShowYesNoQuestionWithType(
  87. string title, string message, GuiMessage.GuiMessageType messageType)
  88. {
  89. return EditorUtility.DisplayDialog(
  90. BuildDialogTitle(title, messageType),
  91. message,
  92. PlasticLocalization.GetString(PlasticLocalization.Name.YesButton),
  93. PlasticLocalization.GetString(PlasticLocalization.Name.NoButton));
  94. }
  95. static GuiMessage.GuiMessageResponseButton GetResponse(int dialogResult)
  96. {
  97. switch (dialogResult)
  98. {
  99. case 0:
  100. return GuiMessage.GuiMessageResponseButton.First;
  101. case 1:
  102. return GuiMessage.GuiMessageResponseButton.Second;
  103. case 2:
  104. return GuiMessage.GuiMessageResponseButton.Third;
  105. default:
  106. return GuiMessage.GuiMessageResponseButton.Second;
  107. }
  108. }
  109. static string BuildDialogTitle(
  110. string title,
  111. GuiMessage.GuiMessageType alertType)
  112. {
  113. string alertTypeText = GetAlertTypeText(alertType);
  114. return string.Format("{0} - {1}", alertTypeText, title);
  115. }
  116. static string GetAlertTypeText(GuiMessage.GuiMessageType alertType)
  117. {
  118. string alertTypeText = string.Empty;
  119. switch (alertType)
  120. {
  121. case GuiMessage.GuiMessageType.Informational:
  122. alertTypeText = "Information";
  123. break;
  124. case GuiMessage.GuiMessageType.Warning:
  125. alertTypeText = "Warning";
  126. break;
  127. case GuiMessage.GuiMessageType.Critical:
  128. alertTypeText = "Error";
  129. break;
  130. case GuiMessage.GuiMessageType.Question:
  131. alertTypeText = "Question";
  132. break;
  133. }
  134. return alertTypeText;
  135. }
  136. EditorWindow mParentWindow;
  137. }
  138. }