diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp
index e53e6a109928e49a7928e24897fed8f52584cd07..50f4ed81adf289a712edb72621c781663375a6a4 100644
--- a/src/plugins/projectexplorer/processstep.cpp
+++ b/src/plugins/projectexplorer/processstep.cpp
@@ -136,17 +136,14 @@ ProcessStepConfigWidget::ProcessStepConfigWidget(ProcessStep *step)
         : m_step(step)
 {
     m_ui.setupUi(this);
-    connect(m_ui.commandBrowseButton, SIGNAL(clicked(bool)),
-            this, SLOT(commandBrowseButtonClicked()));
-    connect(m_ui.workingDirBrowseButton, SIGNAL(clicked(bool)),
-            this, SLOT(workingDirBrowseButtonClicked()));
+    m_ui.command->setExpectedKind(Core::Utils::PathChooser::File);
+    connect(m_ui.command, SIGNAL(changed()),
+            this, SLOT(commandLineEditTextEdited()));
+    connect(m_ui.workingDirectory, SIGNAL(changed()),
+            this, SLOT(workingDirectoryLineEditTextEdited()));
 
     connect(m_ui.nameLineEdit, SIGNAL(textEdited(const QString&)),
             this, SLOT(nameLineEditTextEdited()));
-    connect(m_ui.commandLineEdit, SIGNAL(textEdited(const QString&)),
-            this, SLOT(commandLineEditTextEdited()));
-    connect(m_ui.workingDirectoryLineEdit, SIGNAL(textEdited(const QString&)),
-            this, SLOT(workingDirectoryLineEditTextEdited()));
     connect(m_ui.commandArgumentsLineEdit, SIGNAL(textEdited(const QString&)),
             this, SLOT(commandArgumentsLineEditTextEdited()));
     connect(m_ui.enabledGroupBox, SIGNAL(clicked(bool)),
@@ -158,34 +155,16 @@ QString ProcessStepConfigWidget::displayName() const
     return m_step->name();
 }
 
-void ProcessStepConfigWidget::workingDirBrowseButtonClicked()
-{
-    QString workingDirectory = QFileDialog::getExistingDirectory(this, "Select the working directory", m_ui.workingDirectoryLineEdit->text());
-    if (workingDirectory.isEmpty())
-        return;
-    m_ui.workingDirectoryLineEdit->setText(workingDirectory);
-    workingDirectoryLineEditTextEdited();
-}
-
-void ProcessStepConfigWidget::commandBrowseButtonClicked()
-{
-    QString filename = QFileDialog::getOpenFileName(this, "Select the executable");
-    if (filename.isEmpty())
-        return;
-    m_ui.commandLineEdit->setText(filename);
-    commandLineEditTextEdited();
-}
-
 void ProcessStepConfigWidget::init(const QString &buildConfiguration)
 {
     m_buildConfiguration = buildConfiguration;
     if (buildConfiguration != QString::null) {
-        m_ui.commandLineEdit->setText(m_step->command(buildConfiguration));
+        m_ui.command->setPath(m_step->command(buildConfiguration));
 
         QString workingDirectory = m_step->value(buildConfiguration, "workingDirectory").toString();
         if (workingDirectory.isEmpty())
             workingDirectory = "$BUILDDIR";
-        m_ui.workingDirectoryLineEdit->setText(workingDirectory);
+        m_ui.workingDirectory->setPath(workingDirectory);
 
         m_ui.commandArgumentsLineEdit->setText(m_step->arguments(buildConfiguration).join(" "));
         m_ui.enabledGroupBox->setChecked(m_step->enabled(buildConfiguration));
@@ -200,12 +179,12 @@ void ProcessStepConfigWidget::nameLineEditTextEdited()
 
 void ProcessStepConfigWidget::commandLineEditTextEdited()
 {
-    m_step->setCommand(m_buildConfiguration, m_ui.commandLineEdit->text());
+    m_step->setCommand(m_buildConfiguration, m_ui.command->path());
 }
 
 void ProcessStepConfigWidget::workingDirectoryLineEditTextEdited()
 {
-    QString wd = m_ui.workingDirectoryLineEdit->text();
+    QString wd = m_ui.workingDirectory->path();
     m_step->setValue(m_buildConfiguration, "workingDirectory", wd);
 }
 
diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h
index 808aaa2a95bfee134d2ff3de615efbc8eae6bc6d..aa8b2760df24ce6a20e7f201bd2e3c9a7e3cc28e 100644
--- a/src/plugins/projectexplorer/processstep.h
+++ b/src/plugins/projectexplorer/processstep.h
@@ -84,8 +84,6 @@ private slots:
     void workingDirectoryLineEditTextEdited();
     void commandArgumentsLineEditTextEdited();
     void enabledGroupBoxClicked(bool);
-    void workingDirBrowseButtonClicked();
-    void commandBrowseButtonClicked();
 private:
     QString m_buildConfiguration;
     ProcessStep *m_step;
diff --git a/src/plugins/projectexplorer/processstep.ui b/src/plugins/projectexplorer/processstep.ui
index 9875ef474cb9019b6f2d05e31d4c19432afb92a8..01255ab891ae79df2fb58b6e5e101222729974db 100644
--- a/src/plugins/projectexplorer/processstep.ui
+++ b/src/plugins/projectexplorer/processstep.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>428</width>
-    <height>222</height>
+    <width>505</width>
+    <height>271</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -22,61 +22,50 @@
      <property name="checkable">
       <bool>true</bool>
      </property>
-     <layout class="QGridLayout" name="gridLayout">
-      <item row="1" column="0">
-       <widget class="QLabel" name="commandLabel">
+     <layout class="QFormLayout" name="formLayout">
+      <property name="fieldGrowthPolicy">
+       <enum>QFormLayout::ExpandingFieldsGrow</enum>
+      </property>
+      <item row="0" column="0">
+       <widget class="QLabel" name="nameLabel">
         <property name="text">
-         <string>Command</string>
+         <string>Name:</string>
         </property>
        </widget>
       </item>
-      <item row="1" column="1">
-       <widget class="QLineEdit" name="commandLineEdit"/>
+      <item row="0" column="1">
+       <widget class="QLineEdit" name="nameLineEdit"/>
       </item>
-      <item row="1" column="2">
-       <widget class="QToolButton" name="commandBrowseButton">
+      <item row="1" column="0">
+       <widget class="QLabel" name="commandLabel">
         <property name="text">
-         <string>...</string>
+         <string>Command:</string>
         </property>
        </widget>
       </item>
+      <item row="1" column="1">
+       <widget class="Core::Utils::PathChooser" name="command"/>
+      </item>
       <item row="2" column="0">
        <widget class="QLabel" name="workingDirecoryLabel">
         <property name="text">
-         <string>Working Directory</string>
+         <string>Working Directory:</string>
         </property>
        </widget>
       </item>
       <item row="2" column="1">
-       <widget class="QLineEdit" name="workingDirectoryLineEdit"/>
-      </item>
-      <item row="2" column="2">
-       <widget class="QToolButton" name="workingDirBrowseButton">
-        <property name="text">
-         <string>...</string>
-        </property>
-       </widget>
+       <widget class="Core::Utils::PathChooser" name="workingDirectory"/>
       </item>
       <item row="3" column="0">
        <widget class="QLabel" name="commandArgumentsLabel">
         <property name="text">
-         <string>command arguments</string>
+         <string>Command Arguments:</string>
         </property>
        </widget>
       </item>
-      <item row="3" column="1" colspan="2">
+      <item row="3" column="1">
        <widget class="QLineEdit" name="commandArgumentsLineEdit"/>
       </item>
-      <item row="0" column="0">
-       <widget class="QLabel" name="nameLabel">
-        <property name="text">
-         <string>Name</string>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="1" colspan="2">
-       <widget class="QLineEdit" name="nameLineEdit"/>
-      </item>
      </layout>
     </widget>
    </item>
@@ -95,6 +84,13 @@
    </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>Core::Utils::PathChooser</class>
+   <extends>QWidget</extends>
+   <header location="global">utils/pathchooser.h</header>
+  </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
 </ui>