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