From 2d310ce6c82bf8c24a79bbe6cf92642e8369c24b Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 14 Aug 2012 20:00:40 +0400 Subject: [PATCH] fix quick navigation info for LazyValueResourceElementWrapper --- plugins/android/src/META-INF/plugin.xml | 2 + .../dom/AndroidXmlDocumentationProvider.java | 44 +++++++++++++++++++ .../testData/documentation/strings.xml | 3 ++ .../valueResourceReferenceQuickDoc.xml | 3 ++ .../android/AndroidDocumentationTest.java | 21 +++++++++ 5 files changed, 73 insertions(+) create mode 100644 plugins/android/src/org/jetbrains/android/dom/AndroidXmlDocumentationProvider.java create mode 100644 plugins/android/testData/documentation/strings.xml create mode 100644 plugins/android/testData/documentation/valueResourceReferenceQuickDoc.xml create mode 100644 plugins/android/testSrc/org/jetbrains/android/AndroidDocumentationTest.java 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())); + } +}