Example #1
0
        ViseraTabPage AddPage()
        {
            var page = new ViseraTabPage();

            _pages.Add(page);
            _pageIndex = _pages.Count - 1;
            return(page);
        }
Example #2
0
        void OnGUI()
        {
            Helper.WindowWidth = position.width;

            EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
            bool middleDown = false;

            if (Event.current.type == EventType.MouseUp)
            {
                if (Event.current.button == 2)
                {
                    middleDown = true;
                }
            }
            float windowWidth = Helper.WindowWidth;
            float sumWidth    = 0;

            for (int i = 0; i < _pages.Count; ++i)
            {
                var p     = _pages[i];
                var title = new GUIContent(p.target == null ? "Blank" : p.target.name);
                var w     = EditorStyles.toolbarButton.CalcSize(title).x;
                if (sumWidth + w * 0.7f > windowWidth)
                {
                    GUILayout.FlexibleSpace();
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
                    sumWidth = 0;
                }
                sumWidth += w;
                var b = GUILayout.Toggle(i == _pageIndex, title, EditorStyles.toolbarButton);
                if (b)
                {
                    _pageIndex = i;
                }
            }

            if (middleDown & _pages.Count > 1)
            {
                _pages.RemoveAt(_pageIndex);
                if (_pageIndex >= _pages.Count)
                {
                    _pageIndex = _pages.Count - 1;
                }
            }
            var titlePlus = new GUIContent("[+]");
            var wPlus     = EditorStyles.toolbarButton.CalcSize(titlePlus).x;

            if (sumWidth + wPlus * 0.7f > windowWidth)
            {
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
                sumWidth = 0;
            }
            if (GUILayout.Button(titlePlus, EditorStyles.toolbarButton))
            {
                ViseraTabPage found = null;
                for (int i = 0; i < _pages.Count; ++i)
                {
                    var p = _pages[i];
                    if (p.target == Selection.activeObject)
                    {
                        found = p;
                        break;
                    }
                }
                var page = AddPage();
                if (found == null)
                {
                    page.Select();
                }
            }
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndHorizontal();

            _pages[_pageIndex].OnGUI();
        }