[a2ab15] | 1 | /*
|
---|
| 2 | * CommandLineUIFactory.hpp
|
---|
| 3 | *
|
---|
| 4 | * Created on: May 8, 2010
|
---|
| 5 | * Author: heber
|
---|
| 6 | */
|
---|
| 7 |
|
---|
| 8 | #ifndef COMMANDLINEUIFACTORY_HPP_
|
---|
| 9 | #define COMMANDLINEUIFACTORY_HPP_
|
---|
| 10 |
|
---|
[56f73b] | 11 | // include config.h
|
---|
| 12 | #ifdef HAVE_CONFIG_H
|
---|
| 13 | #include <config.h>
|
---|
| 14 | #endif
|
---|
| 15 |
|
---|
| 16 |
|
---|
[5079a0] | 17 | #include "UIFactory.hpp"
|
---|
[a2ab15] | 18 |
|
---|
[de8e45] | 19 | /** This class is a specialization of the UIFactory.
|
---|
| 20 | *
|
---|
| 21 | * <h2> Introduction </h2>
|
---|
| 22 | *
|
---|
| 23 | * The UIFactory is a base class for the User Interaction. There are three UI specializations:
|
---|
| 24 | * Text, GUI and CommandLine.
|
---|
| 25 | *
|
---|
| 26 | * The idea of the command line part is as follows:
|
---|
| 27 | *
|
---|
| 28 | * All actions that can be called from the command line are instantiated via populater-functions.
|
---|
| 29 | * In the constructor of an action it is automatically registered with the ActionRegistry and can
|
---|
| 30 | * henceforth be looked up there.
|
---|
| 31 | *
|
---|
| 32 | * There is a CommandLineParser which parses the command line parameters and puts all found values
|
---|
| 33 | * into a map. Then, MainWindow::Display of the CommandLineUIFactory is called, which goes through
|
---|
| 34 | * every action (by the ActionRegistry) and looks through the parsed commands whether the action is
|
---|
| 35 | * desired.
|
---|
| 36 | *
|
---|
| 37 | * In the action itself, Query's ask for user input. In the CommandLine case, we don't want direct
|
---|
| 38 | * user interaction, but the user has to have those values already delivered along with the desired
|
---|
| 39 | * action. Hence, the Query implementations just look up the desired values in the CommandLineParser
|
---|
| 40 | * vaults. When they are not found, an exception is thrown. When all are found, the action is performed.
|
---|
| 41 | *
|
---|
| 42 | */
|
---|
[a2ab15] | 43 | class CommandLineUIFactory : public UIFactory
|
---|
| 44 | {
|
---|
| 45 | friend class UIFactory;
|
---|
| 46 |
|
---|
| 47 | public:
|
---|
| 48 | virtual ~CommandLineUIFactory();
|
---|
| 49 |
|
---|
| 50 | virtual Dialog* makeDialog();
|
---|
[d893f79] | 51 | virtual MainWindow* makeMainWindow();
|
---|
[a2ab15] | 52 |
|
---|
[5f5a7b] | 53 | struct description : public UIFactory::factoryDescription {
|
---|
| 54 | description();
|
---|
| 55 | virtual ~description();
|
---|
| 56 |
|
---|
| 57 | virtual UIFactory* makeFactory();
|
---|
| 58 | };
|
---|
[462201] | 59 | virtual std::string getUIName(){ return "CommandLine"; }
|
---|
[5f5a7b] | 60 |
|
---|
[a2ab15] | 61 | protected:
|
---|
| 62 | CommandLineUIFactory();
|
---|
| 63 | };
|
---|
| 64 |
|
---|
| 65 |
|
---|
| 66 | #endif /* COMMANDLINEUIFACTORY_HPP_ */
|
---|