public TreeViewItemState Show()
        {
            scrollView = GUILayout.BeginScrollView(scrollView);

            for (int i = 0; i < ViewList.Count; i++)
            {
                var treeViewItem      = this.ViewList[i];
                var treeViewItemState = treeViewItem.Show();

                if (treeViewItemState.SelectOperation == TreeViewSelectOperation.Select)
                {
                    this.SelectItem(treeViewItem, GUITreeView.CurrEvent.control);
                }
                else if (treeViewItemState.SelectOperation == TreeViewSelectOperation.Deselect)
                {
                    if (GUITreeView.CurrEvent.control)
                    {
                        this.DeselectItem(treeViewItem);
                    }
                    else
                    {
                        this.SelectItem(treeViewItem, GUITreeView.CurrEvent.control);
                    }
                }

                if (treeViewItemState.OpenOperation == TreeViewOpenOperation.Open)
                {
                    OpenItem(treeViewItem);
                }
                else if (treeViewItemState.OpenOperation == TreeViewOpenOperation.Close)
                {
                    CloseItem(treeViewItem);
                }
            }
            GUILayout.EndScrollView();

            Operation();

            if (this.renameInputWindow != null)
            {
                this.renameInputWindow.PopWindow();
                this.renameInputWindow = null;
            }

            return(new TreeViewItemState());
        }
        private void Rename()
        {
            if (lastSelectData == null)
            {
                return;
            }
            this.renameInputWindow             = new PopInputWindow();
            this.renameInputWindow.InputString = lastSelectData.Name;
            if (lastSelectData is ITreeViewDirectory)
            {
                this.renameInputWindow.OnInput = (newName) =>
                {
                    if (newName.IsNullOrEmpty())
                    {
                        return;
                    }
                    var treeViewDirectory = this.lastSelectData as ITreeViewDirectory;
                    treeViewDirectory.Name = newName;

                    var moveItems = new List <ITreeViewItem>();
                    treeViewDirectory.BuildItemList(moveItems, -1, true);

                    foreach (var item in moveItems)
                    {
                        var treeViewLeafItem = item as TreeViewLeafItem;
                        if (treeViewLeafItem != null)
                        {
                            var toPath = this.GetPath(item);
                            if (OnPathUpdate != null)
                            {
                                OnPathUpdate(treeViewLeafItem.userdata, toPath);
                            }
                        }
                    }
                };
            }
            else if (lastSelectData is TreeViewLeafItem)
            {
                this.renameInputWindow.OnInput = (newName) =>
                {
                    OnRename((lastSelectData as TreeViewLeafItem).userdata, newName);
                };
            }

            EditorWindow.focusedWindow.Repaint();
        }