xref: /haiku/headers/private/interface/MenuWindow.h (revision 4e0c2a797d01708bc3c1a49f2d496dc465f833cf)
12628e60cSAxel Dörfler /*
22628e60cSAxel Dörfler  * Copyright 2001-2006, Haiku, Inc.
32628e60cSAxel Dörfler  * Distributed under the terms of the MIT License.
42628e60cSAxel Dörfler  *
52628e60cSAxel Dörfler  * Authors:
62628e60cSAxel Dörfler  *		Marc Flerackers (mflerackers@androme.be)
72628e60cSAxel Dörfler  *		Stefano Ceccherini (burton666@libero.it)
82628e60cSAxel Dörfler  */
9446b8c19SStefano Ceccherini #ifndef __MENUWINDOW_H
10446b8c19SStefano Ceccherini #define __MENUWINDOW_H
11446b8c19SStefano Ceccherini 
122628e60cSAxel Dörfler 
13446b8c19SStefano Ceccherini #include <Window.h>
14446b8c19SStefano Ceccherini 
15446b8c19SStefano Ceccherini class BMenu;
1627cc2508SStefano Ceccherini 
1727cc2508SStefano Ceccherini 
182628e60cSAxel Dörfler namespace BPrivate {
1927cc2508SStefano Ceccherini 
202628e60cSAxel Dörfler class BMenuFrame;
212628e60cSAxel Dörfler class BMenuScroller;
2227cc2508SStefano Ceccherini 
23a3dff518SStefano Ceccherini 
24446b8c19SStefano Ceccherini class BMenuWindow : public BWindow {
25446b8c19SStefano Ceccherini 	public:
264185bd8bSStefano Ceccherini 		BMenuWindow(const char *name);
27446b8c19SStefano Ceccherini 		virtual ~BMenuWindow();
289e64a7edSStefano Ceccherini 
299e64a7edSStefano Ceccherini 		virtual void DispatchMessage(BMessage *message, BHandler *handler);
30446b8c19SStefano Ceccherini 
314185bd8bSStefano Ceccherini 		void AttachMenu(BMenu *menu);
324185bd8bSStefano Ceccherini 		void DetachMenu();
334185bd8bSStefano Ceccherini 
3427cc2508SStefano Ceccherini 		void AttachScrollers();
3527cc2508SStefano Ceccherini 		void DetachScrollers();
36446b8c19SStefano Ceccherini 
37*4e0c2a79SStefano Ceccherini 		bool CheckForScrolling(const BPoint &cursor);
38*4e0c2a79SStefano Ceccherini 		bool TryScrollBy(const float &step);
39c7338938SStefano Ceccherini 
40446b8c19SStefano Ceccherini 	private:
413616859aSStefano Ceccherini 		BMenu *fMenu;
4227cc2508SStefano Ceccherini 		BMenuFrame *fMenuFrame;
433616859aSStefano Ceccherini 		BMenuScroller *fUpperScroller;
443616859aSStefano Ceccherini 		BMenuScroller *fLowerScroller;
453616859aSStefano Ceccherini 
463616859aSStefano Ceccherini 		float fValue;
473616859aSStefano Ceccherini 		float fLimit;
483616859aSStefano Ceccherini 
49*4e0c2a79SStefano Ceccherini 		bool _Scroll(const BPoint &cursor);
50*4e0c2a79SStefano Ceccherini 		void _ScrollBy(const float &step);
51446b8c19SStefano Ceccherini };
52446b8c19SStefano Ceccherini 
532628e60cSAxel Dörfler }	// namespace BPrivate
542628e60cSAxel Dörfler 
552628e60cSAxel Dörfler #endif	// __MENUWINDOW_H
56