private void EditItem(object obj)
        {
            TreeViewItem     item             = idItems[(int)obj];
            ItemEditorWindow itemEditorWindow = ItemEditorWindow.OpenEdit(item.displayName);

            itemEditorWindow.titleContent = new GUIContent("Edit Item");
            string oldKey = item.displayName;

            itemEditorWindow.onFinished = (newKey, values) =>
            {
                if (newKey == oldKey || !LocalizationEditorWindow.Current.DataTable.ContainsKey(newKey))
                {
                    itemEditorWindow.Close();
                    LocalizationEditorWindow.Current.EditItem(oldKey, newKey, values);
                    item.displayName = newKey;
                    (item as LanguageTreeViewItem).values = values;
                }
                else if (EditorUtility.DisplayDialog("Warning", $"已经包含名为[{newKey}]的Key,是否替换?", "Yes", "No"))
                {
                    itemEditorWindow.Close();
                    LocalizationEditorWindow.Current.EditItem(oldKey, newKey, values);
                    Reload();
                    LocalizationEditorWindow.Current.Focus();
                }
            };
        }
        public void AddItem()
        {
            ItemEditorWindow itemEditorWindow = ItemEditorWindow.Open();

            itemEditorWindow.titleContent = new GUIContent("Add Item");
            itemEditorWindow.onFinished   = (key, values) =>
            {
                if (string.IsNullOrEmpty(key))
                {
                    EditorUtility.DisplayDialog("Warning", "key不能为空", "OK");
                    LocalizationEditorWindow.Current.Focus();
                    return;
                }

                if (!LocalizationEditorWindow.Current.DataTable.ContainsKey(key))
                {
                    LocalizationEditorWindow.Current.AddItem(key, values);
                    Reload();
                }
                else if (EditorUtility.DisplayDialog("Warning", $"已经包含名为[{key}]的Key,是否替换?", "Yes", "No"))
                {
                    LocalizationEditorWindow.Current.AddItem(key, values);
                    LanguageTreeViewItem targetItem = keyItems[key] as LanguageTreeViewItem;
                    targetItem.values = values;
                    LocalizationEditorWindow.Current.Focus();
                }
            };
        }
        private void Paste(object obj)
        {
            TreeViewItem     item             = obj as TreeViewItem;
            ItemEditorWindow itemEditorWindow = ItemEditorWindow.OpenEdit(item.displayName);

            itemEditorWindow.titleContent = new GUIContent("Add Item");
            itemEditorWindow.onFinished   = (key, values) =>
            {
                if (string.IsNullOrEmpty(key))
                {
                    EditorUtility.DisplayDialog("Warning", "key不能为空", "OK");
                    LocalizationEditorWindow.Current.Focus();
                    return;
                }

                if (!LocalizationEditorWindow.Current.DataTable.ContainsKey(key))
                {
                    LocalizationEditorWindow.Current.AddItem(key, values);
                    LocalizationEditorWindow.Current.treeView.Reload();
                }
                else if (EditorUtility.DisplayDialog("Warning", $"已经包含名为[{key}]的Key,是否替换?", "Yes", "No"))
                {
                    LocalizationEditorWindow.Current.AddItem(key, values);
                    LocalizationEditorWindow.Current.treeView.Reload();
                    LocalizationEditorWindow.Current.Focus();
                }
            };
        }
        public static ItemEditorWindow OpenEdit(string key)
        {
            ItemEditorWindow window = ScriptableObject.CreateInstance <ItemEditorWindow>();

            Vector2 mouse = GUIUtility.GUIToScreenPoint(new Vector2(100, 100));
            Rect    r     = new Rect(mouse, Vector2.one);

            window.key = key;

            string[] values;
            if (LocalizationEditorWindow.Current.DataTable.TryGetValue(key, out values))
            {
                window.values = values.Clone() as string[];
            }
            else
            {
                window.values = new string[LocalizationEditorWindow.Current.Languages.Count];
            }

            Vector2 widnowCenter = LocalizationEditorWindow.Current.position.position + LocalizationEditorWindow.Current.position.size / 2;

            window.position     = new Rect(widnowCenter - new Vector2(250, 500), new Vector2(500, 400));
            window.titleContent = new GUIContent("Edit Item");
            window.ShowAuxWindow();
            return(window);
        }
        public static ItemEditorWindow Open()
        {
            ItemEditorWindow window = ScriptableObject.CreateInstance <ItemEditorWindow>();

            Vector2 mouse = GUIUtility.GUIToScreenPoint(new Vector2(100, 100));
            Rect    r     = new Rect(mouse, Vector2.one * 10);

            window.values = new string[LocalizationEditorWindow.Current.Languages.Count];

            Vector2 widnowCenter = LocalizationEditorWindow.Current.position.position + LocalizationEditorWindow.Current.position.size / 2;

            window.position     = new Rect(widnowCenter - new Vector2(250, 500), new Vector2(500, 400));
            window.titleContent = new GUIContent("Add Item");
            window.ShowAuxWindow();
            return(window);
        }