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 |
|
---|
11 | #include "UIFactory.hpp"
|
---|
12 |
|
---|
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 | */
|
---|
37 | class CommandLineUIFactory : public UIFactory
|
---|
38 | {
|
---|
39 | friend class UIFactory;
|
---|
40 |
|
---|
41 | public:
|
---|
42 | virtual ~CommandLineUIFactory();
|
---|
43 |
|
---|
44 | virtual Dialog* makeDialog();
|
---|
45 | virtual MainWindow* makeMainWindow();
|
---|
46 |
|
---|
47 | struct description : public UIFactory::factoryDescription {
|
---|
48 | description();
|
---|
49 | virtual ~description();
|
---|
50 |
|
---|
51 | virtual UIFactory* makeFactory();
|
---|
52 | };
|
---|
53 |
|
---|
54 | protected:
|
---|
55 | CommandLineUIFactory();
|
---|
56 | };
|
---|
57 |
|
---|
58 |
|
---|
59 | #endif /* COMMANDLINEUIFACTORY_HPP_ */
|
---|