Component (@NotNull JList list, Object matchedValue, int index, boolean isSelected, boolean cellHasFocus) { SimpleColoredComponent nameComponent = new SimpleColoredComponent(); boolean showIcon = UISettings.getInstance().getShowIconsInMenus(); IconCompOptionalCompPanel<SimpleColoredComponent> panel = new IconCompOptionalCompPanel<>(nameComponent) { @Override public AccessibleContext getAccessibleContext() { return nameComponent.getAccessibleContext(); } }; panel.setBorder(JBUI.Borders.empty(2)); panel.setOpaque(true); Color bg = UIUtil.getListBackground(isSelected, cellHasFocus); panel.setBackground(bg); if (myUseListFont) { nameComponent.setFont(list.getFont()); } nameComponent.setOpaque(false); if (matchedValue instanceof String) { //... if (showIcon) { panel.setIcon(EMPTY_ICON); } String str = cutName((String)matchedValue, null, list, panel); nameComponent.append(str, new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, defaultActionForeground(isSelected, cellHasFocus, null))); return panel; } Color groupFg; groupFg = isSelected ? NamedColorUtil.getListSelectionForeground(true) : NamedColorUtil.getInactiveTextColor(); Object value = ((MatchedValue)matchedValue).value; String pattern = ((MatchedValue)matchedValue).pattern; Border eastBorder = JBUI.Borders.emptyRight(2); if (value instanceof ActionWrapper actionWithParentGroup) { AnAction anAction = actionWithParentGroup.getAction(); boolean toggle = anAction instanceof ToggleAction; String groupName = actionWithParentGroup.getAction() instanceof ApplyIntentionAction ? null : actionWithParentGroup.getGroupName(); Presentation presentation = actionWithParentGroup.getPresentation(); Color fg = defaultActionForeground(isSelected, cellHasFocus, presentation); boolean disabled = !isSelected && !presentation.isEnabledAndVisible(); if (disabled) { groupFg = UIUtil.getLabelDisabledForeground(); } if (showIcon) { Icon icon = presentation.getIcon(); if (isSelected && presentation.getSelectedIcon() != null) { icon = presentation.getSelectedIcon(); } panel.setIcon(createLayeredIcon(icon, disabled)); } if (toggle) { addOnOffButton(panel, Toggleable.isSelected(presentation)); } else if (groupName != null) { JLabel groupLabel = new JLabel(groupName); groupLabel.setBackground(bg); groupLabel.setBorder(eastBorder); groupLabel.setForeground(groupFg); panel.setRight(groupLabel); } if (anAction instanceof PromoAction promoAction) { customizePromoAction(promoAction, bg, eastBorder, groupFg, panel); } panel.setToolTipText(presentation.getDescription()); @NlsSafe String actionId = ActionManager.getInstance().getId(anAction); Shortcut[] shortcuts = KeymapUtil.getActiveKeymapShortcuts(actionId).getShortcuts(); String shortcutText = KeymapUtil.getPreferredShortcutText(shortcuts); String text = ActionPresentationDecorator.decorateTextIfNeeded(anAction, presentation.getText()); String name = getName(text, groupName, toggle); name = cutName(name, shortcutText, list, panel); appendWithColoredMatches(nameComponent, name, pattern, fg, isSelected); if (UISettings.getInstance().getShowInplaceCommentsInternal() && actionId != null) { nameComponent.append(" " + actionId + " ", SimpleTextAttributes.GRAYED_ATTRIBUTES); } if (StringUtil.isNotEmpty(shortcutText)) { nameComponent.append(" " + shortcutText, new SimpleTextAttributes(SimpleTextAttributes.STYLE_SMALLER | SimpleTextAttributes.STYLE_BOLD, groupFg)); } } else if (value instanceof OptionDescription) { if (!isSelected && !(value instanceof BooleanOptionDescription)) { Color descriptorBg; if (StartupUiUtil.isUnderDarcula()) { descriptorBg = ColorUtil.brighter(UIUtil.getListBackground(), 1); } else { descriptorBg = JBUI.CurrentTheme.BigPopup.LIST_SETTINGS_BACKGROUND; } panel.setBackground(descriptorBg); nameComponent.setBackground(descriptorBg); } String hit = calcHit((OptionDescription)value); Color fg = UIUtil.getListForeground(isSelected, cellHasFocus); if (showIcon) { panel.setIcon(EMPTY_ICON); } if (value instanceof BooleanOptionDescription) { boolean selected = ((BooleanOptionDescription)value).isOptionEnabled(); addOnOffButton(panel, selected); } else { JLabel settingsLabel = new JLabel(myGroupNamer.fun((OptionDescription)value)); settingsLabel.setForeground(groupFg); settingsLabel.setBackground(bg); settingsLabel.setBorder(eastBorder); panel.setRight(settingsLabel); } String name = cutName(hit, null, list, panel); appendWithColoredMatches(nameComponent, name, pattern, fg, isSelected); } return panel; }