Index: /orxonox/trunk/src/lib/gui/gui/gui_gtk.cc
===================================================================
--- /orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4082)
+++ /orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4083)
@@ -1748,7 +1748,12 @@
   this->changeOption = NULL;
   this->openUpButton = NULL;
+  this->okObject = NULL;
+  this->okFunc = NULL;
 
 #ifdef HAVE_GTK2
   this->widget = gtk_file_selection_new(fileDialogName);
+
+  gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION (this->widget), FALSE);
+
   g_signal_connect(GTK_FILE_SELECTION (this->widget)->cancel_button,
                      "button_release_event",
@@ -1781,4 +1786,11 @@
 }
 
+void FileDialog::setOKFunc(void* okObject, bool(*function)(const char* , void*))
+{
+  this->okObject = okObject;
+  this->okFunc = function;
+}
+
+
 void FileDialog::setOpenUpButton(Button* openUpButton)
 {
@@ -1803,13 +1815,40 @@
 }
 
+/**
+   \brief disables the File Operator Buttons
+*/
+void FileDialog::disableFileOpts(void)
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(this->widget));
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief The ok-button has been pressed
+*/
 void FileDialog::okEvent(void)
 {
-  if (this->changeOption)
-#ifdef HAVE_GTK2
-    changeOption->setValue(gtk_file_selection_get_filename(GTK_FILE_SELECTION(this->widget)));
-#endif /* HAVE_GTK2 */
-  this->close();
-}
-
+  if (this->okFunc)
+    {
+#ifdef HAVE_GTK2
+      if(this->okFunc((const char*)gtk_file_selection_get_filename(GTK_FILE_SELECTION(this->widget)), this->okObject))
+	 this->close();
+#endif /* HAVE_GTK2 */
+    }
+  else if (this->changeOption)
+    {
+#ifdef HAVE_GTK2
+      changeOption->setValue(gtk_file_selection_get_filename(GTK_FILE_SELECTION(this->widget)));
+#endif /* HAVE_GTK2 */
+      this->close();
+    }
+  else
+    this->close();
+}
+
+/**
+   \biref opens up the FileDialog-Window
+*/
 void FileDialog::open(void)
 {
@@ -1821,4 +1860,7 @@
 }
 
+/**
+   \closes the FileDialog-Window
+*/
 void FileDialog::close(void)
 {
Index: /orxonox/trunk/src/lib/gui/gui/gui_gtk.h
===================================================================
--- /orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4082)
+++ /orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4083)
@@ -428,4 +428,7 @@
   Button* openUpButton;
   bool isOpen;
+  bool (*okFunc)(const char* , void*);
+  void* okObject;
+
  public:
   FileDialog(const char* fileDialogName);
@@ -433,7 +436,9 @@
 
   void setChangeOption(OptionLabel* changeOption);
+  void setOKFunc(void* okObject, bool(*function)(const char* , void*));
   void setOpenUpButton(Button* openUpButton);
   void setDefaultFileName(const char* defaultFileName);
   void setMask(const char* mask);
+  void disableFileOpts(void);
 
   void okEvent();
Index: /orxonox/trunk/src/lib/gui/gui/gui_keys.cc
===================================================================
--- /orxonox/trunk/src/lib/gui/gui/gui_keys.cc	(revision 4082)
+++ /orxonox/trunk/src/lib/gui/gui/gui_keys.cc	(revision 4083)
@@ -69,9 +69,9 @@
    this->pKeysBox = new Box('v');
    this->pKeysBox->setGroupName(player);
-    this->pKeysBox->fill(addKey(UP, "up"));
-    this->pKeysBox->fill(addKey(DOWN, "down"));
-    this->pKeysBox->fill(addKey(LEFT, "left"));
-    this->pKeysBox->fill(addKey(RIGHT, "right"));
-    this->pKeysBox->fill(addKey(SHOOT, "shoot"));
+    this->pKeysBox->fill(addKey(UP, "UP"));
+    this->pKeysBox->fill(addKey(DOWN, "DOWN"));
+    this->pKeysBox->fill(addKey(LEFT, "LEFT"));
+    this->pKeysBox->fill(addKey(RIGHT, "RIGHT"));
+    this->pKeysBox->fill(addKey(SHOOT, "FIRE"));
     delete windowName;
     closeButton = new Button("close");
Index: /orxonox/trunk/src/lib/gui/gui/gui_update.cc
===================================================================
--- /orxonox/trunk/src/lib/gui/gui/gui_update.cc	(revision 4082)
+++ /orxonox/trunk/src/lib/gui/gui/gui_update.cc	(revision 4083)
@@ -40,4 +40,5 @@
   Button* dataDirButton;       //!< A Button for the selection of the DataRepos
   OptionLabel* dataDirLabel;   //!< A Label fot the selection of the DataRepos
+  
 
   this->tmpDir = NULL;
@@ -51,4 +52,19 @@
   this->updateFrame->setGroupName("update");
   this->updateBox = new Box('v');
+
+  dataDirButton = new Button("Data Directory");
+  dataDirLabel = new OptionLabel("DataDir", "unknown");
+  dataDirLabel->saveability();
+  dataDirDialog = new FileDialog("data-Repos-location");
+  dataDirDialog->setDefaultFileName("data");
+  dataDirDialog->setMask(DATA_IDENTIFIER);
+  this->checkDataDir("../data/" DATA_IDENTIFIER, dataDirLabel);
+  dataDirDialog->disableFileOpts();
+  dataDirDialog->setOpenUpButton(dataDirButton);
+  //dataDirDialog->setChangeOption(dataDirLabel);
+  dataDirDialog->setOKFunc(dataDirLabel, GuiUpdate::checkDataDir);
+  updateBox->fill(dataDirButton);
+  updateBox->fill(dataDirLabel);
+
 #ifdef HAVE_CURL
 
@@ -60,13 +76,4 @@
 
   
-  dataDirButton = new Button("browse");
-  dataDirLabel = new OptionLabel("DataDir", "test");
-  dataDirLabel->saveability();
-  dataDirDialog = new FileDialog("data-Repos-location");
-  dataDirDialog->setDefaultFileName("../data");
-  dataDirDialog->setOpenUpButton(dataDirButton);
-  dataDirDialog->setChangeOption(dataDirLabel);
-  updateBox->fill(dataDirLabel);
-  updateBox->fill(dataDirButton);
 
 
@@ -78,5 +85,5 @@
 
 #else /* HAVE_CURL */
-  Label* noCurlLabel = new Label("since you do not have cURL,\nthis option is not availible");
+  Label* noCurlLabel = new Label("since you do not have cURL-support,\nupdate options are not availible");
   this->updateBox->fill(noCurlLabel);  
 #endif /* HAVE_CURL */
@@ -94,4 +101,24 @@
 
 }
+
+/**
+   \brief checks if the Folder containing selected File is data.oxd, and if so sets it.
+   \param 
+*/
+bool GuiUpdate::checkDataDir(const char* fileName, void* object)
+{
+  if (!strcmp(fileName+(strlen(fileName)-strlen(DATA_IDENTIFIER)), DATA_IDENTIFIER))
+    {
+      char* tmpName = new char[strlen(fileName)-strlen(DATA_IDENTIFIER)+1];
+      strncpy(tmpName, fileName, strlen(fileName)-strlen(DATA_IDENTIFIER));
+      tmpName[strlen(fileName)-strlen(DATA_IDENTIFIER)] = '\0'; 
+      static_cast<OptionLabel*>(object)->setValue(tmpName);
+      delete tmpName;
+      return true;
+    }
+  else
+    return false;
+}
+
 
 /** 
Index: /orxonox/trunk/src/lib/gui/gui/gui_update.h
===================================================================
--- /orxonox/trunk/src/lib/gui/gui/gui_update.h	(revision 4082)
+++ /orxonox/trunk/src/lib/gui/gui/gui_update.h	(revision 4083)
@@ -10,4 +10,7 @@
 #include "gui_element.h"
 #include "gui_gtk.h"
+
+
+#define DATA_IDENTIFIER "data.oxd"
 
 #include <stdio.h>
@@ -59,4 +62,6 @@
   static gint updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* info);
 #endif /* HAVE_GTK2 */
+
+  static bool checkDataDir(const char* fileName, void* object);
 
 #ifdef HAVE_CURL
