#ifndef USER_INTERFACE_H
#define USER_INTERFACE_H

#ifndef COMMAND_H
#include "Command.h"
#endif

namespace MM
{
class Module;
class Module_void_handle;
class Module_bool_handle;
class Text;

class User_interface
{
public:
    virtual ~User_interface () ;
    static Command *            apply (Module_void_handle & handle);
    static Command_1 <bool> *   apply (Module_bool_handle & handle);
    static void                 insert_menu_separator (Text const& menu);

protected:
    virtual Command *           handle_apply (Module_void_handle & handle) =0;
    virtual Command_1 <bool> *  handle_apply (Module_bool_handle & handle) =0;
    virtual void           handle_insert_menu_separator (Text const& menu) =0;
};

}//MM

#endif //USER_INTERFACE_H
