public static void Open(string key, string value)
    {
        LocalizationEditItemWindow window = CreateInstance <LocalizationEditItemWindow>();

        window.titleContent = new GUIContent("Edit Item");
        window.ShowUtility();
        window.key    = key;
        window.oldKey = key;
        window.value  = value;
    }
    void OnGUI()
    {
        GUIStyle alignCenterStyle = new GUIStyle(GUI.skin.label)
        {
            alignment = TextAnchor.MiddleCenter
        };

        if (localizationData != null)
        {
            EditorGUILayout.BeginHorizontal("Box");
            EditorGUILayout.LabelField("Selected Language File: " + GetLanguageTagFromPath(openedFilePath), alignCenterStyle);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal("Box");

            EditorGUILayout.LabelField("Search: ", EditorStyles.boldLabel, GUILayout.MaxWidth(100));
            searchValue = EditorGUILayout.TextField(searchValue);
            if (GUILayout.Button("Add New Item", GUILayout.MaxWidth(100)))
            {
                LocalizationAddItemWindow.Open();
            }

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();
            DrawSeparator();
            EditorGUILayout.Space();

            if (searchValue == string.Empty && localizationData.items.Count > 0)
            {
                EditorGUILayout.BeginVertical();
                scroll = EditorGUILayout.BeginScrollView(scroll);

                foreach (LocalizationItem item in localizationData.items)
                {
                    GUILayout.BeginHorizontal("Box");

                    EditorGUILayout.LabelField(item.key, GUILayout.MinWidth(180));
                    EditorGUILayout.LabelField(item.value, GUILayout.MinWidth(180));
                    if (GUILayout.Button("Edit", GUILayout.MaxHeight(20), GUILayout.MaxWidth(50)))
                    {
                        LocalizationEditItemWindow.Open(item.key, item.value);
                    }
                    if (GUILayout.Button("Delete", GUILayout.MaxHeight(20), GUILayout.MaxWidth(50)))
                    {
                        LocalizationDeleteItemWindow.Open(item);
                        break;
                    }

                    GUILayout.EndHorizontal();
                }

                EditorGUILayout.EndScrollView();
                EditorGUILayout.EndVertical();
            }
            else if (searchValue != string.Empty && localizationData.items.Count > 0)
            {
                EditorGUILayout.BeginVertical();
                scroll = EditorGUILayout.BeginScrollView(scroll);

                foreach (LocalizationItem item in localizationData.items)
                {
                    if (item.key.ToLower().Contains(searchValue.ToLower()) || item.value.ToLower().Contains(searchValue.ToLower()))
                    {
                        GUILayout.BeginHorizontal("Box");

                        EditorGUILayout.LabelField(item.key, GUILayout.MinWidth(180));
                        EditorGUILayout.LabelField(item.value, GUILayout.MinWidth(180));
                        if (GUILayout.Button("Edit", GUILayout.MaxHeight(20), GUILayout.MaxWidth(50)))
                        {
                            LocalizationEditItemWindow.Open(item.key, item.value);
                        }
                        if (GUILayout.Button("Delete", GUILayout.MaxHeight(20), GUILayout.MaxWidth(50)))
                        {
                            LocalizationDeleteItemWindow.Open(item);
                            break;
                        }

                        GUILayout.EndHorizontal();
                    }
                }

                EditorGUILayout.EndScrollView();
                EditorGUILayout.EndVertical();
            }
        }

        EditorGUILayout.Space();
        GUILayout.Label("Localization File Settings", EditorStyles.boldLabel);
        DrawSeparator();

        GUILayout.BeginHorizontal();

        if (localizationData != null && GUILayout.Button("Save"))
        {
            SaveLocalizationData();
        }

        if (localizationData != null && GUILayout.Button("Save As"))
        {
            SaveAsLocalizationData();
        }

        if (GUILayout.Button("Load"))
        {
            LoadLocalizationData();
        }

        if (GUILayout.Button("Create New"))
        {
            CreateNewLocalizationData();
        }

        GUILayout.EndHorizontal();

        minSize = new Vector2(360, 500);
        maxSize = new Vector2(640, 500);
    }