No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CredentialsDialog.cs 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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. SEIDWorkingMode seidWorkingMode,
  23. EditorWindow parentWindow)
  24. {
  25. CredentialsDialog dialog = Create(
  26. server, seidWorkingMode, new ProgressControlsForDialogs());
  27. ResponseType dialogResult = dialog.RunModal(parentWindow);
  28. return dialog.BuildCredentialsDialogData(dialogResult);
  29. }
  30. protected override void OnModalGUI()
  31. {
  32. Title(PlasticLocalization.GetString(
  33. PlasticLocalization.Name.CredentialsDialogTitle));
  34. Paragraph(PlasticLocalization.GetString(
  35. PlasticLocalization.Name.CredentialsDialogExplanation, mServer));
  36. GUILayout.Space(5);
  37. DoEntriesArea();
  38. GUILayout.Space(10);
  39. DrawProgressForDialogs.For(
  40. mProgressControls.ProgressData);
  41. GUILayout.Space(10);
  42. DoButtonsArea();
  43. }
  44. protected override string GetTitle()
  45. {
  46. return PlasticLocalization.GetString(
  47. PlasticLocalization.Name.CredentialsDialogTitle);
  48. }
  49. AskCredentialsToUser.DialogData BuildCredentialsDialogData(
  50. ResponseType dialogResult)
  51. {
  52. return new AskCredentialsToUser.DialogData(
  53. dialogResult == ResponseType.Ok,
  54. mUser, mPassword, mSaveProfile, mSeidWorkingMode);
  55. }
  56. void DoEntriesArea()
  57. {
  58. mUser = TextEntry(PlasticLocalization.GetString(
  59. PlasticLocalization.Name.UserName), mUser,
  60. ENTRY_WIDTH, ENTRY_X);
  61. GUILayout.Space(5);
  62. mPassword = PasswordEntry(PlasticLocalization.GetString(
  63. PlasticLocalization.Name.Password), mPassword,
  64. ENTRY_WIDTH, ENTRY_X);
  65. GUILayout.Space(5);
  66. mSaveProfile = ToggleEntry(PlasticLocalization.GetString(
  67. PlasticLocalization.Name.RememberCredentialsAsProfile),
  68. mSaveProfile, ENTRY_WIDTH, ENTRY_X);
  69. }
  70. void DoButtonsArea()
  71. {
  72. using (new EditorGUILayout.HorizontalScope())
  73. {
  74. GUILayout.FlexibleSpace();
  75. if (Application.platform == RuntimePlatform.WindowsEditor)
  76. {
  77. DoOkButton();
  78. DoCancelButton();
  79. return;
  80. }
  81. DoCancelButton();
  82. DoOkButton();
  83. }
  84. }
  85. void DoOkButton()
  86. {
  87. if (!AcceptButton(PlasticLocalization.GetString(
  88. PlasticLocalization.Name.OkButton)))
  89. return;
  90. OkButtonWithValidationAction();
  91. }
  92. void DoCancelButton()
  93. {
  94. if (!NormalButton(PlasticLocalization.GetString(
  95. PlasticLocalization.Name.CancelButton)))
  96. return;
  97. CancelButtonAction();
  98. }
  99. void OkButtonWithValidationAction()
  100. {
  101. CredentialsDialogValidation.AsyncValidation(
  102. BuildCredentialsDialogData(ResponseType.Ok), this, mProgressControls);
  103. }
  104. static CredentialsDialog Create(
  105. string server,
  106. SEIDWorkingMode seidWorkingMode,
  107. ProgressControlsForDialogs progressControls)
  108. {
  109. var instance = CreateInstance<CredentialsDialog>();
  110. instance.mServer = server;
  111. instance.mSeidWorkingMode = seidWorkingMode;
  112. instance.mProgressControls = progressControls;
  113. instance.mEnterKeyAction = instance.OkButtonWithValidationAction;
  114. instance.mEscapeKeyAction = instance.CancelButtonAction;
  115. return instance;
  116. }
  117. string mUser;
  118. string mPassword = string.Empty;
  119. ProgressControlsForDialogs mProgressControls;
  120. bool mSaveProfile;
  121. string mServer;
  122. SEIDWorkingMode mSeidWorkingMode;
  123. const float ENTRY_WIDTH = 345f;
  124. const float ENTRY_X = 150f;
  125. }
  126. }