From ed785915a8d3b2b86613165ff173132b3cf47759 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Mon, 6 Jun 2022 13:06:59 +0100 Subject: [PATCH] add key id in tooltip if it's not visible --- .../com/muwire/gui/ChatRoomModel.groovy | 4 ++-- .../com/muwire/gui/MainFrameModel.groovy | 9 ++------ .../com/muwire/gui/SearchTabModel.groovy | 7 ------ .../com/muwire/gui/MWMessageStatus.groovy | 7 ------ .../PersonaOrProfileCellRenderer.groovy | 13 ++++++++--- .../com/muwire/gui/profile/ResultPOP.groovy | 5 ---- .../com/muwire/gui/profile/TrustPOP.groovy | 7 +----- .../java/com/muwire/gui/HTMLSanitizer.java | 10 +++++++- .../muwire/gui/profile/PersonaOrProfile.java | 23 ++++++++++++++++--- 9 files changed, 44 insertions(+), 41 deletions(-) diff --git a/gui/griffon-app/models/com/muwire/gui/ChatRoomModel.groovy b/gui/griffon-app/models/com/muwire/gui/ChatRoomModel.groovy index e773f099..c42d8be4 100644 --- a/gui/griffon-app/models/com/muwire/gui/ChatRoomModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/ChatRoomModel.groovy @@ -49,11 +49,11 @@ class ChatRoomModel { return persona } - public String getTitle() { + public String getRawTitle() { MWProfileHeader header = profileHeaders.get(persona) if (header == null) return "" - return HTMLSanitizer.sanitize(header.getTitle()) + return header.getTitle() } public Icon getThumbnail() { diff --git a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy index d9219330..de1e693e 100644 --- a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy @@ -941,10 +941,6 @@ class MainFrameModel { uploader.downloaderPersona } - String getTitle() { - HTMLSanitizer.sanitize(profileHeader?.getTitle()) - } - Icon getThumbnail() { if (profileHeader == null) return null @@ -1166,9 +1162,8 @@ class MainFrameModel { } @Override - String getTitle() { - String title = core.trustService.getProfileHeader(getPersona())?.getTitle() - return HTMLSanitizer.sanitize(title) + String getRawTitle() { + getHeader()?.getTitle() } @Override diff --git a/gui/griffon-app/models/com/muwire/gui/SearchTabModel.groovy b/gui/griffon-app/models/com/muwire/gui/SearchTabModel.groovy index ffce3421..3c8f27d8 100644 --- a/gui/griffon-app/models/com/muwire/gui/SearchTabModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/SearchTabModel.groovy @@ -259,7 +259,6 @@ class SearchTabModel { static class SenderBucket implements PersonaOrProfile { final Persona sender private final Icon avatar - private final String profileTitle private final MWProfileHeader profileHeader private final int rowIdx final List results = [] @@ -275,10 +274,8 @@ class SearchTabModel { icon = new ThumbnailIcon(profileHeader.getThumbNail()) } catch (IOException iox) {} avatar = icon - profileTitle = HTMLSanitizer.sanitize(profileHeader.getTitle()) } else { avatar = null - profileTitle = null } } @@ -290,10 +287,6 @@ class SearchTabModel { avatar } - String getTitle() { - profileTitle - } - MWProfileHeader getHeader() { profileHeader } diff --git a/gui/src/main/groovy/com/muwire/gui/MWMessageStatus.groovy b/gui/src/main/groovy/com/muwire/gui/MWMessageStatus.groovy index 17a3b84e..ddbe46da 100644 --- a/gui/src/main/groovy/com/muwire/gui/MWMessageStatus.groovy +++ b/gui/src/main/groovy/com/muwire/gui/MWMessageStatus.groovy @@ -42,13 +42,6 @@ class MWMessageStatus implements PersonaOrProfile { return icon } - @Override - String getTitle() { - if (profileHeader == null) - return null - return HTMLSanitizer.sanitize(profileHeader.getTitle()) - } - @Override MWProfileHeader getHeader() { profileHeader diff --git a/gui/src/main/groovy/com/muwire/gui/profile/PersonaOrProfileCellRenderer.groovy b/gui/src/main/groovy/com/muwire/gui/profile/PersonaOrProfileCellRenderer.groovy index 2f21a632..38cb8f82 100644 --- a/gui/src/main/groovy/com/muwire/gui/profile/PersonaOrProfileCellRenderer.groovy +++ b/gui/src/main/groovy/com/muwire/gui/profile/PersonaOrProfileCellRenderer.groovy @@ -1,6 +1,7 @@ package com.muwire.gui.profile import com.muwire.core.Persona +import com.muwire.gui.HTMLSanitizer import com.muwire.gui.UISettings import javax.swing.JTable @@ -28,9 +29,15 @@ class PersonaOrProfileCellRenderer extends DefaultTableCellRenderer { else setIcon(null) - if (pop.getTitle() != null) - setToolTipText(pop.getTitle()) - else + if (pop.getTitle() != null) { + if (settings.personaRendererIds) + setToolTipText(pop.getTitle()) + else { + String escaped = HTMLSanitizer.escape(pop.getRawTitle()); + String tooltip = "${pop.getPersona().getHumanReadableName()}: ${escaped}" + setToolTipText(tooltip) + } + } else setToolTipText(trans("NO_PROFILE")) Persona persona = pop.getPersona() diff --git a/gui/src/main/groovy/com/muwire/gui/profile/ResultPOP.groovy b/gui/src/main/groovy/com/muwire/gui/profile/ResultPOP.groovy index 1a4f8bd5..1a3a1c70 100644 --- a/gui/src/main/groovy/com/muwire/gui/profile/ResultPOP.groovy +++ b/gui/src/main/groovy/com/muwire/gui/profile/ResultPOP.groovy @@ -29,11 +29,6 @@ class ResultPOP implements PersonaOrProfile { thumbNail } - @Override - String getTitle() { - return HTMLSanitizer.sanitize(event.profileHeader?.getTitle()) - } - @Override MWProfileHeader getHeader() { return event.profileHeader diff --git a/gui/src/main/groovy/com/muwire/gui/profile/TrustPOP.groovy b/gui/src/main/groovy/com/muwire/gui/profile/TrustPOP.groovy index c544942e..937f186e 100644 --- a/gui/src/main/groovy/com/muwire/gui/profile/TrustPOP.groovy +++ b/gui/src/main/groovy/com/muwire/gui/profile/TrustPOP.groovy @@ -27,7 +27,7 @@ class TrustPOP implements PersonaOrProfile { @Override Icon getThumbnail() { - MWProfileHeader header = trustEntry.getProfileHeader() + MWProfileHeader header = getHeader() if (header == null) return null if (icon == null) @@ -35,11 +35,6 @@ class TrustPOP implements PersonaOrProfile { return icon } - @Override - String getTitle() { - return HTMLSanitizer.sanitize(trustEntry.getProfileHeader()?.getTitle()) - } - @Override public MWProfileHeader getHeader() { trustEntry.getProfileHeader() diff --git a/gui/src/main/java/com/muwire/gui/HTMLSanitizer.java b/gui/src/main/java/com/muwire/gui/HTMLSanitizer.java index a003c3c6..8caad4f1 100644 --- a/gui/src/main/java/com/muwire/gui/HTMLSanitizer.java +++ b/gui/src/main/java/com/muwire/gui/HTMLSanitizer.java @@ -7,6 +7,15 @@ public class HTMLSanitizer { return null; StringBuilder sb = new StringBuilder(s.length() * 2 + 26); sb.append(""); + sb.append(escape(s)); + sb.append(""); + return sb.toString(); + } + + public static String escape(String s) { + if (s == null) + return null; + StringBuilder sb = new StringBuilder(s.length() * 2); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); switch(c) { @@ -18,7 +27,6 @@ public class HTMLSanitizer { sb.append(c); } } - sb.append(""); return sb.toString(); } } diff --git a/gui/src/main/java/com/muwire/gui/profile/PersonaOrProfile.java b/gui/src/main/java/com/muwire/gui/profile/PersonaOrProfile.java index 632754ec..dc17cab2 100644 --- a/gui/src/main/java/com/muwire/gui/profile/PersonaOrProfile.java +++ b/gui/src/main/java/com/muwire/gui/profile/PersonaOrProfile.java @@ -3,16 +3,33 @@ package com.muwire.gui.profile; import com.muwire.core.Persona; import com.muwire.core.profile.MWProfile; import com.muwire.core.profile.MWProfileHeader; +import com.muwire.gui.HTMLSanitizer; import javax.swing.*; public interface PersonaOrProfile { - Persona getPersona(); + default Persona getPersona() {return getHeader().getPersona();} + Icon getThumbnail(); - String getTitle(); + + default String getTitle() { + return HTMLSanitizer.sanitize(getRawTitle()); + } + + default String getRawTitle() { + MWProfileHeader header = getHeader(); + if (header == null) + return null; + return header.getTitle(); + } default MWProfileHeader getHeader() { - return null; + MWProfile profile = getProfile(); + if (profile == null) + return null; + return profile.getHeader(); } + + default MWProfile getProfile() { return null; } }