first commit
This commit is contained in:
@@ -0,0 +1,314 @@
|
||||
using System;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
using PlasticGui;
|
||||
using Codice.CM.Common;
|
||||
using Codice.Client.Common;
|
||||
using Unity.PlasticSCM.Editor.UI.UIElements;
|
||||
using PlasticGui.Configuration.TeamEdition;
|
||||
using PlasticGui.Configuration;
|
||||
using PlasticGui.WebApi;
|
||||
using Unity.PlasticSCM.Editor.Views.Welcome;
|
||||
|
||||
namespace Unity.PlasticSCM.Editor.Configuration.TeamEdition
|
||||
{
|
||||
internal class TeamEditionConfigurationWindow : EditorWindow
|
||||
{
|
||||
internal static void ShowWindow(IPlasticWebRestApi restApi, WelcomeView welcomeView)
|
||||
{
|
||||
TeamEditionConfigurationWindow window = GetWindow<TeamEditionConfigurationWindow>();
|
||||
window.mRestApi = restApi;
|
||||
window.mWelcomeView = welcomeView;
|
||||
window.titleContent = new GUIContent(
|
||||
PlasticLocalization.GetString(PlasticLocalization.Name.WelcomeToUnityVCS));
|
||||
window.minSize = window.maxSize = new Vector2(650, 300);
|
||||
window.Show();
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
InitializeLayoutAndStyles();
|
||||
|
||||
BuildComponents();
|
||||
}
|
||||
|
||||
void Dispose()
|
||||
{
|
||||
mConnectButton.clicked -= ConnectButton_Clicked;
|
||||
mCheckConnectionButton.clicked -= CheckConnectionButton_Clicked;
|
||||
mOkButton.clicked -= OkButton_Clicked;
|
||||
mCancelButton.clicked -= CancelButton_Clicked;
|
||||
mServerTextField.UnregisterValueChangedCallback(OnServerTextFieldChanged);
|
||||
mUseSslToggle.UnregisterValueChangedCallback(OnUseSslToggleChanged);
|
||||
|
||||
mLoadingSpinner.Dispose();
|
||||
}
|
||||
|
||||
void ConnectButton_Clicked()
|
||||
{
|
||||
ConfigurationConnectServerButtonClickEvent.Click(
|
||||
server: mUserAssistant.GetProposedServer(),
|
||||
HideValidation: HideValidation,
|
||||
ShowError: ShowServerValidationError,
|
||||
ShowProgress: ShowProgress,
|
||||
HideProgress: HideProgress,
|
||||
ShowNotification: ShowServerNotificationMessage,
|
||||
DisableButtons: () => { mConnectButton.SetEnabled(false); },
|
||||
EnableButtons: () => { mConnectButton.SetEnabled(true); },
|
||||
UpdatePasswordEntries: (seidWorkingMode) =>
|
||||
{
|
||||
UpdatePasswordEntries(ValidateServerAndCreds.
|
||||
IsPasswordRequired(seidWorkingMode));
|
||||
},
|
||||
NotifyWorkingMode: (mode) => { mSEIDWorkingMode = mode; },
|
||||
NotifyConnectedStatus: (b) => { });
|
||||
|
||||
mUserTextField.SetEnabled(true);
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
Dispose();
|
||||
|
||||
if (mWelcomeView != null)
|
||||
mWelcomeView.OnUserClosedConfigurationWindow();
|
||||
}
|
||||
|
||||
void CheckConnectionButton_Clicked()
|
||||
{
|
||||
ConfigurationCheckCredentialsButtonClickEvent.Click(
|
||||
mSEIDWorkingMode,
|
||||
mUserTextField.value,
|
||||
mPasswordTextField.value,
|
||||
Edition.Team,
|
||||
mUserAssistant,
|
||||
HideCredentialsValidationError,
|
||||
ShowCheckCredentialsError,
|
||||
ShowProgress,
|
||||
HideProgress,
|
||||
ShowNotification: ShowCredentialsNotificationMessage,
|
||||
DisableButtons: () => { mCheckConnectionButton.SetEnabled(false); mConnectButton.SetEnabled(false); },
|
||||
EnableButtons: () => { mCheckConnectionButton.SetEnabled(true); mConnectButton.SetEnabled(true); },
|
||||
NotifyWorkingMode: (mode) => { mSEIDWorkingMode = mode; },
|
||||
NotifyConnectedStatus: (status) => { },
|
||||
restApi: mRestApi,
|
||||
cmConnection: CmConnection.Get());
|
||||
}
|
||||
|
||||
void CancelButton_Clicked()
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
void OkButton_Clicked()
|
||||
{
|
||||
if (!ValidateServerAndCreds.IsValidInput(
|
||||
mUserAssistant.GetProposedServer(),
|
||||
mUserTextField.value,
|
||||
mSEIDWorkingMode,
|
||||
mPasswordTextField.value,
|
||||
ShowCheckCredentialsError))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ConfigurationActions.SaveClientConfig(
|
||||
mServerTextField.value,
|
||||
mSEIDWorkingMode,
|
||||
mUserTextField.value,
|
||||
mPasswordTextField.value);
|
||||
|
||||
Close();
|
||||
}
|
||||
|
||||
void HideCredentialsValidationError()
|
||||
{
|
||||
mCredentialsLabel.RemoveFromClassList("error");
|
||||
mCredentialsLabel.Hide();
|
||||
}
|
||||
|
||||
void BuildComponents()
|
||||
{
|
||||
VisualElement root = rootVisualElement;
|
||||
|
||||
root.Query<Label>("plasticConfigurationTitle").First().text =
|
||||
PlasticLocalization.GetString(PlasticLocalization.Name.PlasticConfigurationTitleUnityVCS);
|
||||
|
||||
root.SetControlText<Label>(
|
||||
"plasticConfigurationExplanation",
|
||||
PlasticLocalization.Name.PlasticConfigurationExplanation);
|
||||
|
||||
root.SetControlText<Label>("configurationServerInfo",
|
||||
PlasticLocalization.Name.PlasticSCMServerLabel);
|
||||
|
||||
root.SetControlText<Button>(
|
||||
"connect",
|
||||
PlasticLocalization.Name.Connect);
|
||||
|
||||
root.SetControlText<Label>("useSsl",
|
||||
PlasticLocalization.Name.UseSsl);
|
||||
|
||||
root.SetControlText<Label>("configurationUserNameInfo",
|
||||
PlasticLocalization.Name.ConfigurationUserNameInfo);
|
||||
|
||||
root.SetControlText<Label>("configurationCredentialsInfo",
|
||||
PlasticLocalization.Name.ConfigurationCredentialsInfo);
|
||||
|
||||
root.SetControlText<Button>("check",
|
||||
PlasticLocalization.Name.Check);
|
||||
|
||||
root.SetControlText<Label>("credentialsOk",
|
||||
PlasticLocalization.Name.CredentialsOK);
|
||||
|
||||
root.SetControlText<Button>("okButton",
|
||||
PlasticLocalization.Name.OkButton);
|
||||
|
||||
root.SetControlText<Button>("cancelButton",
|
||||
PlasticLocalization.Name.CancelButton);
|
||||
|
||||
mSpinnerContainer = root.Query<VisualElement>("spinnerContainer").First();
|
||||
mSpinnerLabel = root.Query<Label>("spinnerLabel").First();
|
||||
|
||||
mLoadingSpinner = new LoadingSpinner();
|
||||
mSpinnerContainer.Add(mLoadingSpinner);
|
||||
mSpinnerContainer.Hide();
|
||||
|
||||
mCheckConnectionButton = root.Query<Button>("check").First();
|
||||
mCheckConnectionButton.clicked += CheckConnectionButton_Clicked;
|
||||
|
||||
mConnectButton = root.Query<Button>("connect").First();
|
||||
mConnectButton.clicked += ConnectButton_Clicked;
|
||||
|
||||
mServerTextField = root.Query<TextField>("serverTextField").First();
|
||||
mServerTextField.RegisterValueChangedCallback(OnServerTextFieldChanged);
|
||||
|
||||
mUseSslToggle = root.Query<Toggle>("useSslToogle").First();
|
||||
mUseSslToggle.RegisterValueChangedCallback(OnUseSslToggleChanged);
|
||||
|
||||
mUserTextField = root.Query<TextField>("userTextField").First();
|
||||
mUserTextField.SetEnabled(false);
|
||||
|
||||
mPasswordTextField = root.Query<TextField>("passwordTextField").First();
|
||||
mPasswordTextField.isPasswordField = true;
|
||||
|
||||
mConnectedLabel = root.Query<Label>("connectedLabel").First();
|
||||
|
||||
mCredentialsLabel = root.Query<Label>("credentialsOk").First();
|
||||
|
||||
mOkButton = root.Query<Button>("okButton").First();
|
||||
mOkButton.clicked += OkButton_Clicked;
|
||||
|
||||
mCancelButton = root.Query<Button>("cancelButton").First();
|
||||
mCancelButton.clicked += CancelButton_Clicked;
|
||||
}
|
||||
|
||||
void OnUseSslToggleChanged(ChangeEvent<bool> evt)
|
||||
{
|
||||
mUserAssistant.OnSslChanged(mServerTextField.value, evt.newValue);
|
||||
mServerTextField.value = mUserAssistant.GetProposedServer();
|
||||
}
|
||||
|
||||
void InitializeLayoutAndStyles()
|
||||
{
|
||||
VisualElement root = rootVisualElement;
|
||||
|
||||
root.LoadLayout(typeof(TeamEditionConfigurationWindow).Name);
|
||||
|
||||
root.LoadStyle(typeof(TeamEditionConfigurationWindow).Name);
|
||||
}
|
||||
|
||||
void OnServerTextFieldChanged(ChangeEvent<string> evt)
|
||||
{
|
||||
mUserAssistant.OnServerChanged(evt.newValue);
|
||||
mUseSslToggle.value = mUserAssistant.IsSslServer(evt.newValue);
|
||||
}
|
||||
|
||||
void ShowServerNotificationMessage(string message)
|
||||
{
|
||||
mConnectedLabel.text = message;
|
||||
mConnectedLabel.Show();
|
||||
}
|
||||
|
||||
void ShowServerValidationError(string message)
|
||||
{
|
||||
mConnectedLabel.text = message;
|
||||
mConnectedLabel.AddToClassList("error");
|
||||
mConnectedLabel.Show();
|
||||
}
|
||||
|
||||
void ShowCredentialsNotificationMessage(string message)
|
||||
{
|
||||
mCredentialsLabel.text = message;
|
||||
mCredentialsLabel.Show();
|
||||
}
|
||||
|
||||
void ShowCheckCredentialsError(string message)
|
||||
{
|
||||
mCredentialsLabel.text = message;
|
||||
mCredentialsLabel.AddToClassList("error");
|
||||
mCredentialsLabel.Show();
|
||||
}
|
||||
|
||||
void HideValidation()
|
||||
{
|
||||
mConnectedLabel.RemoveFromClassList("error");
|
||||
mConnectedLabel.Hide();
|
||||
}
|
||||
|
||||
void ShowProgress(string text)
|
||||
{
|
||||
mSpinnerLabel.text = text;
|
||||
|
||||
mSpinnerContainer.Show();
|
||||
mSpinnerLabel.Show();
|
||||
mLoadingSpinner.Start();
|
||||
}
|
||||
|
||||
void HideProgress()
|
||||
{
|
||||
mLoadingSpinner.Stop();
|
||||
mSpinnerContainer.Hide();
|
||||
mSpinnerLabel.Hide();
|
||||
}
|
||||
|
||||
void UpdatePasswordEntries(bool bIsPasswordRequired)
|
||||
{
|
||||
if (!bIsPasswordRequired)
|
||||
{
|
||||
mPasswordTextField.Collapse();
|
||||
mUserTextField.SetEnabled(false);
|
||||
mUserTextField.value = Environment.UserName;
|
||||
return;
|
||||
}
|
||||
|
||||
mUserTextField.SetEnabled(true);
|
||||
mPasswordTextField.Show();
|
||||
mUserTextField.SelectAll();
|
||||
mUserTextField.FocusWorkaround();
|
||||
}
|
||||
|
||||
Button mConnectButton;
|
||||
Label mConnectedLabel;
|
||||
TextField mServerTextField;
|
||||
TextField mPasswordTextField;
|
||||
Toggle mUseSslToggle;
|
||||
LoadingSpinner mLoadingSpinner;
|
||||
Label mSpinnerLabel;
|
||||
VisualElement mSpinnerContainer;
|
||||
Button mCheckConnectionButton;
|
||||
Label mCredentialsLabel;
|
||||
Button mOkButton;
|
||||
Button mCancelButton;
|
||||
|
||||
SEIDWorkingMode mSEIDWorkingMode = SEIDWorkingMode.UPWorkingMode;
|
||||
|
||||
ConfigurationDialogUserAssistant mUserAssistant =
|
||||
new ConfigurationDialogUserAssistant();
|
||||
|
||||
IPlasticWebRestApi mRestApi;
|
||||
WelcomeView mWelcomeView;
|
||||
TextField mUserTextField;
|
||||
}
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c95121e1e2d89e648b9d0aed259caad9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user