mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
calculate non-code annotation gutter icon tooltip in background (EA-218624 - freeze, EA-217668 - CCE)
GitOrigin-RevId: 3460bfad0a7dc6bea0c97def2ba9a3ac8d3cc63e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
921086c352
commit
507b13c25a
+7
-19
@@ -28,7 +28,6 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.ui.awt.RelativePoint;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.xml.util.XmlStringUtil;
|
||||
@@ -46,16 +45,7 @@ import java.util.stream.Stream;
|
||||
public abstract class NonCodeAnnotationsLineMarkerProvider extends LineMarkerProviderDescriptor {
|
||||
protected enum LineMarkerType { External, InferredNullability, InferredContract }
|
||||
|
||||
private final Function<PsiElement, String> myTooltipProvider = nameIdentifier -> {
|
||||
PsiModifierListOwner owner = (PsiModifierListOwner)nameIdentifier.getParent();
|
||||
|
||||
return XmlStringUtil.wrapInHtml(NonCodeAnnotationGenerator.getNonCodeHeader(NonCodeAnnotationGenerator.getSignatureNonCodeAnnotations(owner).values()) +
|
||||
" available. Full signature:<p>\n" + JavaDocInfoGenerator.generateSignature(owner));
|
||||
};
|
||||
|
||||
private static LineMarkerType getAnnotationLineMarkerType(PsiModifierListOwner owner) {
|
||||
Collection<? extends AnnotationDocGenerator> nonCodeAnnotations =
|
||||
NonCodeAnnotationGenerator.getSignatureNonCodeAnnotations(owner).values();
|
||||
private static LineMarkerType getAnnotationLineMarkerType(Collection<? extends AnnotationDocGenerator> nonCodeAnnotations) {
|
||||
if (ContainerUtil.find(nonCodeAnnotations, (anno) -> !anno.isInferred()) != null) {
|
||||
return LineMarkerType.External;
|
||||
}
|
||||
@@ -95,20 +85,18 @@ public abstract class NonCodeAnnotationsLineMarkerProvider extends LineMarkerPro
|
||||
PsiModifierListOwner owner = getAnnotationOwner(element);
|
||||
if (owner == null) return null;
|
||||
|
||||
if (!hasAnnotationsToShow(owner)) {
|
||||
Collection<AnnotationDocGenerator> nonCodeAnnotations = NonCodeAnnotationGenerator.getSignatureNonCodeAnnotations(owner).values();
|
||||
if (getAnnotationLineMarkerType(nonCodeAnnotations) != myLineMarkerType) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new LineMarkerInfo<>(element, element.getTextRange(),
|
||||
AllIcons.Gutter.ExtAnnotation,
|
||||
myTooltipProvider, MyIconGutterHandler.INSTANCE,
|
||||
String tooltip = XmlStringUtil.wrapInHtml(
|
||||
NonCodeAnnotationGenerator.getNonCodeHeader(nonCodeAnnotations) + " available. Full signature:<p>\n" +
|
||||
JavaDocInfoGenerator.generateSignature(owner));
|
||||
return new LineMarkerInfo<>(element, element.getTextRange(), AllIcons.Gutter.ExtAnnotation, __ -> tooltip, MyIconGutterHandler.INSTANCE,
|
||||
GutterIconRenderer.Alignment.RIGHT);
|
||||
}
|
||||
|
||||
protected boolean hasAnnotationsToShow(@NotNull PsiModifierListOwner owner) {
|
||||
return getAnnotationLineMarkerType(owner) == myLineMarkerType;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
static PsiModifierListOwner getAnnotationOwner(@Nullable PsiElement element) {
|
||||
if (element == null) return null;
|
||||
|
||||
Reference in New Issue
Block a user