mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
quickfix adds annotations-java8.jar to classpath if language level permits (IDEA-123048)
This commit is contained in:
+15
-10
@@ -27,6 +27,7 @@ import com.intellij.openapi.application.PathManager;
|
||||
import com.intellij.openapi.application.Result;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.module.EffectiveLanguageLevelUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -39,6 +40,7 @@ import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.packageDependencies.DependencyValidationManager;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
@@ -176,14 +178,12 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
|
||||
ApplicationManager.getApplication().invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final LocateLibraryDialog dialog = new LocateLibraryDialog(currentModule, PathManager.getLibPath(), "annotations.jar",
|
||||
QuickFixBundle.message("add.library.annotations.description"));
|
||||
if (dialog.showAndGet()) {
|
||||
final String libraryPath = locateAnnotationsJar(currentModule);
|
||||
if (libraryPath != null) {
|
||||
new WriteCommandAction(project) {
|
||||
@Override
|
||||
protected void run(final Result result) throws Throwable {
|
||||
addBundledJarToRoots(project, editor, currentModule, reference, "org.jetbrains.annotations." + referenceName,
|
||||
dialog.getResultingLibraryPath());
|
||||
addBundledJarToRoots(project, editor, currentModule, reference, "org.jetbrains.annotations." + referenceName, libraryPath);
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
@@ -372,14 +372,12 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
|
||||
public static boolean ensureAnnotationsJarInPath(final Module module) {
|
||||
if (isAnnotationsJarInPath(module)) return true;
|
||||
if (module == null) return false;
|
||||
final LocateLibraryDialog dialog = new LocateLibraryDialog(
|
||||
module, PathManager.getLibPath(), "annotations.jar",
|
||||
QuickFixBundle.message("add.library.annotations.description"));
|
||||
if (dialog.showAndGet()) {
|
||||
final String libraryPath = locateAnnotationsJar(module);
|
||||
if (libraryPath != null) {
|
||||
new WriteCommandAction(module.getProject()) {
|
||||
@Override
|
||||
protected void run(final Result result) throws Throwable {
|
||||
addJarToRoots(dialog.getResultingLibraryPath(), module, null);
|
||||
addJarToRoots(libraryPath, module, null);
|
||||
}
|
||||
}.execute();
|
||||
return true;
|
||||
@@ -387,6 +385,13 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String locateAnnotationsJar(@NotNull Module module) {
|
||||
String jarName = EffectiveLanguageLevelUtil.getEffectiveLanguageLevel(module).isAtLeast(LanguageLevel.JDK_1_8) ? "annotations-java8.jar" : "annotations.jar";
|
||||
final LocateLibraryDialog dialog = new LocateLibraryDialog(module, PathManager.getLibPath(), jarName, QuickFixBundle.message("add.library.annotations.description"));
|
||||
return dialog.showAndGet() ? dialog.getResultingLibraryPath() : null;
|
||||
}
|
||||
|
||||
public static boolean isAnnotationsJarInPath(Module module) {
|
||||
if (module == null) return false;
|
||||
return JavaPsiFacade.getInstance(module.getProject())
|
||||
|
||||
+2
-8
@@ -22,14 +22,11 @@ import com.intellij.analysis.BaseAnalysisActionDialog;
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInsight.NullableNotNullManager;
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.LocateLibraryDialog;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.OrderEntryFix;
|
||||
import com.intellij.history.LocalHistory;
|
||||
import com.intellij.history.LocalHistoryAction;
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.PathManager;
|
||||
import com.intellij.openapi.application.Result;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
@@ -160,11 +157,8 @@ public class InferNullityAnnotationsAction extends BaseAnalysisAction {
|
||||
ApplicationManager.getApplication().invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final LocateLibraryDialog dialog =
|
||||
new LocateLibraryDialog(modulesWithoutAnnotations.iterator().next(), PathManager.getLibPath(), "annotations.jar",
|
||||
QuickFixBundle.message("add.library.annotations.description"));
|
||||
if (dialog.showAndGet()) {
|
||||
final String path = dialog.getResultingLibraryPath();
|
||||
final String path = OrderEntryFix.locateAnnotationsJar(modulesWithoutAnnotations.iterator().next());
|
||||
if (path != null) {
|
||||
new WriteCommandAction(project) {
|
||||
@Override
|
||||
protected void run(@NotNull final Result result) throws Throwable {
|
||||
|
||||
Reference in New Issue
Block a user