public AssetBundleBulidWindow(AssetBundleWindow window, string layout) : base(window)
            {
                ABBListViewCalc             = new ListViewCalculator();
                abBuildInfoTree             = new SubWinTree();
                abBuildInfoTree.repaintEve += window.Repaint;
                if (!string.IsNullOrEmpty(layout))
                {
                    abBuildInfoTree.DeSerialize(layout);
                }
                else
                {
                    for (int i = 0; i <= 3; i++)
                    {
                        string userdata       = i == 1 ? ABBContentItemWin : i == 2 ? ABBItemWin : i == 3 ? ABBContentWin : ABBWin;
                        SubWinTree.TreeLeaf L = abBuildInfoTree.CreateLeaf(new GUIContent(userdata));
                        L.userData = userdata;
                        abBuildInfoTree.DockLeaf(L, (SubWinTree.DockType)i);
                    }
                }
                abBuildInfoTree.isShowTitle    = false;
                abBuildInfoTree.drawCursorEve += (rect, sp) =>
                {
                    if (sp == SplitType.Vertical)
                    {
                        EditorGUIUtility.AddCursorRect(rect, MouseCursor.ResizeHorizontal);
                    }
                    else
                    {
                        EditorGUIUtility.AddCursorRect(rect, MouseCursor.ResizeVertical);
                    }
                };

                abBuildInfoTree[ABBWin].titleContent   = new GUIContent(ABBWin);
                abBuildInfoTree[ABBWin].minSize        = new Vector2(200, 300);
                abBuildInfoTree[ABBWin].paintDelegate += ABBWinGUI;

                abBuildInfoTree[ABBItemWin].titleContent   = new GUIContent(ABBItemWin);
                abBuildInfoTree[ABBItemWin].minSize        = new Vector2(200, 150);
                abBuildInfoTree[ABBItemWin].paintDelegate += ABBItemWinGUI;

                abBuildInfoTree[ABBContentWin].titleContent   = new GUIContent(ABBContentWin);
                abBuildInfoTree[ABBContentWin].minSize        = new Vector2(400, 300);
                abBuildInfoTree[ABBContentWin].paintDelegate += ABBContentWinGUI;

                abBuildInfoTree[ABBContentItemWin].titleContent   = new GUIContent(ABBContentItemWin);
                abBuildInfoTree[ABBContentItemWin].minSize        = new Vector2(400, 150);
                abBuildInfoTree[ABBContentItemWin].paintDelegate += ABBContentItemWinGUI;
            }
        private void SubWinInit()
        {
            tmpLayoutPath = EditorEnv.frameworkPath.CombinePath("AssetBundle/Editor/Layout.xml");
            if (File.Exists(tmpLayoutPath))
            {
                tmpLayout = File.ReadAllText(tmpLayoutPath);
            }

            WinTree                = new SubWinTree();
            WinTree.repaintEve    += Repaint;
            WinTree.drawCursorEve += (rect, sp) =>
            {
                if (sp == SplitType.Vertical)
                {
                    EditorGUIUtility.AddCursorRect(rect, MouseCursor.ResizeHorizontal);
                }
                else
                {
                    EditorGUIUtility.AddCursorRect(rect, MouseCursor.ResizeVertical);
                }
            };
            if (!string.IsNullOrEmpty(tmpLayout))
            {
                WinTree.DeSerialize(tmpLayout);
            }
            else
            {
                for (int i = 1; i <= 3; i++)
                {
                    string userdata       = i == 1 ? ToolWin : i == 2 ? DirCollectWin : ABBuildInfoWin;
                    SubWinTree.TreeLeaf L = WinTree.CreateLeaf(new GUIContent(userdata));
                    L.userData = userdata;
                    WinTree.DockLeaf(L, SubWinTree.DockType.Left);
                }
            }


            WinTree[ToolWin].titleContent        = new GUIContent(ToolWin);
            WinTree[DirCollectWin].titleContent  = new GUIContent(DirCollectWin);
            WinTree[ABBuildInfoWin].titleContent = new GUIContent(ABBuildInfoWin);
            WinTree[ToolWin].minSize             = new Vector2(200, 250);
            WinTree[DirCollectWin].minSize       = new Vector2(350, 250);
            //WinTree[ABBuildInfoWin].minSize = new Vector2(600, 500);
            WinTree[ToolWin].paintDelegate        += toolWindow.OnGUI;
            WinTree[DirCollectWin].paintDelegate  += dirCollectWindow.OnGUI;
            WinTree[ABBuildInfoWin].paintDelegate += abBulidWindow.OnGUI;
            ToolBarTree = new ToolBarTree();
            ToolBarTree.DropDownButton(new GUIContent("Views"), (rect) =>
            {
                GenericMenu menu = new GenericMenu();
                for (int i = 0; i < WinTree.allLeafCount; i++)
                {
                    SubWinTree.TreeLeaf leaf = WinTree.allLeafs[i];
                    menu.AddItem(leaf.titleContent, !WinTree.closedLeafs.Contains(leaf), () =>
                    {
                        if (WinTree.closedLeafs.Contains(leaf))
                        {
                            WinTree.DockLeaf(leaf, SubWinTree.DockType.Left);
                        }
                        else
                        {
                            WinTree.CloseLeaf(leaf);
                        }
                    });
                }
                menu.DropDown(rect);
                Event.current.Use();
            }, 60)
            .Toggle(new GUIContent("Title"), (bo) => { WinTree.isShowTitle = bo; }, WinTree.isShowTitle, 60)
            .Toggle(new GUIContent("Lock"), (bo) => { WinTree.isLocked = bo; }, WinTree.isLocked, 60)
            .Button(new GUIContent("Fresh"), (rect) =>
            {
                ReFreashValue();
            })
            //.Button(new GUIContent(), (rect) =>
            //{
            //    File.WriteAllText(tmpLayout_ABBuildInfoPath, abBulidWindow.abBuildInfoTree.Serialize());
            //})
            ;
        }