1 /*!
2 	@file
3 	@author		Albert Semenov
4 	@date		11/2009
5 */
6 #ifndef COMMAND_MANAGER_H_
7 #define COMMAND_MANAGER_H_
8 
9 #include <MyGUI.h>
10 
11 namespace demo
12 {
13 
14 	class CommandManager
15 	{
16 	public:
17 		typedef MyGUI::delegates::CDelegate2<const std::string&, MyGUI::Any> CommandDelegate;
18 
19 	public:
20 		CommandManager();
21 		virtual ~CommandManager();
22 
getInstance()23 		static CommandManager& getInstance()
24 		{
25 			return *msCommandManager;
26 		}
27 
28 		void execiteCommand(const std::string& _name, MyGUI::Any _data);
29 
30 		void registerCommand(const std::string& _name, CommandDelegate::IDelegate* _delegate);
31 		void unregisterCommand(const std::string& _name);
32 
33 	private:
34 		static CommandManager* msCommandManager;
35 		typedef std::map<std::string, CommandDelegate> MapDelegate;
36 		MapDelegate mDelegates;
37 	};
38 
39 } // namespace demo
40 
41 #endif // COMMAND_MANAGER_H_
42