diff --git a/src/plugins/qmldesigner/components/propertyeditor/siblingcombobox.cpp b/src/plugins/qmldesigner/components/propertyeditor/siblingcombobox.cpp
index 4e6968b8bb92ec3ed3b3e2f8402b2bd93e72ca4f..7b6e0e69e06f76931ef64a06af573b75196fbb76 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/siblingcombobox.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/siblingcombobox.cpp
@@ -75,11 +75,12 @@ void SiblingComboBox::setup()
     clear();
 
     foreach (const QmlItemNode &itemNode, m_itemList) {
-        if (itemNode.isValid())
+        if (itemNode.isValid()) {
             if (itemNode.id().isEmpty())
                 addItem(itemNode.simplfiedTypeName());
             else
                 addItem(itemNode.id());
+        }
     }
 
     QmlItemNode parent(m_itemNode.instanceParent().toQmlItemNode());
diff --git a/src/plugins/qmldesigner/qmldesignerconstants.h b/src/plugins/qmldesigner/qmldesignerconstants.h
index 323dfb2192adde2d6b3b0ed02b16f444af0d8ca4..1c27e94cb617e6cd5b73c35575fe094f937a3c46 100644
--- a/src/plugins/qmldesigner/qmldesignerconstants.h
+++ b/src/plugins/qmldesigner/qmldesignerconstants.h
@@ -35,18 +35,21 @@
 namespace QmlDesigner {
 namespace Constants {
 
-const char * const DELETE                  = "QmlDesigner.Delete";
+const char * const DELETE               = "QmlDesigner.Delete";
 
 // context
-const char * const C_DESIGN_MODE = "QmlDesigner::DesignMode";
-const char * const C_FORMEDITOR = "QmlDesigner::FormEditor";
+const char * const C_DESIGN_MODE        = "QmlDesigner::DesignMode";
+const char * const C_FORMEDITOR         = "QmlDesigner::FormEditor";
+
+// actions
+const char * const SWITCH_TEXT_DESIGN   = "QmlDesigner.SwitchTextDesign";
 
 // mode
-const char * const DESIGN_MODE_NAME = "Design";
-const int DESIGN_MODE_PRIORITY = Core::Constants::P_MODE_EDIT - 1;
+const char * const DESIGN_MODE_NAME     = "Design";
+const int DESIGN_MODE_PRIORITY          = Core::Constants::P_MODE_EDIT - 1;
 
 // Wizard type
-const char * const FORM_MIMETYPE = "application/x-qmldesigner";
+const char * const FORM_MIMETYPE        = "application/x-qmldesigner";
 
 namespace Internal {
     enum { debug = 0 };
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index c70c72d77fbb0d9c6dd4aef3833602c2ce371b51..fbf5bcc49e4ed2eb804e46cfba1747a25e286571 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -34,6 +34,11 @@
 #include "pluginmanager.h"
 #include "settingspage.h"
 
+#include <qmljseditor/qmljseditorconstants.h>
+
+#include <coreplugin/modemanager.h>
+#include <coreplugin/actionmanager/actionmanager.h>
+#include <coreplugin/actionmanager/command.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/dialogs/iwizard.h>
 #include <coreplugin/editormanager/ieditorfactory.h>
@@ -86,6 +91,17 @@ bool BauhausPlugin::initialize(const QStringList & /*arguments*/, QString *error
     const int uid = core->uniqueIDManager()->uniqueIdentifier(QLatin1String(QmlDesigner::Constants::C_FORMEDITOR));
     const QList<int> context = QList<int>() << uid;
 
+    const QList<int> switchContext = QList<int() << uid
+                                     << core->uniqueIDManager()->uniqueIdentifier(QmlJSEditor::Constants::C_QMLJSEDITOR_ID);
+
+    Core::ActionManager *am = core->actionManager();
+
+    QAction *switchAction = new QAction(tr("Switch Text/Design"), this);
+    Core::Command *command = am->registerAction(switchAction, QmlDesigner::Constants::SWITCH_TEXT_DESIGN, switchContext);
+    command->setDefaultKeySequence(QKeySequence(Qt::Key_F4));
+
+    connect(switchAction, SIGNAL(triggered()), this, SLOT(switchTextDesign()));
+
     m_designerCore = new QmlDesigner::IntegrationCore;
 
     m_pluginInstance = this;
@@ -116,6 +132,24 @@ BauhausPlugin *BauhausPlugin::pluginInstance()
     return m_pluginInstance;
 }
 
+void BauhausPlugin::switchTextDesign()
+{
+    Core::ModeManager *modeManager = Core::ModeManager::instance();
+
+    if (modeManager->currentMode() == Core::Constants::MODE_EDIT) {
+
+    } else if (modeManager->currentMode() == Core::Constants::MODE_DESIGN) {
+
+    }
+
+    Core::IEditor *editor = editorManager->currentEditor();
+    QString otherFile = correspondingHeaderOrSource(editor->file()->fileName());
+    if (!otherFile.isEmpty()) {
+        editorManager->openEditor(otherFile);
+        editorManager->ensureEditorManagerVisible();
+    }
+}
+
 DesignerSettings BauhausPlugin::settings() const
 {
     return m_settings;
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h
index 3ef88fbae0bd7972bc1b9b6878a5ed5e68591ded..2146573b78a0b69ac42a0aed24bbd4237dd5e5f6 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.h
+++ b/src/plugins/qmldesigner/qmldesignerplugin.h
@@ -65,6 +65,9 @@ public:
     DesignerSettings settings() const;
     void setSettings(const DesignerSettings &s);
 
+private slots:
+    void switchTextDesign();
+
 private:
     QmlDesigner::IntegrationCore *m_designerCore;
     static BauhausPlugin *m_pluginInstance;