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.
160 lines
4.6 KiB
160 lines
4.6 KiB
using UnityEngine; |
|
|
|
using UnityEditor; |
|
|
|
using PlasticGui; |
|
using Unity.PlasticSCM.Editor.UI; |
|
using Unity.PlasticSCM.Editor.UI.Progress; |
|
using Codice.CM.Common; |
|
using Codice.Client.Common.Connection; |
|
|
|
namespace Unity.PlasticSCM.Editor.Configuration |
|
{ |
|
internal class CredentialsDialog : PlasticDialog |
|
{ |
|
protected override Rect DefaultRect |
|
{ |
|
get |
|
{ |
|
var baseRect = base.DefaultRect; |
|
return new Rect(baseRect.x, baseRect.y, 525, 250); |
|
} |
|
} |
|
|
|
internal static AskCredentialsToUser.DialogData RequestCredentials( |
|
string server, |
|
SEIDWorkingMode seidWorkingMode, |
|
EditorWindow parentWindow) |
|
{ |
|
CredentialsDialog dialog = Create( |
|
server, seidWorkingMode, new ProgressControlsForDialogs()); |
|
|
|
ResponseType dialogResult = dialog.RunModal(parentWindow); |
|
|
|
return dialog.BuildCredentialsDialogData(dialogResult); |
|
} |
|
|
|
protected override void OnModalGUI() |
|
{ |
|
Title(PlasticLocalization.GetString( |
|
PlasticLocalization.Name.CredentialsDialogTitle)); |
|
|
|
Paragraph(PlasticLocalization.GetString( |
|
PlasticLocalization.Name.CredentialsDialogExplanation, mServer)); |
|
|
|
GUILayout.Space(5); |
|
|
|
DoEntriesArea(); |
|
|
|
GUILayout.Space(10); |
|
|
|
DrawProgressForDialogs.For( |
|
mProgressControls.ProgressData); |
|
|
|
GUILayout.Space(10); |
|
|
|
DoButtonsArea(); |
|
} |
|
|
|
protected override string GetTitle() |
|
{ |
|
return PlasticLocalization.GetString( |
|
PlasticLocalization.Name.CredentialsDialogTitle); |
|
} |
|
|
|
AskCredentialsToUser.DialogData BuildCredentialsDialogData( |
|
ResponseType dialogResult) |
|
{ |
|
return new AskCredentialsToUser.DialogData( |
|
dialogResult == ResponseType.Ok, |
|
mUser, mPassword, mSaveProfile, mSeidWorkingMode); |
|
} |
|
|
|
void DoEntriesArea() |
|
{ |
|
mUser = TextEntry(PlasticLocalization.GetString( |
|
PlasticLocalization.Name.UserName), mUser, |
|
ENTRY_WIDTH, ENTRY_X); |
|
|
|
GUILayout.Space(5); |
|
|
|
mPassword = PasswordEntry(PlasticLocalization.GetString( |
|
PlasticLocalization.Name.Password), mPassword, |
|
ENTRY_WIDTH, ENTRY_X); |
|
|
|
GUILayout.Space(5); |
|
|
|
mSaveProfile = ToggleEntry(PlasticLocalization.GetString( |
|
PlasticLocalization.Name.RememberCredentialsAsProfile), |
|
mSaveProfile, ENTRY_WIDTH, ENTRY_X); |
|
} |
|
|
|
void DoButtonsArea() |
|
{ |
|
using (new EditorGUILayout.HorizontalScope()) |
|
{ |
|
GUILayout.FlexibleSpace(); |
|
|
|
if (Application.platform == RuntimePlatform.WindowsEditor) |
|
{ |
|
DoOkButton(); |
|
DoCancelButton(); |
|
return; |
|
} |
|
|
|
DoCancelButton(); |
|
DoOkButton(); |
|
} |
|
} |
|
|
|
void DoOkButton() |
|
{ |
|
if (!AcceptButton(PlasticLocalization.GetString( |
|
PlasticLocalization.Name.OkButton))) |
|
return; |
|
|
|
OkButtonWithValidationAction(); |
|
} |
|
|
|
void DoCancelButton() |
|
{ |
|
if (!NormalButton(PlasticLocalization.GetString( |
|
PlasticLocalization.Name.CancelButton))) |
|
return; |
|
|
|
CancelButtonAction(); |
|
} |
|
|
|
void OkButtonWithValidationAction() |
|
{ |
|
CredentialsDialogValidation.AsyncValidation( |
|
BuildCredentialsDialogData(ResponseType.Ok), this, mProgressControls); |
|
} |
|
|
|
static CredentialsDialog Create( |
|
string server, |
|
SEIDWorkingMode seidWorkingMode, |
|
ProgressControlsForDialogs progressControls) |
|
{ |
|
var instance = CreateInstance<CredentialsDialog>(); |
|
instance.mServer = server; |
|
instance.mSeidWorkingMode = seidWorkingMode; |
|
instance.mProgressControls = progressControls; |
|
instance.mEnterKeyAction = instance.OkButtonWithValidationAction; |
|
instance.mEscapeKeyAction = instance.CancelButtonAction; |
|
return instance; |
|
} |
|
|
|
string mUser; |
|
string mPassword = string.Empty; |
|
|
|
ProgressControlsForDialogs mProgressControls; |
|
bool mSaveProfile; |
|
|
|
string mServer; |
|
SEIDWorkingMode mSeidWorkingMode; |
|
|
|
const float ENTRY_WIDTH = 345f; |
|
const float ENTRY_X = 150f; |
|
} |
|
}
|
|
|