diff --git a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp
index a0295f6cbd59df8a5d459ad698b04d016f86bb9a..408be8c4263666bf8fdd70eb4915dafcce38a20f 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.cpp
@@ -40,7 +40,7 @@ using namespace CMakeProjectManager;
 using namespace CMakeProjectManager::Internal;
 
 CMakeBuildEnvironmentWidget::CMakeBuildEnvironmentWidget(CMakeProject *project)
-    : BuildStepConfigWidget(), m_pro(project)
+    : BuildConfigWidget(), m_pro(project)
 {
     QVBoxLayout *vbox = new QVBoxLayout(this);
     vbox->setMargin(0);
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.h b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.h
index eab185a8eed23018b79a40815d3f83e17b82c188..ee79c99e116f254c62ed34142e083046eed2e3b2 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildenvironmentwidget.h
@@ -43,7 +43,7 @@ namespace CMakeProjectManager {
 namespace Internal {
 class CMakeProject;
 
-class CMakeBuildEnvironmentWidget : public ProjectExplorer::BuildStepConfigWidget
+class CMakeBuildEnvironmentWidget : public ProjectExplorer::BuildConfigWidget
 {
     Q_OBJECT
 
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index caa52fa408f3f5e0a7ef30244c8e3502bae9ff7a..9ba431b8f8549918345cee09792335957e68e118 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -512,14 +512,14 @@ QString CMakeProject::buildDirectory(const QString &buildConfiguration) const
     return buildDirectory;
 }
 
-ProjectExplorer::BuildStepConfigWidget *CMakeProject::createConfigWidget()
+ProjectExplorer::BuildConfigWidget *CMakeProject::createConfigWidget()
 {
     return new CMakeBuildSettingsWidget(this);
 }
 
-QList<ProjectExplorer::BuildStepConfigWidget*> CMakeProject::subConfigWidgets()
+QList<ProjectExplorer::BuildConfigWidget*> CMakeProject::subConfigWidgets()
 {
-    QList<ProjectExplorer::BuildStepConfigWidget*> list;
+    QList<ProjectExplorer::BuildConfigWidget*> list;
     list <<  new CMakeBuildEnvironmentWidget(this);
     return list;
 }
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index 78041cda0eb46df9c3eb3fb675c526fc22ebe7dc..30439c48dd8637f52d1ab59a47509626af8be9b5 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -89,8 +89,8 @@ public:
 
     virtual QString buildDirectory(const QString &buildConfiguration) const;
 
-    virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
-    virtual QList<ProjectExplorer::BuildStepConfigWidget*> subConfigWidgets();
+    virtual ProjectExplorer::BuildConfigWidget *createConfigWidget();
+    virtual QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
 
     // This method is called for new build configurations
     // You should probably set some default values in this method
@@ -204,7 +204,7 @@ private:
     QString m_fileName;
 };
 
-class CMakeBuildSettingsWidget : public ProjectExplorer::BuildStepConfigWidget
+class CMakeBuildSettingsWidget : public ProjectExplorer::BuildConfigWidget
 {
     Q_OBJECT
 public:
diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp
index 8f919cf4e3fbbb7dd2f853c087c0316f6d307eae..e682b8cceefe78be5d6ca1fb1e27e1e07c8dcbc6 100644
--- a/src/plugins/cmakeprojectmanager/makestep.cpp
+++ b/src/plugins/cmakeprojectmanager/makestep.cpp
@@ -145,6 +145,18 @@ void MakeStep::setAdditionalArguments(const QString &buildConfiguration, const Q
     setValue(buildConfiguration, "additionalArguments", list);
 }
 
+// TODO
+//QString MakeStep::oneLineSummary(const QString &buildConfiguration)
+//{
+//    QStringList arguments = value(buildConfiguration, "buildTargets").toStringList();
+//    arguments << additionalArguments(buildConfiguration);
+//    return tr("<b>%1 %2</b> in %3").arg(
+//            m_pro->toolChain(buildConfiguration)->makeCommand(),
+//            arguments.join(" "),
+//            m_pro->buildDirectory(buildConfiguration));
+//
+//}
+
 //
 // MakeStepConfigWidget
 //
@@ -214,6 +226,12 @@ void MakeStepConfigWidget::init(const QString &buildConfiguration)
     m_additionalArguments->setText(ProjectExplorer::Environment::joinArgumentList(m_makeStep->additionalArguments(m_buildConfiguration)));
 }
 
+QString MakeStepConfigWidget::summaryText() const
+{
+    // TODO
+    return tr("<b>Make:</b>");
+}
+
 //
 // MakeStepFactory
 //
diff --git a/src/plugins/cmakeprojectmanager/makestep.h b/src/plugins/cmakeprojectmanager/makestep.h
index fdf3156c0f46fef38327ec49fd8103e341410409..375b98e53fe69d6719b7ff08ced4362148c79775 100644
--- a/src/plugins/cmakeprojectmanager/makestep.h
+++ b/src/plugins/cmakeprojectmanager/makestep.h
@@ -78,6 +78,7 @@ public:
     MakeStepConfigWidget(MakeStep *makeStep);
     virtual QString displayName() const;
     virtual void init(const QString &buildConfiguration);
+    virtual QString summaryText() const;
 private slots:
     void itemChanged(QListWidgetItem*);
     void additionalArgumentsEdited();
diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp
index bed00498a1742b8a69b0fb8281b9712fff33e9de..d5c2408dd4951c76a575cd7ca1f695b34fd689d8 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.cpp
+++ b/src/plugins/genericprojectmanager/genericmakestep.cpp
@@ -193,6 +193,12 @@ void GenericMakeStepConfigWidget::init(const QString &buildConfiguration)
     connect(m_ui->targetsList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*)));
 }
 
+QString GenericMakeStepConfigWidget::summaryText() const
+{
+    // TODO
+    return tr("<b>Make:</b>");
+}
+
 void GenericMakeStepConfigWidget::itemChanged(QListWidgetItem *item)
 {
     QTC_ASSERT(!m_buildConfiguration.isNull(), return);
diff --git a/src/plugins/genericprojectmanager/genericmakestep.h b/src/plugins/genericprojectmanager/genericmakestep.h
index 23ae7dfa2b70134518fb5d85643eafd9a0ead7ae..956d46512d79a1d80b6f4b76dda8255e59abb686 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.h
+++ b/src/plugins/genericprojectmanager/genericmakestep.h
@@ -73,6 +73,7 @@ public:
     GenericMakeStepConfigWidget(GenericMakeStep *makeStep);
     virtual QString displayName() const;
     virtual void init(const QString &buildConfiguration);
+    virtual QString summaryText() const;
 private slots:
     void itemChanged(QListWidgetItem*);
     void makeLineEditTextEdited();
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index 68eda119dcd4fdbe4e96e05860fe62d29c18b4c1..50299b2f067c859ba9267e9be9008d0bb5f8bd29 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -427,14 +427,14 @@ QString GenericProject::buildDirectory(const QString &buildConfiguration) const
     return buildDirectory;
 }
 
-ProjectExplorer::BuildStepConfigWidget *GenericProject::createConfigWidget()
+ProjectExplorer::BuildConfigWidget *GenericProject::createConfigWidget()
 {
     return new GenericBuildSettingsWidget(this);
 }
 
-QList<ProjectExplorer::BuildStepConfigWidget*> GenericProject::subConfigWidgets()
+QList<ProjectExplorer::BuildConfigWidget*> GenericProject::subConfigWidgets()
 {
-    return QList<ProjectExplorer::BuildStepConfigWidget*>();
+    return QList<ProjectExplorer::BuildConfigWidget*>();
 }
 
  void GenericProject::newBuildConfiguration(const QString &buildConfiguration)
diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h
index 78413e8ae62b3b3b9ad4011965af4bfb0d6bbae8..de9f813ea8d10de58bd6be030cefa1cf1b45b558 100644
--- a/src/plugins/genericprojectmanager/genericproject.h
+++ b/src/plugins/genericprojectmanager/genericproject.h
@@ -82,8 +82,8 @@ public:
     virtual ProjectExplorer::Environment environment(const QString &buildConfiguration) const;
     virtual QString buildDirectory(const QString &buildConfiguration) const;
 
-    virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
-    virtual QList<ProjectExplorer::BuildStepConfigWidget*> subConfigWidgets();
+    virtual ProjectExplorer::BuildConfigWidget *createConfigWidget();
+    virtual QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
 
     virtual void newBuildConfiguration(const QString &buildConfiguration);
     virtual GenericProjectNode *rootProjectNode() const;
@@ -172,7 +172,7 @@ private:
     QString m_fileName;
 };
 
-class GenericBuildSettingsWidget : public ProjectExplorer::BuildStepConfigWidget
+class GenericBuildSettingsWidget : public ProjectExplorer::BuildConfigWidget
 {
     Q_OBJECT
 
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index 8a48225d515a24688aeb51878ff09251d188b381..7e8aa2e819801a9087332be5f36d0e1270447dc3 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -212,14 +212,14 @@ void BuildSettingsWidget::updateBuildSettings()
     m_removeButton->setEnabled(m_project->buildConfigurations().size() > 1);
 
     // Add pages
-    BuildStepConfigWidget *generalConfigWidget = m_project->createConfigWidget();
+    BuildConfigWidget *generalConfigWidget = m_project->createConfigWidget();
     m_subWidgets->addWidget(generalConfigWidget->displayName(), generalConfigWidget);
 
     m_subWidgets->addWidget(tr("Build Steps"), new BuildStepsPage(m_project));
     m_subWidgets->addWidget(tr("Clean Steps"), new BuildStepsPage(m_project, true));
 
-    QList<BuildStepConfigWidget *> subConfigWidgets = m_project->subConfigWidgets();
-    foreach (BuildStepConfigWidget *subConfigWidget, subConfigWidgets)
+    QList<BuildConfigWidget *> subConfigWidgets = m_project->subConfigWidgets();
+    foreach (BuildConfigWidget *subConfigWidget, subConfigWidgets)
         m_subWidgets->addWidget(subConfigWidget->displayName(), subConfigWidget);
 
     // Add tree items
@@ -254,7 +254,7 @@ void BuildSettingsWidget::activeBuildConfigurationChanged()
         }
     }
     foreach (QWidget *widget, m_subWidgets->widgets()) {
-        if (BuildStepConfigWidget *buildStepWidget = qobject_cast<BuildStepConfigWidget*>(widget)) {
+        if (BuildConfigWidget *buildStepWidget = qobject_cast<BuildConfigWidget*>(widget)) {
             buildStepWidget->init(activeBuildConfiguration);
         }
     }
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index 1396920be48c8bb24b6b6b857482c7881bfca294..681077ede1c7f765f2973c405d769f32d028582e 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -131,8 +131,6 @@ Q_SIGNALS:
     void addToTaskWindow(const QString &filename, int type, int linenumber, const QString &description);
     void addToOutputWindow(const QString &string);
 
-    void displayNameChanged(BuildStep *, const QString &displayName);
-
 private:
     QList<Internal::BuildConfiguration *> buildConfigurations();
     void addBuildConfiguration(const QString & name);
@@ -164,22 +162,34 @@ public:
     virtual QString displayNameForName(const QString &name) const = 0;
 };
 
-class PROJECTEXPLORER_EXPORT BuildStepConfigWidget
+class PROJECTEXPLORER_EXPORT BuildConfigWidget
     : public QWidget
 {
     Q_OBJECT
 public:
-    BuildStepConfigWidget()
+    BuildConfigWidget()
         :QWidget(0)
         {}
 
     virtual QString displayName() const = 0;
 
     // This is called to set up the config widget before showing it
-    // buildConfiguration is QString::null for the non buildConfiguration specific page
     virtual void init(const QString &buildConfiguration) = 0;
 };
 
+class PROJECTEXPLORER_EXPORT BuildStepConfigWidget
+    : public BuildConfigWidget
+{
+    Q_OBJECT
+public:
+    BuildStepConfigWidget()
+        : BuildConfigWidget()
+        {}
+    virtual QString summaryText() const = 0;
+signals:
+    void updateSummary();
+};
+
 } // namespace ProjectExplorer
 
 #endif // BUILDSTEP_H
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index 4a74669f70c78043986b4e61d82ff906e91e83a5..003421cdf0aef0e9dca3a60c83dd44b1167a8c04 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -36,67 +36,80 @@
 #include <extensionsystem/pluginmanager.h>
 #include <utils/qtcassert.h>
 
+#include <QtGui/QLabel>
+#include <QtGui/QPushButton>
+
 using namespace ProjectExplorer;
 using namespace ProjectExplorer::Internal;
 
 BuildStepsPage::BuildStepsPage(Project *project, bool clean) :
-    BuildStepConfigWidget(),
-    m_ui(new Ui::BuildStepsPage),
+    BuildConfigWidget(),
     m_pro(project),
     m_clean(clean)
 {
-    m_ui->setupUi(this);
+    m_vbox = new QVBoxLayout(this);
+    m_vbox->setContentsMargins(20, 0, 0, 0);
+    const QList<BuildStep *> &steps = m_clean ? m_pro->cleanSteps() : m_pro->buildSteps();
+    foreach (BuildStep *bs, steps) {
+        addBuildStepWidget(-1, bs);
+    }
 
-    m_ui->buildStepAddButton->setMenu(new QMenu(this));
-    m_ui->buildStepAddButton->setIcon(QIcon(Core::Constants::ICON_PLUS));
-    m_ui->buildStepRemoveToolButton->setIcon(QIcon(Core::Constants::ICON_MINUS));
-    m_ui->buildStepUpToolButton->setArrowType(Qt::UpArrow);
-    m_ui->buildStepDownToolButton->setArrowType(Qt::DownArrow);
+    m_noStepsLabel = new QLabel(tr("No Build Steps"), this);
+    m_noStepsLabel->setVisible(steps.isEmpty());
+    m_vbox->addWidget(m_noStepsLabel);
 
-    connect(m_ui->buildSettingsList, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
-            this, SLOT(updateBuildStepWidget(QTreeWidgetItem *, QTreeWidgetItem *)));
+    QHBoxLayout *hboxLayout = new QHBoxLayout();
+    m_addButton = new QPushButton(this);
+    m_addButton->setText(tr("Add build step"));
+    m_addButton->setMenu(new QMenu(this));
+    hboxLayout->addWidget(m_addButton);
 
-    connect(m_ui->buildStepAddButton->menu(), SIGNAL(aboutToShow()),
-            this, SLOT(updateAddBuildStepMenu()));
+    m_removeButton = new QPushButton(this);
+    m_removeButton->setText(tr("Remove build step"));
+    m_removeButton->setMenu(new QMenu(this));
+    hboxLayout->addWidget(m_removeButton);
+    hboxLayout->addStretch(10);
 
-    connect(m_ui->buildStepAddButton, SIGNAL(clicked()),
-            this, SLOT(addBuildStep()));
-    connect(m_ui->buildStepRemoveToolButton, SIGNAL(clicked()),
-            this, SLOT(removeBuildStep()));
-    connect(m_ui->buildStepUpToolButton, SIGNAL(clicked()),
-            this, SLOT(upBuildStep()));
-    connect(m_ui->buildStepDownToolButton, SIGNAL(clicked()),
-            this, SLOT(downBuildStep()));
+    m_vbox->addLayout(hboxLayout);
 
-    // Remove dummy pages
-    while (QWidget *widget = m_ui->buildSettingsWidget->currentWidget()) {
-        m_ui->buildSettingsWidget->removeWidget(widget);
-        delete widget;
-    }
+    updateBuildStepButtonsState();
 
-    // Add buildsteps
-    const QList<BuildStep *> &steps = m_clean ? m_pro->cleanSteps() : m_pro->buildSteps();
-    foreach (BuildStep *bs, steps) {
-        connect(bs, SIGNAL(displayNameChanged(BuildStep *, QString)),
-                this, SLOT(displayNameChanged(BuildStep *,QString)));
+    connect(m_addButton->menu(), SIGNAL(aboutToShow()),
+            this, SLOT(updateAddBuildStepMenu()));
 
-        QTreeWidgetItem *buildStepItem = new QTreeWidgetItem();
-        buildStepItem->setText(0, bs->displayName());
-        m_ui->buildSettingsWidget->addWidget(bs->createConfigWidget());
-        m_ui->buildSettingsList->invisibleRootItem()->addChild(buildStepItem);
-    }
+    connect(m_removeButton->menu(), SIGNAL(aboutToShow()),
+            this, SLOT(updateRemoveBuildStepMenu()));
 }
 
 BuildStepsPage::~BuildStepsPage()
 {
-    // Also deletes all added widgets
-    delete m_ui;
+    foreach(BuildStepsWidgetStruct s, m_buildSteps) {
+        delete s.detailsLabel;
+        delete s.upButton;
+        delete s.downButton;
+        delete s.detailsButton;
+        delete s.hbox;
+        delete s.widget;
+    }
+    m_buildSteps.clear();
 }
 
-void BuildStepsPage::displayNameChanged(BuildStep *bs, const QString & /* displayName */)
+void BuildStepsPage::toggleDetails()
 {
-    int index = m_clean ?  m_pro->cleanSteps().indexOf(bs) : m_pro->buildSteps().indexOf(bs);
-    m_ui->buildSettingsList->invisibleRootItem()->child(index)->setText(0, bs->displayName());
+    QToolButton *tb = qobject_cast<QToolButton *>(sender());
+    if (tb)
+        foreach(const BuildStepsWidgetStruct &s, m_buildSteps)
+            if (s.detailsButton == tb)
+                s.widget->setVisible(!s.widget->isVisible());
+}
+
+void BuildStepsPage::updateSummary()
+{
+    BuildStepConfigWidget *widget = qobject_cast<BuildStepConfigWidget *>(sender());
+    if (widget)
+        foreach(const BuildStepsWidgetStruct &s, m_buildSteps)
+            if (s.widget == widget)
+                s.detailsLabel->setText(widget->summaryText());
 }
 
 QString BuildStepsPage::displayName() const
@@ -108,33 +121,13 @@ void BuildStepsPage::init(const QString &buildConfiguration)
 {
     m_configuration = buildConfiguration;
 
-    m_ui->buildSettingsList->setCurrentItem(m_ui->buildSettingsList->invisibleRootItem()->child(0));
     // make sure widget is updated
-    if (m_ui->buildSettingsWidget->currentWidget()) {
-        BuildStepConfigWidget *widget = qobject_cast<BuildStepConfigWidget *>(m_ui->buildSettingsWidget->currentWidget());
-        widget->init(m_configuration);
+    foreach(BuildStepsWidgetStruct s, m_buildSteps) {
+        s.widget->init(m_configuration);
+        s.detailsLabel->setText(s.widget->summaryText());
     }
 }
 
-/* switch from one tree item / build step to another */
-void BuildStepsPage::updateBuildStepWidget(QTreeWidgetItem *newItem, QTreeWidgetItem *oldItem)
-{
-    if (oldItem == newItem)
-        return;
-    Q_ASSERT(m_pro);
-
-    if (newItem) {
-        int row = m_ui->buildSettingsList->indexOfTopLevelItem(newItem);
-        m_ui->buildSettingsWidget->setCurrentIndex(row);
-        m_ui->groupBox->setTitle(newItem->text(0));
-        BuildStepConfigWidget *widget = qobject_cast<BuildStepConfigWidget *>(m_ui->buildSettingsWidget->currentWidget());
-        Q_ASSERT(widget);
-        widget->init(m_configuration);
-    }
-    updateBuildStepButtonsState();
-}
-
-
 void BuildStepsPage::updateAddBuildStepMenu()
 {
     QMap<QString, QPair<QString, IBuildStepFactory *> > map;
@@ -148,7 +141,7 @@ void BuildStepsPage::updateAddBuildStepMenu()
     }
 
     // Ask the user which one to add
-    QMenu *menu = m_ui->buildStepAddButton->menu();
+    QMenu *menu = m_addButton->menu();
     m_addBuildStepHash.clear();
     menu->clear();
     if (!map.isEmpty()) {
@@ -164,119 +157,165 @@ void BuildStepsPage::updateAddBuildStepMenu()
     }
 }
 
+void BuildStepsPage::addBuildStepWidget(int pos, BuildStep *step)
+{
+    // create everything
+    BuildStepsWidgetStruct s;
+    s.widget = step->createConfigWidget();
+    s.detailsLabel = new QLabel(this);
+    s.detailsLabel->setText(s.widget->summaryText());
+    s.upButton = new QToolButton(this);
+    s.upButton->setArrowType(Qt::UpArrow);
+    s.downButton = new QToolButton(this);
+    s.downButton->setArrowType(Qt::DownArrow);
+    s.detailsButton = new QToolButton(this);
+    s.detailsButton->setText(tr("Details"));
+
+    // layout
+    s.hbox = new QHBoxLayout();
+    s.hbox->addWidget(s.detailsLabel);
+    s.hbox->addWidget(s.upButton);
+    s.hbox->addWidget(s.downButton);
+    s.hbox->addWidget(s.detailsButton);
+
+    if (pos == -1)
+        m_buildSteps.append(s);
+    else
+        m_buildSteps.insert(pos, s);
+
+    if (pos == -1) {
+        m_vbox->addLayout(s.hbox);
+        m_vbox->addWidget(s.widget);
+    } else {
+        m_vbox->insertLayout(pos *2, s.hbox);
+        m_vbox->insertWidget(pos *2 + 1, s.widget);
+    }
+    s.widget->hide();
+
+    // connect
+    connect(s.detailsButton, SIGNAL(clicked()),
+            this, SLOT(toggleDetails()));
+
+    connect(s.widget, SIGNAL(updateSummary()),
+            this, SLOT(updateSummary()));
+
+    connect(s.upButton, SIGNAL(clicked()),
+            this, SLOT(upBuildStep()));
+    connect(s.downButton, SIGNAL(clicked()),
+            this, SLOT(downBuildStep()));
+}
 
 void BuildStepsPage::addBuildStep()
 {
     if (QAction *action = qobject_cast<QAction *>(sender())) {
         QPair<QString, IBuildStepFactory *> pair = m_addBuildStepHash.value(action);
         BuildStep *newStep = pair.second->create(m_pro, pair.first);
-        m_clean ? m_pro->insertCleanStep(0, newStep) : m_pro->insertBuildStep(0, newStep);
-        QTreeWidgetItem *buildStepItem = new QTreeWidgetItem();
-        buildStepItem->setText(0, newStep->displayName());
-        m_ui->buildSettingsList->invisibleRootItem()->insertChild(0, buildStepItem);
-        m_ui->buildSettingsWidget->insertWidget(0, newStep->createConfigWidget());
-        m_ui->buildSettingsList->setCurrentItem(buildStepItem);
-
-        connect(newStep, SIGNAL(displayNameChanged(BuildStep *, QString)),
-                this, SLOT(displayNameChanged(BuildStep *,QString)));
+        int pos = m_clean ? m_pro->cleanSteps().count() : m_pro->buildSteps().count();
+        m_clean ? m_pro->insertCleanStep(pos, newStep) : m_pro->insertBuildStep(pos, newStep);
+
+        addBuildStepWidget(pos, newStep);
+        const BuildStepsWidgetStruct s = m_buildSteps.at(pos);
+        s.widget->init(m_configuration);
+        s.detailsLabel->setText(s.widget->summaryText());
     }
 }
 
-void BuildStepsPage::removeBuildStep()
+void BuildStepsPage::updateRemoveBuildStepMenu()
 {
-    int pos = m_ui->buildSettingsList->currentIndex().row();
+    QMenu *menu = m_removeButton->menu();
+    menu->clear();
     const QList<BuildStep *> &steps = m_clean ? m_pro->cleanSteps() : m_pro->buildSteps();
-    if (steps.at(pos)->immutable())
-        return;
-    bool blockSignals = m_ui->buildSettingsList->blockSignals(true);
-    delete m_ui->buildSettingsList->invisibleRootItem()->takeChild(pos);
-    m_ui->buildSettingsList->blockSignals(blockSignals);
-    QWidget *widget = m_ui->buildSettingsWidget->widget(pos);
-    m_ui->buildSettingsWidget->removeWidget(widget);
-    delete widget;
-    if (pos < m_ui->buildSettingsList->invisibleRootItem()->childCount())
-        m_ui->buildSettingsList->setCurrentItem(m_ui->buildSettingsList->invisibleRootItem()->child(pos));
-    else
-        m_ui->buildSettingsList->setCurrentItem(m_ui->buildSettingsList->invisibleRootItem()->child(pos - 1));
-    m_clean ? m_pro->removeCleanStep(pos) : m_pro->removeBuildStep(pos);
-    updateBuildStepButtonsState();
+    foreach(BuildStep *step, steps) {
+        QAction *action = menu->addAction(step->displayName());
+        if (step->immutable())
+            action->setEnabled(false);
+        connect(action, SIGNAL(triggered()),
+                this, SLOT(removeBuildStep()));
+    }
+}
+
+void BuildStepsPage::removeBuildStep()
+{
+    QAction *action = qobject_cast<QAction *>(sender());
+    if (action) {
+        int pos = m_removeButton->menu()->actions().indexOf(action);
+        qDebug()<<"pos:"<<pos;
+
+        const QList<BuildStep *> &steps = m_clean ? m_pro->cleanSteps() : m_pro->buildSteps();
+        if (steps.at(pos)->immutable())
+            return;
+
+        BuildStepsWidgetStruct s = m_buildSteps.at(pos);
+        delete s.detailsLabel;
+        delete s.upButton;
+        delete s.downButton;
+        delete s.detailsButton;
+        delete s.hbox;
+        delete s.widget;
+        m_buildSteps.removeAt(pos);
+        m_clean ? m_pro->removeCleanStep(pos) : m_pro->removeBuildStep(pos);
+    }
 }
 
 void BuildStepsPage::upBuildStep()
 {
-    int pos = m_ui->buildSettingsList->currentIndex().row();
-    if (pos < 1)
-        return;
-    if (pos > m_ui->buildSettingsList->invisibleRootItem()->childCount()-1)
+    int pos = -1;
+    QToolButton *tb = qobject_cast<QToolButton *>(sender());
+    if (!tb)
         return;
-    const QList<BuildStep *> &steps = m_clean ? m_pro->cleanSteps() : m_pro->buildSteps();
-    if (steps.at(pos)->immutable() && steps.at(pos-1)->immutable())
+
+    for (int i=0; i<m_buildSteps.count(); ++i) {
+        if (m_buildSteps.at(i).upButton == tb) {
+            pos = i;
+            break;
+        }
+    }
+    if (pos == -1)
         return;
 
-    bool blockSignals = m_ui->buildSettingsList->blockSignals(true);
-    m_clean ?  m_pro->moveCleanStepUp(pos) : m_pro->moveBuildStepUp(pos);
     stepMoveUp(pos);
-    QTreeWidgetItem *item = m_ui->buildSettingsList->invisibleRootItem()->child(pos - 1);
-    m_ui->buildSettingsList->blockSignals(blockSignals);
-    m_ui->buildSettingsList->setCurrentItem(item);
     updateBuildStepButtonsState();
 }
 
 void BuildStepsPage::downBuildStep()
 {
-    int pos = m_ui->buildSettingsList->currentIndex().row() + 1;
-    if (pos < 1)
+    int pos = -1;
+    QToolButton *tb = qobject_cast<QToolButton *>(sender());
+    if (!tb)
         return;
-    if (pos > m_ui->buildSettingsList->invisibleRootItem()->childCount() - 1)
-        return;
-    const QList<BuildStep *> &steps = m_clean ? m_pro->cleanSteps() : m_pro->buildSteps();
-    if (steps.at(pos)->immutable() && steps.at(pos - 1)->immutable())
+
+    for (int i=0; i<m_buildSteps.count(); ++i) {
+        if (m_buildSteps.at(i).downButton == tb) {
+            pos = i;
+            break;
+        }
+    }
+    if (pos == -1)
         return;
 
-    bool blockSignals = m_ui->buildSettingsList->blockSignals(true);
-    m_clean ? m_pro->moveCleanStepUp(pos) : m_pro->moveBuildStepUp(pos);
-    stepMoveUp(pos);
-    QTreeWidgetItem *item = m_ui->buildSettingsList->invisibleRootItem()->child(pos);
-    m_ui->buildSettingsList->blockSignals(blockSignals);
-    m_ui->buildSettingsList->setCurrentItem(item);
+    stepMoveUp(pos + 1);
     updateBuildStepButtonsState();
 }
 
-void BuildStepsPage::changeEvent(QEvent *e)
-{
-    BuildStepConfigWidget::changeEvent(e);
-    switch (e->type()) {
-    case QEvent::LanguageChange:
-        m_ui->retranslateUi(this);
-        break;
-    default:
-        break;
-    }
-}
-
 void BuildStepsPage::stepMoveUp(int pos)
 {
-    QWidget *widget = m_ui->buildSettingsWidget->widget(pos);
-    m_ui->buildSettingsWidget->removeWidget(widget);
-    m_ui->buildSettingsWidget->insertWidget(pos -1, widget);
-    QTreeWidgetItem *item = m_ui->buildSettingsList->invisibleRootItem()->takeChild(pos);
-    m_ui->buildSettingsList->invisibleRootItem()->insertChild(pos - 1, item);
+    m_clean ? m_pro->moveCleanStepUp(pos) : m_pro->moveBuildStepUp(pos);
+
+    m_buildSteps.at(pos).hbox->setParent(0);
+    m_vbox->insertLayout((pos - 1) * 2, m_buildSteps.at(pos).hbox);
+    m_vbox->insertWidget((pos - 1) * 2 + 1, m_buildSteps.at(pos).widget);
+
+    BuildStepsWidgetStruct tmp = m_buildSteps.at(pos -1);
+    m_buildSteps[pos -1] = m_buildSteps.at(pos);
+    m_buildSteps[pos] = tmp;
 }
 
 void BuildStepsPage::updateBuildStepButtonsState()
 {
-    int pos = m_ui->buildSettingsList->currentIndex().row();
-    if (pos == -1) {
-        m_ui->buildStepRemoveToolButton->setEnabled(false);
-        m_ui->buildStepUpToolButton->setEnabled(false);
-        m_ui->buildStepDownToolButton->setEnabled(false);
-    } else {
-        const QList<BuildStep *> &steps = m_clean ? m_pro->cleanSteps() : m_pro->buildSteps();
-        m_ui->buildStepRemoveToolButton->setEnabled(!steps.at(pos)->immutable());
-        bool enableUp = pos>0 && !(steps.at(pos)->immutable() && steps.at(pos-1)->immutable());
-        m_ui->buildStepUpToolButton->setEnabled(enableUp);
-        bool enableDown = pos < (m_ui->buildSettingsList->invisibleRootItem()->childCount() - 1) &&
-                          !(steps.at(pos)->immutable() && steps.at(pos+1)->immutable());
-        m_ui->buildStepDownToolButton->setEnabled(enableDown);
+    const QList<BuildStep *> &steps = m_clean ? m_pro->cleanSteps() : m_pro->buildSteps();
+    for(int i=0; i<m_buildSteps.count(); ++i) {
+        BuildStepsWidgetStruct s = m_buildSteps.at(i);
+        s.upButton->setEnabled((i>0) && !(steps.at(i)->immutable() && steps.at(i - 1)));
+        s.downButton->setEnabled((i + 1< steps.count()) && !(steps.at(i)->immutable() && steps.at(i + 1)->immutable()));
     }
 }
diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h
index 96fa67006ae179327f4d2dee6b1aa5bf340274e4..3c3761d03e19208a7695340741425682eac3139a 100644
--- a/src/plugins/projectexplorer/buildstepspage.h
+++ b/src/plugins/projectexplorer/buildstepspage.h
@@ -34,6 +34,11 @@
 
 QT_BEGIN_NAMESPACE
 class QTreeWidgetItem;
+class QHBoxLayout;
+class QPushButton;
+class QToolButton;
+class QLabel;
+class QVBoxLayout;
 QT_END_NAMESPACE
 
 namespace ProjectExplorer {
@@ -46,7 +51,18 @@ namespace Ui {
     class BuildStepsPage;
 }
 
-class BuildStepsPage : public BuildStepConfigWidget {
+struct BuildStepsWidgetStruct
+{
+    BuildStepConfigWidget *widget;
+    QLabel *detailsLabel;
+    QToolButton *detailsButton;
+    QToolButton *upButton;
+    QToolButton *downButton;
+    QHBoxLayout *hbox;
+};
+
+class BuildStepsPage : public BuildConfigWidget
+{
     Q_OBJECT
     Q_DISABLE_COPY(BuildStepsPage)
 public:
@@ -56,27 +72,34 @@ public:
     QString displayName() const;
     void init(const QString &buildConfiguration);
 
-protected:
-    virtual void changeEvent(QEvent *e);
-
 private slots:
-    void displayNameChanged(BuildStep *bs, const QString &displayName);
-    void updateBuildStepWidget(QTreeWidgetItem *newItem, QTreeWidgetItem *oldItem);
     void updateAddBuildStepMenu();
     void addBuildStep();
+    void updateRemoveBuildStepMenu();
     void removeBuildStep();
     void upBuildStep();
     void downBuildStep();
+    void toggleDetails();
+    void updateSummary();
 
 private:
     void stepMoveUp(int pos);
     void updateBuildStepButtonsState();
+    void addBuildStepWidget(int pos, BuildStep *step);
 
-    Ui::BuildStepsPage *m_ui;
     Project *m_pro;
     QString m_configuration;
     QHash<QAction *, QPair<QString, ProjectExplorer::IBuildStepFactory *> > m_addBuildStepHash;
     bool m_clean;
+
+    QList<QHBoxLayout *> m_titleLayouts;
+    QList<BuildStepsWidgetStruct> m_buildSteps;
+
+    QVBoxLayout *m_vbox;
+
+    QLabel *m_noStepsLabel;
+    QPushButton *m_addButton;
+    QPushButton *m_removeButton;
 };
 
 } // Internal
diff --git a/src/plugins/projectexplorer/dependenciespanel.cpp b/src/plugins/projectexplorer/dependenciespanel.cpp
index 3b5e51f8387393c0ef30d5bde42eb579ee31a86c..e02ff8c168c9bdbb871536c1e5a535505f0c7cf9 100644
--- a/src/plugins/projectexplorer/dependenciespanel.cpp
+++ b/src/plugins/projectexplorer/dependenciespanel.cpp
@@ -36,12 +36,14 @@
 #include <QtCore/QVector>
 #include <QtCore/QDebug>
 #include <QtCore/QAbstractListModel>
+#include <QtGui/QLabel>
 #include <QtGui/QHBoxLayout>
 #include <QtGui/QTreeView>
 #include <QtGui/QSpacerItem>
 #include <QtGui/QHeaderView>
 #include <QtGui/QMessageBox>
 #include <QtGui/QPushButton>
+#include <QtGui/QToolButton>
 #include <QtCore/QCoreApplication>
 
 namespace ProjectExplorer {
@@ -73,7 +75,6 @@ DependenciesModel::~DependenciesModel()
 
 void DependenciesModel::resetModel()
 {
-    qDebug()<<"Resetting";
     m_projects = m_session->projects();
     m_projects.removeAll(m_project);
     reset();
@@ -110,7 +111,7 @@ bool DependenciesModel::setData(const QModelIndex &index, const QVariant &value,
     qDebug() << index << value << role << value.toBool();
 
     if (role == Qt::CheckStateRole) {
-        const Project *p = m_projects.at(index.row());
+        Project *p = m_projects.at(index.row());
         const Qt::CheckState c = static_cast<Qt::CheckState>(value.toInt());
 
         if (c == Qt::Checked) {
@@ -141,35 +142,154 @@ Qt::ItemFlags DependenciesModel::flags(const QModelIndex &index) const
 }
 
 //
-// DependenciesWidget
+// DependenciesView
 //
+DependenciesView::DependenciesView(QWidget *parent)
+    : QTreeView(parent)
+{
+    m_sizeHint = QSize(250, 250);
+    setUniformRowHeights(true);
+    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding);
+    setRootIsDecorated(false);
+}
+
+DependenciesView::~DependenciesView()
+{
+
+}
+
+QSize DependenciesView::sizeHint() const
+{
+    qDebug()<<"sizeHint()"<<m_sizeHint;
+    return m_sizeHint;
+}
+
+void DependenciesView::setModel(QAbstractItemModel *newModel)
+{
+    if (QAbstractItemModel *oldModel = model()) {
+        disconnect(oldModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
+                this, SLOT(updateSizeHint()));
+        disconnect(oldModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
+                this, SLOT(updateSizeHint()));
+        disconnect(oldModel, SIGNAL(modelReset()),
+                this, SLOT(updateSizeHint()));
+        disconnect(oldModel, SIGNAL(layoutChanged()),
+                this, SLOT(updateSizeHint()));
+    }
+
+    QTreeView::setModel(newModel);
+
+    if (newModel) {
+        connect(newModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
+                this, SLOT(updateSizeHint()));
+        connect(newModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
+                this, SLOT(updateSizeHint()));
+        connect(newModel, SIGNAL(modelReset()),
+                this, SLOT(updateSizeHint()));
+        connect(newModel, SIGNAL(layoutChanged()),
+                this, SLOT(updateSizeHint()));
+    }
+    updateSizeHint();
+}
 
-class DependenciesWidget : public QWidget
+void DependenciesView::updateSizeHint()
 {
-public:
-    DependenciesWidget(SessionManager *session, Project *project,
-                       QWidget *parent = 0);
+    if (!model()) {
+        m_sizeHint = QSize(250, 250);
+        return;
+    }
 
-private:
-    SessionManager *m_session;
-    DependenciesModel *m_model;
-};
+    int heightOffset = size().height() - viewport()->height();
+
+    qDebug()<<"updating sizehint";
+    int heightPerRow = sizeHintForRow(0);
+    if (heightPerRow == -1) {
+        qDebug()<<"No row height";
+        heightPerRow = 30;
+    }
+    int rows = qMin(qMax(model()->rowCount(), 2), 10);
+    int height = rows * heightPerRow + heightOffset;
+    if (m_sizeHint.height() != height) {
+        m_sizeHint.setHeight(height);
+        updateGeometry();
+    }
+}
+
+//
+// DependenciesWidget
+//
 
 DependenciesWidget::DependenciesWidget(SessionManager *session,
                                        Project *project,
                                        QWidget *parent)
     : QWidget(parent)
     , m_session(session)
+    , m_project(project)
     , m_model(new DependenciesModel(session, project, this))
 {
-    QHBoxLayout *layout = new QHBoxLayout(this);
+    QVBoxLayout *vbox = new QVBoxLayout(this);
+    vbox->setContentsMargins(0, 0, 0, 0);
+
+    QHBoxLayout *hbox = new QHBoxLayout();
+    m_titleLabel = new QLabel(this);
+    m_titleLabel->setText("Dummy Text");
+    hbox->addWidget(m_titleLabel);
+
+    QToolButton *detailsButton = new QToolButton(this);
+    detailsButton->setText(tr("Details"));
+    connect(detailsButton, SIGNAL(clicked()),
+            this, SLOT(toggleDetails()));
+
+    hbox->addWidget(detailsButton);
+    vbox->addLayout(hbox);
+
+    m_detailsWidget = new QWidget(this);
+    QHBoxLayout *layout = new QHBoxLayout(m_detailsWidget);
     layout->setContentsMargins(0, -1, 0, -1);
-    QTreeView *treeView = new QTreeView(this);
+    DependenciesView *treeView = new DependenciesView(this);
     treeView->setModel(m_model);
     treeView->setHeaderHidden(true);
-    treeView->setMinimumHeight(250);
     layout->addWidget(treeView);
     layout->addSpacerItem(new QSpacerItem(0, 0 , QSizePolicy::Expanding, QSizePolicy::Fixed));
+    vbox->addWidget(m_detailsWidget);
+    m_detailsWidget->setVisible(false);
+
+    updateDetails();
+
+    connect(session, SIGNAL(dependencyChanged(ProjectExplorer::Project*,ProjectExplorer::Project*)),
+            this, SLOT(updateDetails()));
+
+    connect(session, SIGNAL(projectRemoved(ProjectExplorer::Project*)),
+            this, SLOT(updateDetails()));
+    connect(session, SIGNAL(projectAdded(ProjectExplorer::Project*)),
+            this, SLOT(updateDetails()));
+    connect(session, SIGNAL(sessionLoaded()),
+            this, SLOT(updateDetails()));
+}
+
+void DependenciesWidget::toggleDetails()
+{
+    m_detailsWidget->setVisible(!m_detailsWidget->isVisible());
+}
+
+void DependenciesWidget::updateDetails()
+{
+    QStringList dependsOn;
+
+    foreach(Project *other, m_session->projects()) {
+        if (m_session->hasDependency(m_project, other)) {
+            dependsOn.append(other->name());
+        }
+    }
+    QString text;
+    if (dependsOn.isEmpty()) {
+        text = tr("%1 has no dependencies.").arg(m_project->name());
+    } else if (dependsOn.count() == 1) {
+        text =tr("%1 depends on %2.").arg(m_project->name(), dependsOn.first());
+    } else {
+        text = tr("%1 depends on: %2.").arg(m_project->name(), dependsOn.join(tr(", ")));
+    }
+    m_titleLabel->setText(text);
 }
 
 //
diff --git a/src/plugins/projectexplorer/dependenciespanel.h b/src/plugins/projectexplorer/dependenciespanel.h
index 422120c10e0285b04b1ed85d1c7a2da4c28edd07..dfa39627ae3a07048fee3c6a19a0af08576d6ff6 100644
--- a/src/plugins/projectexplorer/dependenciespanel.h
+++ b/src/plugins/projectexplorer/dependenciespanel.h
@@ -32,7 +32,10 @@
 
 #include "iprojectproperties.h"
 
+#include <QtCore/QSize>
 #include <QtGui/QWidget>
+#include <QtGui/QLabel>
+#include <QtGui/QTreeView>
 
 namespace ProjectExplorer {
 
@@ -95,6 +98,38 @@ private:
     QList<Project *> m_projects;
 };
 
+class DependenciesView : public QTreeView
+{
+    Q_OBJECT
+public:
+    DependenciesView(QWidget *parent);
+    ~DependenciesView();
+    virtual QSize sizeHint() const;
+    virtual void setModel(QAbstractItemModel *model);
+private slots:
+    void updateSizeHint();
+private:
+    QSize m_sizeHint;
+};
+
+class DependenciesWidget : public QWidget
+{
+    Q_OBJECT
+public:
+    DependenciesWidget(SessionManager *session, Project *project,
+                       QWidget *parent = 0);
+private slots:
+    void toggleDetails();
+    void updateDetails();
+
+private:
+    SessionManager *m_session;
+    Project *m_project;
+    DependenciesModel *m_model;
+    QWidget *m_detailsWidget;
+    QLabel *m_titleLabel;
+};
+
 } // namespace Internal
 } // namespace ProjectExplorer
 
diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp
index 6e0fc3d0407ccbe9345708c1ae787474ae60f234..0b0d0d12ff365fe075669d8b19d848b7a40597b8 100644
--- a/src/plugins/projectexplorer/processstep.cpp
+++ b/src/plugins/projectexplorer/processstep.cpp
@@ -71,7 +71,6 @@ QString ProcessStep::name()
 void ProcessStep::setDisplayName(const QString &name)
 {
     setValue("ProjectExplorer.ProcessStep.DisplayName", name);
-    emit displayNameChanged(this, name);
 }
 
 QString ProcessStep::displayName()
@@ -142,8 +141,27 @@ ProcessStepConfigWidget::ProcessStepConfigWidget(ProcessStep *step)
             this, SLOT(nameLineEditTextEdited()));
     connect(m_ui.commandArgumentsLineEdit, SIGNAL(textEdited(const QString&)),
             this, SLOT(commandArgumentsLineEditTextEdited()));
-    connect(m_ui.enabledGroupBox, SIGNAL(clicked(bool)),
-            this, SLOT(enabledGroupBoxClicked(bool)));
+    connect(m_ui.enabledCheckBox, SIGNAL(clicked(bool)),
+            this, SLOT(enabledCheckBoxClicked(bool)));
+
+    connect(m_ui.detailsButton, SIGNAL(clicked()),
+            this, SLOT(toggleDetails()));
+
+    m_ui.detailsWidget->setVisible(false);
+}
+
+void ProcessStepConfigWidget::updateDetails()
+{
+    m_summaryText = tr("<b>Process Step</b> %1 %2 %3")
+                    .arg(m_step->command(m_buildConfiguration),
+                         m_step->arguments(m_buildConfiguration).join(" "),
+                         m_step->enabled(m_buildConfiguration) ? "" : tr("(disabled)"));
+    emit updateSummary();
+}
+
+void ProcessStepConfigWidget::toggleDetails()
+{
+    m_ui.detailsWidget->setVisible(!m_ui.detailsWidget->isVisible());
 }
 
 QString ProcessStepConfigWidget::displayName() const
@@ -163,9 +181,15 @@ void ProcessStepConfigWidget::init(const QString &buildConfiguration)
         m_ui.workingDirectory->setPath(workingDirectory);
 
         m_ui.commandArgumentsLineEdit->setText(m_step->arguments(buildConfiguration).join(" "));
-        m_ui.enabledGroupBox->setChecked(m_step->enabled(buildConfiguration));
+        m_ui.enabledCheckBox->setChecked(m_step->enabled(buildConfiguration));
     }
     m_ui.nameLineEdit->setText(m_step->displayName());
+    updateDetails();
+}
+
+QString ProcessStepConfigWidget::summaryText() const
+{
+    return m_summaryText;
 }
 
 void ProcessStepConfigWidget::nameLineEditTextEdited()
@@ -176,6 +200,7 @@ void ProcessStepConfigWidget::nameLineEditTextEdited()
 void ProcessStepConfigWidget::commandLineEditTextEdited()
 {
     m_step->setCommand(m_buildConfiguration, m_ui.command->path());
+    updateDetails();
 }
 
 void ProcessStepConfigWidget::workingDirectoryLineEditTextEdited()
@@ -188,9 +213,11 @@ void ProcessStepConfigWidget::commandArgumentsLineEditTextEdited()
 {
     m_step->setArguments(m_buildConfiguration, m_ui.commandArgumentsLineEdit->text().split(" ",
           QString::SkipEmptyParts));
+    updateDetails();
 }
 
-void ProcessStepConfigWidget::enabledGroupBoxClicked(bool)
+void ProcessStepConfigWidget::enabledCheckBoxClicked(bool)
 {
-    m_step->setEnabled(m_buildConfiguration, m_ui.enabledGroupBox->isChecked());
+    m_step->setEnabled(m_buildConfiguration, m_ui.enabledCheckBox->isChecked());
+    updateDetails();
 }
diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h
index d38b0289b7fbae9e19ae25a4330a22ab6f0b981c..da444d1e253cde81e723da18fa29eb2553b71ea7 100644
--- a/src/plugins/projectexplorer/processstep.h
+++ b/src/plugins/projectexplorer/processstep.h
@@ -74,16 +74,20 @@ public:
     ProcessStepConfigWidget(ProcessStep *step);
     virtual QString displayName() const;
     virtual void init(const QString &buildConfiguration);
+    virtual QString summaryText() const;
 private slots:
     void nameLineEditTextEdited();
     void commandLineEditTextEdited();
     void workingDirectoryLineEditTextEdited();
     void commandArgumentsLineEditTextEdited();
-    void enabledGroupBoxClicked(bool);
+    void enabledCheckBoxClicked(bool);
+    void toggleDetails();
 private:
+    void updateDetails();
     QString m_buildConfiguration;
     ProcessStep *m_step;
     Ui::ProcessStepWidget m_ui;
+    QString m_summaryText;
 };
 
 } // namespace Internal
diff --git a/src/plugins/projectexplorer/processstep.ui b/src/plugins/projectexplorer/processstep.ui
index 26fb34a359529939a88ed36c80bd7f4f4c9193f7..19264f81a42848232fbfa14e53e90669d62a3089 100644
--- a/src/plugins/projectexplorer/processstep.ui
+++ b/src/plugins/projectexplorer/processstep.ui
@@ -6,85 +6,95 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>509</width>
-    <height>271</height>
+    <width>299</width>
+    <height>154</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
-   <property name="spacing">
-    <number>0</number>
-   </property>
    <property name="margin">
     <number>0</number>
    </property>
    <item>
-    <widget class="QGroupBox" name="enabledGroupBox">
-     <property name="title">
-      <string>Enable custom process step</string>
-     </property>
-     <property name="checkable">
-      <bool>true</bool>
-     </property>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLabel" name="titleLabel">
+       <property name="text">
+        <string>Custom Process:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="detailsButton">
+       <property name="text">
+        <string>Details</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QWidget" name="detailsWidget" native="true">
      <layout class="QFormLayout" name="formLayout">
-      <property name="fieldGrowthPolicy">
-       <enum>QFormLayout::ExpandingFieldsGrow</enum>
+      <property name="margin">
+       <number>0</number>
       </property>
       <item row="0" column="0">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Enable Custom Process Step</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QCheckBox" name="enabledCheckBox">
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
        <widget class="QLabel" name="nameLabel">
         <property name="text">
          <string>Name:</string>
         </property>
        </widget>
       </item>
-      <item row="0" column="1">
+      <item row="1" column="1">
        <widget class="QLineEdit" name="nameLineEdit"/>
       </item>
-      <item row="1" column="0">
+      <item row="2" column="0">
        <widget class="QLabel" name="commandLabel">
         <property name="text">
          <string>Command:</string>
         </property>
        </widget>
       </item>
-      <item row="1" column="1">
-       <widget class="Core::Utils::PathChooser" name="command"/>
+      <item row="2" column="1">
+       <widget class="Core::Utils::PathChooser" name="command" native="true"/>
       </item>
-      <item row="2" column="0">
+      <item row="3" column="0">
        <widget class="QLabel" name="workingDirecoryLabel">
         <property name="text">
          <string>Working Directory:</string>
         </property>
        </widget>
       </item>
-      <item row="2" column="1">
-       <widget class="Core::Utils::PathChooser" name="workingDirectory"/>
+      <item row="3" column="1">
+       <widget class="Core::Utils::PathChooser" name="workingDirectory" native="true"/>
       </item>
-      <item row="3" column="0">
+      <item row="4" column="0">
        <widget class="QLabel" name="commandArgumentsLabel">
         <property name="text">
          <string>Command Arguments:</string>
         </property>
        </widget>
       </item>
-      <item row="3" column="1">
+      <item row="4" column="1">
        <widget class="QLineEdit" name="commandArgumentsLineEdit"/>
       </item>
      </layout>
     </widget>
    </item>
-   <item>
-    <spacer name="verticalSpacer">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>80</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
   </layout>
  </widget>
  <customwidgets>
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index 9e09882e340272d3b0fec09337c4fff7db7a0a9a..68a8ef70d1557fb9a989a4c48a72e13d38b13e5d 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -194,9 +194,9 @@ bool Project::restoreSettings()
     return true;
 }
 
-QList<BuildStepConfigWidget*> Project::subConfigWidgets()
+QList<BuildConfigWidget*> Project::subConfigWidgets()
 {
-    return QList<BuildStepConfigWidget*>();
+    return QList<BuildConfigWidget*>();
 }
 
 void Project::saveSettingsImpl(PersistentSettingsWriter &writer)
diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h
index f5e2ce3d8281418e3e1fae4f5a7e7ba736514df2..742e8eecb33ed48772a09453bf1cd09e0a6b50e7 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -52,7 +52,7 @@ namespace ProjectExplorer {
 
 class BuildManager;
 class BuildStep;
-class BuildStepConfigWidget;
+class BuildConfigWidget;
 class IProjectManager;
 class RunConfiguration;
 class EditorConfiguration;
@@ -126,8 +126,8 @@ public:
     void saveSettings();
     bool restoreSettings();
 
-    virtual BuildStepConfigWidget *createConfigWidget() = 0;
-    virtual QList<BuildStepConfigWidget*> subConfigWidgets();
+    virtual BuildConfigWidget *createConfigWidget() = 0;
+    virtual QList<BuildConfigWidget*> subConfigWidgets();
 
     /* This method is called for new build configurations. You should probably
      * set some default values in this method.
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index 6309ae446c62f92b8e931ecc3c2fccb27aaa29e8..5b09b6da3ed39404f9c4f6518d33bbdf3c54dd90 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -71,6 +71,7 @@ PanelsWidget::PanelsWidget(QWidget *parent)
     QWidget *verticalWidget = new QWidget;
     verticalWidget->setMaximumWidth(800);
     m_layout = new QVBoxLayout;
+    m_layout->addStretch(10);
     verticalWidget->setLayout(m_layout);
     topwidgetLayout->addWidget(verticalWidget);
     topwidgetLayout->addStretch(10);
@@ -95,10 +96,15 @@ void PanelsWidget::addWidget(const QString &name, QWidget *widget)
     f.setPointSizeF(f.pointSizeF() * 1.4);
     p.nameLabel->setFont(f);
     p.panelWidget = widget;
-    m_panels.append(p);
 
-    m_layout->addWidget(p.nameLabel);
-    m_layout->addWidget(p.panelWidget);
+    m_layout->insertWidget(m_layout->count() -1, p.nameLabel);
+    QHBoxLayout *hboxLayout = new QHBoxLayout();
+    hboxLayout->setContentsMargins(20, 0, 0, 0);
+    hboxLayout->addWidget(p.panelWidget);
+    p.marginLayout = hboxLayout;
+    m_layout->insertLayout(m_layout->count() -1, hboxLayout);
+
+    m_panels.append(p);
 }
 
 void PanelsWidget::clear()
@@ -106,10 +112,74 @@ void PanelsWidget::clear()
     foreach(Panel p, m_panels) {
         delete p.nameLabel;
         delete p.panelWidget;
+        delete p.marginLayout;
     }
     m_panels.clear();
 }
 
+///
+// ProjectView
+///
+
+ProjectView::ProjectView(QWidget *parent)
+    : QTreeWidget(parent)
+{
+    m_sizeHint = QSize(250, 250);
+    setUniformRowHeights(true);
+    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+
+    QAbstractItemModel *m = model();
+    connect(m, SIGNAL(rowsInserted(QModelIndex,int,int)),
+            this, SLOT(updateSizeHint()));
+    connect(m, SIGNAL(rowsRemoved(QModelIndex,int,int)),
+            this, SLOT(updateSizeHint()));
+    connect(m, SIGNAL(modelReset()),
+            this, SLOT(updateSizeHint()));
+    connect(m, SIGNAL(layoutChanged()),
+            this, SLOT(updateSizeHint()));
+    updateSizeHint();
+}
+
+ProjectView::~ProjectView()
+{
+
+}
+
+QSize ProjectView::sizeHint() const
+{
+    qDebug()<<"sizeHint()"<<m_sizeHint;
+    return m_sizeHint;
+}
+
+void ProjectView::updateSizeHint()
+{
+    if (!model()) {
+        m_sizeHint = QSize(250, 250);
+        return;
+    }
+
+    int heightOffset = size().height() - viewport()->height();
+    qDebug()<<"heightOffset"<<heightOffset;
+
+    qDebug()<<"updating sizehint";
+    int heightPerRow = sizeHintForRow(0);
+    if (heightPerRow == -1) {
+        qDebug()<<"No row height";
+        heightPerRow = 30;
+    }
+    int rows = qMin(qMax(model()->rowCount(), 2), 6);
+    int height = rows * heightPerRow + heightOffset;
+    if (m_sizeHint.height() != height) {
+        m_sizeHint.setHeight(height);
+        updateGeometry();
+    }
+}
+
+
+///
+// ProjectWindow
+///
+
 ProjectWindow::ProjectWindow(QWidget *parent)
     : QWidget(parent), m_currentItemChanged(false)
 {
@@ -119,7 +189,7 @@ ProjectWindow::ProjectWindow(QWidget *parent)
     m_projectExplorer = ProjectExplorerPlugin::instance();
     m_session = m_projectExplorer->session();
 
-    m_treeWidget = new QTreeWidget(this);
+    m_treeWidget = new ProjectView(this);
     m_treeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
     m_treeWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
     m_treeWidget->setFrameStyle(QFrame::NoFrame);
@@ -138,27 +208,11 @@ ProjectWindow::ProjectWindow(QWidget *parent)
 
     m_panelsWidget = new PanelsWidget(this);
 
-    QWidget *dummy = new QWidget;
-    QVBoxLayout *dummyLayout = new QVBoxLayout(dummy);
-    dummyLayout->setMargin(0);
-    dummyLayout->setSpacing(0);
-    dummyLayout->addWidget(new Core::Utils::StyledBar(dummy));
-    dummyLayout->addWidget(m_treeWidget);
-
-    QSplitter *splitter = new Core::MiniSplitter;
-    splitter->setOrientation(Qt::Vertical);
-    splitter->addWidget(dummy);
-    splitter->addWidget(m_panelsWidget);
-
-    // make sure that the tree treewidget has same size policy as qtabwidget
-    m_treeWidget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
-    const int treeWidgetMinSize = m_treeWidget->minimumSizeHint().height();
-    splitter->setSizes(QList<int>() << treeWidgetMinSize << splitter->height() - treeWidgetMinSize);
-
-    QVBoxLayout *topLayout = new QVBoxLayout(this);
-    topLayout->setMargin(0);
-    topLayout->setSpacing(0);
-    topLayout->addWidget(splitter);
+    QVBoxLayout *topLevelLayout = new QVBoxLayout(this);
+    topLevelLayout->setMargin(0);
+    topLevelLayout->addWidget(new Core::Utils::StyledBar(this));
+    topLevelLayout->addWidget(m_treeWidget);
+    topLevelLayout->addWidget(m_panelsWidget);
 
     connect(m_session, SIGNAL(sessionLoaded()), this, SLOT(restoreStatus()));
     connect(m_session, SIGNAL(aboutToSaveSession()), this, SLOT(saveStatus()));
@@ -167,7 +221,6 @@ ProjectWindow::ProjectWindow(QWidget *parent)
     connect(m_session, SIGNAL(projectAdded(ProjectExplorer::Project*)), this, SLOT(updateTreeWidgetProjectAdded(ProjectExplorer::Project*)));
     connect(m_session, SIGNAL(projectRemoved(ProjectExplorer::Project*)), this, SLOT(updateTreeWidgetProjectRemoved(ProjectExplorer::Project*)));
     connect(m_session, SIGNAL(aboutToRemoveProject(ProjectExplorer::Project*)), this, SLOT(updateTreeWidgetAboutToRemoveProject(ProjectExplorer::Project*)));
-
 }
 
 ProjectWindow::~ProjectWindow()
diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h
index 3eaa30eebb030db585878282a503695c871d9daf..0c10c6271927cb123205d286df919b0146eb7eb6 100644
--- a/src/plugins/projectexplorer/projectwindow.h
+++ b/src/plugins/projectexplorer/projectwindow.h
@@ -32,14 +32,15 @@
 
 #include <QtGui/QWidget>
 #include <QtGui/QScrollArea>
+#include <QtGui/QTreeWidget>
 
 QT_BEGIN_NAMESPACE
 class QLabel;
 class QVBoxLayout;
 class QModelIndex;
 class QTabWidget;
-class QTreeWidget;
 class QTreeWidgetItem;
+class QHBoxLayout;
 QT_END_NAMESPACE
 
 namespace ProjectExplorer {
@@ -68,11 +69,26 @@ private:
     {
         QLabel *nameLabel;
         QWidget *panelWidget;
+        QHBoxLayout *marginLayout;
     };
     QVBoxLayout *m_layout;
     QList<Panel> m_panels;
 };
 
+
+class ProjectView : public QTreeWidget
+{
+    Q_OBJECT
+public:
+    ProjectView (QWidget *parent);
+    ~ProjectView ();
+    virtual QSize sizeHint() const;
+private slots:
+    void updateSizeHint();
+private:
+    QSize m_sizeHint;
+};
+
 class ProjectWindow : public QWidget
 {
     Q_OBJECT
@@ -98,13 +114,14 @@ private:
     SessionManager *m_session;
     ProjectExplorerPlugin *m_projectExplorer;
 
-    QTreeWidget* m_treeWidget;
+    ProjectView* m_treeWidget;
     PanelsWidget *m_panelsWidget;
 
     Project *findProject(const QString &path) const;
     bool m_currentItemChanged;
 };
 
+
 } // namespace Internal
 } // namespace ProjectExplorer
 
diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp
index ed7a46e0c84bcbee9e8bb2fcafe9d5f7a1dc31bb..09dcb6e1491efbfc1c033d1985b4fd5a3b9083f2 100644
--- a/src/plugins/projectexplorer/session.cpp
+++ b/src/plugins/projectexplorer/session.cpp
@@ -484,7 +484,7 @@ bool SessionManager::canAddDependency(const Project *project, const Project *dep
     return recursiveDependencyCheck(newDep, checkDep);
 }
 
-bool SessionManager::addDependency(const Project *project, const Project *depProject)
+bool SessionManager::addDependency(Project *project, Project *depProject)
 {
     const QString &proName = project->file()->fileName();
     const QString &depName = depProject->file()->fileName();
@@ -498,11 +498,12 @@ bool SessionManager::addDependency(const Project *project, const Project *depPro
         proDeps.append(depName);
         m_file->m_depMap[proName] = proDeps;
     }
+    emit dependencyChanged(project, depProject);
 
     return true;
 }
 
-void SessionManager::removeDependency(const Project *project, const Project *depProject)
+void SessionManager::removeDependency(Project *project, Project *depProject)
 {
     const QString &proName = project->file()->fileName();
     const QString &depName = depProject->file()->fileName();
@@ -514,6 +515,7 @@ void SessionManager::removeDependency(const Project *project, const Project *dep
     } else {
         m_file->m_depMap[proName] = proDeps;
     }
+    emit dependencyChanged(project, depProject);
 }
 
 void SessionManager::setStartupProject(Project *startupProject)
diff --git a/src/plugins/projectexplorer/session.h b/src/plugins/projectexplorer/session.h
index 3cbf09b1b84f7cc5a4bfb8c3c55fc4e97749b701..063f72f74b8ed4b53fc1348f531ea76321fe103e 100644
--- a/src/plugins/projectexplorer/session.h
+++ b/src/plugins/projectexplorer/session.h
@@ -122,8 +122,8 @@ public:
     QList<Project *> dependencies(const Project *project) const;
     bool hasDependency(const Project *project, const Project *depProject) const;
     bool canAddDependency(const Project *project, const Project *depProject) const;
-    bool addDependency(const Project *project, const Project *depProject);
-    void removeDependency(const Project *project, const Project *depProject);
+    bool addDependency(Project *project, Project *depProject);
+    void removeDependency(Project *project, Project *depProject);
 
     Core::IFile *file() const;
     Project *startupProject() const;
@@ -162,6 +162,7 @@ signals:
     void sessionUnloaded();
     void sessionLoaded();
     void aboutToSaveSession();
+    void dependencyChanged(ProjectExplorer::Project *a, ProjectExplorer::Project *b);
 
 private slots:
     void saveActiveMode(Core::IMode *mode);
diff --git a/src/plugins/qmlprojectmanager/qmlmakestep.cpp b/src/plugins/qmlprojectmanager/qmlmakestep.cpp
index a5cef94f7fd1e29f9df985d1e725817aeb569859..f53ab96d3f7f88791df0f6ba6f5cde22fca9e17c 100644
--- a/src/plugins/qmlprojectmanager/qmlmakestep.cpp
+++ b/src/plugins/qmlprojectmanager/qmlmakestep.cpp
@@ -129,6 +129,11 @@ void QmlMakeStepConfigWidget::init(const QString &)
 {
 }
 
+QString QmlMakeStepConfigWidget::summaryText() const
+{
+    return tr("<b>QML Make</b>");
+}
+
 //
 // QmlMakeStepFactory
 //
diff --git a/src/plugins/qmlprojectmanager/qmlmakestep.h b/src/plugins/qmlprojectmanager/qmlmakestep.h
index 424e86930afe768b6245467414be3d82f50af9be..a74e659cad14c9f41d891327d12effd2f84bca55 100644
--- a/src/plugins/qmlprojectmanager/qmlmakestep.h
+++ b/src/plugins/qmlprojectmanager/qmlmakestep.h
@@ -78,6 +78,7 @@ public:
 
     virtual QString displayName() const;
     virtual void init(const QString &buildConfiguration);
+    virtual QString summaryText() const;
 
 private:
     QmlMakeStep *m_makeStep;
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index b9a7d2e5d2b85849feb9323319dd4190a46ec8b2..e8fce4f33a29c59630c46143ba0674e85b9a85d0 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -200,14 +200,14 @@ QString QmlProject::buildDirectory(const QString &) const
     return QString();
 }
 
-ProjectExplorer::BuildStepConfigWidget *QmlProject::createConfigWidget()
+ProjectExplorer::BuildConfigWidget *QmlProject::createConfigWidget()
 {
     return 0;
 }
 
-QList<ProjectExplorer::BuildStepConfigWidget*> QmlProject::subConfigWidgets()
+QList<ProjectExplorer::BuildConfigWidget*> QmlProject::subConfigWidgets()
 {
-    return QList<ProjectExplorer::BuildStepConfigWidget*>();
+    return QList<ProjectExplorer::BuildConfigWidget*>();
 }
 
 void QmlProject::newBuildConfiguration(const QString &)
diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h
index 662abdeb8828126d0b5a940c34a6cfe64c17480c..90730aa3e500ceb37c27865a1158fad6ee866e45 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.h
+++ b/src/plugins/qmlprojectmanager/qmlproject.h
@@ -69,8 +69,8 @@ public:
     virtual ProjectExplorer::Environment environment(const QString &buildConfiguration) const;
     virtual QString buildDirectory(const QString &buildConfiguration) const;
 
-    virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
-    virtual QList<ProjectExplorer::BuildStepConfigWidget*> subConfigWidgets();
+    virtual ProjectExplorer::BuildConfigWidget *createConfigWidget();
+    virtual QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
 
     virtual void newBuildConfiguration(const QString &buildConfiguration);
     virtual QmlProjectNode *rootProjectNode() const;
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index de4c28a3c4039a4b8c6fa0cca9d3915cd1dea020..5c1d3bc2908d6afbd94a2d328c7a9f2eb84b0fe6 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -174,7 +174,51 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep)
 
     connect(makeStep, SIGNAL(changed()),
             this, SLOT(update()));
+}
+
+void MakeStepConfigWidget::updateTitle()
+{
+    // TODO reduce heavy code duplication
+    QString workingDirectory;
+    Qt4Project *pro = static_cast<Qt4Project *>(m_makeStep->project());
+    if (pro->value(m_buildConfiguration, "useShadowBuild").toBool())
+        workingDirectory = pro->value(m_buildConfiguration, "buildDirectory").toString();
+    if (workingDirectory.isEmpty())
+        workingDirectory = QFileInfo(pro->file()->fileName()).absolutePath();
 
+    Qt4Project *qt4project = qobject_cast<Qt4Project *>(pro);
+    QString makeCmd = qt4project->makeCommand(m_buildConfiguration);
+    if (!m_makeStep->value(m_buildConfiguration, "makeCmd").toString().isEmpty())
+        makeCmd = m_makeStep->value(m_buildConfiguration, "makeCmd").toString();
+    if (!QFileInfo(makeCmd).isAbsolute()) {
+        Environment environment = pro->environment(m_buildConfiguration);
+        // Try to detect command in environment
+        QString tmp = environment.searchInPath(makeCmd);
+        if (tmp == QString::null) {
+            m_summaryText = tr("<b>Make Step:</b> %1 not found in the environment.").arg(makeCmd);
+            emit updateSummary();
+            return;
+        }
+        makeCmd = tmp;
+    }
+    // -w option enables "Enter"/"Leaving directory" messages, which we need for detecting the
+    // absolute file path
+    // FIXME doing this without the user having a way to override this is rather bad
+    // so we only do it for unix and if the user didn't override the make command
+    // but for now this is the least invasive change
+    QStringList args = m_makeStep->value(m_buildConfiguration, "makeargs").toStringList();
+    ProjectExplorer::ToolChain::ToolChainType t = qobject_cast<Qt4Project *>(pro)->toolChain(m_buildConfiguration)->type();
+    if (t != ProjectExplorer::ToolChain::MSVC && t != ProjectExplorer::ToolChain::WINCE) {
+        if (m_makeStep->value(m_buildConfiguration, "makeCmd").toString().isEmpty())
+            args << "-w";
+    }
+    m_summaryText = tr("<b>Make:</b> %1 %2 in %3").arg(QFileInfo(makeCmd).fileName(), args.join(" "), workingDirectory);
+    emit updateSummary();
+}
+
+QString MakeStepConfigWidget::summaryText() const
+{
+    return m_summaryText;
 }
 
 QString MakeStepConfigWidget::displayName() const
@@ -208,12 +252,14 @@ void MakeStepConfigWidget::init(const QString &buildConfiguration)
     const QStringList &makeArguments =
             m_makeStep->value(buildConfiguration, "makeargs").toStringList();
     m_ui.makeArgumentsLineEdit->setText(ProjectExplorer::Environment::joinArgumentList(makeArguments));
+    updateTitle();
 }
 
 void MakeStepConfigWidget::makeLineEditTextEdited()
 {
     Q_ASSERT(!m_buildConfiguration.isNull());
     m_makeStep->setValue(m_buildConfiguration, "makeCmd", m_ui.makeLineEdit->text());
+    updateTitle();
 }
 
 void MakeStepConfigWidget::makeArgumentsLineEditTextEdited()
@@ -221,6 +267,7 @@ void MakeStepConfigWidget::makeArgumentsLineEditTextEdited()
     Q_ASSERT(!m_buildConfiguration.isNull());
     m_makeStep->setValue(m_buildConfiguration, "makeargs",
                          ProjectExplorer::Environment::parseCombinedArgString(m_ui.makeArgumentsLineEdit->text()));
+    updateTitle();
 }
 
 ///
diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h
index b8d3d8599780a68816d0c9f762ed6c43f141a1d7..039b0ef2abceddb670a0fae763a773808fbf3d9e 100644
--- a/src/plugins/qt4projectmanager/makestep.h
+++ b/src/plugins/qt4projectmanager/makestep.h
@@ -86,14 +86,17 @@ public:
     MakeStepConfigWidget(MakeStep *makeStep);
     QString displayName() const;
     void init(const QString &buildConfiguration);
+    QString summaryText() const;
 private slots:
     void makeLineEditTextEdited();
     void makeArgumentsLineEditTextEdited();
     void update();
 private:
+    void updateTitle();
     QString m_buildConfiguration;
     Ui::MakeStep m_ui;
     MakeStep *m_makeStep;
+    QString m_summaryText;
 };
 
 } // Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/makestep.ui b/src/plugins/qt4projectmanager/makestep.ui
index 558fbeb6aad2ac62ae8a947aa36933f6a05ff7da..f2007e7e398422484f1f02abf1c6f2198900e548 100644
--- a/src/plugins/qt4projectmanager/makestep.ui
+++ b/src/plugins/qt4projectmanager/makestep.ui
@@ -7,16 +7,10 @@
     <x>0</x>
     <y>0</y>
     <width>235</width>
-    <height>78</height>
+    <height>64</height>
    </rect>
   </property>
   <layout class="QFormLayout" name="formLayout">
-   <property name="fieldGrowthPolicy">
-    <enum>QFormLayout::ExpandingFieldsGrow</enum>
-   </property>
-   <property name="margin">
-    <number>0</number>
-   </property>
    <item row="0" column="0">
     <widget class="QLabel" name="makeLabel">
      <property name="text">
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 0169c04531f940d43f9e6d936cc4efb76703b92b..f4e9c429acda2dbe8e48183ff3c8d58ef8f13d17 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -210,12 +210,40 @@ QMakeStepConfigWidget::QMakeStepConfigWidget(QMakeStep *step)
             this, SLOT(update()));
 }
 
+QString QMakeStepConfigWidget::summaryText() const
+{
+    return m_summaryText;
+}
+
+void QMakeStepConfigWidget::updateTitleLabel()
+{
+    const QtVersion *qtVersion = static_cast<Qt4Project *>(m_step->project())->qtVersion(m_buildConfiguration);
+    if (!qtVersion) {
+        m_summaryText = tr("<b>QMake:</b> No qt version set. QMake can't be run.");
+        emit updateSummary();
+        return;
+    }
+
+    QStringList args = m_step->arguments(m_buildConfiguration);
+    // We don't want the full path to the .pro file
+    int index = args.indexOf(m_step->project()->file()->fileName());
+    if (index != -1)
+        args[index] = QFileInfo(m_step->project()->file()->fileName()).fileName();
+
+    // And we only use the .pro filename not the full path
+    QString program = QFileInfo(qtVersion->qmakeCommand()).fileName();
+    m_summaryText = tr("<b>QMake:</b> %1 %2").arg(program, args.join(" "));
+    emit updateSummary();
+
+}
+
 void QMakeStepConfigWidget::qmakeArgumentsLineEditTextEdited()
 {
     Q_ASSERT(!m_buildConfiguration.isNull());
     m_step->setValue(m_buildConfiguration, "qmakeArgs", ProjectExplorer::Environment::parseCombinedArgString(m_ui.qmakeAdditonalArgumentsLineEdit->text()));
     m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(m_buildConfiguration)));
     static_cast<Qt4Project *>(m_step->project())->invalidateCachedTargetInformation();
+    updateTitleLabel();
 }
 
 void QMakeStepConfigWidget::buildConfigurationChanged()
@@ -230,6 +258,7 @@ void QMakeStepConfigWidget::buildConfigurationChanged()
     m_step->project()->setValue(m_buildConfiguration, "buildConfiguration", int(buildConfiguration));
     m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(m_buildConfiguration)));
     static_cast<Qt4Project *>(m_step->project())->invalidateCachedTargetInformation();
+    updateTitleLabel();
 }
 
 QString QMakeStepConfigWidget::displayName() const
@@ -250,6 +279,7 @@ void QMakeStepConfigWidget::init(const QString &buildConfiguration)
     m_ui.qmakeArgumentsEdit->setPlainText(ProjectExplorer::Environment::joinArgumentList(m_step->arguments(buildConfiguration)));
     bool debug = QtVersion::QmakeBuildConfig(m_step->project()->value(buildConfiguration, "buildConfiguration").toInt()) & QtVersion::DebugBuild;
     m_ui.buildConfigurationComboBox->setCurrentIndex(debug? 0 : 1);
+    updateTitleLabel();
 }
 
 ////
diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h
index 59b87cecc63689b84c065e727c1ce4979925b82e..98df23c0e6475a968bc1f5929cbd0337cff21712 100644
--- a/src/plugins/qt4projectmanager/qmakestep.h
+++ b/src/plugins/qt4projectmanager/qmakestep.h
@@ -102,14 +102,17 @@ public:
     QMakeStepConfigWidget(QMakeStep *step);
     QString displayName() const;
     void init(const QString &buildConfiguration);
+    QString summaryText() const;
 private slots:
     void qmakeArgumentsLineEditTextEdited();
     void buildConfigurationChanged();
     void update();
 private:
+    void updateTitleLabel();
     QString m_buildConfiguration;
     Ui::QMakeStep m_ui;
     QMakeStep *m_step;
+    QString m_summaryText;
 };
 
 } // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qmakestep.ui b/src/plugins/qt4projectmanager/qmakestep.ui
index 5d843c4fd0d4fd43964f22e5ee253d1c9483e2f2..942f8cb22391daaadb7cff1a44b5e0d118be489d 100644
--- a/src/plugins/qt4projectmanager/qmakestep.ui
+++ b/src/plugins/qt4projectmanager/qmakestep.ui
@@ -6,17 +6,11 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>436</width>
-    <height>187</height>
+    <width>448</width>
+    <height>210</height>
    </rect>
   </property>
   <layout class="QFormLayout" name="formLayout">
-   <property name="fieldGrowthPolicy">
-    <enum>QFormLayout::ExpandingFieldsGrow</enum>
-   </property>
-   <property name="margin">
-    <number>0</number>
-   </property>
    <item row="0" column="0">
     <widget class="QLabel" name="label_2">
      <property name="text">
diff --git a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp
index b684ebedc25129864096900064dd3c63c7ec5a3d..d54b8d920ed9ebb9fbf759bcf1ee92b824ec18de 100644
--- a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.cpp
@@ -40,7 +40,7 @@ using namespace Qt4ProjectManager;
 using namespace Qt4ProjectManager::Internal;
 
 Qt4BuildEnvironmentWidget::Qt4BuildEnvironmentWidget(Qt4Project *project)
-    : BuildStepConfigWidget(), m_pro(project)
+    : BuildConfigWidget(), m_pro(project)
 {
     QVBoxLayout *vbox = new QVBoxLayout(this);
     vbox->setMargin(0);
diff --git a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.h b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.h
index 2000f010c0a33f8b7f8ca90603b9557db9f108df..f89154a11a269cf9fbe925f78c65eda3e9ccfc9b 100644
--- a/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.h
+++ b/src/plugins/qt4projectmanager/qt4buildenvironmentwidget.h
@@ -45,7 +45,7 @@ namespace Qt4ProjectManager {
 class Qt4Project;
 
 namespace Internal {
-class Qt4BuildEnvironmentWidget : public ProjectExplorer::BuildStepConfigWidget
+class Qt4BuildEnvironmentWidget : public ProjectExplorer::BuildConfigWidget
 {
     Q_OBJECT
 
diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index 2a2df7cd5e2a936277ebb1f8b0833f41c6108e3a..b0909b96076a7acec66f2c0906398e2cda196867 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -891,6 +891,7 @@ ProFileReader *Qt4PriFileNode::createProFileReader() const
         reader->setQtVersion(version);
 
     reader->setOutputDir(m_qt4ProFileNode->buildDir());
+    reader->setCumulative(false);
 
     return reader;
 }
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 3c31917f4e755caaa3f565e28e47b3c43e746a3f..b193a170f2263c771586e0e2f145b8d0e7653f83 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -594,7 +594,7 @@ void Qt4Project::updateCodeModel()
 
 
         pinfo.defines = predefinedMacros;
-        // pinfo->defines += definedMacros;   // ### FIXME: me
+        pinfo.defines += definedMacros;   // ### FIXME: me
         pinfo.includePaths = allIncludePaths;
         pinfo.frameworkPaths = allFrameworkPaths;
         pinfo.sourceFiles = files;
@@ -911,14 +911,14 @@ ProjectExplorer::ToolChain::ToolChainType Qt4Project::toolChainType(const QStrin
     return type;
 }
 
-BuildStepConfigWidget *Qt4Project::createConfigWidget()
+BuildConfigWidget *Qt4Project::createConfigWidget()
 {
     return new Qt4ProjectConfigWidget(this);
 }
 
-QList<BuildStepConfigWidget*> Qt4Project::subConfigWidgets()
+QList<BuildConfigWidget*> Qt4Project::subConfigWidgets()
 {
-    QList<BuildStepConfigWidget*> subWidgets;
+    QList<BuildConfigWidget*> subWidgets;
     subWidgets << new Qt4BuildEnvironmentWidget(this);
     return subWidgets;
 }
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index f34bf81f2a4f4dbf73d632797daeebcf26d5d258..3a926eba7d0df3e9efbc9891f73f51c054dc1cda 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -166,8 +166,8 @@ public:
     void setToolChainType(const QString &buildConfiguration, ProjectExplorer::ToolChain::ToolChainType type);
     ProjectExplorer::ToolChain::ToolChainType toolChainType(const QString &buildConfiguration) const;
 
-    ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
-    QList<ProjectExplorer::BuildStepConfigWidget*> subConfigWidgets();
+    ProjectExplorer::BuildConfigWidget *createConfigWidget();
+    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
 
     void setQtVersion(const QString &buildConfiguration, int id);
     virtual void newBuildConfiguration(const QString &buildConfiguration);
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 7630d826624c149d94125b08d12d0255582dac50..454feeed30f07a40a2e8bc0230bdbd117158d5b9 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -51,7 +51,7 @@ using namespace Qt4ProjectManager;
 using namespace Qt4ProjectManager::Internal;
 
 Qt4ProjectConfigWidget::Qt4ProjectConfigWidget(Qt4Project *project)
-    : BuildStepConfigWidget(),
+    : BuildConfigWidget(),
       m_pro(project)
 {
     m_ui = new Ui::Qt4ProjectConfigWidget();
@@ -76,6 +76,12 @@ Qt4ProjectConfigWidget::Qt4ProjectConfigWidget(Qt4Project *project)
     m_ui->shadowBuildDirEdit->setExpectedKind(Core::Utils::PathChooser::Directory);
     m_ui->invalidQtWarningLabel->setVisible(false);
 
+    m_ui->detailsWidget->setVisible(false);
+    m_ui->titleLabel->setText("");
+
+    connect(m_ui->detailsButton, SIGNAL(clicked()),
+            this, SLOT(toggleDetails()));
+
     connect(m_ui->nameLineEdit, SIGNAL(textEdited(QString)),
             this, SLOT(changeConfigName(QString)));
 
@@ -111,6 +117,29 @@ Qt4ProjectConfigWidget::~Qt4ProjectConfigWidget()
     delete m_ui;
 }
 
+void Qt4ProjectConfigWidget::toggleDetails()
+{
+    m_ui->detailsWidget->setVisible(!m_ui->detailsWidget->isVisible());
+}
+
+void Qt4ProjectConfigWidget::updateDetails()
+{
+    QtVersion *version = m_pro->qtVersion(m_buildConfiguration);
+    QString versionString;
+    if (m_pro->qtVersionId(m_buildConfiguration) == 0) {
+        versionString = tr("Default Qt Version");
+    } else {
+        versionString = version->name();
+    }
+    // Qt Version, Build Directory and Toolchain
+    m_ui->titleLabel->setText(tr("using Qt Version: <b>%1</b><br>"
+                                 "with Toolchain <b>%2</b><br>"
+                                 "building in <b>%3</b>")
+                              .arg(versionString,
+                                   ProjectExplorer::ToolChain::toolChainName(m_pro->toolChainType(m_buildConfiguration)),
+                                   m_pro->buildDirectory(m_buildConfiguration)));
+}
+
 void Qt4ProjectConfigWidget::manageQtVersions()
 {
     Core::ICore *core = Core::ICore::instance();
@@ -141,6 +170,7 @@ void Qt4ProjectConfigWidget::init(const QString &buildConfiguration)
     m_ui->shadowBuildDirEdit->setPath(m_pro->buildDirectory(buildConfiguration));
     updateImportLabel();
     updateToolChainCombo();
+    updateDetails();
 }
 
 void Qt4ProjectConfigWidget::changeConfigName(const QString &newName)
@@ -197,6 +227,7 @@ void Qt4ProjectConfigWidget::shadowBuildCheckBoxClicked(bool checked)
         m_pro->setValue(m_buildConfiguration, "buildDirectory", m_ui->shadowBuildDirEdit->path());
     else
         m_pro->setValue(m_buildConfiguration, "buildDirectory", QVariant(QString::null));
+    updateDetails();
 }
 
 void Qt4ProjectConfigWidget::updateImportLabel()
@@ -236,6 +267,7 @@ void Qt4ProjectConfigWidget::shadowBuildLineEditTextChanged()
     updateImportLabel();
 
     m_pro->invalidateCachedTargetInformation();
+    updateDetails();
 }
 
 void Qt4ProjectConfigWidget::importLabelClicked()
@@ -296,6 +328,7 @@ void Qt4ProjectConfigWidget::importLabelClicked()
         }
     }
     setupQtVersionsComboBox();
+    updateDetails();
 }
 
 void Qt4ProjectConfigWidget::qtVersionComboBoxCurrentIndexChanged(const QString &)
@@ -315,6 +348,7 @@ void Qt4ProjectConfigWidget::qtVersionComboBoxCurrentIndexChanged(const QString
         updateToolChainCombo();
         m_pro->update();
     }
+    updateDetails();
 }
 
 void Qt4ProjectConfigWidget::updateToolChainCombo()
@@ -376,4 +410,5 @@ void Qt4ProjectConfigWidget::setToolChain(int index)
     m_pro->setToolChainType(m_buildConfiguration, selectedToolChainType);
     if (m_ui->toolChainComboBox->currentIndex() != index)
         m_ui->toolChainComboBox->setCurrentIndex(index);
+    updateDetails();
 }
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.h b/src/plugins/qt4projectmanager/qt4projectconfigwidget.h
index df867fbfa1b2c9eadb71301408fa0ec3af087752..a9b8a66384e111b57e41aeec86be72d18af32f7d 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.h
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.h
@@ -43,7 +43,7 @@ namespace Ui {
 class Qt4ProjectConfigWidget;
 }
 
-class Qt4ProjectConfigWidget : public ProjectExplorer::BuildStepConfigWidget
+class Qt4ProjectConfigWidget : public ProjectExplorer::BuildConfigWidget
 {
     Q_OBJECT
 public:
@@ -63,11 +63,13 @@ private slots:
     void qtVersionComboBoxCurrentIndexChanged(const QString &);
     void manageQtVersions();
     void selectToolChain(int index);
+    void toggleDetails();
 
 private:
     void updateToolChainCombo();
     void updateImportLabel();
     void setToolChain(int index);
+    void updateDetails();
     Ui::Qt4ProjectConfigWidget *m_ui;
     QAbstractButton *m_browseButton;
     Qt4Project *m_pro;
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.ui b/src/plugins/qt4projectmanager/qt4projectconfigwidget.ui
index 441091370674b10086d241472b93bd4e6da392ae..b22eb21c3036a41d7649eb2ae082d44e6ed90db0 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.ui
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.ui
@@ -6,163 +6,175 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>652</width>
-    <height>247</height>
+    <width>463</width>
+    <height>221</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>20</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
     <number>0</number>
    </property>
    <item>
-    <layout class="QGridLayout" name="gridLayout">
-     <property name="horizontalSpacing">
-      <number>8</number>
-     </property>
-     <property name="verticalSpacing">
-      <number>4</number>
-     </property>
-     <item row="0" column="0">
-      <widget class="QLabel" name="nameLabel">
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0" rowspan="2">
+      <widget class="QLabel" name="titleLabel">
        <property name="text">
-        <string>Configuration Name:</string>
+        <string>Multi
+Line
+placeholder</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
-      <widget class="QLineEdit" name="nameLineEdit">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-         <horstretch>100</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0">
-      <widget class="QLabel" name="qtVersionLabel">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
+      <widget class="QToolButton" name="detailsButton">
        <property name="text">
-        <string>Qt Version:</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="1">
-      <layout class="QHBoxLayout" name="horizontalLayout">
-       <property name="spacing">
-        <number>4</number>
-       </property>
-       <item>
-        <widget class="QComboBox" name="qtVersionComboBox">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QLabel" name="invalidQtWarningLabel">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="text">
-          <string>This Qt-Version is invalid.</string>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-     <item row="1" column="2">
-      <widget class="QPushButton" name="manageQtVersionPushButtons">
-       <property name="text">
-        <string>Manage</string>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="0">
-      <widget class="QLabel" name="label_2">
-       <property name="text">
-        <string>Tool Chain:</string>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="1">
-      <widget class="QComboBox" name="toolChainComboBox"/>
-     </item>
-     <item row="3" column="0">
-      <widget class="QLabel" name="label">
-       <property name="text">
-        <string>Shadow Build:</string>
-       </property>
-      </widget>
-     </item>
-     <item row="3" column="1">
-      <widget class="QCheckBox" name="shadowBuildCheckBox">
-       <property name="text">
-        <string/>
-       </property>
-      </widget>
-     </item>
-     <item row="4" column="0">
-      <widget class="QLabel" name="buildDirLabel">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>Build Directory:</string>
-       </property>
-      </widget>
-     </item>
-     <item row="4" column="1">
-      <widget class="Core::Utils::PathChooser" name="shadowBuildDirEdit">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-     <item row="5" column="1">
-      <widget class="QLabel" name="importLabel">
-       <property name="text">
-        <string>&lt;a href=&quot;import&quot;&gt;Import existing build&lt;/a&gt;</string>
-       </property>
-       <property name="textFormat">
-        <enum>Qt::RichText</enum>
+        <string>Details</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
    <item>
-    <spacer name="verticalSpacer">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>40</height>
-      </size>
-     </property>
-    </spacer>
+    <widget class="QWidget" name="detailsWidget" native="true">
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="0">
+       <widget class="QLabel" name="nameLabel">
+        <property name="text">
+         <string>Configuration Name:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QLineEdit" name="nameLineEdit">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+          <horstretch>100</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="qtVersionLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Qt Version:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <property name="spacing">
+         <number>4</number>
+        </property>
+        <item>
+         <widget class="QComboBox" name="qtVersionComboBox">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="invalidQtWarningLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text">
+           <string>This Qt-Version is invalid.</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item row="1" column="2">
+       <widget class="QPushButton" name="manageQtVersionPushButtons">
+        <property name="text">
+         <string>Manage</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0">
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Tool Chain:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QComboBox" name="toolChainComboBox"/>
+      </item>
+      <item row="3" column="0">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Shadow Build:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1">
+       <widget class="QCheckBox" name="shadowBuildCheckBox">
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QLabel" name="buildDirLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string>Build Directory:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1">
+       <widget class="Core::Utils::PathChooser" name="shadowBuildDirEdit" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="1">
+       <widget class="QLabel" name="importLabel">
+        <property name="text">
+         <string>&lt;a href=&quot;import&quot;&gt;Import existing build&lt;/a&gt;</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::RichText</enum>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
    </item>
   </layout>
  </widget>