From 507b13c25a2aff021cbfac1c23c113604cbfcd91 Mon Sep 17 00:00:00 2001 From: Peter Gromov Date: Fri, 22 Nov 2019 17:56:29 +0100 Subject: [PATCH] calculate non-code annotation gutter icon tooltip in background (EA-218624 - freeze, EA-217668 - CCE) GitOrigin-RevId: 3460bfad0a7dc6bea0c97def2ba9a3ac8d3cc63e --- .../NonCodeAnnotationsLineMarkerProvider.java | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/NonCodeAnnotationsLineMarkerProvider.java b/java/java-impl/src/com/intellij/codeInsight/NonCodeAnnotationsLineMarkerProvider.java index a05ca8e2c072..3391d93c9dca 100644 --- a/java/java-impl/src/com/intellij/codeInsight/NonCodeAnnotationsLineMarkerProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/NonCodeAnnotationsLineMarkerProvider.java @@ -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 myTooltipProvider = nameIdentifier -> { - PsiModifierListOwner owner = (PsiModifierListOwner)nameIdentifier.getParent(); - - return XmlStringUtil.wrapInHtml(NonCodeAnnotationGenerator.getNonCodeHeader(NonCodeAnnotationGenerator.getSignatureNonCodeAnnotations(owner).values()) + - " available. Full signature:

\n" + JavaDocInfoGenerator.generateSignature(owner)); - }; - - private static LineMarkerType getAnnotationLineMarkerType(PsiModifierListOwner owner) { - Collection nonCodeAnnotations = - NonCodeAnnotationGenerator.getSignatureNonCodeAnnotations(owner).values(); + private static LineMarkerType getAnnotationLineMarkerType(Collection 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 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:

\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;