diff --git a/modules/gui/src/panels/tabbed_panel_bar.cc b/modules/gui/src/panels/tabbed_panel_bar.cc
index fdac9bccd934355b4d59f618e485c02e376a8480..2b3c62b11e9353bdc9dcf571e69e7e48cf018125 100644
--- a/modules/gui/src/panels/tabbed_panel_bar.cc
+++ b/modules/gui/src/panels/tabbed_panel_bar.cc
@@ -18,6 +18,9 @@
 //------------------------------------------------------------------------------
 
 #include <QSettings>
+#include <QDir>
+
+#include <iostream>
 
 #include <ost/gui/widget_registry.hh>
 
@@ -31,11 +34,19 @@ TabbedPanelBar::TabbedPanelBar(PanelBar* parent):
   layout_ = new QHBoxLayout(this);
   layout_->setMargin(0);
   layout_->setSpacing(0);
-  tabWidget_ = new QTabWidget(this);
+  tab_widget_ = new QTabWidget(this);
   #if QT_VERSION>=0x40503
-    tabWidget_->setDocumentMode(true);
+    tab_widget_->setDocumentMode(true);
   #endif
-  layout_->addWidget(tabWidget_);
+  layout_->addWidget(tab_widget_);
+
+  toolbar_ = new QToolBar(this);
+  toolbar_->setFloatable(false);
+  toolbar_->setContentsMargins(0, 0, 0, 0);
+  toolbar_->setToolButtonStyle(Qt::ToolButtonIconOnly);
+  toolbar_->setIconSize(QSize(16,16));
+  tab_widget_->setCornerWidget(toolbar_, Qt::TopRightCorner);
+  connect(tab_widget_,SIGNAL(currentChanged(int)),this,SLOT(CurrentChanged(int)));
 }
 
 bool TabbedPanelBar::Save(const QString& prefix)
@@ -50,16 +61,16 @@ bool TabbedPanelBar::Restore(const QString& prefix)
 
 void TabbedPanelBar::WidgetMoved(Widget* widget, int index){
   QString class_name = widget->metaObject()->className();
-  if(tabWidget_->indexOf(widget)>=0){
-    tabWidget_->removeTab(tabWidget_->indexOf(widget));
+  if(tab_widget_->indexOf(widget)>=0){
+    tab_widget_->removeTab(tab_widget_->indexOf(widget));
   }
-  tabWidget_->insertTab(index,widget,WidgetRegistry::Instance()->GetFullName(class_name));
+  tab_widget_->insertTab(index,widget,WidgetRegistry::Instance()->GetFullName(class_name));
 }
 
 void TabbedPanelBar::ShowWidget(Widget* widget, int pos, bool show){
-  if(tabWidget_->indexOf(widget)>=0){
+  if(tab_widget_->indexOf(widget)>=0){
     if(!show){
-      tabWidget_->removeTab(tabWidget_->indexOf(widget));
+      tab_widget_->removeTab(tab_widget_->indexOf(widget));
     }
   }
   else{
@@ -73,10 +84,23 @@ QString TabbedPanelBar::GetName(){
   return "Tabbed Mode";
 }
 
+void TabbedPanelBar::CurrentChanged(int index){
+  if(Widget* widget = qobject_cast<Widget*>(tab_widget_->currentWidget())){
+    ActionList actions = widget->GetActions();
+    toolbar_->clear();
+    if(!actions.isEmpty()){
+      for(int i = 0;i<actions.size();i++){
+        toolbar_->addAction(actions[i]);
+      }
+    }
+  }
+}
+
+
 TabbedPanelBar::~TabbedPanelBar(){
   //Do not destroy widgets
-  for(int i=0; i< tabWidget_->count();i++){
-    tabWidget_->widget(i)->setParent(NULL);
+  for(int i=0; i< tab_widget_->count();i++){
+    tab_widget_->widget(i)->setParent(NULL);
   }
 }
 
diff --git a/modules/gui/src/panels/tabbed_panel_bar.hh b/modules/gui/src/panels/tabbed_panel_bar.hh
index 0579c4b6e937d87e990504b53eab7e165270256b..dd889bb02d1f068456be408b0dc67161ceb87c4e 100644
--- a/modules/gui/src/panels/tabbed_panel_bar.hh
+++ b/modules/gui/src/panels/tabbed_panel_bar.hh
@@ -24,6 +24,7 @@
 #include <QString>
 #include <QAction>
 #include <QTabWidget>
+#include <QToolBar>
 
 #include <ost/gui/module_config.hh>
 #include <ost/gui/widget_pool.hh>
@@ -46,10 +47,16 @@ public:
 
   void WidgetMoved(Widget* widget, int position);
   QString GetName();
+
 private:
   virtual void ShowWidget(Widget* widget, int pos, bool show);
   QHBoxLayout* layout_;
-  QTabWidget* tabWidget_;
+  QTabWidget* tab_widget_;
+  QToolBar* toolbar_;
+
+private slots:
+  void CurrentChanged(int index);
+
 };
 
 }}