// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 using UnityEditor; using UnityEngine; namespace AmazonGameLift.Editor { /// /// A class to draw some common form field controls, with optional tooltips. /// internal class ControlDrawer { public void DrawSeparator() { GUILayout.Space(10f); EditorGUILayout.LabelField(string.Empty, GUI.skin.horizontalSlider); } public string DrawTextField(string label, string value, string tooltip = null) { using (new EditorGUILayout.HorizontalScope()) { value = EditorGUILayout.TextField(new GUIContent(label, tooltip), value); } return value; } public string DrawPasswordField(string label, string value, string tooltip = null) { using (new EditorGUILayout.HorizontalScope()) { value = EditorGUILayout.PasswordField(new GUIContent(label, tooltip), value); } return value; } public int DrawIntField(string label, int value, string tooltip = null) { using (new EditorGUILayout.HorizontalScope()) { value = EditorGUILayout.IntField(new GUIContent(label, tooltip), value); } return value; } public int DrawPopup(string label, int selectedIndex, string[] displayedOptions, string tooltip = null) { return EditorGUILayout.Popup(new GUIContent(label, tooltip), selectedIndex, displayedOptions); } public string DrawFilePathField(string label, string value, string extension, string fileDialogTitle, string tooltip = null) { using (new EditorGUILayout.HorizontalScope()) { value = EditorGUILayout.TextField(new GUIContent(label, tooltip), value); if (GUILayout.Button("...", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false))) { value = EditorUtility.OpenFilePanel(fileDialogTitle, Application.dataPath, extension); GUI.FocusControl(null); } } return value; } public string DrawFolderPathField(string label, string value, string defaultName, string folderDialogTitle, string tooltip = null) { using (new EditorGUILayout.HorizontalScope()) { value = EditorGUILayout.TextField(new GUIContent(label, tooltip), value); if (GUILayout.Button("...", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false))) { value = EditorUtility.OpenFolderPanel(folderDialogTitle, Application.dataPath, defaultName); GUI.FocusControl(null); } } return value; } public void DrawReadOnlyText(string label, string value, string tooltip = null) { using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.PrefixLabel(new GUIContent(label, tooltip)); EditorGUILayout.SelectableLabel(value, GUILayout.Height(EditorGUIUtility.singleLineHeight)); } } /// /// Returns total height. /// public float DrawReadOnlyTextWrapped(string label, string value, string tooltip = null) { var scope = new EditorGUILayout.HorizontalScope(); using (scope) { EditorGUILayout.PrefixLabel(new GUIContent(label, tooltip)); EditorGUILayout.SelectableLabel(value, EditorStyles.wordWrappedLabel); } return scope.rect.height; } } }