1 /*!
2 	@file
3 	@author		Albert Semenov
4 	@date		01/2009
5 */
6 #ifndef CONTEXT_MENU_H_
7 #define CONTEXT_MENU_H_
8 
9 #include <MyGUI.h>
10 #include <BaseLayout/BaseLayout.h>
11 
12 namespace wraps
13 {
14 
15 	class ContextMenu :
16 		public BaseLayout
17 	{
18 	public:
ContextMenu(const std::string & _layout)19 		ContextMenu(const std::string& _layout) :
20 			BaseLayout(_layout, nullptr)
21 		{
22 			assignWidget(mMenu, "_Main");
23 			mMenu->setVisible(false);
24 			mMenu->eventMenuCtrlAccept += MyGUI::newDelegate(this, &ContextMenu::notifyMenuCtrlAccept);
25 		}
26 
setVisible(bool _value)27 		void setVisible(bool _value)
28 		{
29 			mMenu->setPosition(MyGUI::InputManager::getInstance().getMousePosition());
30 			mMenu->setVisibleSmooth(_value);
31 		}
32 
isVisible()33 		bool isVisible()
34 		{
35 			return mMenu->getVisible();
36 		}
37 
38 		/** Event : Menu accept.\n
39 			signature : void method(wraps::ContextMenu* _sender, const std::string& _id)
40 			@param _sender
41 			@param _id
42 		*/
43 		MyGUI::delegates::CDelegate2<ContextMenu*, const std::string&> eventMenuAccept;
44 
45 	private:
notifyMenuCtrlAccept(MyGUI::MenuControl * _sender,MyGUI::MenuItem * _item)46 		void notifyMenuCtrlAccept(MyGUI::MenuControl* _sender, MyGUI::MenuItem* _item)
47 		{
48 			eventMenuAccept(this, _item->getItemId());
49 		}
50 
51 	private:
52 		MyGUI::PopupMenu* mMenu;
53 
54 	};
55 
56 } // namespace wraps
57 
58 #endif // CONTEXT_MENU_H_
59