diff --git a/src/plugins/clearcase/clearcasecontrol.cpp b/src/plugins/clearcase/clearcasecontrol.cpp
index 7c055f118dae76f34a4fcbe45f57e927e07c1014..475333084ed26516f7c84c7644aa3cca29515dc0 100644
--- a/src/plugins/clearcase/clearcasecontrol.cpp
+++ b/src/plugins/clearcase/clearcasecontrol.cpp
@@ -136,6 +136,16 @@ bool ClearCaseControl::vcsAnnotate(const QString &file, int line)
     return true;
 }
 
+QString ClearCaseControl::vcsOpenText() const
+{
+    return tr("&Check Out");
+}
+
+QString ClearCaseControl::vcsMakeWritableText() const
+{
+    return tr("&Hijack");
+}
+
 void ClearCaseControl::emitRepositoryChanged(const QString &s)
 {
     emit repositoryChanged(s);
diff --git a/src/plugins/clearcase/clearcasecontrol.h b/src/plugins/clearcase/clearcasecontrol.h
index 789dbbf9b3311e0f81402ef3d610a0c7e59ca79c..166b6195d3c065eacdd5d8cadaa8527db6af51e9 100644
--- a/src/plugins/clearcase/clearcasecontrol.h
+++ b/src/plugins/clearcase/clearcasecontrol.h
@@ -70,6 +70,9 @@ public:
 
     bool vcsAnnotate(const QString &file, int line);
 
+    QString vcsOpenText() const;
+    QString vcsMakeWritableText() const;
+
     void emitRepositoryChanged(const QString &);
     void emitFilesChanged(const QStringList &);
     void emitConfigurationChanged();
diff --git a/src/plugins/coreplugin/coreplugin.pro b/src/plugins/coreplugin/coreplugin.pro
index 1736574340a7e3b125abcb0ff78a55d0114cf81d..14a7450b3c99caabbdc42e6bc3c0641f4417deeb 100644
--- a/src/plugins/coreplugin/coreplugin.pro
+++ b/src/plugins/coreplugin/coreplugin.pro
@@ -102,7 +102,8 @@ SOURCES += mainwindow.cpp \
     idocument.cpp \
     textdocument.cpp \
     documentmanager.cpp \
-    removefiledialog.cpp
+    removefiledialog.cpp \
+    iversioncontrol.cpp
 
 HEADERS += mainwindow.h \
     editmode.h \
diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs
index 255d946c4db3c9998b0d8959170df6a25b623571..cf50a5729939ee54c4bd87676cb0f8ad0acd0c6a 100644
--- a/src/plugins/coreplugin/coreplugin.qbs
+++ b/src/plugins/coreplugin/coreplugin.qbs
@@ -152,6 +152,7 @@ QtcPlugin {
         "versiondialog.cpp",
         "versiondialog.h",
         "id.cpp",
+        "iversioncontrol.cpp",
         "iversioncontrol.h",
         "variablechooser.cpp",
         "variablemanager.cpp",
diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp
index 7a1b0c5ab35d5bd1619e36ec863399d6b9bb0a25..a6eae6c95d74d03fe0a00f4c8683f9beedabb60e 100644
--- a/src/plugins/coreplugin/documentmanager.cpp
+++ b/src/plugins/coreplugin/documentmanager.cpp
@@ -829,15 +829,20 @@ DocumentManager::ReadOnlyAction
                        tr("The file <i>%1</i> is read only.").arg(QDir::toNativeSeparators(fileName)),
                        QMessageBox::Cancel, parent);
 
+    QString makeWritableText;
     QPushButton *vcsButton = 0;
-    if (promptVCS)
-        vcsButton = msgBox.addButton(tr("Open with VCS (%1)").arg(versionControl->displayName()), QMessageBox::AcceptRole);
+    if (promptVCS) {
+        vcsButton = msgBox.addButton(versionControl->vcsOpenText(), QMessageBox::AcceptRole);
+        makeWritableText = versionControl->vcsMakeWritableText();
+    }
+    if (makeWritableText.isEmpty())
+        makeWritableText = tr("Make &Writable");
 
-    QPushButton *makeWritableButton =  msgBox.addButton(tr("Make Writable"), QMessageBox::AcceptRole);
+    QPushButton *makeWritableButton =  msgBox.addButton(makeWritableText, QMessageBox::AcceptRole);
 
     QPushButton *saveAsButton = 0;
     if (displaySaveAsButton)
-        saveAsButton = msgBox.addButton(tr("Save As..."), QMessageBox::ActionRole);
+        saveAsButton = msgBox.addButton(tr("&Save As..."), QMessageBox::ActionRole);
 
     msgBox.setDefaultButton(vcsButton ? vcsButton : makeWritableButton);
     msgBox.exec();
diff --git a/src/plugins/coreplugin/iversioncontrol.cpp b/src/plugins/coreplugin/iversioncontrol.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ebd075b112a743b2d0e5dab7846b22e9eab9d842
--- /dev/null
+++ b/src/plugins/coreplugin/iversioncontrol.cpp
@@ -0,0 +1,45 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: http://www.qt-project.org/
+**
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**************************************************************************/
+
+#include "iversioncontrol.h"
+
+namespace Core {
+
+QString IVersionControl::vcsOpenText() const
+{
+    return tr("Open with VCS (%1)").arg(displayName());
+}
+
+QString IVersionControl::vcsMakeWritableText() const
+{
+    return QString();
+}
+
+}
diff --git a/src/plugins/coreplugin/iversioncontrol.h b/src/plugins/coreplugin/iversioncontrol.h
index 3134d0fe08af9cff853af004e19977073def5bd8..b6f4e012f3d1149ff0b3c081849e174d58a2fe87 100644
--- a/src/plugins/coreplugin/iversioncontrol.h
+++ b/src/plugins/coreplugin/iversioncontrol.h
@@ -163,6 +163,16 @@ public:
      */
     virtual bool vcsAnnotate(const QString &file, int line) = 0;
 
+    /*!
+     * Display text for Open operation
+     */
+    virtual QString vcsOpenText() const;
+
+    /*!
+     * Display text for Make Writable
+     */
+    virtual QString vcsMakeWritableText() const;
+
 signals:
     void repositoryChanged(const QString &repository);
     void filesChanged(const QStringList &files);
diff --git a/src/plugins/perforce/perforceversioncontrol.cpp b/src/plugins/perforce/perforceversioncontrol.cpp
index d4482aa5ba63b5a9084b5edff75b18a8bf750bf0..7a7b2f69d697d5e61667e691d0a9107f411ac8f1 100644
--- a/src/plugins/perforce/perforceversioncontrol.cpp
+++ b/src/plugins/perforce/perforceversioncontrol.cpp
@@ -158,6 +158,16 @@ QString PerforceVersionControl::vcsGetRepositoryURL(const QString &)
     return QString();
 }
 
+QString PerforceVersionControl::vcsOpenText() const
+{
+    return tr("&Edit (%1)").arg(displayName());
+}
+
+QString PerforceVersionControl::vcsMakeWritableText() const
+{
+    return tr("&Hijack");
+}
+
 bool PerforceVersionControl::managesDirectory(const QString &directory, QString *topLevel) const
 {
     const bool rc = m_plugin->managesDirectory(directory, topLevel);
diff --git a/src/plugins/perforce/perforceversioncontrol.h b/src/plugins/perforce/perforceversioncontrol.h
index ee1ab655d9d0943d17e2fba7d33aedda7a504d01..0be5847b9eacea4f0f73a7accc0340ee39bbae2f 100644
--- a/src/plugins/perforce/perforceversioncontrol.h
+++ b/src/plugins/perforce/perforceversioncontrol.h
@@ -64,6 +64,8 @@ public:
     bool vcsRestoreSnapshot(const QString &topLevel, const QString &name);
     bool vcsRemoveSnapshot(const QString &topLevel, const QString &name);
     bool vcsAnnotate(const QString &file, int line);
+    QString vcsOpenText() const;
+    QString vcsMakeWritableText() const;
 
     void emitRepositoryChanged(const QString &s);
     void emitFilesChanged(const QStringList &l);