xref: /haiku/src/apps/terminal/SmartTabView.h (revision 21258e2674226d6aa732321b6f8494841895af5f)
1 /*
2  * Copyright 2007-2010, Haiku. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  *	Authors:
6  *		Stefano Ceccherini (burton666@libero.it)
7  *		Ingo Weinhold (ingo_weinhold@gmx.de)
8  */
9 #ifndef SMART_TAB_VIEW_H
10 #define SMART_TAB_VIEW_H
11 
12 
13 #include <TabView.h>
14 
15 
16 class BButton;
17 class BPopUpMenu;
18 class BScrollView;
19 
20 
21 class SmartTabView : public BTabView {
22 public:
23 			class Listener;
24 
25 public:
26 								SmartTabView(BRect frame, const char* name,
27 									button_width width = B_WIDTH_AS_USUAL,
28 									uint32 resizingMode = B_FOLLOW_ALL,
29 									uint32 flags = B_FULL_UPDATE_ON_RESIZE
30 										| B_WILL_DRAW | B_NAVIGABLE_JUMP
31 										| B_FRAME_EVENTS | B_NAVIGABLE);
32 								SmartTabView(const char* name,
33 									button_width width = B_WIDTH_AS_USUAL,
34 									uint32 flags = B_FULL_UPDATE_ON_RESIZE
35 										| B_WILL_DRAW | B_NAVIGABLE_JUMP
36 										| B_FRAME_EVENTS | B_NAVIGABLE
37 										| B_SUPPORTS_LAYOUT);
38 	virtual						~SmartTabView();
39 
40 			void				SetInsets(float left, float top, float right,
41 									float bottom);
42 
43 	virtual void				MouseDown(BPoint where);
44 
45 	virtual void				AttachedToWindow();
46 	virtual void				AllAttached();
47 
48 	virtual	void				Select(int32 tab);
49 
50 	virtual	void				AddTab(BView* target, BTab* tab = NULL);
51 	virtual BTab*				RemoveTab(int32 index);
52 			void				MoveTab(int32 index, int32 newIndex);
53 
54 	virtual BRect				DrawTabs();
55 
56 			void				SetScrollView(BScrollView* scrollView);
57 
58 			void				SetListener(Listener* listener)
59 									{ fListener = listener; }
60 
61 private:
62 			int32				_ClickedTabIndex(const BPoint& point);
63 
64 private:
65 			BRect				fInsets;
66 			BScrollView*		fScrollView;
67 			Listener*			fListener;
68 			BButton*			fFullScreenButton;
69 };
70 
71 
72 class SmartTabView::Listener {
73 public:
74 	virtual						~Listener();
75 
76 	virtual	void				TabSelected(SmartTabView* tabView, int32 index);
77 	virtual	void				TabDoubleClicked(SmartTabView* tabView,
78 									BPoint point, int32 index);
79 	virtual	void				TabMiddleClicked(SmartTabView* tabView,
80 									BPoint point, int32 index);
81 	virtual	void				TabRightClicked(SmartTabView* tabView,
82 									BPoint point, int32 index);
83 };
84 
85 
86 #endif // SMART_TAB_VIEW_H
87