CredentialsDialog.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using UnityEngine;
  2. using UnityEditor;
  3. using PlasticGui;
  4. using Unity.PlasticSCM.Editor.UI;
  5. using Unity.PlasticSCM.Editor.UI.Progress;
  6. using Codice.CM.Common;
  7. using Codice.Client.Common.Connection;
  8. namespace Unity.PlasticSCM.Editor.Configuration
  9. {
  10. internal class CredentialsDialog : PlasticDialog
  11. {
  12. protected override Rect DefaultRect
  13. {
  14. get
  15. {
  16. var baseRect = base.DefaultRect;
  17. return new Rect(baseRect.x, baseRect.y, 525, 250);
  18. }
  19. }
  20. internal static AskCredentialsToUser.DialogData RequestCredentials(
  21. string server,
  22. EditorWindow parentWindow)
  23. {
  24. CredentialsDialog dialog = Create(
  25. server, new ProgressControlsForDialogs());
  26. ResponseType dialogResult = dialog.RunModal(parentWindow);
  27. return dialog.BuildCredentialsDialogData(dialogResult);
  28. }
  29. protected override void OnModalGUI()
  30. {
  31. Title(PlasticLocalization.GetString(
  32. PlasticLocalization.Name.CredentialsDialogTitle));
  33. Paragraph(PlasticLocalization.GetString(
  34. PlasticLocalization.Name.CredentialsDialogExplanation, mServer));
  35. GUILayout.Space(5);
  36. DoEntriesArea();
  37. GUILayout.Space(10);
  38. DrawProgressForDialogs.For(
  39. mProgressControls.ProgressData);
  40. GUILayout.Space(10);
  41. DoButtonsArea();
  42. }
  43. protected override string GetTitle()
  44. {
  45. return PlasticLocalization.GetString(
  46. PlasticLocalization.Name.CredentialsDialogTitle);
  47. }
  48. AskCredentialsToUser.DialogData BuildCredentialsDialogData(
  49. ResponseType dialogResult)
  50. {
  51. return new AskCredentialsToUser.DialogData(
  52. dialogResult == ResponseType.Ok,
  53. mUser, mPassword, mSaveProfile, SEIDWorkingMode.LDAPWorkingMode);
  54. }
  55. void DoEntriesArea()
  56. {
  57. mUser = TextEntry(PlasticLocalization.GetString(
  58. PlasticLocalization.Name.UserName), mUser,
  59. ENTRY_WIDTH, ENTRY_X);
  60. GUILayout.Space(5);
  61. mPassword = PasswordEntry(PlasticLocalization.GetString(
  62. PlasticLocalization.Name.Password), mPassword,
  63. ENTRY_WIDTH, ENTRY_X);
  64. GUILayout.Space(5);
  65. mSaveProfile = ToggleEntry(PlasticLocalization.GetString(
  66. PlasticLocalization.Name.RememberCredentialsAsProfile),
  67. mSaveProfile, ENTRY_WIDTH, ENTRY_X);
  68. }
  69. void DoButtonsArea()
  70. {
  71. using (new EditorGUILayout.HorizontalScope())
  72. {
  73. GUILayout.FlexibleSpace();
  74. if (Application.platform == RuntimePlatform.WindowsEditor)
  75. {
  76. DoOkButton();
  77. DoCancelButton();
  78. return;
  79. }
  80. DoCancelButton();
  81. DoOkButton();
  82. }
  83. }
  84. void DoOkButton()
  85. {
  86. if (!AcceptButton(PlasticLocalization.GetString(
  87. PlasticLocalization.Name.OkButton)))
  88. return;
  89. OkButtonWithValidationAction();
  90. }
  91. void DoCancelButton()
  92. {
  93. if (!NormalButton(PlasticLocalization.GetString(
  94. PlasticLocalization.Name.CancelButton)))
  95. return;
  96. CancelButtonAction();
  97. }
  98. void OkButtonWithValidationAction()
  99. {
  100. CredentialsDialogValidation.AsyncValidation(
  101. BuildCredentialsDialogData(ResponseType.Ok), this, mProgressControls);
  102. }
  103. static CredentialsDialog Create(
  104. string server,
  105. ProgressControlsForDialogs progressControls)
  106. {
  107. var instance = CreateInstance<CredentialsDialog>();
  108. instance.mServer = server;
  109. instance.mProgressControls = progressControls;
  110. instance.mEnterKeyAction = instance.OkButtonWithValidationAction;
  111. instance.mEscapeKeyAction = instance.CancelButtonAction;
  112. return instance;
  113. }
  114. string mUser;
  115. string mPassword = string.Empty;
  116. ProgressControlsForDialogs mProgressControls;
  117. bool mSaveProfile;
  118. string mServer;
  119. const float ENTRY_WIDTH = 345f;
  120. const float ENTRY_X = 150f;
  121. }
  122. }