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())); + } +}