﻿using UnityEditor;
using UnityEngine;

namespace JasonStorey
{
    public static class EditorTools
    {
        public static bool Button(string label) => GUILayout.Button(label);
        
        #region Style

       public const string BOXSTYLE_A = "HelpBox";
       public const string BOXSTYLE_B = "GroupBox";
       public static void StartBox(string style = BOXSTYLE_B) => EditorGUILayout.BeginVertical(style);
       public static  void EndBox() => EditorGUILayout.EndVertical();

        public static void DrawLine(Color col, float yOffset = 0, float height = 4)
        {
            var r = Rect;
            r.height = height;
            r.y += yOffset;
            EditorGUI.DrawRect(r, col);
        }

        public static void Divider(Color color, float yOffset = 5, float height = 4)
        {
            Space();
            DrawLine(color, yOffset, height);
            Space();
        }

        #endregion
        public static void Label(string lbl) => EditorGUILayout.LabelField(lbl);
        public static void Header(string lbl) => Header(lbl,  EditorStyles.boldLabel);
        public static void Header(string lbl,GUIStyle style) => EditorGUILayout.LabelField(lbl,style);

        public static Rect Rect => GUILayoutUtility.GetLastRect();
        public static void Space(float width) => EditorGUILayout.Space(width);
        public static void Space() => EditorGUILayout.Space();
        public static void Field(string fieldName,SerializedObject serializedObject)
        {
            if (string.IsNullOrWhiteSpace(fieldName))
            {
                Error("Field Name Can't Be Blank");
                return;
            }

            var field = serializedObject.FindProperty(fieldName);
            if (field != null)
                EditorGUILayout.PropertyField(serializedObject.FindProperty(fieldName));
            else Error($"{fieldName.ToUpper()} not found");
        }
     
        public static void Error(string message) => EditorGUILayout.HelpBox(message, MessageType.Error);

    }
}