From 4a6aaaffd28e3d87b2c8a1102b72036991f4d51d Mon Sep 17 00:00:00 2001 From: Louis Vignier Date: Mon, 29 Jul 2024 16:37:45 +0200 Subject: [PATCH] [ui] Fix list renderer in OccurrencesChooser #IJPL-58778 Fixed GitOrigin-RevId: dcc5dc2d1f721befa9bfaa521221175fbf8e5dfd --- .../introduce/inplace/OccurrencesChooser.java | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/OccurrencesChooser.java b/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/OccurrencesChooser.java index b28366f27e74..a840b3fbb7ae 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/OccurrencesChooser.java +++ b/platform/lang-impl/src/com/intellij/refactoring/introduce/inplace/OccurrencesChooser.java @@ -11,17 +11,17 @@ import com.intellij.openapi.editor.markup.RangeHighlighter; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.ui.popup.JBPopupListener; import com.intellij.openapi.ui.popup.LightweightWindowEvent; +import com.intellij.openapi.ui.popup.ListItemDescriptorAdapter; import com.intellij.openapi.util.Pass; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.refactoring.RefactoringBundle; +import com.intellij.ui.popup.list.GroupedItemsListRenderer; import com.intellij.util.SlowOperations; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import javax.swing.*; -import java.awt.*; -import java.util.List; import java.util.*; import java.util.function.Consumer; @@ -113,22 +113,13 @@ public abstract class OccurrencesChooser { JBPopupFactory.getInstance() .createPopupChooserBuilder(model) - .setRenderer(new DefaultListCellRenderer() { + .setRenderer(new GroupedItemsListRenderer(new ListItemDescriptorAdapter() { @Override - public Component getListCellRendererComponent(final JList list, - final Object value, - final int index, - final boolean isSelected, - final boolean cellHasFocus) { - final Component rendererComponent = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - @SuppressWarnings("unchecked") final C choices = (C)value; - - if (choices != null) { - setText(choices.formatDescription(occurrencesMap.get(choices).size())); - } - return rendererComponent; + public @Nullable String getTextFor(C value) { + if (value == null) return ""; + return value.formatDescription(occurrencesMap.get(value).size()); } - }) + })) .setItemSelectedCallback(value -> { if (value == null) return; dropHighlighters();