diff --git a/GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp b/GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp
index b036c21c4b13cd4d622fc3cac100972a41cdc967..53b3229cf243154bd3992213684f4f4836c0c2fa 100644
--- a/GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp
+++ b/GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp
@@ -131,6 +131,17 @@ SampleToolBar::SampleToolBar(SampleViewActions* sampleActions,
     connect(m_RealSpaceViewerButton, &QToolButton::clicked, this, &SampleToolBar::onRealSpaceViewerCall);
     addWidget(m_RealSpaceViewerButton);
 
+
+    // RealSpace 3D Viewer, version 2
+    addWidget(new QLabel(" "));
+    m_RealSpaceViewerButton2 = new QToolButton;
+    m_RealSpaceViewerButton2->setText("3D Viewer");
+    m_RealSpaceViewerButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+    m_RealSpaceViewerButton->setToolTip("Open real space 3D viewer.");
+    connect(m_RealSpaceViewerButton2, &QToolButton::clicked,
+            m_sampleViewActions, &SampleViewActions::onToggleRealSpaceView);
+    addWidget(m_RealSpaceViewerButton2);
+
     // Additional actions
     m_zoomOutAction = new QAction(this);
     m_zoomOutAction->setShortcut(QKeySequence(Qt::Key_Minus));
diff --git a/GUI/coregui/Views/SampleDesigner/SampleToolBar.h b/GUI/coregui/Views/SampleDesigner/SampleToolBar.h
index 551a92c9eafe91663e30674f83673e645913d1be..c8e77c5c65435ce35e381f03d87ce825f756563f 100644
--- a/GUI/coregui/Views/SampleDesigner/SampleToolBar.h
+++ b/GUI/coregui/Views/SampleDesigner/SampleToolBar.h
@@ -67,6 +67,7 @@ private:
     QAction* m_zoomOutAction;
 
     QToolButton* m_RealSpaceViewerButton;
+    QToolButton* m_RealSpaceViewerButton2;
     RealSpaceDialog* m_dialog;
 
     SampleViewActions* m_sampleViewActions;
diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewActions.cpp b/GUI/coregui/Views/SampleDesigner/SampleViewActions.cpp
index 8be2a02140911d7ef095e87d049fe0b632df14c6..3567ab39832a350fa1ba24822976a48e36723c93 100644
--- a/GUI/coregui/Views/SampleDesigner/SampleViewActions.cpp
+++ b/GUI/coregui/Views/SampleDesigner/SampleViewActions.cpp
@@ -13,10 +13,15 @@
 // ************************************************************************** //
 
 #include "SampleViewActions.h"
+#include "SampleView.h"
+#include "SampleViewDocks.h"
+#include <QDockWidget>
+#include <QAction>
 
-SampleViewActions::SampleViewActions(SampleModel* model, QObject* parent)
+SampleViewActions::SampleViewActions(SampleModel* model, SampleView* parent)
     : QObject(parent)
     , m_model(model)
+    , m_sampleView(parent)
     , m_selection_model(nullptr)
 {
 
@@ -36,3 +41,8 @@ QItemSelectionModel* SampleViewActions::selectionModel()
 {
     return m_selection_model;
 }
+
+void SampleViewActions::onToggleRealSpaceView()
+{
+    m_sampleView->docks()->togleDock(SampleViewDocks::REALSPACEPANEL);
+}
diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewActions.h b/GUI/coregui/Views/SampleDesigner/SampleViewActions.h
index db1771bb7e0ffe537e330b98c7a06eaf54888214..3302371d838ee30e6bea1240e4a4e04f2b76f90b 100644
--- a/GUI/coregui/Views/SampleDesigner/SampleViewActions.h
+++ b/GUI/coregui/Views/SampleDesigner/SampleViewActions.h
@@ -20,6 +20,7 @@
 
 class SampleModel;
 class QItemSelectionModel;
+class SampleView;
 
 //! Holds all actions of SampleView.
 
@@ -27,7 +28,7 @@ class SampleViewActions : public QObject
 {
     Q_OBJECT
 public:
-    SampleViewActions(SampleModel* model, QObject* parent);
+    SampleViewActions(SampleModel* model, SampleView* parent);
 
     void setSelectionModel(QItemSelectionModel* selection_model);
 
@@ -35,8 +36,12 @@ public:
 
     QItemSelectionModel* selectionModel();
 
+public slots:
+    void onToggleRealSpaceView();
+
 private:
     SampleModel* m_model;
+    SampleView* m_sampleView;
     QItemSelectionModel* m_selection_model;
 };
 
diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp
index e6f7ca81754aaa7c883b55f6cd3356da76b485fa..9b60f1c7ac8154492d9cc9b5bf7e360da58a28a3 100644
--- a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp
+++ b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp
@@ -84,6 +84,12 @@ void SampleViewDocks::onResetLayout()
     findDock(INFO)->hide();
 }
 
+void SampleViewDocks::togleDock(int id)
+{
+    auto dock = findDock(id);
+    dock->setHidden(!dock->isHidden());
+}
+
 SampleDesigner* SampleViewDocks::sampleDesigner()
 {
     return m_sampleDesigner;
diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h
index 8dcc9e41c33ca07126bac1f587a886b6dddd9b49..c35cf9e58de40c638e961ca3a8fed426882f0ae1 100644
--- a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h
+++ b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h
@@ -24,6 +24,7 @@ class SamplePropertyWidget;
 class SampleDesigner;
 class ScriptPanel;
 class Sample3DPanel;
+class QAction;
 
 //! Holds all docked widgets for SampleView.
 
@@ -32,6 +33,9 @@ class BA_CORE_API_ SampleViewDocks : public DocksController
     Q_OBJECT
 
 public:
+    enum ESubWindows { WIDGET_BOX, SAMPLE_TREE, PROPERTY_EDITOR, INFO, REALSPACEPANEL,
+                       NUMBER_OF_SUB_WINDOWS };
+
     SampleViewDocks(SampleView* parent = nullptr);
 
     SampleDesigner* sampleDesigner();
@@ -41,10 +45,9 @@ public:
 
     void onResetLayout() override;
 
-private:
-    enum ESubWindows { WIDGET_BOX, SAMPLE_TREE, PROPERTY_EDITOR, INFO, REALSPACEPANEL,
-                       NUMBER_OF_SUB_WINDOWS };
+    void togleDock(int id);
 
+private:
     SampleDesigner* m_sampleDesigner;
     SampleWidgetBox* m_widgetBox;
     SampleTreeWidget* m_treeWidget;
diff --git a/GUI/coregui/Views/SampleView.cpp b/GUI/coregui/Views/SampleView.cpp
index ccf5b41b8fa7020d8bcf1c34fb1ee9ea22c379d0..40d7f4de9ab0d4426a7c2ae5f50b9686c0815303 100644
--- a/GUI/coregui/Views/SampleView.cpp
+++ b/GUI/coregui/Views/SampleView.cpp
@@ -39,6 +39,11 @@ SampleView::SampleView(MainWindow* mainWindow)
 
 ApplicationModels* SampleView::models() { return m_models; }
 
+SampleViewDocks* SampleView::docks()
+{
+    return m_docks;
+}
+
 void SampleView::onDockMenuRequest()
 {
     std::unique_ptr<QMenu> menu(createPopupMenu());
diff --git a/GUI/coregui/Views/SampleView.h b/GUI/coregui/Views/SampleView.h
index ed0175b40798301e0b36dfae01bb6a414114575e..dda0ef646f8a3fb63e8c5842061c5fd20d110cac 100644
--- a/GUI/coregui/Views/SampleView.h
+++ b/GUI/coregui/Views/SampleView.h
@@ -38,6 +38,8 @@ public:
 
     ApplicationModels* models();
 
+    SampleViewDocks* docks();
+
 public slots:
     void onDockMenuRequest();