fix quick navigation info for LazyValueResourceElementWrapper

This commit is contained in:
Eugene Kudelevsky
2012-08-15 15:51:20 +04:00
parent 907a4bcebe
commit 2d310ce6c8
5 changed files with 73 additions and 0 deletions
+2
View File
@@ -216,7 +216,9 @@
serviceImplementation="org.jetbrains.android.exportSignedPackage.GenerateSignedApkSettings"/>
<compilerSettingsFactory implementation="org.jetbrains.android.compiler.AndroidDexCompilerSettingsFactory"/>
<problemFileHighlightFilter implementation="org.jetbrains.android.AndroidProblemFileHighlightingFilter"/>
<lang.documentationProvider language="JAVA" implementationClass="org.jetbrains.android.AndroidDocumentationProvider" order="first"/>
<lang.documentationProvider language="XML" implementationClass="org.jetbrains.android.dom.AndroidXmlDocumentationProvider" order="first"/>
<sdkType implementation="org.jetbrains.android.sdk.AndroidSdkType"/>
<gotoDeclarationHandler implementation="org.jetbrains.android.AndroidGotoDeclarationHandler"/>
@@ -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<String> 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;
}
}
@@ -0,0 +1,3 @@
<resources>
<string name="myString">Hello</string>
</resources>
@@ -0,0 +1,3 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:text="@string/myStri<caret>ng"/>
</LinearLayout>
@@ -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()));
}
}