using UnityEditor; using UnityEngine; using PlasticGui; using Unity.PlasticSCM.Editor.UI; namespace Unity.PlasticSCM.Editor.CloudDrive.Workspaces.DirectoryContent { internal class DeleteWorkspaceDialog : PlasticDialog { protected override Rect DefaultRect { get { var baseRect = base.DefaultRect; return new Rect(baseRect.x, baseRect.y, 500, 200); } } internal static bool UserConfirmsDelete( string workspaceName, EditorWindow parentWindow) { DeleteWorkspaceDialog dialog = Create(workspaceName); ResponseType dialogResult = dialog.RunModal(parentWindow); return dialogResult == ResponseType.Ok; } static DeleteWorkspaceDialog Create(string workspaceName) { var instance = CreateInstance(); instance.mWorkspaceName = workspaceName; instance.mConfirmationText = string.Empty; instance.mEnterKeyAction = instance.OkButtonAction; instance.mEscapeKeyAction = instance.CancelButtonAction; return instance; } protected override string GetTitle() { return PlasticLocalization.Name.DeleteCloudDriveTitle.GetString(); } protected override void DoComponentsArea() { DoWarningArea(); GUILayout.Space(10f); DoConfirmationArea(); } void DoWarningArea() { using (new EditorGUILayout.VerticalScope()) { EditorGUILayout.LabelField( string.Format(PlasticLocalization.Name.DeleteCloudDriveWarningText.GetString(), mWorkspaceName), EditorStyles.wordWrappedLabel); } } void DoConfirmationArea() { using (new EditorGUILayout.HorizontalScope()) { string confirmText = PlasticLocalization.Name.DeleteCloudDriveConfirmText.GetString(); EditorGUILayout.LabelField(confirmText, GUILayout.Width(220)); GUILayout.Space(10f); GUI.SetNextControlName(CONFIRMATION_TEXTAREA_NAME); mConfirmationText = GUILayout.TextField( mConfirmationText, GUILayout.ExpandWidth(true)); if (!mTextAreaFocused) { EditorGUI.FocusTextInControl(CONFIRMATION_TEXTAREA_NAME); mTextAreaFocused = true; } } } protected override void DoOkButton() { using (new GuiEnabled(mWorkspaceName == mConfirmationText)) { if (!NormalButton(PlasticLocalization.Name.DeleteButton.GetString())) return; OkButtonAction(); } } internal override void OkButtonAction() { if (mWorkspaceName != mConfirmationText) return; base.OkButtonAction(); } bool mTextAreaFocused; string mWorkspaceName; string mConfirmationText; const string CONFIRMATION_TEXTAREA_NAME = "confirmation_textarea"; } }