xref: /haiku/src/apps/webpositive/tabview/TabManager.h (revision 99d1318ec02694fc520a0dc38ae38565db7e8c3c)
1 /*
2  * Copyright (C) 2010 Stephan Aßmus <superstippi@gmx.de>
3  * All rights reserved. Distributed under the terms of the MIT License.
4  */
5 
6 #ifndef TAB_MANAGER_H
7 #define TAB_MANAGER_H
8 
9 #include <Messenger.h>
10 #include <TabView.h>
11 
12 enum {
13 	TAB_CHANGED = 'tcha',
14 	CLOSE_TAB = 'cltb'
15 };
16 
17 class BBitmap;
18 class BCardLayout;
19 class BGroupView;
20 class BGroupLayout;
21 class BMenu;
22 class TabContainerGroup;
23 class TabContainerView;
24 class TabManagerController;
25 
26 #define INTEGRATE_MENU_INTO_TAB_BAR 0
27 
28 
29 class TabManager {
30 public:
31 								TabManager(const BMessenger& target,
32 									BMessage* newTabMessage);
33 	virtual						~TabManager();
34 
35 			void				SetTarget(const BMessenger& target);
36 			const BMessenger&	Target() const;
37 
38 #if INTEGRATE_MENU_INTO_TAB_BAR
39 			BGroupLayout*		MenuContainerLayout() const;
40 #endif
41 
42 			BView*				TabGroup() const;
43 			BView*				GetTabContainerView() const;
44 			BView*				ContainerView() const;
45 
46 			BView*				ViewForTab(int32 tabIndex) const;
47 			int32				TabForView(const BView* containedView) const;
48 			bool				HasView(const BView* containedView) const;
49 
50 			void				SelectTab(int32 tabIndex);
51 			void				SelectTab(const BView* containedView);
52 			int32				SelectedTabIndex() const;
53 			void				CloseTab(int32 tabIndex);
54 
55 			void				AddTab(BView* view, const char* label,
56 									int32 index = -1);
57 			BView*				RemoveTab(int32 index);
58 			int32				CountTabs() const;
59 
60 			void				SetTabLabel(int32 tabIndex, const char* label);
61 	const	BString&			TabLabel(int32);
62 			void				SetTabIcon(const BView* containedView,
63 									const BBitmap* icon);
64 			void				SetCloseButtonsAvailable(bool available);
65 
66 private:
67 #if INTEGRATE_MENU_INTO_TAB_BAR
68 			BGroupView*			fMenuContainer;
69 #endif
70 			TabContainerGroup*	fTabContainerGroup;
71 			TabContainerView*	fTabContainerView;
72 			BView*				fContainerView;
73 			BCardLayout*		fCardLayout;
74 			TabManagerController* fController;
75 
76 			BMessenger			fTarget;
77 };
78 
79 #endif // TAB_MANAGER_H
80