using UnityEngine;

namespace Jovian.InspectorTools {
    public class SuffixAttribute : PropertyAttribute {
        public readonly string suffix;

        public SuffixAttribute(string suffix) => this.suffix = suffix;
    }
}

#if UNITY_EDITOR
namespace Jovian.InspectorTools.Internal {
    using UnityEditor;

    [CustomPropertyDrawer(typeof(SuffixAttribute))]
    public class SuffixDrawer : PropertyDrawer {
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
            var suffix = new GUIContent(((SuffixAttribute)attribute).suffix);
            var suffixSize = GUI.skin.label.CalcSize(suffix);
            suffixSize.x += GUI.skin.label.margin.left;
            var fieldPosition = position;
            fieldPosition.width -= suffixSize.x;
            var suffixPosition = position;
            suffixPosition.x += fieldPosition.width + GUI.skin.label.margin.left;
            suffixPosition.width = suffixSize.x;
            EditorGUI.PropertyField(fieldPosition, property, label);
            var enabled = GUI.enabled;
            GUI.enabled = false;
            GUI.Label(suffixPosition, suffix);
            GUI.enabled = enabled;
        }
    }
}
#endif