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 config.h
|
---|
12 | #ifdef HAVE_CONFIG_H
|
---|
13 | #include <config.h>
|
---|
14 | #endif
|
---|
15 |
|
---|
16 |
|
---|
17 | #include "UIFactory.hpp"
|
---|
18 |
|
---|
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 | */
|
---|
43 | class CommandLineUIFactory : public UIFactory
|
---|
44 | {
|
---|
45 | friend class UIFactory;
|
---|
46 |
|
---|
47 | public:
|
---|
48 | virtual ~CommandLineUIFactory();
|
---|
49 |
|
---|
50 | virtual Dialog* makeDialog();
|
---|
51 | virtual MainWindow* makeMainWindow();
|
---|
52 |
|
---|
53 | struct description : public UIFactory::factoryDescription {
|
---|
54 | description();
|
---|
55 | virtual ~description();
|
---|
56 |
|
---|
57 | virtual UIFactory* makeFactory();
|
---|
58 | };
|
---|
59 | virtual std::string getUIName(){ return "CommandLine"; }
|
---|
60 |
|
---|
61 | protected:
|
---|
62 | CommandLineUIFactory();
|
---|
63 | };
|
---|
64 |
|
---|
65 |
|
---|
66 | #endif /* COMMANDLINEUIFACTORY_HPP_ */
|
---|