[java] quick navigation info for modules

This commit is contained in:
Roman Shevchenko
2016-10-10 15:12:18 +02:00
parent c8b45cf00d
commit 2c546f3170
2 changed files with 17 additions and 6 deletions
@@ -102,6 +102,9 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
else if (element instanceof BeanPropertyElement) {
return generateMethodInfo(((BeanPropertyElement)element).getMethod(), PsiSubstitutor.EMPTY);
}
else if (element instanceof PsiJavaModule) {
return generateModuleInfo((PsiJavaModule)element);
}
return null;
}
@@ -149,9 +152,9 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
return aPackage.getQualifiedName();
}
private static void generatePackageInfo(StringBuilder buffer, @NotNull PsiClass aClass) {
PsiFile file = aClass.getContainingFile();
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(aClass.getProject()).getFileIndex();
private static void generateOrderEntryAndPackageInfo(StringBuilder buffer, @NotNull PsiElement element) {
PsiFile file = element.getContainingFile();
ProjectFileIndex fileIndex = ProjectRootManager.getInstance(element.getProject()).getFileIndex();
VirtualFile vFile = file.getVirtualFile();
if (vFile != null && (fileIndex.isInLibrarySource(vFile) || fileIndex.isInLibraryClasses(vFile))) {
final List<OrderEntry> orderEntries = fileIndex.getOrderEntriesForFile(vFile);
@@ -182,7 +185,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
if (aClass instanceof PsiAnonymousClass) return LangBundle.message("java.terms.anonymous.class");
generatePackageInfo(buffer, aClass);
generateOrderEntryAndPackageInfo(buffer, aClass);
generateModifiers(buffer, aClass);
final String classString = aClass.isAnnotationType() ? "java.terms.annotation.interface"
@@ -278,7 +281,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
if (parentClass != null && !(parentClass instanceof PsiAnonymousClass)) {
if (method.isConstructor()) {
generatePackageInfo(buffer, parentClass);
generateOrderEntryAndPackageInfo(buffer, parentClass);
}
buffer.append(JavaDocUtil.getShortestClassName(parentClass, method));
@@ -371,6 +374,13 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
return buffer.toString();
}
private static String generateModuleInfo(PsiJavaModule module) {
StringBuilder sb = new StringBuilder();
generateOrderEntryAndPackageInfo(sb, module);
sb.append(LangBundle.message("java.terms.module")).append(' ').append(module.getModuleName());
return sb.toString();
}
@Override
public PsiComment findExistingDocComment(final PsiComment comment) {
if (comment instanceof PsiDocComment) {
@@ -851,4 +861,4 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
}
return null;
}
}
}
@@ -12,6 +12,7 @@ java.terms.static.initializer=static initializer
java.terms.instance.initializer=instance initializer
java.terms.enum=enum
java.terms.annotation.interface=@interface
java.terms.module=module
java.terms.label=label
java.terms.constructor=constructor
terms.directory=directory