From b5fc4524c30bb0733cd4b3d8cf45014729f2fe56 Mon Sep 17 00:00:00 2001 From: UNV Date: Tue, 21 Apr 2026 17:49:35 +0300 Subject: [PATCH] Localizing GutterIconTooltipHelper. --- .../daemon/impl/GutterIconTooltipHelper.java | 130 +++++++++--------- 1 file changed, 68 insertions(+), 62 deletions(-) diff --git a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java index 31eb0dcd7..f077d101e 100644 --- a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java +++ b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/GutterIconTooltipHelper.java @@ -13,76 +13,82 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -/* - * @author max - */ package com.intellij.java.impl.codeInsight.daemon.impl; -import java.text.MessageFormat; -import java.util.Arrays; -import java.util.LinkedHashSet; -import java.util.Set; - +import com.intellij.java.language.impl.psi.presentation.java.ClassPresentationUtil; import com.intellij.java.language.psi.PsiClass; +import com.intellij.java.language.psi.PsiMethod; +import consulo.annotation.access.RequiredReadAction; +import consulo.application.util.HtmlBuilder; +import consulo.application.util.HtmlChunk; import consulo.language.psi.PsiElement; import consulo.language.psi.PsiFile; -import com.intellij.java.language.psi.PsiMethod; -import com.intellij.java.language.impl.psi.presentation.java.ClassPresentationUtil; +import consulo.localize.LocalizeValue; -public class GutterIconTooltipHelper -{ - private GutterIconTooltipHelper() - { - } +import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.function.BiFunction; + +/** + * @author max + */ +public class GutterIconTooltipHelper { + private GutterIconTooltipHelper() { + } - public static String composeText(PsiElement[] elements, String start, String pattern) - { - return composeText(Arrays.asList(elements), start, pattern); - } + @RequiredReadAction + public static HtmlChunk.Element composeText( + PsiElement[] elements, + String startHtml, + BiFunction pattern + ) { + return composeText(Arrays.asList(elements), startHtml, pattern); + } - public static String composeText(Iterable elements, String start, String pattern) - { - return composeText(elements, start, pattern, ""); - } + @RequiredReadAction + public static HtmlChunk.Element composeText( + Iterable elements, + String startHtml, + BiFunction pattern + ) { + return composeText(elements, startHtml, pattern, ""); + } - public static String composeText(Iterable elements, String start, String pattern, String postfix) - { - StringBuilder result = new StringBuilder(); - result.append(""); - result.append(start); - Set names = new LinkedHashSet(); - for(PsiElement element : elements) - { - String descr = ""; - if(element instanceof PsiClass) - { - String className = ClassPresentationUtil.getNameForClass((PsiClass) element, true); - descr = MessageFormat.format(pattern, className); - } - else if(element instanceof PsiMethod) - { - String methodName = ((PsiMethod) element).getName(); - PsiClass aClass = ((PsiMethod) element).getContainingClass(); - String className = aClass == null ? "" : ClassPresentationUtil.getNameForClass(aClass, true); - descr = MessageFormat.format(pattern, methodName, className); - } - else if(element instanceof PsiFile) - { - descr = MessageFormat.format(pattern, ((PsiFile) element).getName()); - } - names.add(descr); - } + @RequiredReadAction + public static HtmlChunk.Element composeText( + Iterable elements, + String startHtml, + BiFunction pattern, + String endHtml + ) { + Set names = new LinkedHashSet<>(); + for (PsiElement element : elements) { + if (element instanceof PsiClass psiClass) { + String className = ClassPresentationUtil.getNameForClass(psiClass, true); + names.add(pattern.apply("", className)); + } + else if (element instanceof PsiMethod method) { + String methodName = method.getName(); + PsiClass aClass = method.getContainingClass(); + String className = aClass == null ? "" : ClassPresentationUtil.getNameForClass(aClass, true); + names.add(pattern.apply(methodName, className)); + } + else if (element instanceof PsiFile file) { + names.add(pattern.apply("", file.getName())); + } + } - String sep = ""; - for(String name : names) - { - result.append(sep); - sep = "
"; - result.append(name); - } - result.append(postfix); - result.append(""); - return result.toString(); - } + HtmlBuilder result = new HtmlBuilder().appendRaw(startHtml); + boolean first = true; + for (LocalizeValue name : names) { + if (!first) { + result.append(HtmlChunk.br()); + } + first = false; + result.append(name); + } + result.appendRaw(endHtml); + return result.wrapWith(HtmlChunk.body()).wrapWith(HtmlChunk.html()); + } }