From 11f1b71835697ac5b748054dbde2d84ea4675d42 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Mon, 11 Jul 2016 17:56:10 +0200 Subject: [PATCH] inconsistent language level: avoid LocalQuickFix when QuickFix is expected (IDEA-156375) --- .../intention/QuickFixFactory.java | 4 ++-- .../intention/EmptyQuickFixFactory.java | 4 ++-- .../InconsistentLanguageLevelInspection.java | 2 +- .../quickfix/ShowModulePropertiesFix.java | 22 ++++++++++++++++--- .../impl/config/QuickFixFactoryImpl.java | 4 ++-- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/java/java-analysis-api/src/com/intellij/codeInsight/intention/QuickFixFactory.java b/java/java-analysis-api/src/com/intellij/codeInsight/intention/QuickFixFactory.java index 997eb0042b53..eb25115f00cb 100644 --- a/java/java-analysis-api/src/com/intellij/codeInsight/intention/QuickFixFactory.java +++ b/java/java-analysis-api/src/com/intellij/codeInsight/intention/QuickFixFactory.java @@ -136,8 +136,8 @@ public abstract class QuickFixFactory { @NotNull public abstract IntentionAction createRemoveParameterListFix(@NotNull PsiMethod parent); - @NotNull public abstract IntentionAndQuickFixAction createShowModulePropertiesFix(@NotNull PsiElement element); - @NotNull public abstract IntentionAndQuickFixAction createShowModulePropertiesFix(@NotNull Module module); + @NotNull public abstract IntentionAction createShowModulePropertiesFix(@NotNull PsiElement element); + @NotNull public abstract IntentionAction createShowModulePropertiesFix(@NotNull Module module); @NotNull public abstract IntentionAction createIncreaseLanguageLevelFix(@NotNull LanguageLevel level); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/EmptyQuickFixFactory.java b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/EmptyQuickFixFactory.java index 84be882e9e06..833f6af6a2cc 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/EmptyQuickFixFactory.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/EmptyQuickFixFactory.java @@ -283,7 +283,7 @@ public class EmptyQuickFixFactory extends QuickFixFactory { @NotNull @Override - public IntentionAndQuickFixAction createShowModulePropertiesFix(@NotNull PsiElement psiElement) { + public IntentionAction createShowModulePropertiesFix(@NotNull PsiElement psiElement) { return QuickFixes.EMPTY_ACTION; } @@ -586,7 +586,7 @@ public class EmptyQuickFixFactory extends QuickFixFactory { @NotNull @Override - public IntentionAndQuickFixAction createShowModulePropertiesFix(@NotNull Module module) { + public IntentionAction createShowModulePropertiesFix(@NotNull Module module) { return QuickFixes.EMPTY_ACTION; } diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/inconsistentLanguageLevel/InconsistentLanguageLevelInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/inconsistentLanguageLevel/InconsistentLanguageLevelInspection.java index 66d2b5ad7d0c..70ed2b682eae 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/inconsistentLanguageLevel/InconsistentLanguageLevelInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/inconsistentLanguageLevel/InconsistentLanguageLevelInspection.java @@ -83,7 +83,7 @@ public class InconsistentLanguageLevelInspection extends GlobalInspectionTool { "Inconsistent language level settings: module " + module.getName() + " with language level " + languageLevel + " depends on module " + dependantModule.getName() +" with language level " + dependantLanguageLevel, new UnnecessaryModuleDependencyInspection.RemoveModuleDependencyFix(module, dependantModule), - QuickFixFactory.getInstance().createShowModulePropertiesFix(module)); + (QuickFix)QuickFixFactory.getInstance().createShowModulePropertiesFix(module)); problemProcessor.addProblemElement(refModule, problemDescriptor); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ShowModulePropertiesFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ShowModulePropertiesFix.java index 16b2c2db4831..72a2619b1904 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ShowModulePropertiesFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ShowModulePropertiesFix.java @@ -15,7 +15,9 @@ */ package com.intellij.codeInsight.daemon.impl.quickfix; -import com.intellij.codeInspection.IntentionAndQuickFixAction; +import com.intellij.codeInsight.intention.IntentionAction; +import com.intellij.codeInspection.CommonProblemDescriptor; +import com.intellij.codeInspection.QuickFix; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.IdeActions; @@ -26,10 +28,12 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class ShowModulePropertiesFix extends IntentionAndQuickFixAction { +public class ShowModulePropertiesFix implements QuickFix, IntentionAction { private final String myModuleName; public ShowModulePropertiesFix(@NotNull PsiElement context) { @@ -47,19 +51,31 @@ public class ShowModulePropertiesFix extends IntentionAndQuickFixAction { return action.getTemplatePresentation().getText(); } + @Nls + @NotNull + @Override + public String getText() { + return getName(); + } + @Override @NotNull public String getFamilyName() { return getText(); } + @Override + public void applyFix(@NotNull Project project, @NotNull CommonProblemDescriptor descriptor) { + invoke(project, null, null); + } + @Override public boolean isAvailable(@NotNull final Project project, final Editor editor, final PsiFile file) { return myModuleName != null; } @Override - public void applyFix(@NotNull Project project, PsiFile file, @Nullable Editor editor) { + public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { ProjectSettingsService.getInstance(project).showModuleConfigurationDialog(myModuleName, null); } diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/config/QuickFixFactoryImpl.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/config/QuickFixFactoryImpl.java index 84f7861741b2..ed23a87aab1c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/config/QuickFixFactoryImpl.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/config/QuickFixFactoryImpl.java @@ -340,12 +340,12 @@ public class QuickFixFactoryImpl extends QuickFixFactory { @NotNull @Override - public IntentionAndQuickFixAction createShowModulePropertiesFix(@NotNull PsiElement element) { + public IntentionAction createShowModulePropertiesFix(@NotNull PsiElement element) { return new ShowModulePropertiesFix(element); } @NotNull @Override - public IntentionAndQuickFixAction createShowModulePropertiesFix(@NotNull Module module) { + public IntentionAction createShowModulePropertiesFix(@NotNull Module module) { return new ShowModulePropertiesFix(module); }