| using UnityEngine; |
| using UnityEngine.UI; |
| using UnityEditor; |
| using UnityEditor.UI; |
| using UnityEditor.AnimatedValues; |
|
|
|
|
| namespace TMPro.EditorUtilities |
| { |
| [CanEditMultipleObjects] |
| [CustomEditor(typeof(TMP_InputField), true)] |
| public class TMP_InputFieldEditor : SelectableEditor |
| { |
| private struct m_foldout |
| { |
| public static bool textInput = true; |
| public static bool fontSettings = true; |
| public static bool extraSettings = true; |
| |
| |
| } |
|
|
| SerializedProperty m_TextViewport; |
| SerializedProperty m_TextComponent; |
| SerializedProperty m_Text; |
| SerializedProperty m_ContentType; |
| SerializedProperty m_LineType; |
| SerializedProperty m_LineLimit; |
| SerializedProperty m_InputType; |
| SerializedProperty m_CharacterValidation; |
| SerializedProperty m_InputValidator; |
| SerializedProperty m_RegexValue; |
| SerializedProperty m_KeyboardType; |
| SerializedProperty m_CharacterLimit; |
| SerializedProperty m_CaretBlinkRate; |
| SerializedProperty m_CaretWidth; |
| SerializedProperty m_CaretColor; |
| SerializedProperty m_CustomCaretColor; |
| SerializedProperty m_SelectionColor; |
| SerializedProperty m_HideMobileKeyboard; |
| SerializedProperty m_HideMobileInput; |
| SerializedProperty m_Placeholder; |
| SerializedProperty m_VerticalScrollbar; |
| SerializedProperty m_ScrollbarScrollSensitivity; |
| SerializedProperty m_OnValueChanged; |
| SerializedProperty m_OnEndEdit; |
| SerializedProperty m_OnSelect; |
| SerializedProperty m_OnDeselect; |
| SerializedProperty m_ReadOnly; |
| SerializedProperty m_RichText; |
| SerializedProperty m_RichTextEditingAllowed; |
| SerializedProperty m_ResetOnDeActivation; |
| SerializedProperty m_RestoreOriginalTextOnEscape; |
|
|
| SerializedProperty m_OnFocusSelectAll; |
| SerializedProperty m_GlobalPointSize; |
| SerializedProperty m_GlobalFontAsset; |
|
|
| AnimBool m_CustomColor; |
|
|
| |
|
|
| protected override void OnEnable() |
| { |
| base.OnEnable(); |
|
|
| m_TextViewport = serializedObject.FindProperty("m_TextViewport"); |
| m_TextComponent = serializedObject.FindProperty("m_TextComponent"); |
| m_Text = serializedObject.FindProperty("m_Text"); |
| m_ContentType = serializedObject.FindProperty("m_ContentType"); |
| m_LineType = serializedObject.FindProperty("m_LineType"); |
| m_LineLimit = serializedObject.FindProperty("m_LineLimit"); |
| m_InputType = serializedObject.FindProperty("m_InputType"); |
| m_CharacterValidation = serializedObject.FindProperty("m_CharacterValidation"); |
| m_InputValidator = serializedObject.FindProperty("m_InputValidator"); |
| m_RegexValue = serializedObject.FindProperty("m_RegexValue"); |
| m_KeyboardType = serializedObject.FindProperty("m_KeyboardType"); |
| m_CharacterLimit = serializedObject.FindProperty("m_CharacterLimit"); |
| m_CaretBlinkRate = serializedObject.FindProperty("m_CaretBlinkRate"); |
| m_CaretWidth = serializedObject.FindProperty("m_CaretWidth"); |
| m_CaretColor = serializedObject.FindProperty("m_CaretColor"); |
| m_CustomCaretColor = serializedObject.FindProperty("m_CustomCaretColor"); |
| m_SelectionColor = serializedObject.FindProperty("m_SelectionColor"); |
|
|
| m_HideMobileKeyboard = serializedObject.FindProperty("m_HideSoftKeyboard"); |
| m_HideMobileInput = serializedObject.FindProperty("m_HideMobileInput"); |
|
|
| m_Placeholder = serializedObject.FindProperty("m_Placeholder"); |
| m_VerticalScrollbar = serializedObject.FindProperty("m_VerticalScrollbar"); |
| m_ScrollbarScrollSensitivity = serializedObject.FindProperty("m_ScrollSensitivity"); |
|
|
| m_OnValueChanged = serializedObject.FindProperty("m_OnValueChanged"); |
| m_OnEndEdit = serializedObject.FindProperty("m_OnEndEdit"); |
| m_OnSelect = serializedObject.FindProperty("m_OnSelect"); |
| m_OnDeselect = serializedObject.FindProperty("m_OnDeselect"); |
| m_ReadOnly = serializedObject.FindProperty("m_ReadOnly"); |
| m_RichText = serializedObject.FindProperty("m_RichText"); |
| m_RichTextEditingAllowed = serializedObject.FindProperty("m_isRichTextEditingAllowed"); |
| m_ResetOnDeActivation = serializedObject.FindProperty("m_ResetOnDeActivation"); |
| m_RestoreOriginalTextOnEscape = serializedObject.FindProperty("m_RestoreOriginalTextOnEscape"); |
|
|
| m_OnFocusSelectAll = serializedObject.FindProperty("m_OnFocusSelectAll"); |
| m_GlobalPointSize = serializedObject.FindProperty("m_GlobalPointSize"); |
| m_GlobalFontAsset = serializedObject.FindProperty("m_GlobalFontAsset"); |
|
|
| m_CustomColor = new AnimBool(m_CustomCaretColor.boolValue); |
| m_CustomColor.valueChanged.AddListener(Repaint); |
| } |
|
|
| protected override void OnDisable() |
| { |
| base.OnDisable(); |
| m_CustomColor.valueChanged.RemoveListener(Repaint); |
| } |
|
|
| public override void OnInspectorGUI() |
| { |
| serializedObject.Update(); |
|
|
| base.OnInspectorGUI(); |
|
|
| EditorGUILayout.Space(); |
|
|
| EditorGUILayout.PropertyField(m_TextViewport); |
|
|
| EditorGUILayout.PropertyField(m_TextComponent); |
|
|
| TextMeshProUGUI text = null; |
| if (m_TextComponent != null && m_TextComponent.objectReferenceValue != null) |
| { |
| text = m_TextComponent.objectReferenceValue as TextMeshProUGUI; |
| |
| |
| |
| |
| } |
|
|
| EditorGUI.BeginDisabledGroup(m_TextComponent == null || m_TextComponent.objectReferenceValue == null); |
|
|
| |
| EditorGUILayout.PropertyField(m_Text); |
|
|
| |
| #region INPUT FIELD SETTINGS |
|
|
| m_foldout.fontSettings = EditorGUILayout.Foldout(m_foldout.fontSettings, "Input Field Settings", true, TMP_UIStyleManager.boldFoldout); |
|
|
| if (m_foldout.fontSettings) |
| { |
| EditorGUI.indentLevel++; |
| EditorGUI.BeginChangeCheck(); |
| EditorGUILayout.PropertyField(m_GlobalFontAsset, new GUIContent("Font Asset", "Set the Font Asset for both Placeholder and Input Field text object.")); |
| if (EditorGUI.EndChangeCheck()) |
| { |
| TMP_InputField inputField = target as TMP_InputField; |
| inputField.SetGlobalFontAsset(m_GlobalFontAsset.objectReferenceValue as TMP_FontAsset); |
| } |
|
|
|
|
| EditorGUI.BeginChangeCheck(); |
| EditorGUILayout.PropertyField(m_GlobalPointSize, new GUIContent("Point Size", "Set the point size of both Placeholder and Input Field text object.")); |
| if (EditorGUI.EndChangeCheck()) |
| { |
| TMP_InputField inputField = target as TMP_InputField; |
| inputField.SetGlobalPointSize(m_GlobalPointSize.floatValue); |
| } |
|
|
| EditorGUI.BeginChangeCheck(); |
| EditorGUILayout.PropertyField(m_CharacterLimit); |
|
|
| EditorGUILayout.Space(); |
|
|
| EditorGUILayout.PropertyField(m_ContentType); |
| if (!m_ContentType.hasMultipleDifferentValues) |
| { |
| EditorGUI.indentLevel++; |
|
|
| if (m_ContentType.enumValueIndex == (int)TMP_InputField.ContentType.Standard || |
| m_ContentType.enumValueIndex == (int)TMP_InputField.ContentType.Autocorrected || |
| m_ContentType.enumValueIndex == (int)TMP_InputField.ContentType.Custom) |
| { |
| EditorGUI.BeginChangeCheck(); |
| EditorGUILayout.PropertyField(m_LineType); |
| if (EditorGUI.EndChangeCheck()) |
| { |
| if (text != null) |
| { |
| if (m_LineType.enumValueIndex == (int)TMP_InputField.LineType.SingleLine) |
| text.enableWordWrapping = false; |
| else |
| { |
| text.enableWordWrapping = true; |
| } |
| } |
| } |
|
|
| if (m_LineType.enumValueIndex != (int)TMP_InputField.LineType.SingleLine) |
| { |
| EditorGUILayout.PropertyField(m_LineLimit); |
| } |
| } |
|
|
| if (m_ContentType.enumValueIndex == (int)TMP_InputField.ContentType.Custom) |
| { |
| EditorGUILayout.PropertyField(m_InputType); |
| EditorGUILayout.PropertyField(m_KeyboardType); |
| EditorGUILayout.PropertyField(m_CharacterValidation); |
| if (m_CharacterValidation.enumValueIndex == (int)TMP_InputField.CharacterValidation.Regex) |
| { |
| EditorGUILayout.PropertyField(m_RegexValue); |
| } |
| else if (m_CharacterValidation.enumValueIndex == (int)TMP_InputField.CharacterValidation.CustomValidator) |
| { |
| EditorGUILayout.PropertyField(m_InputValidator); |
| } |
| } |
|
|
| EditorGUI.indentLevel--; |
| } |
|
|
| EditorGUILayout.Space(); |
|
|
| EditorGUILayout.PropertyField(m_Placeholder); |
| EditorGUILayout.PropertyField(m_VerticalScrollbar); |
|
|
| if (m_VerticalScrollbar.objectReferenceValue != null) |
| EditorGUILayout.PropertyField(m_ScrollbarScrollSensitivity); |
|
|
| EditorGUILayout.PropertyField(m_CaretBlinkRate); |
| EditorGUILayout.PropertyField(m_CaretWidth); |
|
|
| EditorGUILayout.PropertyField(m_CustomCaretColor); |
|
|
| m_CustomColor.target = m_CustomCaretColor.boolValue; |
|
|
| if (EditorGUILayout.BeginFadeGroup(m_CustomColor.faded)) |
| { |
| EditorGUILayout.PropertyField(m_CaretColor); |
| } |
| EditorGUILayout.EndFadeGroup(); |
|
|
| EditorGUILayout.PropertyField(m_SelectionColor); |
|
|
| EditorGUI.indentLevel--; |
| } |
| #endregion |
|
|
|
|
| |
| #region CONTROL SETTINGS |
| m_foldout.extraSettings = EditorGUILayout.Foldout(m_foldout.extraSettings, "Control Settings", true, TMP_UIStyleManager.boldFoldout); |
|
|
| if (m_foldout.extraSettings) |
| { |
| EditorGUI.indentLevel++; |
|
|
| EditorGUILayout.PropertyField(m_OnFocusSelectAll, new GUIContent("OnFocus - Select All", "Should all the text be selected when the Input Field is selected.")); |
| EditorGUILayout.PropertyField(m_ResetOnDeActivation, new GUIContent("Reset On DeActivation", "Should the Text and Caret position be reset when Input Field is DeActivated.")); |
| EditorGUILayout.PropertyField(m_RestoreOriginalTextOnEscape, new GUIContent("Restore On ESC Key", "Should the original text be restored when pressing ESC.")); |
| EditorGUILayout.PropertyField(m_HideMobileKeyboard, new GUIContent("Hide Soft Keyboard", "Controls the visibility of the mobile virtual keyboard.")); |
| EditorGUILayout.PropertyField(m_HideMobileInput, new GUIContent("Hide Mobile Input", "Controls the visibility of the editable text field above the mobile virtual keyboard.")); |
| EditorGUILayout.PropertyField(m_ReadOnly); |
| EditorGUILayout.PropertyField(m_RichText); |
| EditorGUILayout.PropertyField(m_RichTextEditingAllowed, new GUIContent("Allow Rich Text Editing")); |
|
|
| EditorGUI.indentLevel--; |
| } |
| #endregion |
|
|
|
|
| EditorGUILayout.Space(); |
|
|
| EditorGUILayout.PropertyField(m_OnValueChanged); |
| EditorGUILayout.PropertyField(m_OnEndEdit); |
| EditorGUILayout.PropertyField(m_OnSelect); |
| EditorGUILayout.PropertyField(m_OnDeselect); |
|
|
| EditorGUI.EndDisabledGroup(); |
|
|
| serializedObject.ApplyModifiedProperties(); |
| } |
| } |
| } |
|
|