options to not display avatars or user ids part 2

dbus-notify
Zlatin Balevsky 2022-06-06 06:39:23 +01:00
parent 3465d89743
commit fc7947bd2d
No known key found for this signature in database
GPG Key ID: A72832072D525E41
18 changed files with 114 additions and 25 deletions

View File

@ -1,6 +1,10 @@
package com.muwire.gui
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import javax.inject.Inject
import static com.muwire.gui.Translator.trans
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
@ -31,6 +35,8 @@ class CertificateControlView {
CertificateControlModel model
@MVCMember @Nonnull
CertificateControlController controller
@Inject
GriffonApplication application
def mainFrame
def dialog
@ -79,7 +85,7 @@ class CertificateControlView {
}
void mvcGroupInit(Map<String,String> args) {
usersTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
usersTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
usersTable.rowSorter.setComparator(0, new PersonaComparator())
usersTable.rowSorter.addRowSorterListener({evt -> lastUsersSortEvent = evt})
def selectionModel = usersTable.getSelectionModel()

View File

@ -1,7 +1,9 @@
package com.muwire.gui
import com.muwire.core.Persona
import griffon.core.GriffonApplication
import javax.inject.Inject
import javax.swing.AbstractAction
import javax.swing.Action
import javax.swing.JComponent
@ -44,6 +46,8 @@ class CollectionTabView {
CollectionTabModel model
@MVCMember @Nonnull
CollectionTabController controller
@Inject
GriffonApplication application
def parent
JComponent p
@ -226,7 +230,7 @@ class CollectionTabView {
def centerRenderer = new DefaultTableCellRenderer()
centerRenderer.setHorizontalAlignment(JLabel.CENTER)
collectionsTable.setDefaultRenderer(Integer.class, centerRenderer)
collectionsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
collectionsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
collectionsTable.columnModel.getColumn(3).setCellRenderer(new SizeRenderer())
collectionsTable.columnModel.getColumn(5).setCellRenderer(new DateRenderer())

View File

@ -1,6 +1,9 @@
package com.muwire.gui
import com.muwire.core.Persona
import griffon.core.GriffonApplication
import javax.inject.Inject
import static com.muwire.gui.Translator.trans
@ -37,6 +40,8 @@ class CollectionsToolView {
CollectionsToolModel model
@MVCMember @Nonnull
CollectionsToolController controller
@Inject
GriffonApplication application
def mainFrame
def dialog
@ -72,7 +77,7 @@ class CollectionsToolView {
void mvcGroupInit(Map<String,String> args) {
// hits table
hitsTable.setDefaultRenderer(Long.class, new DateRenderer())
hitsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
hitsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
hitsTable.rowSorter.setComparator(0, new PersonaComparator())
dialog.getContentPane().add(mainPanel)

View File

@ -1,11 +1,13 @@
package com.muwire.gui
import com.muwire.core.Persona
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
import javax.annotation.Nonnull
import javax.inject.Inject
import javax.swing.DefaultListModel
import javax.swing.JComponent
import javax.swing.JList
@ -29,6 +31,8 @@ class ContactSelectorView {
FactoryBuilderSupport builder
@MVCMember @Nonnull
ContactSelectorModel model
@Inject
GriffonApplication application
DefaultListModel contactsModel
JList contactsList
@ -110,13 +114,17 @@ class ContactSelectorView {
}
private static class Contact {
private final UISettings settings
private final Persona persona
Contact(Persona persona) {
this.persona = persona
}
public String toString() {
"<html>" + PersonaCellRenderer.htmlize(persona) + "</html>"
if (settings.personaRendererIds)
return "<html>" + PersonaCellRenderer.htmlize(persona) + "</html>"
else
return PersonaCellRenderer.justName(persona)
}
}
}

View File

@ -1,7 +1,11 @@
package com.muwire.gui
import com.muwire.core.Persona
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import javax.inject.Inject
import static com.muwire.gui.Translator.trans
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
@ -27,6 +31,8 @@ class ContentPanelView {
FactoryBuilderSupport builder
@MVCMember @Nonnull
ContentPanelModel model
@Inject
GriffonApplication application
def dialog
def mainFrame
@ -130,7 +136,7 @@ class ContentPanelView {
}
})
hitsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
hitsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
hitsTable.rowSorter.setComparator(0, new PersonaComparator())
hitsTable.rowSorter.addRowSorterListener({evt -> lastHitsSortEvent = evt})
hitsTable.rowSorter.setSortsOnUpdates(true)

View File

@ -1,7 +1,11 @@
package com.muwire.gui
import com.muwire.core.Persona
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import javax.inject.Inject
import static com.muwire.gui.Translator.trans
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
@ -30,6 +34,8 @@ class FetchCertificatesView {
FetchCertificatesModel model
@MVCMember @Nonnull
FetchCertificatesController controller
@Inject
GriffonApplication application
def mainFrame
def dialog
@ -71,7 +77,7 @@ class FetchCertificatesView {
}
}
certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
certsTable.rowSorter.setComparator(0, new PersonaComparator())
certsTable.rowSorter.addRowSorterListener({evt -> lastSortEvent = evt})
certsTable.rowSorter.setSortsOnUpdates(true)

View File

@ -1065,7 +1065,7 @@ class MainFrameView {
// collections table
def personaRenderer = new PersonaCellRenderer()
def personaRenderer = new PersonaCellRenderer(application.context.get("ui-settings"))
def personaComparator = new PersonaComparator()
collectionsTable.setDefaultRenderer(Integer.class, centerRenderer)
collectionsTable.setDefaultRenderer(Persona.class, personaRenderer)

View File

@ -31,6 +31,7 @@ import java.awt.BorderLayout
import java.awt.datatransfer.Transferable
import java.awt.event.MouseAdapter
import java.awt.event.MouseEvent
import java.util.function.Function
import java.util.stream.Collectors
import static com.muwire.gui.Translator.trans
@ -52,11 +53,13 @@ class MessageFolderView {
def lastMessageHeaderTableSortEvent
def lastMessageAttachmentsTableSortEvent
private UISettings settings
JPanel folderPanel
void initUI() {
def mainFrame = application.windowManager.findWindow("main-frame")
int dividerLocation = mainFrame.getHeight() / 2
int rowHeight = application.context.get("row-height")
settings = application.context.get("ui-settings")
folderPanel = builder.panel (constraints: model.name) {
gridLayout(rows: 1, cols: 1)
splitPane(orientation: JSplitPane.VERTICAL_SPLIT, continuousLayout: true, dividerLocation: dividerLocation) {
@ -76,8 +79,10 @@ class MessageFolderView {
closureColumn(header: trans("RECIPIENTS"), preferredWidth: 400, type: String, read : {
StringBuilder sb = new StringBuilder()
sb.append("<html>")
Function<Persona, String> mapper = settings.personaRendererIds ?
PersonaCellRenderer::htmlize : PersonaCellRenderer::justName
String collected = it.message.recipients.stream().
map(PersonaCellRenderer::htmlize).
map(mapper).
collect(Collectors.joining(","))
sb.append(collected)
sb.append("</html>")
@ -222,7 +227,9 @@ class MessageFolderView {
MWMessage selected = selectedStatus.message
messageBody.setText(selected.body)
model.messageButtonsEnabled = true
model.messageRecipientList = String.join(",", selected.recipients.collect {it.getHumanReadableName()})
Function<Persona, String> mapper = settings.personaRendererIds ?
Persona::getHumanReadableName : PersonaCellRenderer::justName
model.messageRecipientList = selected.recipients.stream().map(mapper).collect(Collectors.joining(","))
if (selected.attachments.isEmpty() && selected.collections.isEmpty()) {
messageSplitPane.setDividerLocation(1.0d)

View File

@ -1,7 +1,11 @@
package com.muwire.gui
import com.muwire.core.Persona
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import javax.inject.Inject
import static com.muwire.gui.Translator.trans
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
@ -31,6 +35,8 @@ class SharedFileView {
SharedFileModel model
@MVCMember @Nonnull
SharedFileController controller
@Inject
GriffonApplication application
def mainFrame
def dialog
@ -92,7 +98,7 @@ class SharedFileView {
void mvcGroupInit(Map<String,String> args) {
def personaRenderer = new PersonaCellRenderer()
def personaRenderer = new PersonaCellRenderer(application.context.get("ui-settings"))
def personaComparator = new PersonaComparator()
certificatesTable.setDefaultRenderer(Persona.class, personaRenderer)

View File

@ -3,11 +3,13 @@ package com.muwire.gui.chat
import com.muwire.core.Persona
import com.muwire.gui.PersonaCellRenderer
import com.muwire.gui.PersonaComparator
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
import javax.annotation.Nonnull
import javax.inject.Inject
import javax.swing.DefaultCellEditor
import javax.swing.JCheckBox
import javax.swing.JFrame
@ -27,6 +29,8 @@ class ChatFavoritesView {
FactoryBuilderSupport builder
@MVCMember @Nonnull
ChatFavoritesModel model
@Inject
GriffonApplication application
JFrame window
private JTable favoritesTable
@ -86,7 +90,7 @@ class ChatFavoritesView {
void mvcGroupInit(Map<String, String> args) {
favoritesTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
favoritesTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
favoritesTable.rowSorter.setComparator(0, new PersonaComparator())
favoritesTable.selectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)

View File

@ -2,11 +2,13 @@ package com.muwire.gui.resultdetails
import com.muwire.core.search.UIResultEvent
import com.muwire.gui.profile.ResultPOP
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
import javax.annotation.Nonnull
import javax.inject.Inject
import javax.swing.JList
import javax.swing.JPanel
import javax.swing.ListSelectionModel
@ -23,6 +25,8 @@ class CertificateListView {
FactoryBuilderSupport builder
@MVCMember @Nonnull
CertificateListModel model
@Inject
GriffonApplication application
JPanel p
JList<ResultPOP> senders
@ -47,7 +51,7 @@ class CertificateListView {
}
void mvcGroupInit(Map<String,String> args) {
senders.setCellRenderer(new ResultListCellRenderer())
senders.setCellRenderer(new ResultListCellRenderer(application.context.get("ui-settings")))
def selectionModel = senders.getSelectionModel()
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
selectionModel.addListSelectionListener({

View File

@ -6,11 +6,13 @@ import com.muwire.gui.DateRenderer
import com.muwire.gui.HTMLSanitizer
import com.muwire.gui.PersonaCellRenderer
import com.muwire.gui.PersonaComparator
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
import javax.annotation.Nonnull
import javax.inject.Inject
import javax.swing.JPanel
import javax.swing.JTable
import javax.swing.ListSelectionModel
@ -24,6 +26,8 @@ class CertificateTabView {
FactoryBuilderSupport builder
@MVCMember @Nonnull
CertificateTabModel model
@Inject
GriffonApplication application
JPanel p
JTable certsTable
@ -68,7 +72,7 @@ class CertificateTabView {
}
void mvcGroupInit(Map<String,String> args) {
certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
certsTable.setDefaultRenderer(Long.class, new DateRenderer())
certsTable.rowSorter.setComparator(0, new PersonaComparator())
certsTable.rowSorter.setSortsOnUpdates(true)

View File

@ -2,11 +2,13 @@ package com.muwire.gui.resultdetails
import com.muwire.core.search.UIResultEvent
import com.muwire.gui.profile.ResultPOP
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
import javax.annotation.Nonnull
import javax.inject.Inject
import javax.swing.JList
import javax.swing.JPanel
import javax.swing.ListSelectionModel
@ -21,6 +23,8 @@ class CollectionListView {
FactoryBuilderSupport builder
@MVCMember @Nonnull
CollectionListModel model
@Inject
GriffonApplication application
JPanel p
JList<ResultPOP> senders
@ -45,7 +49,7 @@ class CollectionListView {
}
void mvcGroupInit(Map<String,String> args) {
senders.setCellRenderer(new ResultListCellRenderer())
senders.setCellRenderer(new ResultListCellRenderer(application.context.get("ui-settings")))
def selectionModel = senders.getSelectionModel()
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
selectionModel.addListSelectionListener({

View File

@ -7,11 +7,13 @@ import com.muwire.gui.HTMLSanitizer
import com.muwire.gui.PersonaCellRenderer
import com.muwire.gui.PersonaComparator
import com.muwire.gui.SizeRenderer
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
import javax.annotation.Nonnull
import javax.inject.Inject
import javax.swing.JPanel
import javax.swing.JTable
import javax.swing.ListSelectionModel
@ -25,6 +27,8 @@ class MiniCollectionTabView {
FactoryBuilderSupport builder
@MVCMember @Nonnull
MiniCollectionTabModel model
@Inject
GriffonApplication application
JPanel p
JTable collectionsTable
@ -64,7 +68,7 @@ class MiniCollectionTabView {
}
void mvcGroupInit(Map<String,String> args) {
collectionsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
collectionsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer(application.context.get("ui-settings")))
collectionsTable.columnModel.getColumn(3).setCellRenderer(new SizeRenderer())
collectionsTable.columnModel.getColumn(5).setCellRenderer(new DateRenderer())
collectionsTable.rowSorter.setComparator(1, new PersonaComparator())

View File

@ -1,8 +1,5 @@
package com.muwire.gui.resultdetails
import com.muwire.core.Persona
import com.muwire.gui.PersonaCellRenderer
import com.muwire.gui.PersonaComparator
import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.PersonaOrProfileCellRenderer
import com.muwire.gui.profile.PersonaOrProfileComparator
@ -12,7 +9,6 @@ import net.i2p.data.Destination
import javax.inject.Inject
import javax.swing.JPanel
import javax.swing.JTable
import javax.swing.border.Border
import java.awt.BorderLayout
import java.awt.Dimension
import java.awt.event.WindowAdapter

View File

@ -1,10 +1,7 @@
package com.muwire.gui.resultdetails
import com.muwire.core.Persona
import com.muwire.core.search.UIResultEvent
import com.muwire.gui.HTMLSanitizer
import com.muwire.gui.PersonaCellRenderer
import com.muwire.gui.PersonaComparator
import com.muwire.gui.profile.PersonaOrProfile
import com.muwire.gui.profile.PersonaOrProfileCellRenderer
import com.muwire.gui.profile.PersonaOrProfileComparator
@ -209,7 +206,7 @@ class ResultDetailsTabsView {
// comments tab
if (!model.resultsWithComments.isEmpty())
commentsPanel.getLayout().show(commentsPanel, "yes-comments")
commentsList.setCellRenderer(new ResultListCellRenderer())
commentsList.setCellRenderer(new ResultListCellRenderer(application.context.get("ui-settings")))
selectionModel = commentsList.getSelectionModel()
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
selectionModel.addListSelectionListener({

View File

@ -7,6 +7,12 @@ import javax.swing.table.DefaultTableCellRenderer
import java.awt.Component
class PersonaCellRenderer extends DefaultTableCellRenderer {
private final UISettings settings
PersonaCellRenderer(UISettings settings) {
this.settings = settings
}
@Override
Component getTableCellRendererComponent(JTable table, Object value,
@ -15,7 +21,11 @@ class PersonaCellRenderer extends DefaultTableCellRenderer {
if (value == null)
return this // TODO: investigate how this can possibly happen
Persona persona = (Persona) value
setText("<html>${htmlize(persona)}</html>")
if (settings.personaRendererIds)
setText("<html>${htmlize(persona)}</html>")
else
setText(justName(persona))
if (isSelected) {
setForeground(table.getSelectionForeground())
setBackground(table.getSelectionBackground())
@ -32,4 +42,9 @@ class PersonaCellRenderer extends DefaultTableCellRenderer {
String hashPart = persona.getHumanReadableName().substring(atIdx)
"$nickname<font color='gray'>$hashPart</font>"
}
static String justName(Persona persona) {
String full = persona.getHumanReadableName()
full.substring(0,full.indexOf("@"))
}
}

View File

@ -1,6 +1,7 @@
package com.muwire.gui.resultdetails
import com.muwire.gui.PersonaCellRenderer
import com.muwire.gui.UISettings
import com.muwire.gui.profile.ResultPOP
import static com.muwire.gui.Translator.trans
@ -10,12 +11,24 @@ import javax.swing.ListCellRenderer
import java.awt.Component
class ResultListCellRenderer implements ListCellRenderer<ResultPOP>{
private final UISettings settings
ResultListCellRenderer(UISettings settings) {
this.settings = settings
}
@Override
Component getListCellRendererComponent(JList<? extends ResultPOP> list,
ResultPOP value, int index,
boolean isSelected, boolean cellHasFocus) {
JLabel rv = new JLabel()
String text = "<html>" + PersonaCellRenderer.htmlize(value.getEvent().sender) + "</html>"
String text
if (settings.personaRendererIds)
text = "<html>" + PersonaCellRenderer.htmlize(value.getEvent().sender) + "</html>"
else
text = PersonaCellRenderer.justName(value.getEvent().sender)
rv.setText(text)
if (value.getThumbnail() != null)