From 28601a12a96bae1296657d75ae0b10dba68d7330 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Sun, 6 May 2012 22:27:51 +0400 Subject: [PATCH] Extracted JetFunctionsPsiElementCellRenderer class from JetLineMarkerProvider. --- .../JetFunctionPsiElementCellRenderer.java | 48 +++++++++++++++++++ .../highlighter/JetLineMarkerProvider.java | 19 ++------ 2 files changed, 52 insertions(+), 15 deletions(-) create mode 100644 idea/src/org/jetbrains/jet/plugin/codeInsight/JetFunctionPsiElementCellRenderer.java diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/JetFunctionPsiElementCellRenderer.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/JetFunctionPsiElementCellRenderer.java new file mode 100644 index 00000000000..dc4110271dd --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/JetFunctionPsiElementCellRenderer.java @@ -0,0 +1,48 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.plugin.codeInsight; + +import com.intellij.ide.util.DefaultPsiElementCellRenderer; +import com.intellij.psi.PsiElement; +import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; +import org.jetbrains.jet.lang.psi.JetNamedFunction; +import org.jetbrains.jet.lang.resolve.BindingContext; +import org.jetbrains.jet.resolve.DescriptorRenderer; + +/** +* @author Evgeny Gerashchenko +* @since 06.05.12 +*/ +public class JetFunctionPsiElementCellRenderer extends DefaultPsiElementCellRenderer { + private final BindingContext bindingContext; + + public JetFunctionPsiElementCellRenderer(BindingContext bindingContext) { + this.bindingContext = bindingContext; + } + + @Override + public String getElementText(PsiElement element) { + if (element instanceof JetNamedFunction) { + JetNamedFunction function = (JetNamedFunction) element; + SimpleFunctionDescriptor fd = + bindingContext.get(BindingContext.FUNCTION, function); + assert fd != null; + return DescriptorRenderer.TEXT.render(fd); + } + return super.getElementText(element); + } +} diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java index 2767ea51553..f559f098e1c 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java @@ -23,7 +23,6 @@ import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.codeInsight.daemon.LineMarkerProvider; import com.intellij.codeInsight.hint.HintUtil; import com.intellij.codeInsight.navigation.NavigationUtil; -import com.intellij.ide.util.DefaultPsiElementCellRenderer; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.IconLoader; @@ -35,12 +34,12 @@ import com.intellij.util.PsiNavigateUtil; import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; 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; import org.jetbrains.jet.lang.psi.JetProperty; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; +import org.jetbrains.jet.plugin.codeInsight.JetFunctionPsiElementCellRenderer; import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade; import org.jetbrains.jet.resolve.DescriptorRenderer; @@ -128,19 +127,9 @@ public class JetLineMarkerProvider implements LineMarkerProvider { PsiNavigateUtil.navigate(list.iterator().next()); } else { - final JBPopup popup = NavigationUtil.getPsiElementPopup(PsiUtilCore.toPsiElementArray(list), new DefaultPsiElementCellRenderer() { - @Override - public String getElementText(PsiElement element) { - if (element instanceof JetNamedFunction) { - JetNamedFunction function = (JetNamedFunction) element; - SimpleFunctionDescriptor fd = - bindingContext.get(BindingContext.FUNCTION, function); - assert fd != null; - return DescriptorRenderer.HTML.render(fd); - } - return super.getElementText(element); - } - }, DescriptorRenderer.HTML.render(descriptor)); + JBPopup popup = NavigationUtil.getPsiElementPopup(PsiUtilCore.toPsiElementArray(list), + new JetFunctionPsiElementCellRenderer(bindingContext), + DescriptorRenderer.TEXT.render(descriptor)); if (event != null) { popup.show(new RelativePoint(event)); }