using UnityEditor;

#if !UNITY_6000_3_OR_NEWER
using SplitterState = Unity.PlasticSCM.Editor.UnityInternals.UnityEditor.SplitterState;
#endif

namespace Unity.PlasticSCM.Editor.UI
{
    internal static class SplitterSettings
    {
        internal static float[] Load(
            string settingName,
            float[] defaultValue)
        {
            float leftValue = EditorPrefs.GetFloat(
                GetSettingKey(settingName, false),
                defaultValue[0]);

            float rightValue = EditorPrefs.GetFloat(
                GetSettingKey(settingName, true),
                defaultValue[1]);

            return new float [] { leftValue, rightValue };
        }

        internal static void Save(
            SplitterState splitterState,
            string settingName)
        {
            float[] relativeSizes = splitterState.relativeSizes;

            EditorPrefs.SetFloat(
                GetSettingKey(settingName, false),
                relativeSizes[0]);
            EditorPrefs.SetFloat(
                GetSettingKey(settingName, true),
                relativeSizes[1]);
        }

        static string GetSettingKey(string settingName, bool isRight)
        {
            return string.Format(
                settingName,
                PlayerSettings.productGUID,
                isRight ? RIGHT_SPLITTER_KEY_SUFFIX : LEFT_SPLITTER_KEY_SUFFIX);
        }

        static string LEFT_SPLITTER_KEY_SUFFIX = "LeftSplitter";
        static string RIGHT_SPLITTER_KEY_SUFFIX = "RightSplitter";
    }
}