00001 #ifndef _CONTEXT_MENU_H_ 00002 #define _CONTEXT_MENU_H_ 00003 00004 #include "gadget.h" 00005 #include "gadgetstyle.h" 00006 #include "gadgeteventhandler.h" 00007 #include "listbox.h" 00008 00009 namespace WoopsiUI { 00010 00011 class ContextMenuItem; 00012 00019 class ContextMenu : public Gadget, public GadgetEventHandler { 00020 public: 00021 00029 ContextMenu(GadgetStyle* style = NULL); 00030 00036 virtual void addOption(const WoopsiString& text, u32 value); 00037 00041 virtual void reset(); 00042 00047 inline void setOpener(Gadget* gadget) { _opener = gadget; }; 00048 00053 inline Gadget* getOpener() { return _opener; }; 00054 00062 virtual void getPreferredDimensions(Rect& rect) const; 00063 00068 virtual void handleReleaseEvent(const GadgetEventArgs& e); 00069 00074 virtual void handleReleaseOutsideEvent(const GadgetEventArgs& e); 00075 00076 private: 00077 Gadget* _opener; 00078 ListBox* _listbox; 00086 virtual void drawContents(GraphicsPort* port); 00087 00094 virtual void drawBorder(GraphicsPort* port); 00095 00101 virtual void onResize(u16 width, u16 height); 00102 00106 virtual inline ~ContextMenu() { }; 00107 00111 inline ContextMenu(const ContextMenu& contextMenu) : Gadget(contextMenu) { }; 00112 }; 00113 } 00114 00115 #endif