From ba50f67d55311c99ec52fc6757fcdd9d0a4ebdd6 Mon Sep 17 00:00:00 2001 From: Ivan Semenov Date: Wed, 1 Dec 2021 23:16:07 +0300 Subject: [PATCH] [vcs-log] display commit signature description in tooltip GitOrigin-RevId: c0a1bf7cbb888cb48df10a095b5fd3990f667a66 --- .../util/ui/ExtendableHTMLViewFactory.kt | 3 ++- .../ui/details/commit/CommitDetailsPanel.kt | 7 ++++++- .../log/GitCommitSignatureStatusProvider.kt | 20 ++++++++++--------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/platform/util/ui/src/com/intellij/util/ui/ExtendableHTMLViewFactory.kt b/platform/util/ui/src/com/intellij/util/ui/ExtendableHTMLViewFactory.kt index d85b8b41bc5f..df8e9defde1c 100644 --- a/platform/util/ui/src/com/intellij/util/ui/ExtendableHTMLViewFactory.kt +++ b/platform/util/ui/src/com/intellij/util/ui/ExtendableHTMLViewFactory.kt @@ -4,6 +4,7 @@ package com.intellij.util.ui import com.intellij.openapi.diagnostic.thisLogger import com.intellij.openapi.util.IconLoader import com.intellij.ui.scale.JBUIScale +import com.intellij.util.text.nullize import java.awt.* import java.awt.image.BufferedImage import java.io.ByteArrayInputStream @@ -137,7 +138,7 @@ internal constructor(private val extensions: List<(Element, View) -> View?>, } override fun getToolTipText(x: Float, y: Float, allocation: Shape): String? { - return element.attributes.getAttribute(HTML.Attribute.ALT) as? String + return (element.attributes.getAttribute(HTML.Attribute.ALT) as? String)?.nullize(true) } override fun paint(g: Graphics, allocation: Shape) { diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/details/commit/CommitDetailsPanel.kt b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/details/commit/CommitDetailsPanel.kt index 3ed19f3e796e..bfcf7e99b2e9 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/details/commit/CommitDetailsPanel.kt +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/details/commit/CommitDetailsPanel.kt @@ -277,7 +277,12 @@ private class HashAndAuthorPanel : HtmlPanel() { @Suppress("HardCodedStringLiteral") return presentation.hashAndAuthor.let { if (signature != null) { - it + """     ${signature.text}""" + val tooltip = signature.description?.toString() + //language=html + it + """    + | + | ${signature.text} + |""".trimMargin() } else it } diff --git a/plugins/git4idea/src/git4idea/log/GitCommitSignatureStatusProvider.kt b/plugins/git4idea/src/git4idea/log/GitCommitSignatureStatusProvider.kt index be030c25bc14..bdd48d861bae 100644 --- a/plugins/git4idea/src/git4idea/log/GitCommitSignatureStatusProvider.kt +++ b/plugins/git4idea/src/git4idea/log/GitCommitSignatureStatusProvider.kt @@ -5,10 +5,10 @@ import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.project.Project import com.intellij.openapi.util.SystemInfo -import com.intellij.vcs.log.data.util.VcsCommitsDataLoader import com.intellij.openapi.util.text.HtmlBuilder import com.intellij.openapi.util.text.HtmlChunk import com.intellij.util.ui.EmptyIcon +import com.intellij.vcs.log.data.util.VcsCommitsDataLoader import com.intellij.vcs.log.ui.frame.VcsCommitExternalStatusPresentation import com.intellij.vcs.log.ui.frame.VcsCommitExternalStatusProvider import com.intellij.vcs.log.ui.table.column.util.VcsLogExternalStatusColumnService @@ -52,17 +52,19 @@ internal class GitCommitSignatureStatusProvider : VcsCommitExternalStatusProvide override val text: String get() = when (signature) { - is GitCommitSignature.Verified -> - HtmlBuilder() - .append(GitBundle.message("tooltip.commit.signature.verify.success")) - .append(HtmlChunk.br()) - .append(signature.user) - .append(HtmlChunk.br()) - .append(signature.fingerprint) - .toFragment().toString() + is GitCommitSignature.Verified -> GitBundle.message("tooltip.commit.signature.verify.success") GitCommitSignature.NotVerified -> GitBundle.message("tooltip.commit.signature.verify.failure") GitCommitSignature.NoSignature -> GitBundle.message("tooltip.no.commit.signature") } + + override val description: HtmlChunk? + get() = if (signature is GitCommitSignature.Verified) + HtmlBuilder() + .append(signature.user) + .append(HtmlChunk.br()) + .append(signature.fingerprint) + .toFragment() + else null } } }