161 lines
4.6 KiB
C#
161 lines
4.6 KiB
C#
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;
|
|
}
|
|
}
|