ViseraTabPage AddPage() { var page = new ViseraTabPage(); _pages.Add(page); _pageIndex = _pages.Count - 1; return(page); }
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(); }