From 896288967d73e1b8b7c4b59448120ea5806e77ae Mon Sep 17 00:00:00 2001 From: irengrig Date: Mon, 1 Feb 2016 17:56:05 +0100 Subject: [PATCH] extract html label creation method into util class, remove unused code --- .../src/com/intellij/util/ui/SwingHelper.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java b/platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java index 7105dcfccc6e..d79e2d659918 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java +++ b/platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java @@ -47,6 +47,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; import javax.swing.table.DefaultTableCellRenderer; @@ -738,4 +740,38 @@ public class SwingHelper { return text.substring(0, currentLen) + ELLIPSIS; } } + + public static JEditorPane createHtmlLabel(@NotNull final String innerHtml, @Nullable String disabledHtml, + @Nullable final Consumer hyperlinkListener) { + disabledHtml = disabledHtml == null ? innerHtml : disabledHtml; + final Font font = UIUtil.getLabelFont(); + String html = String.format( + "%s%s", + UIUtil.getCssFontDeclaration(font, UIUtil.getInactiveTextColor(), null, null), + innerHtml + ); + String disabled = String.format( + "%s%s", + UIUtil.getCssFontDeclaration(font, UIUtil.getInactiveTextColor(), null, null), + disabledHtml + ); + + final JEditorPane pane = new SwingHelper.HtmlViewerBuilder() + .setCarryTextOver(false) + .setFont(UIUtil.getLabelFont()) + .setDisabledHtml(disabled) + .create(); + pane.setText(html); + pane.addHyperlinkListener( + new HyperlinkListener() { + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + if (hyperlinkListener != null) hyperlinkListener.consume(e.getURL() == null ? "" : e.getURL().toString()); + else BrowserUtil.browse(e.getURL()); + } + } + } + ); + return pane; + } }