From f57ebac1ff50961081f250ab5b300a609d4261fd Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 29 Mar 2012 18:27:18 +0400 Subject: [PATCH] Marks are different for overriding and implementing functions. --- .../highlighter/JetLineMarkerProvider.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java index 2a98b1cd32f..7bc61aefefa 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java @@ -33,6 +33,7 @@ import com.intellij.ui.awt.RelativePoint; import com.intellij.util.Function; import com.intellij.util.PsiNavigateUtil; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; +import org.jetbrains.jet.lang.descriptors.Modality; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetNamedFunction; @@ -50,8 +51,8 @@ import java.util.Set; * @author abreslav */ public class JetLineMarkerProvider implements LineMarkerProvider { - - public static final Icon OVERRIDING_FUNCTION = IconLoader.getIcon("/general/overridingMethod.png"); + public static final Icon OVERRIDING_MARK = IconLoader.getIcon("/gutter/overridingMethod.png"); + public static final Icon IMPLEMENTING_MARK = IconLoader.getIcon("/gutter/implementingMethod.png"); @Override public LineMarkerInfo getLineMarkerInfo(PsiElement element) { @@ -68,8 +69,18 @@ public class JetLineMarkerProvider implements LineMarkerProvider { final Set overriddenFunctions = functionDescriptor.getOverriddenDescriptors(); if (overriddenFunctions.size() == 0) return null; + boolean allOverriddenAbstract = true; + for (FunctionDescriptor function : overriddenFunctions) { + allOverriddenAbstract &= function.getModality() == Modality.ABSTRACT; + } + + final String implementsOrOverrides = allOverriddenAbstract ? "implements" : "overrides"; + return new LineMarkerInfo( - jetFunction, jetFunction.getTextOffset(), OVERRIDING_FUNCTION, Pass.UPDATE_ALL, + jetFunction, + jetFunction.getTextOffset(), + allOverriddenAbstract ? IMPLEMENTING_MARK : OVERRIDING_MARK, + Pass.UPDATE_ALL, new Function() { @Override public String fun(JetNamedFunction jetFunction) { @@ -77,7 +88,8 @@ public class JetLineMarkerProvider implements LineMarkerProvider { builder.append(DescriptorRenderer.HTML.render(functionDescriptor)); int overrideCount = overriddenFunctions.size(); if (overrideCount >= 1) { - builder.append(" overrides ").append(DescriptorRenderer.HTML.render(overriddenFunctions.iterator().next())); + builder.append(" ").append(implementsOrOverrides).append(" "); + builder.append(DescriptorRenderer.HTML.render(overriddenFunctions.iterator().next())); } if (overrideCount > 1) { int count = overrideCount - 1;