A game about forced loneliness, made by TACStudios
1using UnityEngine;
2
3using UnityEditor;
4
5using PlasticGui;
6using Unity.PlasticSCM.Editor.UI;
7using Unity.PlasticSCM.Editor.UI.Progress;
8using Codice.Client.Common.Authentication;
9using Codice.Client.Common.Connection;
10using Codice.CM.Common;
11using PlasticGui.WorkspaceWindow.Home;
12
13namespace Unity.PlasticSCM.Editor.Configuration
14{
15 internal class CredentialsDialog : PlasticDialog
16 {
17 protected override Rect DefaultRect
18 {
19 get
20 {
21 var baseRect = base.DefaultRect;
22 return new Rect(baseRect.x, baseRect.y, 525, 250);
23 }
24 }
25
26 internal static AskCredentialsToUser.DialogData RequestCredentials(
27 string server,
28 SEIDWorkingMode seidWorkingMode,
29 EditorWindow parentWindow)
30 {
31 CredentialsDialog dialog = Create(
32 server, seidWorkingMode, new ProgressControlsForDialogs());
33
34 ResponseType dialogResult = dialog.RunModal(parentWindow);
35
36 return dialog.BuildCredentialsDialogData(dialogResult);
37 }
38
39 protected override void OnModalGUI()
40 {
41 Title(PlasticLocalization.Name.CredentialsDialogTitle.GetString());
42
43 Paragraph(PlasticLocalization.Name.CredentialsDialogExplanation.GetString(mOrganizationInfo.DisplayName));
44
45 GUILayout.Space(5);
46
47 DoEntriesArea();
48
49 GUILayout.Space(10);
50
51 DrawProgressForDialogs.For(
52 mProgressControls.ProgressData);
53
54 GUILayout.Space(10);
55
56 DoButtonsArea();
57 }
58
59 protected override string GetTitle()
60 {
61 return PlasticLocalization.Name.CredentialsDialogTitle.GetString();
62 }
63
64 AskCredentialsToUser.DialogData BuildCredentialsDialogData(
65 ResponseType dialogResult)
66 {
67 return dialogResult == ResponseType.Ok
68 ? AskCredentialsToUser.DialogData.Success(
69 new Credentials(
70 new SEID(mUser, false, mPassword),
71 mSeidWorkingMode))
72 : AskCredentialsToUser.DialogData.Failure(mSeidWorkingMode);
73 }
74
75 void DoEntriesArea()
76 {
77 mUser = TextEntry(PlasticLocalization.Name.UserName.GetString(),
78 mUser, ENTRY_WIDTH, ENTRY_X);
79
80 GUILayout.Space(5);
81
82 mPassword = PasswordEntry(PlasticLocalization.Name.Password.GetString(),
83 mPassword, ENTRY_WIDTH, ENTRY_X);
84
85 GUILayout.Space(5);
86
87 mSaveProfile = ToggleEntry(PlasticLocalization.Name.RememberCredentialsAsProfile.GetString(),
88 mSaveProfile, ENTRY_WIDTH, ENTRY_X);
89 }
90
91 void DoButtonsArea()
92 {
93 using (new EditorGUILayout.HorizontalScope())
94 {
95 GUILayout.FlexibleSpace();
96
97 if (Application.platform == RuntimePlatform.WindowsEditor)
98 {
99 DoOkButton();
100 DoCancelButton();
101 return;
102 }
103
104 DoCancelButton();
105 DoOkButton();
106 }
107 }
108
109 void DoOkButton()
110 {
111 if (!AcceptButton(PlasticLocalization.Name.OkButton.GetString()))
112 return;
113
114 OkButtonWithValidationAction();
115 }
116
117 void DoCancelButton()
118 {
119 if (!NormalButton(PlasticLocalization.Name.CancelButton.GetString()))
120 return;
121
122 CancelButtonAction();
123 }
124
125 void OkButtonWithValidationAction()
126 {
127 CredentialsDialogValidation.Validate(mUser, mPassword, this, mProgressControls);
128 }
129
130 static CredentialsDialog Create(
131 string server,
132 SEIDWorkingMode seidWorkingMode,
133 ProgressControlsForDialogs progressControls)
134 {
135 var instance = CreateInstance<CredentialsDialog>();
136 instance.mOrganizationInfo = OrganizationsInformation.FromServer(server);
137 instance.mSeidWorkingMode = seidWorkingMode;
138 instance.mProgressControls = progressControls;
139 instance.mEnterKeyAction = instance.OkButtonWithValidationAction;
140 instance.mEscapeKeyAction = instance.CancelButtonAction;
141 return instance;
142 }
143
144 string mUser;
145 string mPassword = string.Empty;
146
147 ProgressControlsForDialogs mProgressControls;
148 bool mSaveProfile;
149
150 OrganizationInfo mOrganizationInfo;
151 SEIDWorkingMode mSeidWorkingMode;
152
153 const float ENTRY_WIDTH = 345f;
154 const float ENTRY_X = 150f;
155 }
156}