| [ce133f] | 1 | /*
 | 
|---|
 | 2 |  * Project: MoleCuilder
 | 
|---|
 | 3 |  * Description: creates and alters molecular systems
 | 
|---|
 | 4 |  * Copyright (C)  2010 University of Bonn. All rights reserved.
 | 
|---|
 | 5 |  * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
 | 
|---|
 | 6 |  */
 | 
|---|
 | 7 | 
 | 
|---|
 | 8 | /**
 | 
|---|
| [19bc74] | 9 |  * \file actions.dox
 | 
|---|
| [ce133f] | 10 |  *
 | 
|---|
| [19bc74] | 11 |  * Created on: Oct 28, 2011
 | 
|---|
| [ce133f] | 12 |  *    Author: heber
 | 
|---|
 | 13 |  */
 | 
|---|
| [750cff] | 14 | 
 | 
|---|
 | 15 | /** \page actions Actions
 | 
|---|
 | 16 |  *
 | 
|---|
 | 17 |  *  Actions are Command patterns (http://en.wikipedia.org/wiki/Command_pattern)
 | 
|---|
 | 18 |  *  to allow for undoing and redoing. Each specific Action derives from this
 | 
|---|
 | 19 |  *  class to implement a certain functionality. There is a lot of preprocessor
 | 
|---|
 | 20 |  *  magic implemented for making this as easy as possible. In effect you only
 | 
|---|
 | 21 |  *  have to create three files of which only one actually contains more than a
 | 
|---|
 | 22 |  *  few lines, namely the code of the Action itself.
 | 
|---|
 | 23 |  *
 | 
|---|
 | 24 |  *  Each Action has thus three types of functionalty: do, undo, and redo.
 | 
|---|
 | 25 |  *
 | 
|---|
 | 26 |  *  The ActionRegistry contains a prototype of each Action under its token
 | 
|---|
 | 27 |  *  such that an instance can be retrieved by knowing this token.
 | 
|---|
 | 28 |  *
 | 
|---|
 | 29 |  *  Each Action obtains its parameter from a central ValueStorage such that
 | 
|---|
 | 30 |  *  they are independent of where the parameter originated from: a command line
 | 
|---|
 | 31 |  *  parameter, a value entered in a graphical dialog or given via the keyboard
 | 
|---|
 | 32 |  *  in a terminal. That's why each begins with a function call to
 | 
|---|
 | 33 |  *  getParametersfromValueStorage() to fill its internal Action::params
 | 
|---|
 | 34 |  *  structure.
 | 
|---|
 | 35 |  *
 | 
|---|
 | 36 |  *  Also there is a regression test (\ref regression-test) for each Action to
 | 
|---|
 | 37 |  *  check that it always behaves the same no matter how much the code
 | 
|---|
 | 38 |  *  implementing actually has changed.
 | 
|---|
 | 39 |  *
 | 
|---|
 | 40 |  * \section actions-add To add a new action ...
 | 
|---|
 | 41 |  *
 | 
|---|
 | 42 |  *  The following steps have to be done for adding a new action:
 | 
|---|
 | 43 |  *  -# Create three new files .cpp, .def, and .hpp
 | 
|---|
 | 44 |  *  -# Add the files to \b src/Actions/Makefile.am.
 | 
|---|
 | 45 |  *  -# Add the name of the Action to \b src/Actions/GlobalListOfActions.hpp
 | 
|---|
 | 46 |  *    such that the ActionRegistry knows about it and can instantiate a
 | 
|---|
 | 47 |  *    prototype.
 | 
|---|
 | 48 |  *
 | 
|---|
 | 49 |  *
 | 
|---|
 | 50 |  *  \date 2011-10-31
 | 
|---|
 | 51 |  *
 | 
|---|
 | 52 |  */
 | 
|---|