using UnityEditor;
using UnityEngine;
using Codice.CM.Common;
using PlasticGui;
using PlasticGui.WorkspaceWindow.Attributes;
using PlasticGui.WorkspaceWindow.QueryViews.Attributes;
using Unity.PlasticSCM.Editor.UI;
#if !UNITY_6000_3_OR_NEWER
using EditorGUI = Unity.PlasticSCM.Editor.UnityInternals.UnityEditor.EditorGUI;
#endif
namespace Unity.PlasticSCM.Editor.Views.Attributes
{
internal class CreateAttributeView : IPlasticDialogCloser
{
internal CreateAttributeView(
RepositorySpec repSpec,
IWorkspaceWindow workspaceWindow,
ApplyAttributeDialogOperations.IApplyAttributeDialog applyAttributeView,
IProgressControls progressControls,
AttributeDataDialog parentWindow)
{
mRepSpec = repSpec;
mWorkspaceWindow = workspaceWindow;
mApplyAttributeView = applyAttributeView;
mProgressControls = progressControls;
mParentWindow = parentWindow;
}
void IPlasticDialogCloser.CloseDialog()
{
mParentWindow.ToggleCreateAttributeView(false);
ApplyAttributeDialogOperations.CreateAttribute(
BuildCreationData(),
mWorkspaceWindow,
mProgressControls,
mApplyAttributeView);
}
internal void OkButtonAction()
{
AttributeDataValidation.AsyncValidation(
BuildCreationData(),
this,
mProgressControls);
}
AttributeData BuildCreationData()
{
return new AttributeData(
mRepSpec,
null,
mAttributeName,
mComments);
}
internal void OnGUI()
{
using (new EditorGUILayout.VerticalScope())
{
using (new EditorGUILayout.HorizontalScope())
{
GUILayout.Label(
PlasticLocalization.Name.AttributeNameLabel.GetString(),
GUILayout.Width(HORIZONTAL_ALIGNMENT));
Rect nameRect = GUILayoutUtility.GetRect(
new GUIContent(string.Empty),
EditorStyles.textField,
GUILayout.Width(ENTRIES_WIDTH));
GUI.SetNextControlName(NAME_FIELD_CONTROL_NAME);
mAttributeName = UnityEditor.EditorGUI.TextField(nameRect, mAttributeName);
if (!mWasNameFieldFocused)
{
UnityEditor.EditorGUI.FocusTextInControl(NAME_FIELD_CONTROL_NAME);
mWasNameFieldFocused = true;
}
}
GUILayout.Space(5);
using (new EditorGUILayout.HorizontalScope())
{
using (new EditorGUILayout.VerticalScope(GUILayout.Width(HORIZONTAL_ALIGNMENT)))
{
GUILayout.Space(49);
GUILayout.Label(
PlasticLocalization.Name.AttributeCommentLabel.GetString(),
GUILayout.Width(HORIZONTAL_ALIGNMENT));
}
using (new EditorGUILayout.VerticalScope())
{
Rect commentRect = GUILayoutUtility.GetRect(
new GUIContent(string.Empty),
EditorStyles.textArea,
GUILayout.Height(COMMENTS_HEIGHT),
GUILayout.Width(ENTRIES_WIDTH));
mComments = EditorGUI.ScrollableTextAreaInternal(
commentRect,
mComments,
ref mScrollPosition,
EditorStyles.textArea);
GUILayout.Space(5);
GUILayout.Label(
PlasticLocalization.Name.AttributeHelpLabel.GetString(),
UnityStyles.Dialog.MiniLabelText);
}
}
}
}
string mAttributeName = string.Empty;
string mComments = string.Empty;
Vector2 mScrollPosition;
bool mWasNameFieldFocused;
readonly RepositorySpec mRepSpec;
readonly IWorkspaceWindow mWorkspaceWindow;
readonly ApplyAttributeDialogOperations.IApplyAttributeDialog mApplyAttributeView;
readonly IProgressControls mProgressControls;
readonly AttributeDataDialog mParentWindow;
const int HORIZONTAL_ALIGNMENT = 100;
const int COMMENTS_HEIGHT = 200;
const int ENTRIES_WIDTH = 350;
const string NAME_FIELD_CONTROL_NAME = "CreateAttributeNameField";
}
}