using UnityEditor;
using Codice.CM.Common;
using PlasticGui;
using PlasticGui.WorkspaceWindow.Attributes;
using Unity.PlasticSCM.Editor.UI;
namespace Unity.PlasticSCM.Editor.Views.Attributes
{
internal class AttributeDataDialog : PlasticDialog
{
internal static ApplyAttributeData BuildForApplyAttribute(
RepositorySpec repSpec, IWorkspaceWindow workspaceWindow, EditorWindow parentWindow)
{
AttributeDataDialog dialog = Create(null, repSpec, workspaceWindow);
ResponseType dialogResult = dialog.RunModal(parentWindow);
ApplyAttributeData result = new ApplyAttributeData(
dialog.mApplyAttributeView.SelectedAttributeName,
dialog.mApplyAttributeView.SelectedAttributeValue);
result.Result = dialogResult == ResponseType.Ok;
return result;
}
internal static ApplyAttributeData BuildForEditAttributeRealization(
AttributeRealizationInfo attribute,
RepositorySpec repSpec,
IWorkspaceWindow workspaceWindow,
EditorWindow parentWindow)
{
AttributeDataDialog dialog = Create(attribute, repSpec, workspaceWindow);
ResponseType dialogResult = dialog.RunModal(parentWindow);
ApplyAttributeData result = new ApplyAttributeData(
dialog.mApplyAttributeView.SelectedAttributeName,
dialog.mApplyAttributeView.SelectedAttributeValue);
result.Result = dialogResult == ResponseType.Ok;
return result;
}
static AttributeDataDialog Create(
AttributeRealizationInfo attribute,
RepositorySpec repSpec,
IWorkspaceWindow workspaceWindow)
{
var instance = CreateInstance<AttributeDataDialog>();
instance.mRepSpec = repSpec;
instance.mIsEditingAttribute = attribute != null;
instance.mApplyAttributeView = new ApplyAttributeView(
repSpec, instance.mProgressControls, instance);
if (attribute != null)
{
instance.mApplyAttributeView.SetAttributeToEdit(attribute);
return instance;
}
instance.mCreateAttributeView = new CreateAttributeView(
repSpec,
workspaceWindow,
instance.mApplyAttributeView,
instance.mProgressControls,
instance);
ApplyAttributeDialogOperations.LoadAttributes(
repSpec, instance.mProgressControls, instance.mApplyAttributeView);
instance.ToggleCreateAttributeView(false);
return instance;
}
protected override string GetTitle()
{
if (mShowCreateAttributeView)
return PlasticLocalization.Name.CreateAttribute.GetString();
if (mIsEditingAttribute)
return PlasticLocalization.Name.EditAttributeTitle.GetString();
return PlasticLocalization.Name.ApplyAttribute.GetString();
}
protected override string GetExplanation()
{
if (mShowCreateAttributeView)
return PlasticLocalization.Name.CreateAttributeExplanation.GetString(mRepSpec);
return PlasticLocalization.Name.ApplyAttributeExplanation.GetString();
}
internal override void OkButtonAction()
{
if (mShowCreateAttributeView)
{
mCreateAttributeView.OkButtonAction();
return;
}
mApplyAttributeView.OkButtonAction();
}
internal override void CancelButtonAction()
{
if (mShowCreateAttributeView)
{
ToggleCreateAttributeView(false);
return;
}
base.CancelButtonAction();
}
internal void ToggleCreateAttributeView(bool show)
{
mShowCreateAttributeView = show;
mOkButtonText = mShowCreateAttributeView ?
PlasticLocalization.Name.CreateButton.GetString() :
PlasticLocalization.Name.ApplyButton.GetString();
mCancelButtonText = mShowCreateAttributeView ?
PlasticLocalization.Name.BackButton.GetString() :
PlasticLocalization.Name.CancelButton.GetString();
UnityInternals.UnityEditor.EditorGUI.activeEditor?.EndEditing();
}
protected override void DoComponentsArea()
{
// HACK: GetTitle is not called once the dialog is shown
titleContent.text = GetTitle();
if (mShowCreateAttributeView)
{
mCreateAttributeView.OnGUI();
return;
}
mApplyAttributeView.OnGUI();
}
ApplyAttributeView mApplyAttributeView;
CreateAttributeView mCreateAttributeView;
RepositorySpec mRepSpec;
bool mIsEditingAttribute;
bool mShowCreateAttributeView;
}
}