Index: code/branches/menue/data/gui/layouts/CreditsMenu.layout
===================================================================
--- code/branches/menue/data/gui/layouts/CreditsMenu.layout	(revision 8894)
+++ code/branches/menue/data/gui/layouts/CreditsMenu.layout	(revision 8912)
@@ -7,5 +7,5 @@
         <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
         <Window Type="MenuWidgets/StaticText" Name="orxonox/CreditsWindow" >
-            <Property Name="Text" Value="Keybindings" />
+            <Property Name="Text" Value="Credits" />
             <Property Name="Alpha" Value="0.8" />
             <Property Name="InheritsAlpha" Value="False" />
@@ -15,5 +15,4 @@
             <Property Name="UnifiedAreaRect" Value="{{0.15,0},{0.2125,0},{0.85,0},{0.6375,0}}" />
             <Window Type="MenuWidgets/StaticText" Name="orxonox/CreditsMenuWrapper" >
-                <Property Name="TextColours" Value="FF4444FF" />
                 <Property Name="InheritsAlpha" Value="False" />
                 <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
@@ -27,5 +26,5 @@
                     <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
                     <Property Name="HorzOverlapSize" Value="0.01" />
-                    <Property Name="UnifiedAreaRect" Value="{{0.005,0},{0.01,0},{0.995,0},{0.99,0}}" />
+                    <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{0.997,0},{0.997,0}}" />
                     <Property Name="VertOverlapSize" Value="0.01" />
                     <Property Name="HorzScrollPosition" Value="0" />
@@ -38,12 +37,13 @@
                         <Property Name="VertFormatting" Value="TopAligned" />
                         <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
-                        <Property Name="Text">wird sowieso nicht gelesen
-Orxonox version 0.0.3
-
-Programming Language:  C++ - lua - tcl
-Environment:  OpenAL - Ogre - OIS - CEGUI - enet - ODE
-Licence:  GNU General Public Licence - Creative Commons
-
-http://www.orxonox.net
+                        <Property Name="Text">Orxonox version 0.0.3
+    
+    Programming Language:  C++ - lua - tcl
+    Environment:  OpenAL - Ogre - OIS - CEGUI - enet - ODE
+    Licence:  GNU General Public Licence - Creative Commons
+    
+    http://www.orxonox.net
+    
+    Credits:
                       </Property>
                     </Window>
@@ -59,7 +59,2 @@
     </Window>
 </GUILayout>
-
-
-
-
-
Index: code/branches/menue/data/gui/layouts/SingleplayerMenu.layout
===================================================================
--- code/branches/menue/data/gui/layouts/SingleplayerMenu.layout	(revision 8894)
+++ code/branches/menue/data/gui/layouts/SingleplayerMenu.layout	(revision 8912)
@@ -15,5 +15,5 @@
             <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
             <Property Name="VertFormatting" Value="TopAligned" />
-            <Property Name="UnifiedAreaRect" Value="{{0.25,0},{0.2875,0},{0.75,0},{0.7,0}}" />
+            <Property Name="UnifiedAreaRect" Value="{{0.2,0},{0.2,0},{0.8,0},{0.7,0}}" />
             <Window Type="MenuWidgets/TabControl" Name="orxonox/SingleplayerTabControl" >
                 <Property Name="TabHeight" Value="{0,26.4388}" />
@@ -22,15 +22,48 @@
                 <Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.1,0},{0.95,0},{0.925,0}}" />
             </Window>
+            <Window Type="MenuWidgets/StaticImage" Name="orxonox/SingleplayerLevelImage" >
+                <Property Name="AlwaysOnTop" Value="True" />
+                <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+                <Property Name="UnifiedAreaRect" Value="{{0.55,0},{0.25,0},{0.9,0},{0.7,0}}" />
+            </Window>
+            <Window Type="MenuWidgets/StaticText" Name="orxonox/SingleplayerLevelDescriptionWrapper" >
+                <Property Name="AlwaysOnTop" Value="True" />
+                <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+                <Property Name="HorzFormatting" Value="HorzCentred" />
+                <Property Name="VertFormatting" Value="TopAligned" />
+                <Property Name="UnifiedAreaRect" Value="{{0.1,0},{0.75,0},{0.9,0},{0.85,0}}" />
+                <Window Type="MenuWidgets/ScrollablePane" Name="orxonox/SingleplayerLevelDescriptionPane" >
+                    <Property Name="ContentArea" Value="l:0 t:0 r:0 b:0" />
+                    <Property Name="HorzStepSize" Value="0.005" />
+                    <Property Name="VertStepSize" Value="0.005" />
+                    <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+                    <Property Name="HorzOverlapSize" Value="0.01" />
+                    <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{0.997,0},{0.997,0}}" />
+                    <Property Name="VertOverlapSize" Value="0.01" />
+                    <Property Name="HorzScrollPosition" Value="0" />
+                    <Property Name="VertScrollPosition" Value="0" />
+                    <Window Type="MenuWidgets/StaticText" Name="orxonox/SingleplayerLevelDescription" >
+                        <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+                        <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
+                    </Window>
+                </Window>
+            </Window>
         </Window>
         <Window Type="MenuWidgets/Button" Name="orxonox/SingleplayerStartButton" >
             <Property Name="Text" Value="Start" />
             <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
-            <Property Name="UnifiedAreaRect" Value="{{0.2875,0},{0.725,0},{0.4875,0},{0.775,0}}" />
+            <Property Name="UnifiedAreaRect" Value="{{0.25,0},{0.725,0},{0.4,0},{0.775,0}}" />
             <Event Name="Clicked" Function="SingleplayerMenu.SingleplayerStartButton_clicked"/>
+        </Window>
+        <Window Type="MenuWidgets/Button" Name="orxonox/SingleplayerConfigButton" >
+            <Property Name="Text" Value="Configure" />
+            <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+            <Property Name="UnifiedAreaRect" Value="{{0.425,0},{0.725,0},{0.575,0},{0.775,0}}" />
+            <Event Name="Clicked" Function="SingleplayerMenu.SingleplayerConfigButton_clicked"/>
         </Window>
         <Window Type="MenuWidgets/Button" Name="orxonox/SingleplayerBackButton" >
             <Property Name="Text" Value="Back" />
             <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
-            <Property Name="UnifiedAreaRect" Value="{{0.5125,0},{0.725,0},{0.7125,0},{0.775,0}}" />
+            <Property Name="UnifiedAreaRect" Value="{{0.6,0},{0.725,0},{0.75,0},{0.775,0}}" />
             <Event Name="Clicked" Function="SingleplayerMenu.SingleplayerBackButton_clicked"/>
         </Window>
Index: code/branches/menue/data/gui/scripts/CreditsMenu.lua
===================================================================
--- code/branches/menue/data/gui/scripts/CreditsMenu.lua	(revision 8894)
+++ code/branches/menue/data/gui/scripts/CreditsMenu.lua	(revision 8912)
@@ -14,11 +14,7 @@
 function P.onShow()
     local description = winMgr:getWindow("orxonox/CreditsText")
-    description:setProperty("HorzFormatting", "WordWrapLeftAligned")
-    description:setProperty("VertFormatting", "TopAligned")
-    description:setText("                                   Orxonox version 0.0.3 \n\n       Programming Language:  C++ - lua - tcl \n       Environment:  OpenAL - Ogre - OIS - CEGUI - enet - ODE \n       Licence:  GNU General Public Licence - Creative Commons \n       http://www.orxonox.net \n \n       Credits:")
 
-    description:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(1.0, 0)))
     height = getStaticTextWindowHeight(description)
-    description:setHeight(CEGUI.UDim(0, height))
+    description:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(0.0, height)))
 end
 
Index: code/branches/menue/data/gui/scripts/SingleplayerMenu.lua
===================================================================
--- code/branches/menue/data/gui/scripts/SingleplayerMenu.lua	(revision 8894)
+++ code/branches/menue/data/gui/scripts/SingleplayerMenu.lua	(revision 8912)
@@ -4,4 +4,6 @@
 
 P.levelList = {}
+P.activeTabIndexes = {}
+P.scrollbarWidth = 13
 
 function P.onLoad()
@@ -9,5 +11,4 @@
     
     -- create tabs with desired tab as argument (nil for all)
-    P.createFilterTab("Show All", nil)
     P.createFilterTab("Tests", "test")
     P.createFilterTab("Tutorials", "tutorial")
@@ -15,6 +16,7 @@
     P.createFilterTab("SP?", "singleplayer")
     P.createFilterTab("Presentations", "presentation")
+    P.createFilterTab("Show All", nil)
 
-    --buttons are arranged in a 1x2 matrix
+    --buttons are arranged in a 1x3 matrix
     P:setButton(1, 1, {
             ["button"] = winMgr:getWindow("orxonox/SingleplayerStartButton"),
@@ -23,4 +25,9 @@
 
     P:setButton(1, 2, {
+            ["button"] = winMgr:getWindow("orxonox/SingleplayerConfigButton"),
+            ["callback"]  = P.SingleplayerConfigButton_clicked
+    })
+
+    P:setButton(1, 3, {
             ["button"] = winMgr:getWindow("orxonox/SingleplayerBackButton"),
             ["callback"]  = P.SingleplayerBackButton_clicked
@@ -36,4 +43,11 @@
         level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index)
         if level ~= nil then
+            local levelXMLFilename = level:getXMLFilename()
+            local imageName = level:getScreenshot()
+            if imageName ~= "" then
+                CEGUI.ImagesetManager:getSingleton():createImagesetFromImageFile(levelXMLFilename..imageName, imageName)
+            else
+                CEGUI.ImagesetManager:getSingleton():createImagesetFromImageFile(levelXMLFilename..imageName, "noScreenshot.png")
+            end
             table.insert(P.levelList, level)
         end
@@ -44,5 +58,5 @@
 function P.createFilterTab(name, tag)
     -- create unique tab window name
-    local tabName = "orxonox/SingleplayerLevelListbox"
+    local tabName = "orxonox/SingleplayerLevelTab"
     if tag ~= nil then
         tabName = tabName..tag
@@ -50,14 +64,14 @@
     -- add new tab window with desired name
     local tabControl = winMgr:getWindow("orxonox/SingleplayerTabControl")
-    local newWindow = winMgr:createWindow("MenuWidgets/Listbox", tabName)
-    newWindow:setText(name)
-    newWindow:setProperty("UnifiedMaxSize", "{{1,0},{1,0}}")
-    newWindow:setProperty("UnifiedAreaRect", "{{0.05,0},{0.15,0},{0.95,0},{0.85,0}}")
+    local listbox = CEGUI.toListbox(winMgr:createWindow("MenuWidgets/Listbox", tabName))
+    listbox:setText(name)
+    listbox:setProperty("UnifiedMaxSize", "{{1,0},{1,0}}")
+    listbox:setProperty("UnifiedAreaRect", "{{0.05,0},{0.1,0},{0.5,0},{0.7,0}}")
     tabControl:addChildWindow(tabName)
     -- fill listbox with items
-    local listbox = CEGUI.toListbox(newWindow)
     listbox:resetList()
     orxonox.GUIManager:setItemTooltipsEnabledHelper(listbox, true)
     local preselect = orxonox.LevelManager:getInstance():getDefaultLevel()
+    local tabIndexes = {}
     for k,v in pairs(P.levelList) do
         -- only add level if it has desired tag
@@ -66,4 +80,5 @@
             item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
             listbox:addItem(item)
+            table.insert(tabIndexes, k)
             if v:getXMLFilename() == preselect then
                 listbox:setItemSelectState(item, true)
@@ -72,7 +87,11 @@
         end
     end
+    table.insert(P.activeTabIndexes, tabIndexes)
+    listbox:subscribeEvent("ItemSelectionChanged", "SingleplayerSelectionChanged")
+    tabControl:subscribeEvent("TabSelectionChanged", "SingleplayerSelectionChanged")
+    SingleplayerSelectionChanged()
 end
 
-function P.SingleplayerStartButton_clicked(e)
+function P.SingleplayerGetSelectedLevel()
     -- choose the active listbox
     local tabControl = CEGUI.toTabControl(winMgr:getWindow("orxonox/SingleplayerTabControl"))
@@ -80,11 +99,37 @@
     local choice = listbox:getFirstSelectedItem()
     if choice ~= nil then
-        local index = listbox:getItemIndex(choice)
-        local level = P.levelList[index+1]
-        if level ~= nil then
-            orxonox.execute("startGame " .. level:getXMLFilename())
-            hideAllMenuSheets()
-        end
+        local tabIndexes = P.activeTabIndexes[tabControl:getSelectedTabIndex()+1]
+        local index = tabIndexes[listbox:getItemIndex(choice)+1]
+        return P.levelList[index]
+    else
+        return nil
     end
+end
+
+function SingleplayerSelectionChanged(e)
+    local level = P.SingleplayerGetSelectedLevel()
+    if level ~= nil then
+        local levelXMLFilename = level:getXMLFilename()
+        local imageName = level:getScreenshot()
+        local levelImage = winMgr:getWindow("orxonox/SingleplayerLevelImage")
+        levelImage:setProperty("Image", "set:"..levelXMLFilename..imageName.." image:full_image")
+        local levelDescription = winMgr:getWindow("orxonox/SingleplayerLevelDescription")
+        local height = getStaticTextWindowHeight(levelDescription)
+--        local width = getStaticTextWindowWidth(levelDescription)
+        levelDescription:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -P.scrollbarWidth), CEGUI.UDim(0.0, height)))
+        levelDescription:setText(level:getDescription())
+    end
+end
+
+function P.SingleplayerStartButton_clicked(e)
+    local level = P.SingleplayerGetSelectedLevel()
+    if level ~= nil then
+        orxonox.execute("startGame " .. level:getXMLFilename())
+        hideAllMenuSheets()
+    end
+end
+
+function P.SingleplayerConfigButton_clicked(e)
+    hideMenuSheet(P.name)
 end
 
Index: code/branches/menue/src/orxonox/LevelInfo.cc
===================================================================
--- code/branches/menue/src/orxonox/LevelInfo.cc	(revision 8894)
+++ code/branches/menue/src/orxonox/LevelInfo.cc	(revision 8912)
@@ -189,4 +189,5 @@
 
         XMLPortParam(LevelInfo, "description", setDescription, getDescription, xmlelement, mode);
+        XMLPortParam(LevelInfo, "screenshot", setScreenshot, getScreenshot, xmlelement, mode);
         XMLPortParam(LevelInfo, "tags", setTags, getTags, xmlelement, mode);
     }
@@ -203,4 +204,5 @@
         LevelInfoItem* info = new LevelInfoItem(this->BaseObject::getName(), this->getXMLFilename());
         info->setDescription(this->getDescription());
+        info->setScreenshot(this->getScreenshot());
         info->setTags(this->getTags());
         return info;
Index: code/branches/menue/src/orxonox/LevelInfo.h
===================================================================
--- code/branches/menue/src/orxonox/LevelInfo.h	(revision 8894)
+++ code/branches/menue/src/orxonox/LevelInfo.h	(revision 8912)
@@ -77,4 +77,15 @@
             */
             inline const std::string& getName(void) const { return this->name_; } // tolua_export
+        
+            /**
+            @brief Set the screenshot of the Level.
+            @param screenshot The screenshot to be set.
+            */
+            inline void setScreenshot(const std::string& screenshot) { this->screenshot_ = std::string(screenshot); }
+            /**
+            @brief Get the screenshot of the Level.
+            @return Returns the screenshot of the Level.
+            */
+            inline const std::string& getScreenshot() const { return this->screenshot_; } // tolua_export
 
             /**
@@ -138,4 +149,5 @@
             std::string name_; //!< The name of the Level.
             std::string description_; //!< The description of the Level.
+            std::string screenshot_; //!< The screenshot of the Level.
             std::set<std::string> tags_; //!< The set of tags the Level is tagged with.
             std::string tagsString_; //!< The comma-seperated string of all the tags the Level is tagged with.
@@ -148,4 +160,5 @@
         - @b name The name of the level.
         - @b description The description of the level.
+        - @b screenshot The screenshot of the level.
         - @b tags A comma-seperated string of tags. Allowed tags are: <em>test</em>, <em>singleplayer</em>, <em>multiplayer</em>, <em>showcase</em>, <em>tutorial</em>, <em>presentation</em>.
 
@@ -155,4 +168,5 @@
             name = "Levelname"lhs->compare(rhs) < 0
             description = "This is just some awesome level."
+            screenshot = "Screenshot.png"
             tags = "test, awesome"
         />
@@ -172,4 +186,15 @@
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Creates a LevelInfo object through XML.
+        
+            /**
+            @brief Set the screenshot of the Level.
+            @param screenshot The screenshot to be set.
+            */
+            inline void setScreenshot(const std::string& screenshot) { this->LevelInfoItem::setScreenshot(screenshot); }
+            /**
+            @brief Get the screenshot of the Level.
+            @return Returns the screenshot of the Level.
+            */
+            inline const std::string& getScreenshot() const { return this->LevelInfoItem::getScreenshot(); }
 
             /**
