xref: /haiku/headers/private/interface/MenuWindow.h (revision b8ded2f89783a220c7b3019d48266a682cc79158)
12628e60cSAxel Dörfler /*
24e23bc03SAxel Dörfler  * Copyright 2001-2009, 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  */
94e23bc03SAxel Dörfler #ifndef MENU_WINDOW_H
104e23bc03SAxel Dörfler #define MENU_WINDOW_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 
294e23bc03SAxel Dörfler 	virtual	void			DispatchMessage(BMessage* message,
304e23bc03SAxel Dörfler 								BHandler* handler);
31446b8c19SStefano Ceccherini 
324185bd8bSStefano Ceccherini 			void			AttachMenu(BMenu* menu);
334185bd8bSStefano Ceccherini 			void			DetachMenu();
344185bd8bSStefano Ceccherini 
3527cc2508SStefano Ceccherini 			void			AttachScrollers();
3627cc2508SStefano Ceccherini 			void			DetachScrollers();
37446b8c19SStefano Ceccherini 
384e23bc03SAxel Dörfler 			void			SetSmallStep(float step);
393ecf187eSStefano Ceccherini 			void			GetSteps(float* _smallStep, float* _largeStep) const;
404e23bc03SAxel Dörfler 			bool			HasScrollers() const;
414e0c2a79SStefano Ceccherini 			bool			CheckForScrolling(const BPoint& cursor);
424e0c2a79SStefano Ceccherini 			bool			TryScrollBy(const float& step);
43*4898c615SJessica Hamilton 			bool			TryScrollTo(const float& where);
44c7338938SStefano Ceccherini 
45446b8c19SStefano Ceccherini private:
464e23bc03SAxel Dörfler 			bool			_Scroll(const BPoint& cursor);
474e23bc03SAxel Dörfler 			void			_ScrollBy(const float& step);
484e23bc03SAxel Dörfler 
493616859aSStefano Ceccherini 			BMenu*			fMenu;
5027cc2508SStefano Ceccherini 			BMenuFrame*		fMenuFrame;
513616859aSStefano Ceccherini 			BMenuScroller*	fUpperScroller;
523616859aSStefano Ceccherini 			BMenuScroller*	fLowerScroller;
533616859aSStefano Ceccherini 
544e23bc03SAxel Dörfler 			float			fScrollStep;
553616859aSStefano Ceccherini 			float			fValue;
563616859aSStefano Ceccherini 			float			fLimit;
57446b8c19SStefano Ceccherini };
58446b8c19SStefano Ceccherini 
592628e60cSAxel Dörfler }	// namespace BPrivate
602628e60cSAxel Dörfler 
614e23bc03SAxel Dörfler #endif	// MENU_WINDOW_H
62