void PopulateEdit(PListDictionary dic)
    {
        ResetEntry();
        _name               = dic.StringValue(DISPLAY_NAME_KEY);
        _setting            = dic.StringValue(SETTING_KEY);
        _isValidSettingName = ValidateSettingString(_setting);
        _groupIndex         = System.Array.IndexOf(_groups, dic.StringValue(GROUP_KEY));

        if (_groupIndex < 0)
        {
            _groupIndex = 0;
        }

        _entryType = (SettingType)System.Enum.Parse(typeof(SettingType), dic.StringValue(TYPE_KEY));

        switch (_entryType)
        {
        case SettingType.Bool:
            _boolDefaultValue = dic.BoolValue(VALUE_KEY);
            break;

        case SettingType.Enum:
            var valDic = dic.DictionaryValue(VALUE_KEY);

            if (valDic != null)
            {
                foreach (var key in valDic.Keys)
                {
                    _enumValues[key] = valDic.StringValue(key);
                }
            }

            var defaultIndex = dic.IntValue(DEFAULT_INDEX);
            _defaultEnum = _enumValues.Keys.ToList()[defaultIndex];
            break;

        case SettingType.String:
            _stringDefaultValue = dic.StringValue(VALUE_KEY);
            _isPath             = dic.BoolValue(PATH_KEY);
            break;

        case SettingType.Array:
        case SettingType.StringList:
            _isInherit = dic.BoolValue(INHERIT_KEY);
            _isPath    = dic.BoolValue(PATH_KEY);
            break;

        default:
            break;
        }
    }
    void DrawEnumEntry(PListDictionary dic)
    {
        var enumDic = dic.DictionaryValue(VALUE_KEY);

        if (enumDic == null)
        {
            EditorGUILayout.LabelField("NO VALUES DEFINED", GUILayout.MaxWidth(600));
        }
        else
        {
            List <string> entries = new List <string>();

            foreach (var kvp in enumDic)
            {
                entries.Add(kvp.Key + " | " + kvp.Value);
            }

            int selectedIndex = dic.IntValue(DEFAULT_INDEX);
            EditorGUILayout.Popup(selectedIndex, entries.ToArray(), GUILayout.MaxWidth(600));
        }
    }