void (@NotNull ActionLink link) { List<ArrangementTabInfo> arrangementTabInfos = getArrangementTabInfos(); JBPopupFactory.getInstance().createPopupChooserBuilder(arrangementTabInfos) .setTitle(CodeInsightBundle.message("actions.on.save.page.popup.title.arrangement.settings")) .setRenderer(new DefaultListCellRenderer() { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { Component result = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); ArrangementTabInfo tabInfo = (ArrangementTabInfo)value; setText(tabInfo.languageDisplayName); setIcon(ObjectUtils.notNull(tabInfo.icon, EmptyIcon.ICON_16)); setBorder(JBUI.Borders.empty(3)); return result; } }) .setItemChosenCallback(tabInfo -> { String configurableId = CodeStyleConfigurableWrapper.getConfigurableId(tabInfo.configurableId); Configurable configurable = getSettings().find(configurableId); getSettings().select(configurable).doWhenDone(() -> { if (configurable instanceof CodeStyleConfigurableWrapper) { ((CodeStyleConfigurableWrapper)configurable).selectTab(ApplicationBundle.message("arrangement.title.settings.tab")); } }); }) .createPopup() .show(new RelativePoint(link, new Point(0, link.getHeight() + JBUI.scale(4)))); }