void LoadData()
    {
        collectibleData          = null;
        selectedCollectibleIndex = -1;

        gameDB.InitLocalDB();
        allCollectibles = gameDB.LoadConfig <CollectibleConfigData>() as List <CollectibleConfigData>;
        //		allCategories = gameDB.LoadConfig<CategoryConfigData>() as List<CategoryConfigData>;
        InitCollectibleConfigNames();
        //		InitCategoryNames();
        allItemGroups = gameDB.LoadConfig <ItemGroupConfigData>() as List <ItemGroupConfigData>;
        InitItemGroupConfigNames();
    }
    bool DrawLoadService()
    {
        contentColor    = GUI.contentColor;
        backgroundColor = GUI.backgroundColor;

        EditorGUILayout.BeginHorizontal();
        GUI.backgroundColor = EditorHelpers.orangeColor;
        if (GUILayout.Button("Load", GUILayout.Width(60)))
        {
            LoadData();
        }

        GUI.backgroundColor = EditorHelpers.yellowColor;
        if (GUILayout.Button("New", GUILayout.Width(60)))
        {
            CollectibleConfigData newData = new CollectibleConfigData();
            newData.id   = "New Collectible " + newCollectibleNameSufix.ToString();
            newData.name = newData.id;
            ++newCollectibleNameSufix;
            allCollectibles.Insert(0, newData);
            InitCollectibleConfigNames();
            selectedCollectibleIndex = 0;
            collectibleData          = newData;
            ShowNotification(new GUIContent("New Collectible added."));
            dirty = true;
        }
        GUI.backgroundColor = EditorHelpers.greenColor;
        if (GUILayout.Button("Save", GUILayout.Width(60)))
        {
            Save();
        }
        GUI.backgroundColor = backgroundColor;
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.Separator();
        if (allCollectibles == null)
        {
            EditorGUILayout.HelpBox("It seems that there is no data... try reopening the editor.", MessageType.Error);
            return(false);
        }
        if (allCollectibles.Count > 0)
        {
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Collectibles:", GUILayout.Width(100));
            int oldIntValue = selectedCollectibleIndex;
            selectedCollectibleIndex = EditorGUILayout.Popup(oldIntValue, collectibleConfigNames, GUILayout.Width(250));
            if (oldIntValue != selectedCollectibleIndex)
            {
                collectibleData = allCollectibles[selectedCollectibleIndex];
            }
            if (collectibleData != null)
            {
                GUI.backgroundColor = EditorHelpers.redColor;
                if (GUILayout.Button("Delete", GUILayout.Width(70)))
                {
                    if (EditorUtility.DisplayDialog("Deleting Collectible!", "Are you sure you want to delete collectible '" + collectibleData.id + "'?", "Yes, Delete it.", "No!"))
                    {
                        gameDB.DeleteConfig(collectibleData.GetTableName(), collectibleData.id);
                        allCollectibles.Remove(collectibleData);
                        InitCollectibleConfigNames();
                        selectedCollectibleIndex = -1;
                        collectibleData          = null;
                        ShowNotification(new GUIContent("Collectible deleted."));
                        return(false);
                    }
                }
                GUI.backgroundColor = EditorHelpers.blueColor;
                if (GUILayout.Button("Duplicate", GUILayout.Width(100)))
                {
                    CollectibleConfigData newData = collectibleData.Clone() as CollectibleConfigData;
                    newData.id = collectibleData.id + "(Clone)";
                    ++newCollectibleNameSufix;
                    allCollectibles.Insert(0, newData);
                    InitCollectibleConfigNames();
                    selectedCollectibleIndex = 0;
                    collectibleData          = newData;
                    ShowNotification(new GUIContent("Collectible duplicated."));
                    dirty = true;
                }
                GUI.backgroundColor = backgroundColor;
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.Separator();
        }

        return(collectibleData != null);
    }