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