diff --git a/src/plugins/qmleditor/qmldocument.cpp b/src/plugins/qmleditor/qmldocument.cpp
index d6baba6f82126b241d222ed736830b626e66f258..13cbe2895e59b659bfda4777965bd159a14348d5 100644
--- a/src/plugins/qmleditor/qmldocument.cpp
+++ b/src/plugins/qmleditor/qmldocument.cpp
@@ -32,8 +32,8 @@
 #include "qmljsast_p.h"
 #include "qmljslexer_p.h"
 #include "qmljsparser_p.h"
-#include "qmljsengine_p.h"
 #include "qmljsnodepool_p.h"
+#include "qmljsastfwd_p.h"
 
 using namespace QmlEditor;
 using namespace QmlJS;
diff --git a/src/plugins/qmleditor/qmldocument.h b/src/plugins/qmleditor/qmldocument.h
index be6a3658eb76e83612f23a54b330465c0fd48eb9..4f9420ebaaefccbb86ff53aa2795fc0eecff6a9e 100644
--- a/src/plugins/qmleditor/qmldocument.h
+++ b/src/plugins/qmleditor/qmldocument.h
@@ -35,10 +35,9 @@
 #include <QtCore/QSharedPointer>
 #include <QtCore/QString>
 
-#include "qmleditor_global.h"
-#include "qmljsengine_p.h"
-#include "qmljsastfwd_p.h"
-#include "qmlsymbol.h"
+#include <qmleditor/qmleditor_global.h>
+#include <qmleditor/parser/qmljsengine_p.h>
+#include <qmleditor/qmlsymbol.h>
 
 namespace QmlEditor {
 
diff --git a/src/plugins/qmleditor/qmleditor.cpp b/src/plugins/qmleditor/qmleditor.cpp
index d0f57c0ae6a3a82254fa6700b31409791ca4361a..e82d9319d57c604e3e21b131465120654e6b652a 100644
--- a/src/plugins/qmleditor/qmleditor.cpp
+++ b/src/plugins/qmleditor/qmleditor.cpp
@@ -398,8 +398,8 @@ ScriptEditor::ScriptEditor(QWidget *parent) :
     m_modelManager = ExtensionSystem::PluginManager::instance()->getObject<QmlModelManagerInterface>();
 
     if (m_modelManager) {
-        connect(m_modelManager, SIGNAL(documentUpdated(QmlDocument::Ptr)),
-                this, SLOT(onDocumentUpdated(QmlDocument::Ptr)));
+        connect(m_modelManager, SIGNAL(documentUpdated(QmlEditor::QmlDocument::Ptr)),
+                this, SLOT(onDocumentUpdated(QmlEditor::QmlDocument::Ptr)));
     }
 }
 
@@ -447,7 +447,7 @@ void ScriptEditor::updateDocumentNow()
     m_modelManager->updateSourceFiles(QStringList() << fileName);
 }
 
-void ScriptEditor::onDocumentUpdated(QmlDocument::Ptr doc)
+void ScriptEditor::onDocumentUpdated(QmlEditor::QmlDocument::Ptr doc)
 {
     if (file()->fileName() != doc->fileName())
         return;
diff --git a/src/plugins/qmleditor/qmleditor.h b/src/plugins/qmleditor/qmleditor.h
index d6a1026e71aad4e115d5665273f8e9c42d33831e..ac4692bc4de8557be1c85c9ac6c1da03fc7f6d3a 100644
--- a/src/plugins/qmleditor/qmleditor.h
+++ b/src/plugins/qmleditor/qmleditor.h
@@ -113,7 +113,7 @@ public slots:
     virtual void setFontSettings(const TextEditor::FontSettings &);
 
 private slots:
-    void onDocumentUpdated(QmlDocument::Ptr doc);
+    void onDocumentUpdated(QmlEditor::QmlDocument::Ptr doc);
 
     void updateDocument();
     void updateDocumentNow();
diff --git a/src/plugins/qmleditor/qmlmodelmanager.cpp b/src/plugins/qmleditor/qmlmodelmanager.cpp
index b7b09adecb57aa78add8865773f8a2a519e19254..ae4e309fcb6856576ab1e7958051321e13042bca 100644
--- a/src/plugins/qmleditor/qmlmodelmanager.cpp
+++ b/src/plugins/qmleditor/qmlmodelmanager.cpp
@@ -52,9 +52,10 @@ QmlModelManager::QmlModelManager(QObject *parent):
 {
     m_synchronizer.setCancelOnWait(true);
 
-    qRegisterMetaType<QmlDocument::Ptr>("QmlDocument::Ptr");
+    qRegisterMetaType<QmlEditor::QmlDocument::Ptr>("QmlEditor::QmlDocument::Ptr");
 
-    connect(this, SIGNAL(documentUpdated(QmlDocument::Ptr)), this, SLOT(onDocumentUpdated(QmlDocument::Ptr)));
+    connect(this, SIGNAL(documentUpdated(QmlEditor::QmlDocument::Ptr)),
+            this, SLOT(onDocumentUpdated(QmlEditor::QmlDocument::Ptr)));
 }
 
 Snapshot QmlModelManager::snapshot() const
@@ -122,7 +123,7 @@ QMap<QString, QString> QmlModelManager::buildWorkingCopyList()
 void QmlModelManager::emitDocumentUpdated(QmlDocument::Ptr doc)
 { emit documentUpdated(doc); }
 
-void QmlModelManager::onDocumentUpdated(QmlDocument::Ptr doc)
+void QmlModelManager::onDocumentUpdated(QmlEditor::QmlDocument::Ptr doc)
 {
     QMutexLocker locker(&m_mutex);
 
diff --git a/src/plugins/qmleditor/qmlmodelmanager.h b/src/plugins/qmleditor/qmlmodelmanager.h
index 4eb1f408b66e77a59b70964db39768f23847b264..cada51871d167abdf58821c62e6bf1a9f78a69d3 100644
--- a/src/plugins/qmleditor/qmlmodelmanager.h
+++ b/src/plugins/qmleditor/qmlmodelmanager.h
@@ -58,13 +58,11 @@ public:
 
 Q_SIGNALS:
     void projectPathChanged(const QString &projectPath);
-
-    void documentUpdated(QmlDocument::Ptr doc);
     void aboutToRemoveFiles(const QStringList &files);
 
 private Q_SLOTS:
     // this should be executed in the GUI thread.
-    void onDocumentUpdated(QmlDocument::Ptr doc);
+    void onDocumentUpdated(QmlEditor::QmlDocument::Ptr doc);
 
 protected:
     QFuture<void> refreshSourceFiles(const QStringList &sourceFiles);
diff --git a/src/plugins/qmleditor/qmlmodelmanagerinterface.h b/src/plugins/qmleditor/qmlmodelmanagerinterface.h
index 4adcf91bd0a459a4fc77287221a20c21021d8b8d..f348b30bc9cbc630c9ca9c86040cbbfd6be5da31 100644
--- a/src/plugins/qmleditor/qmlmodelmanagerinterface.h
+++ b/src/plugins/qmleditor/qmlmodelmanagerinterface.h
@@ -32,8 +32,10 @@
 
 #include <QObject>
 #include <QStringList>
+#include <QSharedPointer>
 
 #include <qmleditor/qmleditor_global.h>
+#include <qmleditor/qmldocument.h>
 
 namespace QmlEditor {
 
@@ -49,6 +51,9 @@ public:
 
     virtual Snapshot snapshot() const = 0;
     virtual void updateSourceFiles(const QStringList &files) = 0;
+
+signals:
+    void documentUpdated(QmlEditor::QmlDocument::Ptr doc);
 };
 
 }
diff --git a/src/plugins/qmleditor/qmlsymbol.h b/src/plugins/qmleditor/qmlsymbol.h
index 788341e104c430082067efd86ef4a120fff64db7..4b9f213be68fbb7994c248798924d2717e7e4ed6 100644
--- a/src/plugins/qmleditor/qmlsymbol.h
+++ b/src/plugins/qmleditor/qmlsymbol.h
@@ -4,7 +4,7 @@
 #include <QList>
 #include <QString>
 
-#include "qmljsastfwd_p.h"
+#include <qmleditor/parser/qmljsastfwd_p.h>
 
 namespace QmlEditor {
 
diff --git a/src/plugins/qmlprojectmanager/qmlprojectconstants.h b/src/plugins/qmlprojectmanager/qmlprojectconstants.h
index 77c2290e6edad108bf6707fb7cf9572288bc6fb1..38611e657c6cf8bd1ef7ff9fc7feb19d19b1d26e 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectconstants.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectconstants.h
@@ -49,6 +49,8 @@ const char *const PROJECT_KIND       = "QML";
 const char *const FILES_EDITOR       = ".qmlproject Editor";
 const char *const FILES_MIMETYPE     = QMLMIMETYPE;
 
+const char *const TASK_CATEGORY_QML = "Task.Category.Qml";
+
 } // namespace Constants
 } // namespace QmlProjectManager
 
diff --git a/src/plugins/qmlprojectmanager/qmlprojectmanager.pro b/src/plugins/qmlprojectmanager/qmlprojectmanager.pro
index 354c07800e96cb8e3c03dac63674bd2c35e859c4..9f41b40d85a23e836a769166eaf836a209d573eb 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectmanager.pro
+++ b/src/plugins/qmlprojectmanager/qmlprojectmanager.pro
@@ -10,6 +10,7 @@ HEADERS = qmlproject.h \
     qmlprojectwizard.h \
     qmlnewprojectwizard.h \
     qmlprojectfileseditor.h \
+    qmltaskmanager.h \
     qmlmakestep.h
 SOURCES = qmlproject.cpp \
     qmlprojectplugin.cpp \
@@ -18,6 +19,7 @@ SOURCES = qmlproject.cpp \
     qmlprojectwizard.cpp \
     qmlnewprojectwizard.cpp \
     qmlprojectfileseditor.cpp \
+    qmltaskmanager.cpp \
     qmlmakestep.cpp
 RESOURCES += qmlproject.qrc
 
diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
index 5d21971a35417c5ac57e044730e6b6186d4a53e4..a41f3ad78d5df30dff24bc2e7af204fa30eaa7a0 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
@@ -35,19 +35,26 @@
 #include "qmlprojectfileseditor.h"
 #include "qmlproject.h"
 #include "qmlmakestep.h"
+#include "qmltaskmanager.h"
+
+#include <extensionsystem/pluginmanager.h>
 
 #include <coreplugin/icore.h>
 #include <coreplugin/mimedatabase.h>
 
 #include <texteditor/texteditoractionhandler.h>
 
+#include <projectexplorer/taskwindow.h>
+#include <qmleditor/qmlmodelmanagerinterface.h>
+
 #include <QtCore/QtPlugin>
 
 using namespace QmlProjectManager;
 using namespace QmlProjectManager::Internal;
 
-QmlProjectPlugin::QmlProjectPlugin()
-    : m_projectFilesEditorFactory(0)
+QmlProjectPlugin::QmlProjectPlugin() :
+        m_projectFilesEditorFactory(0),
+        m_qmlTaskManager(0)
 { }
 
 QmlProjectPlugin::~QmlProjectPlugin()
@@ -76,6 +83,8 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
     m_projectFilesEditorFactory = new ProjectFilesFactory(manager, actionHandler);
     addObject(m_projectFilesEditorFactory);
 
+    m_qmlTaskManager = new QmlTaskManager(this);
+
     addAutoReleasedObject(manager);
     addAutoReleasedObject(new QmlRunConfigurationFactory);
     addAutoReleasedObject(new QmlNewProjectWizard);
@@ -86,6 +95,15 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
 }
 
 void QmlProjectPlugin::extensionsInitialized()
-{ }
+{
+    ExtensionSystem::PluginManager *pluginManager = ExtensionSystem::PluginManager::instance();
+    ProjectExplorer::TaskWindow *taskWindow = pluginManager->getObject<ProjectExplorer::TaskWindow>();
+    m_qmlTaskManager->setTaskWindow(taskWindow);
+
+    QmlEditor::QmlModelManagerInterface *modelManager = pluginManager->getObject<QmlEditor::QmlModelManagerInterface>();
+    Q_ASSERT(modelManager);
+    connect(modelManager, SIGNAL(documentUpdated(QmlEditor::QmlDocument::Ptr)),
+            m_qmlTaskManager, SLOT(documentUpdated(QmlEditor::QmlDocument::Ptr)));
+}
 
 Q_EXPORT_PLUGIN(QmlProjectPlugin)
diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.h b/src/plugins/qmlprojectmanager/qmlprojectplugin.h
index 29ac7db5e4edc24b04eb6ddb04da3e623ece30fa..ab5d13a57a22c84e32fde3b477a0c6a3a3046d69 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectplugin.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.h
@@ -38,6 +38,7 @@ namespace QmlProjectManager {
 namespace Internal {
 
 class ProjectFilesFactory;
+class QmlTaskManager;
 
 class QmlProjectPlugin: public ExtensionSystem::IPlugin
 {
@@ -52,6 +53,7 @@ public:
 
 private:
     ProjectFilesFactory *m_projectFilesEditorFactory;
+    QmlTaskManager *m_qmlTaskManager;
 };
 
 } // namespace Internal
diff --git a/src/plugins/qmlprojectmanager/qmltaskmanager.cpp b/src/plugins/qmlprojectmanager/qmltaskmanager.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2a76c425ce4f29333aec7d68d2d421e8ec9e2a63
--- /dev/null
+++ b/src/plugins/qmlprojectmanager/qmltaskmanager.cpp
@@ -0,0 +1,38 @@
+#include "qmltaskmanager.h"
+#include "qmlprojectconstants.h"
+#include <QDebug>
+
+namespace QmlProjectManager {
+namespace Internal {
+
+QmlTaskManager::QmlTaskManager(QObject *parent) :
+        QObject(parent),
+        m_taskWindow(0)
+{
+}
+
+void QmlTaskManager::setTaskWindow(ProjectExplorer::TaskWindow *taskWindow)
+{
+    Q_ASSERT(taskWindow);
+    m_taskWindow = taskWindow;
+
+    m_taskWindow->addCategory(Constants::TASK_CATEGORY_QML, "Qml");
+}
+
+void QmlTaskManager::documentUpdated(QmlEditor::QmlDocument::Ptr doc)
+{
+    m_taskWindow->clearTasks(Constants::TASK_CATEGORY_QML);
+
+    foreach (const QmlJS::DiagnosticMessage &msg, doc->diagnosticMessages()) {
+        ProjectExplorer::TaskWindow::TaskType type
+                = msg.isError() ? ProjectExplorer::TaskWindow::Error
+                                : ProjectExplorer::TaskWindow::Warning;
+
+        ProjectExplorer::TaskWindow::Task task(type, msg.message, doc->fileName(), msg.loc.startLine,
+                                                Constants::TASK_CATEGORY_QML);
+        m_taskWindow->addTask(task);
+    }
+}
+
+} // Internal
+} // QmlEditor
diff --git a/src/plugins/qmlprojectmanager/qmltaskmanager.h b/src/plugins/qmlprojectmanager/qmltaskmanager.h
new file mode 100644
index 0000000000000000000000000000000000000000..0f952610765fd96f71d1d8194ea8e1d58bc00af7
--- /dev/null
+++ b/src/plugins/qmlprojectmanager/qmltaskmanager.h
@@ -0,0 +1,29 @@
+#ifndef QMLTASKMANAGER_H
+#define QMLTASKMANAGER_H
+
+#include <projectexplorer/taskwindow.h>
+#include <qmleditor/qmldocument.h>
+#include <QtCore/QObject>
+
+
+namespace QmlProjectManager {
+namespace Internal {
+
+class QmlTaskManager : public QObject
+{
+    Q_OBJECT
+public:
+    QmlTaskManager(QObject *parent = 0);
+    void setTaskWindow(ProjectExplorer::TaskWindow *taskWindow);
+
+public slots:
+    void documentUpdated(QmlEditor::QmlDocument::Ptr doc);
+
+private:
+    ProjectExplorer::TaskWindow *m_taskWindow;
+};
+
+} // Internal
+} // QmlProjectManager
+
+#endif // QMLTASKMANAGER_H