void CellGUI(Rect cellRect, TreeViewItem <AssetElement> item, AssetTreeHeader column, ref RowGUIArgs args)
        {
            // Center cell rect vertically (makes it easier to place controls, icons etc in the cells)
            CenterRectUsingSingleLineHeight(ref cellRect);

            AssetElement   element   = item.data;
            AssetBuildRule buildRule = element.BuildRule;

            switch (column)
            {
            case AssetTreeHeader.Icon:
            {
//                        EditorGUI.BeginDisabledGroup(!item.data.IsBuild);
                if (buildRule.BuildType == 0)
                {
                    GUI.DrawTexture(cellRect, iconIgnore, ScaleMode.ScaleToFit);
                }
                else
                {
                    GUI.DrawTexture(cellRect, icons[GetIconByIndex(item)], ScaleMode.ScaleToFit);
                }
//                        EditorGUI.EndDisabledGroup();
            }
            break;
            //case MyColumns.Icon2:
            //    {

            //        GUI.DrawTexture(cellRect, s_TestIcons[GetIcon2Index(item)], ScaleMode.ScaleToFit);
            //    }
            //    break;

            case AssetTreeHeader.AssetName:
            {
                if (!Toggle)
                {
                    args.rowRect = cellRect;
                    base.RowGUI(args);
                }
                else
                {
                    // Do toggle
                    Rect toggleRect = cellRect;
                    toggleRect.x    += GetContentIndent(item);
                    toggleRect.width = kToggleWidth;

                    if (toggleRect.xMax < cellRect.xMax)
                    {
                        //                            EditorGUI.BeginDisabledGroup(false);
                        bool beforeToggle = item.data.Toggle;
                        //                            item.data.IsBuild = EditorGUI.Toggle(toggleRect, item.data.IsBuild); // hide when outside cell rect
                        item.data.Toggle = EditorGUI.Toggle(toggleRect, item.data.Toggle);
                        if (item.data.Toggle != beforeToggle)
                        {
                            //                                if (element.FileType == FileType.Folder)
                            //                                {
                            //                                    if (item.data.Before != item.data.IsBuild)
                            //                                    {
                            if (item.data.children != null)
                            {
                                for (int i = 0; i < item.data.children.Count; i++)
                                {
                                    item.data.children[i].Toggle = item.data.Toggle;
                                }
                            }
                            //                                    }

                            //                                    item.data.Before = item.data.IsBuild;
                            //                                }
                        }
                        //                            EditorGUI.EndDisabledGroup();
                    }
                    //                        EditorGUI.BeginDisabledGroup(false);//!item.data.IsBuild

                    // Default icon and label
                    args.rowRect = cellRect;
                    base.RowGUI(args);
                    //                        EditorGUI.EndDisabledGroup();
                }
            }
            break;

            case AssetTreeHeader.NameAB:
                buildRule.AssetBundleName = EditorGUI.TextField(cellRect, buildRule.AssetBundleName);     //
                break;

            case AssetTreeHeader.Order:
                int newOrder = EditorGUI.IntField(cellRect, buildRule.Order);
                if (newOrder != buildRule.Order)
                {
                    buildRule.Order = Math.Min(newOrder, BuildUtil.GetFileOrder(buildRule.FileFilterType) + 999);
                }
                break;

            case AssetTreeHeader.File:
                if (element.FileType == FileType.Folder)
                {
                    FileType fileFilterType = (FileType)EditorGUI.EnumPopup(cellRect, buildRule.FileFilterType);
                    if (fileFilterType != buildRule.FileFilterType)
                    {
                        buildRule.FileFilterType = fileFilterType;
                        buildRule.Order          = BuildUtil.GetFileOrder(fileFilterType);

                        //刷新子结点
                        assetTreeModel.AddChildrens(new [] { element.id });
                    }
                }
                else
                {
                    EditorGUI.LabelField(cellRect, buildRule.FileFilterType.ToString());
                }
                break;

            case AssetTreeHeader.Build:
                drawHeaderBuildType(element, cellRect, buildRule);
                break;
//                case AssetTreeHeader.Ignore:
//                    buildRule.BuildType = (PackageAssetType)EditorGUI.EnumPopup(cellRect, buildRule.BuildType);
//                    break;
            }
        }
        private void drawRightCenterGUI()
        {
            GUILayoutOption largeButtonWidth  = GUILayout.MaxWidth(120);
            GUILayoutOption nomaleButtonWidth = GUILayout.MaxWidth(80);
            GUILayoutOption miniButtonWidth   = GUILayout.MaxWidth(30);

            m_SearchField.OnGUI(searchbarRect, "");

            GUILayout.Space(30);

            GUILayout.BeginHorizontal();

            if (GUILayout.Button("Options:", nomaleButtonWidth))
            {
                treeView.Toggle = !treeView.Toggle;
            }

            if (GUILayout.Button(iconReflush, miniButtonWidth))
            {
                treeModel.AddChildrens(treeView.GetSelection());
            }


            GUILayout.FlexibleSpace();

            if (GUILayout.Button("Clear All AB", GUI.skin.button, largeButtonWidth))
            {
                BuildUtil.ClearAssetBundleName();
                AssetDatabase.Refresh();
            }

            GUILayout.Space(20);
            GUILayout.EndHorizontal();

            Rect treeViewRect = multiColumnTreeViewRect;

            this.treeView.OnGUI(treeViewRect);

            GUILayout.Space(treeViewRect.height + 10);

            GUILayout.BeginHorizontal();
            if (GUILayout.Button(">>", miniButtonWidth))
            {
                treeView.ExpandAll();
            }

            if (GUILayout.Button("+", GUI.skin.button, miniButtonWidth))
            {
                this.addNewRootFolder();
            }

            if (GUILayout.Button("-", GUI.skin.button, miniButtonWidth))
            {
                this.treeModel.RemoveSelectElement();
            }

            if (GUILayout.Button("<<", miniButtonWidth))
            {
                treeView.CollapseAll();
            }

            GUILayout.FlexibleSpace();

            if (GUILayout.Button("Save", GUI.skin.button, nomaleButtonWidth))
            {
                treeModel.Save();
            }
            GUILayout.Space(20);
            GUILayout.EndHorizontal();
        }