mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
disable edit contract for non-physical elements; extract applicability method
This commit is contained in:
@@ -683,6 +683,12 @@ public class ExternalAnnotationsManagerImpl extends ReadableExternalAnnotationsM
|
||||
LogMessageEx.error(LOG, message, file.getText());
|
||||
}
|
||||
|
||||
public static boolean areExternalAnnotationsApplicable(@NotNull PsiModifierListOwner owner) {
|
||||
if (!owner.isPhysical()) return false;
|
||||
if (!owner.getManager().isInProject(owner)) return true;
|
||||
return CodeStyleSettingsManager.getSettings(owner.getProject()).USE_EXTERNAL_ANNOTATIONS;
|
||||
}
|
||||
|
||||
private static class MyExternalPromptDialog extends OptionsMessageDialog {
|
||||
private final Project myProject;
|
||||
private static final String ADD_IN_CODE = ProjectBundle.message("external.annotations.in.code.option");
|
||||
|
||||
+2
-4
@@ -24,13 +24,13 @@ package com.intellij.codeInsight.intention.impl;
|
||||
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.CodeInsightBundle;
|
||||
import com.intellij.codeInsight.ExternalAnnotationsManagerImpl;
|
||||
import com.intellij.codeInsight.intention.AddAnnotationFix;
|
||||
import com.intellij.codeInsight.intention.AddAnnotationPsiFix;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -48,9 +48,7 @@ public abstract class AddAnnotationIntention extends BaseIntentionAction {
|
||||
@Override
|
||||
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
|
||||
final PsiModifierListOwner owner = AddAnnotationPsiFix.getContainer(file, editor.getCaretModel().getOffset());
|
||||
if (owner == null ||
|
||||
!owner.isPhysical() ||
|
||||
owner.getManager().isInProject(owner) && !CodeStyleSettingsManager.getSettings(project).USE_EXTERNAL_ANNOTATIONS) {
|
||||
if (owner == null || !ExternalAnnotationsManagerImpl.areExternalAnnotationsApplicable(owner)) {
|
||||
return false;
|
||||
}
|
||||
Pair<String, String[]> annotations = getAnnotations(project);
|
||||
|
||||
@@ -17,6 +17,7 @@ package com.intellij.codeInspection.dataFlow;
|
||||
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.ExternalAnnotationsManager;
|
||||
import com.intellij.codeInsight.ExternalAnnotationsManagerImpl;
|
||||
import com.intellij.codeInsight.InferredAnnotationsManagerImpl;
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
|
||||
import com.intellij.codeInsight.intention.AddAnnotationPsiFix;
|
||||
@@ -29,7 +30,6 @@ import com.intellij.openapi.ui.DialogBuilder;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.NonFocusableCheckBox;
|
||||
import com.intellij.ui.components.JBTextField;
|
||||
@@ -59,8 +59,7 @@ public class EditContractIntention extends BaseIntentionAction implements LowPri
|
||||
@Nullable
|
||||
private static PsiMethod getTargetMethod(@NotNull Project project, Editor editor, PsiFile file) {
|
||||
final PsiModifierListOwner owner = AddAnnotationPsiFix.getContainer(file, editor.getCaretModel().getOffset());
|
||||
if (owner instanceof PsiMethod &&
|
||||
(!owner.getManager().isInProject(owner) || CodeStyleSettingsManager.getSettings(project).USE_EXTERNAL_ANNOTATIONS)) {
|
||||
if (owner instanceof PsiMethod && ExternalAnnotationsManagerImpl.areExternalAnnotationsApplicable(owner)) {
|
||||
PsiElement original = owner.getOriginalElement();
|
||||
return original instanceof PsiMethod ? (PsiMethod)original : (PsiMethod)owner;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user