From 98900f0a69068f3db7b899c90981088d594aee9d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 26 May 2014 22:34:50 +0400 Subject: [PATCH] external annotations markers: move to fast line markers --- ...ExternalAnnotationsLineMarkerProvider.java | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java index 5fc7440f6b41..ce73a96d6351 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExternalAnnotationsLineMarkerProvider.java @@ -50,48 +50,46 @@ public class ExternalAnnotationsLineMarkerProvider implements LineMarkerProvider @Nullable @Override public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) { - return null; - } + if (element instanceof PsiParameter) return null; - @Override - public void collectSlowLineMarkers(@NotNull List elements, @NotNull Collection result) { - final Set owners = new HashSet(); - for (PsiElement element : elements) { - if (element instanceof PsiParameter) continue; - - if (element instanceof PsiModifierListOwner) { - final PsiModifierListOwner modifierListOwner = (PsiModifierListOwner)element; - final ExternalAnnotationsManager annotationsManager = ExternalAnnotationsManager.getInstance(modifierListOwner.getProject()); - PsiAnnotation[] externalAnnotations = annotationsManager.findExternalAnnotations(modifierListOwner); - if (externalAnnotations != null && externalAnnotations.length > 0) { - owners.add((PsiModifierListOwner)element); - } else if (element instanceof PsiMethod) { - final PsiParameter[] parameters = ((PsiMethod)element).getParameterList().getParameters(); - for (PsiParameter parameter : parameters) { - externalAnnotations = annotationsManager.findExternalAnnotations(parameter); - if (externalAnnotations != null && externalAnnotations.length > 0) { - owners.add((PsiMethod)element); - break; - } + PsiModifierListOwner owner = null; + if (element instanceof PsiModifierListOwner) { + final PsiModifierListOwner modifierListOwner = (PsiModifierListOwner)element; + final ExternalAnnotationsManager annotationsManager = ExternalAnnotationsManager.getInstance(modifierListOwner.getProject()); + PsiAnnotation[] externalAnnotations = annotationsManager.findExternalAnnotations(modifierListOwner); + if (externalAnnotations != null && externalAnnotations.length > 0) { + owner = (PsiModifierListOwner)element; + } else if (element instanceof PsiMethod) { + final PsiParameter[] parameters = ((PsiMethod)element).getParameterList().getParameters(); + for (PsiParameter parameter : parameters) { + externalAnnotations = annotationsManager.findExternalAnnotations(parameter); + if (externalAnnotations != null && externalAnnotations.length > 0) { + owner = (PsiMethod)element; + break; } } } } - for (PsiModifierListOwner modifierListOwner : owners) { - final Function annotationsCollector = new Function() { - @Override - public String fun(PsiModifierListOwner owner) { - return XmlStringUtil.wrapInHtml(JavaDocInfoGenerator.generateSignature(owner)); - } - }; - result.add(new LineMarkerInfo(modifierListOwner, modifierListOwner.getTextOffset(), AllIcons.Nodes.Annotationtype, - Pass.UPDATE_OVERRIDEN_MARKERS, - annotationsCollector, new MyIconGutterHandler(), - GutterIconRenderer.Alignment.LEFT)); + if (owner == null) { + return null; } + + final Function annotationsCollector = new Function() { + @Override + public String fun(PsiModifierListOwner owner) { + return XmlStringUtil.wrapInHtml(JavaDocInfoGenerator.generateSignature(owner)); + } + }; + return new LineMarkerInfo(owner, owner.getTextOffset(), AllIcons.Nodes.Annotationtype, + Pass.UPDATE_ALL, + annotationsCollector, new MyIconGutterHandler(), + GutterIconRenderer.Alignment.LEFT); } + @Override + public void collectSlowLineMarkers(@NotNull List elements, @NotNull Collection result) {} + private static class MyIconGutterHandler implements GutterIconNavigationHandler { @Override public void navigate(MouseEvent e, final PsiModifierListOwner listOwner) {