mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
enable annotate externally for disabled property but configured annotation roots (IDEA-CR-21393)
This commit is contained in:
@@ -728,6 +728,19 @@ public class ExternalAnnotationsManagerImpl extends ReadableExternalAnnotationsM
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAnnotationRootsForFile(@NotNull VirtualFile file) {
|
||||
if (hasAnyAnnotationsRoots()) {
|
||||
ProjectFileIndex fileIndex = ProjectRootManager.getInstance(myPsiManager.getProject()).getFileIndex();
|
||||
for (OrderEntry entry : fileIndex.getOrderEntriesForFile(file)) {
|
||||
if (!(entry instanceof ModuleOrderEntry) && AnnotationOrderRootType.getUrls(entry).length > 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void duplicateError(@NotNull PsiFile file, @NotNull String externalName, @NotNull String text) {
|
||||
String message = text + "; for signature: '" + externalName + "' in the file " + file.getVirtualFile().getPresentableUrl();
|
||||
|
||||
@@ -19,12 +19,14 @@ import com.intellij.codeInsight.intention.impl.BaseIntentionAction;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiAnnotation;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiModifierListOwner;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -43,11 +45,16 @@ public class MakeAnnotationExternal extends BaseIntentionAction {
|
||||
PsiAnnotation annotation = PsiTreeUtil.getParentOfType(file.findElementAt(editor.getCaretModel().getOffset()), PsiAnnotation.class);
|
||||
|
||||
if (annotation != null && annotation.getQualifiedName() != null &&
|
||||
annotation.getManager().isInProject(annotation) &&
|
||||
CodeStyleSettingsManager.getSettings(project).USE_EXTERNAL_ANNOTATIONS &&
|
||||
PsiTreeUtil.getParentOfType(annotation, PsiModifierListOwner.class) != null) {
|
||||
setText("Annotate externally");
|
||||
return true;
|
||||
annotation.getManager().isInProject(annotation)) {
|
||||
PsiModifierListOwner modifierListOwner = PsiTreeUtil.getParentOfType(annotation, PsiModifierListOwner.class);
|
||||
if (modifierListOwner != null) {
|
||||
VirtualFile virtualFile = PsiUtilCore.getVirtualFile(modifierListOwner);
|
||||
if (CodeStyleSettingsManager.getSettings(project).USE_EXTERNAL_ANNOTATIONS ||
|
||||
virtualFile != null && ExternalAnnotationsManager.getInstance(project).hasAnnotationRootsForFile(virtualFile)) {
|
||||
setText("Annotate externally");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.codeInsight;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.NotNullLazyKey;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.util.messages.Topic;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -42,6 +43,8 @@ public abstract class ExternalAnnotationsManager {
|
||||
return INSTANCE_KEY.getValue(project);
|
||||
}
|
||||
|
||||
public abstract boolean hasAnnotationRootsForFile(@NotNull VirtualFile file);
|
||||
|
||||
public abstract boolean isExternalAnnotation(@NotNull PsiAnnotation annotation);
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -73,6 +73,11 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations
|
||||
|
||||
protected abstract boolean hasAnyAnnotationsRoots();
|
||||
|
||||
@Override
|
||||
public boolean hasAnnotationRootsForFile(@NotNull VirtualFile file) {
|
||||
return hasAnyAnnotationsRoots();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExternalAnnotation(@NotNull PsiAnnotation annotation) {
|
||||
return annotation.getUserData(EXTERNAL_ANNO_MARKER) != null;
|
||||
|
||||
Reference in New Issue
Block a user