/*
* CommandLineUIFactory.hpp
*
* Created on: May 8, 2010
* Author: heber
*/
#ifndef COMMANDLINEUIFACTORY_HPP_
#define COMMANDLINEUIFACTORY_HPP_
#include "UIFactory.hpp"
/** This class is a specialization of the UIFactory.
*
*
Introduction
*
* The UIFactory is a base class for the User Interaction. There are three UI specializations:
* Text, GUI and CommandLine.
*
* The idea of the command line part is as follows:
*
* All actions that can be called from the command line are instantiated via populater-functions.
* In the constructor of an action it is automatically registered with the ActionRegistry and can
* henceforth be looked up there.
*
* There is a CommandLineParser which parses the command line parameters and puts all found values
* into a map. Then, MainWindow::Display of the CommandLineUIFactory is called, which goes through
* every action (by the ActionRegistry) and looks through the parsed commands whether the action is
* desired.
*
* In the action itself, Query's ask for user input. In the CommandLine case, we don't want direct
* user interaction, but the user has to have those values already delivered along with the desired
* action. Hence, the Query implementations just look up the desired values in the CommandLineParser
* vaults. When they are not found, an exception is thrown. When all are found, the action is performed.
*
*/
class CommandLineUIFactory : public UIFactory
{
friend class UIFactory;
public:
virtual ~CommandLineUIFactory();
virtual Dialog* makeDialog();
virtual MainWindow* makeMainWindow();
struct description : public UIFactory::factoryDescription {
description();
virtual ~description();
virtual UIFactory* makeFactory();
};
protected:
CommandLineUIFactory();
};
#endif /* COMMANDLINEUIFACTORY_HPP_ */