/// <summary>
        /// Tree View Drawer
        /// </summary>
        /// <param name="previousRect"></param>
        /// <returns></returns>
        Rect DrawTreeView(Rect previousRect)
        {
            Rect treeViewRect = new Rect(previousRect.x, previousRect.y + previousRect.height, previousRect.width,
                                         RollTableTreeView.totalHeight + 10 + 2 * _spacing);

            RollTableTreeView.OnGUI(treeViewRect);
            return(treeViewRect);
        }
        Rect DrawToolBarLayout(Rect previousRect)
        {
            int buttonDivision = 6;

            Rect toolBarRect = new Rect(previousRect.x, previousRect.y + previousRect.height, previousRect.width,
                                        _toolBarHeight);

            Rect testButtonRect = DivideRectHorizontal(toolBarRect, buttonDivision, 0);

            var style = "miniButton";

            if (GUI.Button(testButtonRect, "Test TableRoll"))
            {
                RollTableTreeView.TestRoll();
            }

            string lastRolledLabel = "NONE";

            if (RollTableTreeView.LastRolled != null)
            {
                lastRolledLabel = RollTableTreeView.LastRolled.name;
            }

            Rect rollLabelRect = DivideRectHorizontal(toolBarRect, buttonDivision, 1);

            GUI.Label(rollLabelRect, "Last Rolled: " + lastRolledLabel);


            Rect removeItemRect = DivideRectHorizontal(toolBarRect, buttonDivision, 5);

            if (GUI.Button(removeItemRect, "Remove Item", style))
            {
                Undo.RecordObject(activeProperty.serializedObject.targetObject, "Remove Item From Asset");
                var selection = RollTableTreeView.GetSelection();
                RollTableTreeView.treeModel.RemoveElements(selection);
            }

            return(toolBarRect);
        }
        Rect BottomToolBarLayout(Rect previousRect)
        {
            int  buttonDivision = 10;
            Rect bottomToolbar  = new Rect(previousRect.x, previousRect.y + previousRect.height, previousRect.width,
                                           _toolBarHeight);
            Rect expandButtonRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 0);
            var  style            = "miniButton";

            if (GUI.Button(expandButtonRect, "Expand All", style))
            {
                RollTableTreeView.ExpandAll();
            }

            Rect collapseButtonRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 1);

            if (GUI.Button(collapseButtonRect, "Collapse All", style))
            {
                RollTableTreeView.CollapseAll();
            }

            Rect propertyLabelRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 2);

            GUI.Label(propertyLabelRect, activeProperty.serializedObject.context != null
                ? AssetDatabase.GetAssetPath(activeProperty.serializedObject.context)
                : string.Empty);
            Rect setSortingRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 3);

            if (GUI.Button(setSortingRect, "Set sorting", style))
            {
                var myColumnHeader = (MyMultiColumnHeader)RollTableTreeView.multiColumnHeader;
                myColumnHeader.SetSortingColumns(new int[] { 4, 3, 2 }, new[] { true, false, true });
                myColumnHeader.mode = MyMultiColumnHeader.Mode.LargeHeader;
            }

            Rect headerRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 5);

            GUI.Label(headerRect, "Header: ", "minilabel");
            Rect largeButtonRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 6);

            if (GUI.Button(largeButtonRect, "Large", style))
            {
                var myColumnHeader = (MyMultiColumnHeader)RollTableTreeView.multiColumnHeader;
                myColumnHeader.mode = MyMultiColumnHeader.Mode.LargeHeader;
            }

            Rect mediumButtonRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 7);

            if (GUI.Button(mediumButtonRect, "Default", style))
            {
                var myColumnHeader = (MyMultiColumnHeader)RollTableTreeView.multiColumnHeader;
                myColumnHeader.mode = MyMultiColumnHeader.Mode.DefaultHeader;
            }

            Rect smallButtonRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 8);

            if (GUI.Button(smallButtonRect, "No sort", style))
            {
                var myColumnHeader = (MyMultiColumnHeader)RollTableTreeView.multiColumnHeader;
                myColumnHeader.mode = MyMultiColumnHeader.Mode.MinimumHeaderWithoutSorting;
            }

            Rect valueControlRect = DivideRectHorizontal(bottomToolbar, buttonDivision, 9);

            if (GUI.Button(valueControlRect, "values <-> controls", style))
            {
                RollTableTreeView.showControls = !RollTableTreeView.showControls;
            }

            return(bottomToolbar);
        }