Net-Game/Library/PackageCache/com.unity.collab-proxy@50ac96531b63/Editor/Views/Branch/Dialogs/RenameBranchDialog.cs
2025-03-28 08:33:16 -04:00

164 lines
4.4 KiB
C#

using UnityEditor;
using UnityEngine;
using Codice.CM.Common;
using PlasticGui;
using PlasticGui.WorkspaceWindow.QueryViews.Branches;
using Unity.PlasticSCM.Editor.UI;
using Unity.PlasticSCM.Editor.UI.Progress;
namespace Unity.PlasticSCM.Editor.Views.Branches.Dialogs
{
internal class RenameBranchDialog : PlasticDialog
{
protected override Rect DefaultRect
{
get
{
var baseRect = base.DefaultRect;
return new Rect(baseRect.x, baseRect.y, 500, 200);
}
}
internal static BranchRenameData GetBranchRenameData(
RepositorySpec repSpec,
BranchInfo branchInfo,
EditorWindow parentWindow)
{
RenameBranchDialog dialog = Create(
repSpec,
branchInfo,
new ProgressControlsForDialogs());
ResponseType dialogResult = dialog.RunModal(parentWindow);
BranchRenameData result = dialog.BuildRenameData();
result.Result = dialogResult == ResponseType.Ok;
return result;
}
static RenameBranchDialog Create(
RepositorySpec repSpec,
BranchInfo branchInfo,
ProgressControlsForDialogs progressControls)
{
var instance = CreateInstance<RenameBranchDialog>();
instance.mRepSpec = repSpec;
instance.mBranchInfo = branchInfo;
instance.mBranchName = BranchRenameUserInfo.GetShortBranchName(branchInfo.BranchName);
instance.mTitle = PlasticLocalization.GetString(
PlasticLocalization.Name.RenameBranchTitle);
instance.mProgressControls = progressControls;
return instance;
}
protected override string GetTitle()
{
return mTitle;
}
protected override void OnModalGUI()
{
Title(mTitle);
GUILayout.Space(10f);
DoInputArea();
GUILayout.Space(10f);
DrawProgressForDialogs.For(mProgressControls.ProgressData);
GUILayout.Space(10f);
DoButtonsArea();
}
void DoInputArea()
{
using (new EditorGUILayout.HorizontalScope())
{
GUILayout.Label(
PlasticLocalization.GetString(PlasticLocalization.Name.NewName),
GUILayout.ExpandWidth(false));
GUILayout.Space(10f);
GUI.SetNextControlName(RENAME_BRANCH_TEXTAREA_NAME);
mBranchName = GUILayout.TextField(
mBranchName,
GUILayout.ExpandWidth(true));
if (!mTextAreaFocused)
{
EditorGUI.FocusTextInControl(RENAME_BRANCH_TEXTAREA_NAME);
mTextAreaFocused = true;
}
}
}
void DoButtonsArea()
{
using (new EditorGUILayout.HorizontalScope())
{
GUILayout.FlexibleSpace();
if (Application.platform == RuntimePlatform.WindowsEditor)
{
DoOkButton();
DoCancelButton();
return;
}
DoCancelButton();
DoOkButton();
}
}
void DoOkButton()
{
if (!NormalButton(PlasticLocalization.GetString(
PlasticLocalization.Name.RenameButton)))
return;
OkButtonWithValidationAction();
}
void DoCancelButton()
{
if (!NormalButton(PlasticLocalization.GetString(
PlasticLocalization.Name.CancelButton)))
return;
CancelButtonAction();
}
void OkButtonWithValidationAction()
{
BranchRenameValidation.AsyncValidation(
BuildRenameData(),
this,
mProgressControls);
}
BranchRenameData BuildRenameData()
{
return new BranchRenameData(mRepSpec, mBranchInfo, mBranchName);
}
string mTitle;
string mBranchName;
bool mTextAreaFocused;
RepositorySpec mRepSpec;
BranchInfo mBranchInfo;
ProgressControlsForDialogs mProgressControls;
const string RENAME_BRANCH_TEXTAREA_NAME = "rename_branch_textarea";
}
}