diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp
index 89ae73506ce8f84c1dbbd928e74e5ce1ef377221..8c437c626765714e1ad23d51fa553135a5244255 100644
--- a/src/plugins/projectexplorer/allprojectsfind.cpp
+++ b/src/plugins/projectexplorer/allprojectsfind.cpp
@@ -72,9 +72,14 @@ bool AllProjectsFind::isEnabled() const
             && m_plugin->session()->projects().count() > 0;
 }
 
-Utils::FileIterator *AllProjectsFind::files()
+QList<Project *> AllProjectsFind::projects() const
 {
     Q_ASSERT(m_plugin->session());
+    return m_plugin->session()->projects();
+}
+
+Utils::FileIterator *AllProjectsFind::files() const
+{
     QList<QRegExp> filterRegs;
     QStringList nameFilters = fileNameFilters();
     foreach (const QString &filter, nameFilters) {
@@ -82,7 +87,7 @@ Utils::FileIterator *AllProjectsFind::files()
     }
     QStringList files;
     QStringList projectFiles;
-    foreach (const Project *project, m_plugin->session()->projects()) {
+    foreach (const Project *project, projects()) {
         projectFiles = project->files(Project::AllFiles);
         if (!filterRegs.isEmpty()) {
             foreach (const QString &file, projectFiles) {
diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h
index d6484e5d60b6aae24e89c47fa02c7f0ffbce95c1..96c2dff6eac8c875f73311c6bd90689dc247e4fb 100644
--- a/src/plugins/projectexplorer/allprojectsfind.h
+++ b/src/plugins/projectexplorer/allprojectsfind.h
@@ -40,6 +40,7 @@
 namespace ProjectExplorer {
 
 class ProjectExplorerPlugin;
+class Project;
 
 namespace Internal {
 
@@ -60,7 +61,8 @@ public:
     void readSettings(QSettings *settings);
 
 protected:
-    Utils::FileIterator *files();
+    virtual QList<Project *> projects() const;
+    Utils::FileIterator *files() const;
 
 private:
     ProjectExplorerPlugin *m_plugin;
diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp
index 2e929c5cbe5d218379e0eda9edd76b4023338b44..a3c64cb4ca3a1e1e80ae345798f1938c73e8cb3f 100644
--- a/src/plugins/projectexplorer/currentprojectfind.cpp
+++ b/src/plugins/projectexplorer/currentprojectfind.cpp
@@ -47,9 +47,8 @@ using namespace ProjectExplorer::Internal;
 using namespace TextEditor;
 
 CurrentProjectFind::CurrentProjectFind(ProjectExplorerPlugin *plugin, SearchResultWindow *resultWindow)
-  : BaseFileFind(resultWindow),
-    m_plugin(plugin),
-    m_configWidget(0)
+  : AllProjectsFind(plugin, resultWindow),
+    m_plugin(plugin)
 {
     connect(m_plugin, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)),
             this, SIGNAL(changed()));
@@ -70,50 +69,9 @@ bool CurrentProjectFind::isEnabled() const
     return m_plugin->currentProject() != 0 && BaseFileFind::isEnabled();
 }
 
-Utils::FileIterator *CurrentProjectFind::files()
+QList<Project *> CurrentProjectFind::projects() const
 {
-    Project *project = m_plugin->currentProject();
-    Q_ASSERT(project);
-    QList<QRegExp> filterRegs;
-    QStringList nameFilters = fileNameFilters();
-    foreach (const QString &filter, nameFilters) {
-        filterRegs << QRegExp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
-    }
-    QStringList files;
-    if (!filterRegs.isEmpty()) {
-        foreach (const QString &file, project->files(Project::AllFiles)) {
-            foreach (const QRegExp &reg, filterRegs) {
-                if (reg.exactMatch(file) || reg.exactMatch(QFileInfo(file).fileName())) {
-                    files.append(file);
-                    break;
-                }
-            }
-        }
-    } else {
-        files += project->files(Project::AllFiles);
-    }
-    files.removeDuplicates();
-    return new Utils::FileIterator(files);
-}
-
-QWidget *CurrentProjectFind::createConfigWidget()
-{
-    if (!m_configWidget) {
-        m_configWidget = new QWidget;
-        QGridLayout * const layout = new QGridLayout(m_configWidget);
-        layout->setMargin(0);
-        m_configWidget->setLayout(layout);
-        QLabel * const filePatternLabel = new QLabel(tr("File &pattern:"));
-        filePatternLabel->setMinimumWidth(80);
-        filePatternLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
-        filePatternLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
-        QWidget *patternWidget = createPatternWidget();
-        filePatternLabel->setBuddy(patternWidget);
-        layout->addWidget(filePatternLabel, 0, 0, Qt::AlignRight);
-        layout->addWidget(patternWidget, 0, 1);
-        m_configWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
-    }
-    return m_configWidget;
+    return QList<Project *>() << m_plugin->currentProject();
 }
 
 void CurrentProjectFind::writeSettings(QSettings *settings)
diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h
index 806618959540b01c5e82dc0b2f6e9ca151781bd0..dc0c5f7d5c372393915288deb856e03f6fd013d8 100644
--- a/src/plugins/projectexplorer/currentprojectfind.h
+++ b/src/plugins/projectexplorer/currentprojectfind.h
@@ -30,9 +30,10 @@
 #ifndef CURRENTPROJECTFIND_H
 #define CURRENTPROJECTFIND_H
 
+#include "allprojectsfind.h"
+
 #include <find/ifindfilter.h>
 #include <find/searchresultwindow.h>
-#include <texteditor/basefilefind.h>
 
 #include <QtCore/QPointer>
 
@@ -43,10 +44,11 @@ QT_END_NAMESPACE
 namespace ProjectExplorer {
 
 class ProjectExplorerPlugin;
+class Project;
 
 namespace Internal {
 
-class CurrentProjectFind : public TextEditor::BaseFileFind
+class CurrentProjectFind : public AllProjectsFind
 {
     Q_OBJECT
 
@@ -58,16 +60,14 @@ public:
 
     bool isEnabled() const;
 
-    QWidget *createConfigWidget();
     void writeSettings(QSettings *settings);
     void readSettings(QSettings *settings);
 
 protected:
-    Utils::FileIterator *files();
+    QList<Project *> projects() const;
 
 private:
     ProjectExplorerPlugin *m_plugin;
-    QPointer<QWidget> m_configWidget;
 };
 
 } // namespace Internal
diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h
index b00c6a110c0e572d51f4b44a8ce1a974d4253b1b..83577aa60a9c76e39bf58564de2669c5335a744b 100644
--- a/src/plugins/texteditor/basefilefind.h
+++ b/src/plugins/texteditor/basefilefind.h
@@ -73,7 +73,7 @@ public:
                                   const QList<Find::SearchResultItem> &items);
 
 protected:
-    virtual Utils::FileIterator *files() = 0;
+    virtual Utils::FileIterator *files() const = 0;
     void writeCommonSettings(QSettings *settings);
     void readCommonSettings(QSettings *settings, const QString &defaultFilter);
     QWidget *createPatternWidget();
diff --git a/src/plugins/texteditor/findincurrentfile.cpp b/src/plugins/texteditor/findincurrentfile.cpp
index 01c060133f9d8746453cd42afc1c2896848b252a..002d1ab145efdd6c6099a86957cbc29f98151a7d 100644
--- a/src/plugins/texteditor/findincurrentfile.cpp
+++ b/src/plugins/texteditor/findincurrentfile.cpp
@@ -62,7 +62,7 @@ QString FindInCurrentFile::displayName() const
     return tr("Current File");
 }
 
-Utils::FileIterator *FindInCurrentFile::files()
+Utils::FileIterator *FindInCurrentFile::files() const
 {
     QStringList fileList;
     if (isEnabled())
diff --git a/src/plugins/texteditor/findincurrentfile.h b/src/plugins/texteditor/findincurrentfile.h
index b42064d99c8c582cc5fb84fdae6e30e73af42215..c6010dc0e2b41738856ee2cfce8a966bb0e61c7c 100644
--- a/src/plugins/texteditor/findincurrentfile.h
+++ b/src/plugins/texteditor/findincurrentfile.h
@@ -61,7 +61,7 @@ public:
     void readSettings(QSettings *settings);
 
 protected:
-    Utils::FileIterator *files();
+    Utils::FileIterator *files() const;
 
 private slots:
     void handleFileChange(Core::IEditor *editor);
diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp
index b6b02ef31b0013efa6a7eb1dcb4cdbfb0e2316d2..43ac897abd78f07df66eee7ec85e85cc38127b83 100644
--- a/src/plugins/texteditor/findinfiles.cpp
+++ b/src/plugins/texteditor/findinfiles.cpp
@@ -63,7 +63,7 @@ void FindInFiles::findAll(const QString &txt, Find::FindFlags findFlags)
     BaseFileFind::findAll(txt, findFlags);
 }
 
-Utils::FileIterator *FindInFiles::files()
+Utils::FileIterator *FindInFiles::files() const
 {
     return new Utils::SubDirFileIterator(QStringList() << m_directory->currentText(),
                                          fileNameFilters());
diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h
index 569e5ce781d71568a6652c258f9611c37da025e3..125f9714cdaf562c8d1dc7dc96cf7bc7b7107978 100644
--- a/src/plugins/texteditor/findinfiles.h
+++ b/src/plugins/texteditor/findinfiles.h
@@ -59,7 +59,7 @@ public:
     void readSettings(QSettings *settings);
 
 protected:
-    Utils::FileIterator *files();
+    Utils::FileIterator *files() const;
 
 private slots:
     void openFileBrowser();