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