diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java index 0d83233e9790..e519c04fa49a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java @@ -1,4 +1,4 @@ -// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.codeInsight.hint; import com.intellij.application.options.CodeStyle; @@ -253,43 +253,33 @@ public class ImplementationViewComponent extends JPanel { } private static ListCellRenderer createRenderer(Project project) { - return new LeftRightRenderer<>() { - @NotNull + ListCellRenderer mainRenderer = new ColoredListCellRenderer<>() { @Override - protected ListCellRenderer getMainRenderer() { - return new ColoredListCellRenderer<>() { - @Override - protected void customizeCellRenderer(@NotNull JList list, - FileDescriptor value, int index, boolean selected, boolean hasFocus) { - if (value != null) { - ImplementationViewElement element = value.myElement; - setIcon(getIconForFile(value.myFile, project)); - append(element.getPresentableText()); - String presentation = element.getContainerPresentation(); - if (presentation != null) { - append(" "); - append(StringUtil.trimStart(StringUtil.trimEnd(presentation, ")"), "("), SimpleTextAttributes.GRAYED_ATTRIBUTES); - } - } + protected void customizeCellRenderer(@NotNull JList list, + FileDescriptor value, int index, boolean selected, boolean hasFocus) { + if (value != null) { + ImplementationViewElement element = value.myElement; + setIcon(getIconForFile(value.myFile, project)); + append(element.getPresentableText()); + String presentation = element.getContainerPresentation(); + if (presentation != null) { + append(" "); + append(StringUtil.trimStart(StringUtil.trimEnd(presentation, ")"), "("), SimpleTextAttributes.GRAYED_ATTRIBUTES); } - }; - } - - @NotNull - @Override - protected ListCellRenderer getRightRenderer() { - return new SimpleListCellRenderer<>() { - @Override - public void customize(@NotNull JList list, - FileDescriptor value, int index, boolean selected, boolean hasFocus) { - if (value != null) { - setText(value.myElement.getLocationText()); - setIcon(value.myElement.getLocationIcon()); - } - } - }; + } } }; + ListCellRenderer rightRenderer = new SimpleListCellRenderer<>() { + @Override + public void customize(@NotNull JList list, + FileDescriptor value, int index, boolean selected, boolean hasFocus) { + if (value != null) { + setText(value.myElement.getLocationText()); + setIcon(value.myElement.getLocationIcon()); + } + } + }; + return new LeftRightRenderer<>(mainRenderer, rightRenderer); } @TestOnly diff --git a/platform/platform-api/src/com/intellij/ui/list/LeftRightRenderer.kt b/platform/platform-api/src/com/intellij/ui/list/LeftRightRenderer.kt index cd5085f3c3e4..27ae0f4103ca 100644 --- a/platform/platform-api/src/com/intellij/ui/list/LeftRightRenderer.kt +++ b/platform/platform-api/src/com/intellij/ui/list/LeftRightRenderer.kt @@ -14,10 +14,10 @@ import javax.swing.ListCellRenderer * [mainRenderer] component is aligned to the left, [rightRenderer] component is aligned to the right. * This renderer uses background from [mainRenderer] component. */ -abstract class LeftRightRenderer : ListCellRenderer { - - protected abstract val mainRenderer: ListCellRenderer - protected abstract val rightRenderer: ListCellRenderer +class LeftRightRenderer( + private val mainRenderer: ListCellRenderer, + private val rightRenderer: ListCellRenderer, +) : ListCellRenderer { private val spacer = JPanel().apply { border = JBUI.Borders.empty(0, 2) @@ -25,11 +25,11 @@ abstract class LeftRightRenderer : ListCellRenderer { private val component = JPanel(BorderLayout()) - final override fun getListCellRendererComponent(list: JList, - value: T, - index: Int, - isSelected: Boolean, - cellHasFocus: Boolean): Component { + override fun getListCellRendererComponent(list: JList, + value: T, + index: Int, + isSelected: Boolean, + cellHasFocus: Boolean): Component { val mainComponent = mainRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus) val rightComponent = rightRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus) mainComponent.background.let {