diff --git a/plugins/android/src/META-INF/plugin.xml b/plugins/android/src/META-INF/plugin.xml
index 2dd3255775ed..69e6dbe3d537 100644
--- a/plugins/android/src/META-INF/plugin.xml
+++ b/plugins/android/src/META-INF/plugin.xml
@@ -216,7 +216,9 @@
serviceImplementation="org.jetbrains.android.exportSignedPackage.GenerateSignedApkSettings"/>
+
+
diff --git a/plugins/android/src/org/jetbrains/android/dom/AndroidXmlDocumentationProvider.java b/plugins/android/src/org/jetbrains/android/dom/AndroidXmlDocumentationProvider.java
new file mode 100644
index 000000000000..688491876b32
--- /dev/null
+++ b/plugins/android/src/org/jetbrains/android/dom/AndroidXmlDocumentationProvider.java
@@ -0,0 +1,44 @@
+package org.jetbrains.android.dom;
+
+import com.intellij.lang.documentation.DocumentationProvider;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiManager;
+import org.jetbrains.android.dom.wrappers.LazyValueResourceElementWrapper;
+import org.jetbrains.android.resourceManagers.ValueResourceInfo;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+/**
+ * @author Eugene.Kudelevsky
+ */
+public class AndroidXmlDocumentationProvider implements DocumentationProvider {
+ @Override
+ public String getQuickNavigateInfo(PsiElement element, PsiElement originalElement) {
+ if (element instanceof LazyValueResourceElementWrapper) {
+ final ValueResourceInfo info = ((LazyValueResourceElementWrapper)element).getResourceInfo();
+ return "value resource '" + info.getName() + "' [" + info.getContainingFile().getName() + "]";
+ }
+ return null;
+ }
+
+ @Override
+ public List getUrlFor(PsiElement element, PsiElement originalElement) {
+ return null;
+ }
+
+ @Override
+ public String generateDoc(PsiElement element, @Nullable PsiElement originalElement) {
+ return null;
+ }
+
+ @Override
+ public PsiElement getDocumentationElementForLookupItem(PsiManager psiManager, Object object, PsiElement element) {
+ return null;
+ }
+
+ @Override
+ public PsiElement getDocumentationElementForLink(PsiManager psiManager, String link, PsiElement context) {
+ return null;
+ }
+}
diff --git a/plugins/android/testData/documentation/strings.xml b/plugins/android/testData/documentation/strings.xml
new file mode 100644
index 000000000000..a32234c7861c
--- /dev/null
+++ b/plugins/android/testData/documentation/strings.xml
@@ -0,0 +1,3 @@
+
+ Hello
+
\ No newline at end of file
diff --git a/plugins/android/testData/documentation/valueResourceReferenceQuickDoc.xml b/plugins/android/testData/documentation/valueResourceReferenceQuickDoc.xml
new file mode 100644
index 000000000000..68fdf63a6302
--- /dev/null
+++ b/plugins/android/testData/documentation/valueResourceReferenceQuickDoc.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/plugins/android/testSrc/org/jetbrains/android/AndroidDocumentationTest.java b/plugins/android/testSrc/org/jetbrains/android/AndroidDocumentationTest.java
new file mode 100644
index 000000000000..742486942349
--- /dev/null
+++ b/plugins/android/testSrc/org/jetbrains/android/AndroidDocumentationTest.java
@@ -0,0 +1,21 @@
+package org.jetbrains.android;
+
+import com.intellij.codeInsight.navigation.CtrlMouseHandler;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.PsiReference;
+
+/**
+ * @author Eugene.Kudelevsky
+ */
+public class AndroidDocumentationTest extends AndroidTestCase {
+ private static final String BASE_PATH = "documentation/";
+
+ public void testValueResourceReferenceQuickDoc() {
+ myFixture.copyFileToProject(BASE_PATH + "strings.xml", "res/values/strings.xml");
+ final VirtualFile f = myFixture.copyFileToProject(BASE_PATH + getTestName(true) + ".xml", "res/layout/test.xml");
+ myFixture.configureFromExistingVirtualFile(f);
+ final PsiReference ref = myFixture.getFile().findReferenceAt(myFixture.getEditor().getCaretModel().getOffset());
+ assert ref != null;
+ assertEquals("value resource 'myString' [strings.xml]", CtrlMouseHandler.getInfo(ref.resolve(), ref.getElement()));
+ }
+}