Index: src/UIElements/Makefile.am
===================================================================
--- src/UIElements/Makefile.am	(revision d57341daabb0139273e143142890dd48dd9c3dd5)
+++ src/UIElements/Makefile.am	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
@@ -19,4 +19,5 @@
 MENUSOURCE = \
   Menu/Menu.cpp \
+  Menu/MenuDescription.cpp \
   Menu/TextMenu.cpp \
   Menu/MenuItem.cpp \
@@ -28,4 +29,5 @@
 MENUHEADER = \
   Menu/Menu.hpp \
+  Menu/MenuDescription.hpp \
   Menu/TextMenu.hpp \
   Menu/MenuItem.hpp \
Index: src/UIElements/Menu/MenuDescription.cpp
===================================================================
--- src/UIElements/Menu/MenuDescription.cpp	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
+++ src/UIElements/Menu/MenuDescription.cpp	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
@@ -0,0 +1,121 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2010 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * MenuDescription.cpp
+ *
+ *  Created on: Oct 26, 2010
+ *      Author: heber
+ */
+
+#include <map>
+#include <string>
+
+#include "Menu/MenuDescription.hpp"
+
+/** Constructor of class MenuDescription.
+ *
+ */
+MenuDescription::MenuDescription()
+{
+  // put each menu into set
+  MenuSet.insert("analysis");
+  MenuSet.insert("atom");
+  MenuSet.insert("command");
+  MenuSet.insert("fragmentation");
+  MenuSet.insert("molecule");
+  MenuSet.insert("parser");
+  MenuSet.insert("selection");
+  MenuSet.insert("tesselation");
+  MenuSet.insert("world");
+
+  // put menu description into each menu category
+  MenuDescriptionsMap["analysis"] = "Analysis (pair correlation, volume)";
+  MenuDescriptionsMap["atom"] = "Edit atoms";
+  MenuDescriptionsMap["command"] = "Configuration";
+  MenuDescriptionsMap["fragmentation"] = "Fragmentation";
+  MenuDescriptionsMap["molecule"] = "Parse files into system";
+  MenuDescriptionsMap["parser"] = "Edit molecules (load, parse, save)";
+  MenuDescriptionsMap["selection"] = "Select atoms/molecules";
+  MenuDescriptionsMap["tesselation"] = "Tesselate molecules";
+  MenuDescriptionsMap["world"] = "Edit world";
+
+  // put menu name into each menu category
+  MenuNameMap["analysis"] = "Analysis";
+  MenuNameMap["atom"] = "Atoms";
+  MenuNameMap["command"] = "configuration options";
+  MenuNameMap["fragmentation"] = "Fragmentation";
+  MenuNameMap["molecule"] = "Molecules";
+  MenuNameMap["parser"] = "Input/Output";
+  MenuNameMap["selection"] = "Selection";
+  MenuNameMap["tesselation"] = "Tesselation";
+  MenuNameMap["world"] = "Globals";
+}
+
+/** Destructor of class MenuDescription.
+ *
+ */
+MenuDescription::~MenuDescription()
+{}
+
+/** Getter for MenuDescriptionsMap.
+ * \param token name of menu
+ * \return description string of the menu or empty
+ */
+const std::string MenuDescription::getDescription(std::string token) const
+{
+  if (MenuDescriptionsMap.find(token) != MenuDescriptionsMap.end())
+    return MenuDescriptionsMap.find(token)->second;
+  else
+    return std::string();
+}
+
+/** Getter for MenuNameMap.
+ * \param token name of menu
+ * \return description string of the menu or empty
+ */
+const std::string MenuDescription::getName(std::string token) const
+{
+  if (MenuNameMap.find(token) != MenuNameMap.end())
+    return MenuNameMap.find(token)->second;
+  else
+    return std::string();
+}
+
+/** Forward iterator from beginning of list of descriptions.
+ * \return iterator
+ */
+MenuDescription::iterator MenuDescription::getBeginIter()
+{
+  return MenuSet.begin();
+}
+
+/** Forward iterator at end of list of descriptions.
+ * \return iterator
+ */
+MenuDescription::iterator MenuDescription::getEndIter()
+{
+  return MenuSet.end();
+}
+
+/** Constant forward iterator from beginning of list of descriptions.
+ * \return constant iterator
+ */
+MenuDescription::const_iterator MenuDescription::getBeginIter() const
+{
+  return MenuSet.begin();
+}
+
+/** Constant forward iterator at end of list of descriptions.
+ * \return constant iterator
+ */
+MenuDescription::const_iterator MenuDescription::getEndIter() const
+{
+  return MenuSet.end();
+}
+
+
Index: src/UIElements/Menu/MenuDescription.hpp
===================================================================
--- src/UIElements/Menu/MenuDescription.hpp	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
+++ src/UIElements/Menu/MenuDescription.hpp	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
@@ -0,0 +1,46 @@
+/*
+ * MenuDescription.hpp
+ *
+ *  Created on: Oct 26, 2010
+ *      Author: heber
+ */
+
+#ifndef MENUDESCRIPTION_HPP_
+#define MENUDESCRIPTION_HPP_
+
+#include <map>
+#include <set>
+#include <string>
+
+class MenuDescriptionTest;
+
+/** Class contains information on menus.
+ *
+ */
+class MenuDescription
+{
+  friend class MenuDescriptionTest;
+public:
+  MenuDescription();
+  ~MenuDescription();
+
+  typedef std::set<std::string>::iterator iterator;
+  typedef std::set<std::string>::const_iterator const_iterator ;
+
+  // getter for description
+  const std::string getDescription(std::string token) const;
+  const std::string getName(std::string token) const;
+
+  // iterators
+  iterator getBeginIter();
+  iterator getEndIter();
+  const_iterator getBeginIter() const;
+  const_iterator getEndIter() const;
+
+private:
+  std::set<std::string> MenuSet;
+  std::map<std::string, std::string> MenuDescriptionsMap;
+  std::map<std::string, std::string> MenuNameMap;
+};
+
+#endif /* MENUDESCRIPTION_HPP_ */
Index: src/unittests/Makefile.am
===================================================================
--- src/unittests/Makefile.am	(revision d57341daabb0139273e143142890dd48dd9c3dd5)
+++ src/unittests/Makefile.am	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
@@ -32,4 +32,5 @@
   manipulateAtomsTest \
   MatrixUnittest \
+  MenuDescriptionUnitTest \
   MoleculeDescriptorTest \
   ObserverTest \
@@ -90,4 +91,5 @@
   MatrixUnittest.cpp \
   manipulateAtomsTest.cpp \
+  MenuDescriptionUnitTest.cpp \
   MoleculeDescriptorTest.cpp \
   ObserverTest.cpp \
@@ -128,4 +130,5 @@
   manipulateAtomsTest.hpp \
   MatrixUnittest.hpp \
+  MenuDescriptionUnitTest.hpp \
   MoleculeDescriptorTest.hpp \
   periodentafelTest.hpp \
@@ -213,4 +216,7 @@
 MatrixUnittest_LDADD = ${ALLLIBS}
 
+MenuDescriptionUnitTest_SOURCES = UnitTestMain.cpp MenuDescriptionUnitTest.cpp   MenuDescriptionUnitTest.hpp
+MenuDescriptionUnitTest_LDADD = ${ALLLIBS}
+
 MoleculeDescriptorTest_SOURCES = UnitTestMain.cpp MoleculeDescriptorTest.cpp MoleculeDescriptorTest.hpp
 MoleculeDescriptorTest_LDADD = ${ALLLIBS}
Index: src/unittests/MenuDescriptionUnitTest.cpp
===================================================================
--- src/unittests/MenuDescriptionUnitTest.cpp	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
+++ src/unittests/MenuDescriptionUnitTest.cpp	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
@@ -0,0 +1,69 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2010 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * InfoUnitTest.cpp
+ *
+ *  Created on: Nov 25, 2009
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+using namespace std;
+
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+
+#include "MenuDescriptionUnitTest.hpp"
+
+#ifdef HAVE_TESTRUNNER
+#include "UnitTestMain.hpp"
+#endif /*HAVE_TESTRUNNER*/
+
+/********************************************** Test classes **************************************/
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION( MenuDescriptionTest );
+
+
+void MenuDescriptionTest::setUp()
+{
+};
+
+
+void MenuDescriptionTest::tearDown()
+{
+};
+
+/** UnitTest for SensibilityTest().
+ */
+void MenuDescriptionTest::SensibilityTest()
+{
+  // from MenuSet
+  for(MenuDescription::const_iterator iter = md.MenuSet.begin(); iter != md.MenuSet.end(); ++iter) {
+    CPPUNIT_ASSERT_MESSAGE( "menu token not contained in MenuDescription::MenuDewscriptionsMap", md.MenuDescriptionsMap.find(*iter) != md.MenuDescriptionsMap.end());
+    CPPUNIT_ASSERT_MESSAGE( "menu token not contained in MenuDescription::MenuNameMap", md.MenuNameMap.find(*iter) != md.MenuNameMap.end());
+  }
+
+  // from MenuDescriptionsMap
+  for(std::map<std::string, std::string>::const_iterator iter = md.MenuDescriptionsMap.begin(); iter != md.MenuDescriptionsMap.end(); ++iter) {
+    CPPUNIT_ASSERT_MESSAGE( "menu token not contained in MenuDescription::MenuSet", md.MenuSet.find(iter->first) != md.MenuSet.end());
+    CPPUNIT_ASSERT_MESSAGE( "menu token not contained in MenuDescription::MenuNameMap", md.MenuNameMap.find(iter->first) != md.MenuNameMap.end());
+  }
+
+  // from MenuNameMap
+  for(std::map<std::string, std::string>::const_iterator iter = md.MenuNameMap.begin(); iter != md.MenuNameMap.end(); ++iter) {
+    CPPUNIT_ASSERT_MESSAGE( "menu token not contained in MenuDescription::MenuDewscriptionsMap", md.MenuDescriptionsMap.find(iter->first) != md.MenuDescriptionsMap.end());
+    CPPUNIT_ASSERT_MESSAGE( "menu token not contained in MenuDescription::MenuSet", md.MenuSet.find(iter->first) != md.MenuSet.end());
+  }
+
+};
Index: src/unittests/MenuDescriptionUnitTest.hpp
===================================================================
--- src/unittests/MenuDescriptionUnitTest.hpp	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
+++ src/unittests/MenuDescriptionUnitTest.hpp	(revision 8bcf3f12b38ffa3e7252dadca491edacb57f7d05)
@@ -0,0 +1,32 @@
+/*
+ * InfoUnitTest.hpp
+ *
+ *  Created on: Nov 25, 2009
+ *      Author: heber
+ */
+
+#ifndef INFOUNITTEST_HPP_
+#define INFOUNITTEST_HPP_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "UIElements/Menu/MenuDescription.hpp"
+
+/********************************************** Test classes **************************************/
+
+class MenuDescriptionTest : public CppUnit::TestFixture
+{
+    CPPUNIT_TEST_SUITE( MenuDescriptionTest) ;
+    CPPUNIT_TEST ( SensibilityTest );
+    CPPUNIT_TEST_SUITE_END();
+
+public:
+      void setUp();
+      void tearDown();
+      void SensibilityTest();
+
+private:
+      MenuDescription md;
+};
+
+#endif /* INFOUNITTEST_HPP_ */
