Index: trunk/src/lib/gui/gl_gui/Makefile.am
===================================================================
--- trunk/src/lib/gui/gl_gui/Makefile.am	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/Makefile.am	(revision 6287)
@@ -16,4 +16,5 @@
                         glgui_pushbutton.cc \
                         glgui_container.cc \
+                        glgui_bar.cc \
                         glgui_box.cc \
                         glgui_frame.cc \
@@ -29,4 +30,5 @@
 		glgui_pushbutton.h \
 		glgui_container.h \
+		glgui_bar.h \
 		glgui_box.h \
 		glgui_frame.h \
Index: trunk/src/lib/gui/gl_gui/glgui_bar.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_bar.cc	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_bar.cc	(revision 6287)
@@ -16,5 +16,5 @@
 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_GUI
 
-#include "glgui_.h"
+#include "glgui_bar.h"
 
 using namespace std;
@@ -41,8 +41,11 @@
  * initializes the GUI-element
  */
-GLGuiBar::init()
+void GLGuiBar::init()
 {
   this->setClassID(CL_GLGUI_BAR, "GLGuiBar");
 
+  this->value = 0.5f;
+  this->minimum = 0.0f;
+  this->maximum = 1.0f;
 }
 
@@ -50,6 +53,17 @@
  * draws the GLGuiBar
  */
-void GLGuiBar::draw()
+void GLGuiBar::draw() const
 {
 
+  printf("TEST %f %f\n", this->getAbsCoor2D().x, this->getAbsCoor2D().y);
+  GLGuiWidget::draw();
+
+  glBegin(GL_QUADS);
+
+  glVertex2d(.1, .1);
+  glVertex2d(.1, this->getSizeY2D()* .8 * (value/maximum));
+  glVertex2d(this->getSizeX2D(), this->getSizeY2D() * .8 * (value/maximum));
+  glVertex2d(this->getSizeX2D(), .1);
+
+  glEnd();
 }
Index: trunk/src/lib/gui/gl_gui/glgui_bar.h
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_bar.h	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_bar.h	(revision 6287)
@@ -14,5 +14,5 @@
 //! This is Bar part of the openglGUI class
 /**
- *
+ * The Bar shows the part value.
  */
 class GLGuiBar : public GLGuiWidget {
@@ -22,10 +22,23 @@
   virtual ~GLGuiBar();
 
-  void init();
+  void setValue(float value) { this->value = value; };
+  void setMinimum(float minimum) { this->minimum = minimum; };
+  void setMaximum(float maximum) { this->maximum = maximum; };
 
-  virtual void draw();
+  float getValue() const { return this->value; };
+  float getMinimum() const { return this->minimum; };
+  float getMaximum() const { return this->maximum; };
+
+  virtual void update() { };
+  virtual void draw() const;
 
  private:
+   void init();
 
+  private:
+    float value;
+
+    float minimum;
+    float maximum;
 };
 
Index: trunk/src/lib/gui/gl_gui/glgui_box.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_box.cc	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_box.cc	(revision 6287)
@@ -111,5 +111,5 @@
  * draws the GLGuiBox
  */
-void GLGuiBox::draw()
+void GLGuiBox::draw() const
 {
 
Index: trunk/src/lib/gui/gl_gui/glgui_box.h
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_box.h	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_box.h	(revision 6287)
@@ -37,5 +37,5 @@
   virtual void hideAll();
 
-  virtual void draw();
+  virtual void draw() const;
 
  private:
Index: trunk/src/lib/gui/gl_gui/glgui_button.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_button.cc	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_button.cc	(revision 6287)
@@ -67,4 +67,4 @@
 void GLGuiButton::draw() const
 {
-
+  GLGuiWidget::draw();
 }
Index: trunk/src/lib/gui/gl_gui/glgui_checkbutton.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_checkbutton.cc	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_checkbutton.cc	(revision 6287)
@@ -52,5 +52,5 @@
  * draws the GLGuiCheckButton
  */
-void GLGuiCheckButton::draw()
+void GLGuiCheckButton::draw() const
 {
 
Index: trunk/src/lib/gui/gl_gui/glgui_checkbutton.h
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_checkbutton.h	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_checkbutton.h	(revision 6287)
@@ -27,5 +27,5 @@
   void    setActivity(bool bActive);
 
-  virtual void draw() const {};
+  virtual void draw() const;
   virtual void update() {};
 
Index: trunk/src/lib/gui/gl_gui/glgui_pushbutton.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_pushbutton.cc	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_pushbutton.cc	(revision 6287)
@@ -47,7 +47,4 @@
   this->setClassID(CL_GLGUI_PUSHBUTTON, "GLGuiPushButton");
 //  this->label->setRelCoor2D(10, 10);
-
-  this->backMat = new Material();
-  this->backMat->setDiffuse(0, 0, 0);
 }
 
@@ -57,7 +54,8 @@
 void GLGuiPushButton::draw() const
 {
-  this->backMat->select();
-  glPushMatrix();
-  glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0);
+  this->startDraw();
+
+  GLGuiButton::draw();
+
   glBegin(GL_QUADS);
 
@@ -68,6 +66,6 @@
 
   glEnd();
-  glPopMatrix();
 
+  this->endDraw();
 //   this->label->draw();
 //  printf("test");
Index: trunk/src/lib/gui/gl_gui/glgui_widget.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_widget.cc	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_widget.cc	(revision 6287)
@@ -17,4 +17,6 @@
 
 #include "glgui_widget.h"
+
+#include "material.h"
 
 #include "debug.h"
@@ -52,6 +54,7 @@
 //  this->setParent2D((Element2D*)NULL);
 
-  this->backMat = NULL;
-  this->backModel = 0;
+  this->backMat = new Material();
+  this->backMat->setDiffuse(0, 0, 0);
+
   this->frontMat = NULL;
   this->frontModel = 0;
@@ -104,2 +107,19 @@
   this->setVisibility(true);
 }
+
+
+void GLGuiWidget::draw() const
+{
+  this->backMat->select();
+
+  glBegin(GL_QUADS);
+
+
+  glVertex2d(0,0);
+  glVertex2d(0, this->getSizeY2D());
+  glVertex2d(this->getSizeX2D(), this->getSizeY2D());
+  glVertex2d(this->getSizeX2D(),0);
+
+  glEnd();
+}
+
Index: trunk/src/lib/gui/gl_gui/glgui_widget.h
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_widget.h	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_widget.h	(revision 6287)
@@ -62,7 +62,11 @@
 
     virtual void update() = 0;
-    virtual void draw() const = 0;
+    virtual void draw() const;
 
   protected:
+    inline void startDraw() const { glPushMatrix(); glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0); };
+    inline void endDraw() const { glPopMatrix(); };
+
+  private:
     Material*             backMat;
     GLuint                backModel;
Index: trunk/src/lib/gui/gl_gui/glgui_window.cc
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_window.cc	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_window.cc	(revision 6287)
@@ -50,5 +50,5 @@
  * draws the GLGuiWindow
  */
-void GLGuiWindow::draw()
+void GLGuiWindow::draw() const
 {
 
Index: trunk/src/lib/gui/gl_gui/glgui_window.h
===================================================================
--- trunk/src/lib/gui/gl_gui/glgui_window.h	(revision 6222)
+++ trunk/src/lib/gui/gl_gui/glgui_window.h	(revision 6287)
@@ -24,5 +24,5 @@
   void init();
 
-  virtual void draw();
+  virtual void draw() const;
 
  private:
