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(); 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; } }