mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
[java] automatic modules
This commit is contained in:
@@ -729,7 +729,7 @@ public class JavaDocInfoGenerator {
|
||||
private void generateModuleJavaDoc(StringBuilder buffer, PsiJavaModule module, boolean generatePrologueAndEpilogue) {
|
||||
if (generatePrologueAndEpilogue) generatePrologue(buffer);
|
||||
|
||||
buffer.append("<pre>module <b>").append(module.getName()).append("</b></pre>");
|
||||
buffer.append("<pre>module <b>").append(module.getModuleName()).append("</b></pre>");
|
||||
|
||||
PsiDocComment comment = module.getDocComment();
|
||||
if (comment != null) {
|
||||
|
||||
@@ -33,12 +33,10 @@ import com.intellij.lang.documentation.ExternalDocumentationProvider;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.project.IndexNotReadyException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.util.Conditions;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
@@ -47,6 +45,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileSystem;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.beanProperties.BeanPropertyElement;
|
||||
import com.intellij.psi.impl.light.LightJavaModule;
|
||||
import com.intellij.psi.impl.source.javadoc.PsiDocParamRef;
|
||||
import com.intellij.psi.infos.CandidateInfo;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
@@ -141,7 +140,6 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
|
||||
|
||||
private static void generateModifiers(StringBuilder buffer, PsiElement element) {
|
||||
String modifiers = PsiFormatUtil.formatModifiers(element, PsiFormatUtilBase.JAVADOC_MODIFIERS_ONLY);
|
||||
|
||||
if (modifiers.length() > 0) {
|
||||
buffer.append(modifiers);
|
||||
buffer.append(" ");
|
||||
@@ -154,20 +152,9 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
|
||||
|
||||
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);
|
||||
OrderEntry orderEntry = ContainerUtil.find(orderEntries, Conditions.instanceOf(LibraryOrSdkOrderEntry.class));
|
||||
if (orderEntry != null) {
|
||||
buffer.append("[").append(StringUtil.escapeXml(orderEntry.getPresentableName())).append("] ");
|
||||
}
|
||||
}
|
||||
else {
|
||||
final Module module = ModuleUtilCore.findModuleForPsiElement(file);
|
||||
if (module != null) {
|
||||
buffer.append('[').append(module.getName()).append("] ");
|
||||
}
|
||||
|
||||
if (file != null) {
|
||||
generateOrderEntryInfo(buffer, file.getVirtualFile(), element.getProject());
|
||||
}
|
||||
|
||||
if (file instanceof PsiJavaFile) {
|
||||
@@ -179,6 +166,23 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
|
||||
}
|
||||
}
|
||||
|
||||
private static void generateOrderEntryInfo(StringBuilder buffer, VirtualFile file, Project project) {
|
||||
if (file != null) {
|
||||
ProjectFileIndex index = ProjectRootManager.getInstance(project).getFileIndex();
|
||||
if (index.isInLibrarySource(file) || index.isInLibraryClasses(file)) {
|
||||
index.getOrderEntriesForFile(file).stream()
|
||||
.filter(LibraryOrSdkOrderEntry.class::isInstance).findFirst()
|
||||
.ifPresent(entry -> buffer.append('[').append(StringUtil.escapeXml(entry.getPresentableName())).append("] "));
|
||||
}
|
||||
else {
|
||||
Module module = index.getModuleForFile(file);
|
||||
if (module != null) {
|
||||
buffer.append('[').append(module.getName()).append("] ");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
public static String generateClassInfo(PsiClass aClass) {
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
@@ -376,8 +380,21 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
|
||||
|
||||
private static String generateModuleInfo(PsiJavaModule module) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
generateOrderEntryAndPackageInfo(sb, module);
|
||||
|
||||
VirtualFile file = null;
|
||||
if (module instanceof LightJavaModule) {
|
||||
PsiElement target = module.getNavigationElement();
|
||||
if (target instanceof PsiDirectory) {
|
||||
file = ((PsiDirectory)target).getVirtualFile();
|
||||
}
|
||||
}
|
||||
else {
|
||||
file = module.getContainingFile().getVirtualFile();
|
||||
}
|
||||
generateOrderEntryInfo(sb, file, module.getProject());
|
||||
|
||||
sb.append(LangBundle.message("java.terms.module")).append(' ').append(module.getModuleName());
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user