Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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<String, String, LocalizeValue> pattern
) {
return composeText(Arrays.asList(elements), startHtml, pattern);
Comment on lines +36 to +46
}
Comment on lines +40 to +47

public static String composeText(Iterable<? extends PsiElement> elements, String start, String pattern)
{
return composeText(elements, start, pattern, "");
}
@RequiredReadAction
public static HtmlChunk.Element composeText(
Iterable<? extends PsiElement> elements,
String startHtml,
BiFunction<String, String, LocalizeValue> pattern
) {
Comment on lines +41 to +54
return composeText(elements, startHtml, pattern, "");
}

public static String composeText(Iterable<? extends PsiElement> elements, String start, String pattern, String postfix)
{
StringBuilder result = new StringBuilder();
result.append("<html><body>");
result.append(start);
Set<String> names = new LinkedHashSet<String>();
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<? extends PsiElement> elements,
String startHtml,
BiFunction<String, String, LocalizeValue> pattern,
String endHtml
) {
Set<LocalizeValue> 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 = "<br>";
result.append(name);
}
result.append(postfix);
result.append("</body></html>");
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());
}
}
Loading