[vcs-log] display commit signature description in tooltip

GitOrigin-RevId: c0a1bf7cbb888cb48df10a095b5fd3990f667a66
This commit is contained in:
Ivan Semenov
2021-12-02 09:08:53 +00:00
committed by intellij-monorepo-bot
parent cd0a84c0cc
commit ba50f67d55
3 changed files with 19 additions and 11 deletions
@@ -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) {
@@ -277,7 +277,12 @@ private class HashAndAuthorPanel : HtmlPanel() {
@Suppress("HardCodedStringLiteral")
return presentation.hashAndAuthor.let {
if (signature != null) {
it + """<span class='signature'>&nbsp;&nbsp;&nbsp; <icon src='sig'/>&nbsp;${signature.text}</span>"""
val tooltip = signature.description?.toString()
//language=html
it + """<span class='signature'>&nbsp;&nbsp;&nbsp;
|<icon src='sig' alt='${tooltip.orEmpty()}'/>
|&nbsp;${signature.text}
|</span>""".trimMargin()
}
else it
}
@@ -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
}
}
}