mirror of https://github.com/zlatinb/muwire
color the cryptographic part of the persona nicknames gray
parent
4f81f91219
commit
bb415ad85f
|
@ -56,7 +56,7 @@ class CertificateControlView {
|
|||
scrollPane {
|
||||
usersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.users) {
|
||||
closureColumn(header : trans("ISSUER"), type : String, read : {it.getHumanReadableName()})
|
||||
closureColumn(header : trans("ISSUER"), type : Persona, read : {it})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -79,6 +79,8 @@ class CertificateControlView {
|
|||
}
|
||||
|
||||
void mvcGroupInit(Map<String,String> args) {
|
||||
usersTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
usersTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
usersTable.rowSorter.addRowSorterListener({evt -> lastUsersSortEvent = evt})
|
||||
def selectionModel = usersTable.getSelectionModel()
|
||||
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
|
|
|
@ -77,7 +77,7 @@ class ChatRoomView {
|
|||
scrollPane {
|
||||
membersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.members) {
|
||||
closureColumn(header : trans("NAME"), preferredWidth: 100, type: String, read : {it.getHumanReadableName()})
|
||||
closureColumn(header : trans("NAME"), preferredWidth: 100, type: Persona, read : {it})
|
||||
closureColumn(header : trans("TRUST_STATUS"), preferredWidth: 30, type : String, read : {trans(model.core.trustService.getLevel(it.destination).name())})
|
||||
}
|
||||
}
|
||||
|
@ -124,6 +124,8 @@ class ChatRoomView {
|
|||
|
||||
if (membersTable != null) {
|
||||
|
||||
membersTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
membersTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
membersTable.rowSorter.addRowSorterListener({evt -> lastMembersTableSortEvent = evt})
|
||||
membersTable.rowSorter.setSortsOnUpdates(true)
|
||||
membersTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
|
||||
import javax.swing.AbstractAction
|
||||
import javax.swing.Action
|
||||
import javax.swing.JComponent
|
||||
|
@ -76,7 +78,7 @@ class CollectionTabView {
|
|||
collectionsTable = table(id: "collections-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.collections) {
|
||||
closureColumn(header: trans("NAME"), preferredWidth: 200, type : String, read : {HTMLSanitizer.sanitize(it.name)})
|
||||
closureColumn(header: trans("AUTHOR"), preferredWidth: 200, type : String, read : {it.author.getHumanReadableName()})
|
||||
closureColumn(header: trans("AUTHOR"), preferredWidth: 200, type : Persona, read : {it.author})
|
||||
closureColumn(header: trans("COLLECTION_TOTAL_FILES"), preferredWidth: 20, type: Integer, read : {it.numFiles()})
|
||||
closureColumn(header: trans("COLLECTION_TOTAL_SIZE"), preferredWidth: 20, type: Long, read : {it.totalSize()})
|
||||
closureColumn(header: trans("COMMENT"), preferredWidth: 20, type: Boolean, read: {it.comment != ""})
|
||||
|
@ -224,10 +226,12 @@ class CollectionTabView {
|
|||
def centerRenderer = new DefaultTableCellRenderer()
|
||||
centerRenderer.setHorizontalAlignment(JLabel.CENTER)
|
||||
collectionsTable.setDefaultRenderer(Integer.class, centerRenderer)
|
||||
collectionsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
|
||||
collectionsTable.columnModel.getColumn(3).setCellRenderer(new SizeRenderer())
|
||||
collectionsTable.columnModel.getColumn(5).setCellRenderer(new DateRenderer())
|
||||
|
||||
collectionsTable.rowSorter.setComparator(1, new PersonaComparator())
|
||||
collectionsTable.rowSorter.addRowSorterListener({evt -> lastCollectionsTableSortEvent = evt})
|
||||
collectionsTable.rowSorter.setSortsOnUpdates(true)
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
|
||||
import static com.muwire.gui.Translator.trans
|
||||
|
||||
import java.awt.BorderLayout
|
||||
|
@ -56,7 +58,7 @@ class CollectionsToolView {
|
|||
scrollPane(constraints : BorderLayout.CENTER) {
|
||||
hitsTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.hits) {
|
||||
closureColumn(header : trans("SEARCHER"), preferredWidth : 100, type : String, read : {it.searcher.getHumanReadableName()})
|
||||
closureColumn(header : trans("SEARCHER"), preferredWidth : 100, type : Persona, read : {it.searcher})
|
||||
closureColumn(header : trans("TIMESTAMP"), preferredWidth : 100, type : Long, read : {it.timestamp})
|
||||
}
|
||||
}
|
||||
|
@ -70,6 +72,8 @@ class CollectionsToolView {
|
|||
void mvcGroupInit(Map<String,String> args) {
|
||||
// hits table
|
||||
hitsTable.setDefaultRenderer(Long.class, new DateRenderer())
|
||||
hitsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
hitsTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
|
||||
dialog.getContentPane().add(mainPanel)
|
||||
dialog.pack()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import griffon.core.artifact.GriffonView
|
||||
import static com.muwire.gui.Translator.trans
|
||||
import griffon.inject.MVCMember
|
||||
|
@ -71,7 +72,7 @@ class ContentPanelView {
|
|||
scrollPane(constraints : BorderLayout.CENTER) {
|
||||
hitsTable = table(id : "hits-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.hits) {
|
||||
closureColumn(header : trans("SEARCHER"), type : String, read : {row -> row.persona.getHumanReadableName()})
|
||||
closureColumn(header : trans("SEARCHER"), type : Persona, read : { row -> row.persona})
|
||||
closureColumn(header : trans("KEYWORDS"), type : String, read : {row -> HTMLSanitizer.sanitize(row.keywords.join(" "))})
|
||||
closureColumn(header : trans("DATE"), type : String, read : {row -> String.valueOf(new Date(row.timestamp))})
|
||||
}
|
||||
|
@ -128,7 +129,9 @@ class ContentPanelView {
|
|||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
hitsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
hitsTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
hitsTable.rowSorter.addRowSorterListener({evt -> lastHitsSortEvent = evt})
|
||||
hitsTable.rowSorter.setSortsOnUpdates(true)
|
||||
selectionModel = hitsTable.getSelectionModel()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import griffon.core.artifact.GriffonView
|
||||
import static com.muwire.gui.Translator.trans
|
||||
import griffon.inject.MVCMember
|
||||
|
@ -52,7 +53,7 @@ class FetchCertificatesView {
|
|||
scrollPane(constraints : BorderLayout.CENTER) {
|
||||
certsTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.certificates) {
|
||||
closureColumn(header : trans("ISSUER"), preferredWidth : 200, type : String, read : {it.issuer.getHumanReadableName()})
|
||||
closureColumn(header : trans("ISSUER"), preferredWidth : 200, type : Persona, read : {it.issuer})
|
||||
closureColumn(header : trans("TRUST_STATUS"), preferredWidth: 50, type : String, read : {trans(controller.core.trustService.getLevel(it.issuer.destination).name())})
|
||||
closureColumn(header : trans("NAME"), preferredWidth : 200, type: String, read : {HTMLSanitizer.sanitize(it.name.name.toString())})
|
||||
closureColumn(header : trans("ISSUED"), preferredWidth : 100, type : String, read : {
|
||||
|
@ -70,6 +71,8 @@ class FetchCertificatesView {
|
|||
}
|
||||
}
|
||||
|
||||
certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
certsTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
certsTable.rowSorter.addRowSorterListener({evt -> lastSortEvent = evt})
|
||||
certsTable.rowSorter.setSortsOnUpdates(true)
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import com.muwire.core.messenger.MWMessage
|
||||
import com.muwire.core.messenger.Messenger
|
||||
import com.muwire.core.messenger.UIMessageMovedEvent
|
||||
|
@ -435,8 +436,8 @@ class MainFrameView {
|
|||
int percent = row.uploader.getProgress()
|
||||
trans("PERCENT_OF_PIECE", percent)
|
||||
})
|
||||
closureColumn(header : trans("DOWNLOADER"), type : String, read : { row ->
|
||||
row.uploader.getDownloader()
|
||||
closureColumn(header : trans("DOWNLOADER"), type : Persona, read : { row ->
|
||||
row.uploader.getDownloaderPersona()
|
||||
})
|
||||
closureColumn(header : trans("REMOTE_PIECES"), type : String, read : { row ->
|
||||
int pieces = row.uploader.getTotalPieces()
|
||||
|
@ -478,7 +479,7 @@ class MainFrameView {
|
|||
dragEnabled : true, transferHandler : collectionsTransferHandler) {
|
||||
tableModel(list : model.localCollections) {
|
||||
closureColumn(header : trans("NAME"), preferredWidth : 100, type : String, read : {HTMLSanitizer.sanitize(it.name)})
|
||||
closureColumn(header : trans("AUTHOR"), preferredWidth : 100, type : String, read : {it.author.getHumanReadableName()})
|
||||
closureColumn(header : trans("AUTHOR"), preferredWidth : 100, type : Persona, read : {it.author})
|
||||
closureColumn(header : trans("FILES"), preferredWidth: 10, type : Integer, read : {it.numFiles()})
|
||||
closureColumn(header : trans("SIZE"), preferredWidth : 10, type : Long, read : {it.totalSize()})
|
||||
closureColumn(header : trans("COMMENT"), preferredWidth : 10, type : Boolean, read : {it.comment != ""})
|
||||
|
@ -556,12 +557,8 @@ class MainFrameView {
|
|||
closureColumn(header : trans("KEYWORDS"), type : String, read : {
|
||||
HTMLSanitizer.sanitize(it.search)
|
||||
})
|
||||
closureColumn(header : trans("FROM"), type : String, read : {
|
||||
if (it.originator != null) {
|
||||
return it.originator.getHumanReadableName()
|
||||
} else {
|
||||
return it.replyTo.toBase32()
|
||||
}
|
||||
closureColumn(header : trans("FROM"), type : Persona, read : {
|
||||
it.originator
|
||||
})
|
||||
closureColumn(header : trans("COUNT"), type : String, read : {
|
||||
it.count.toString()
|
||||
|
@ -586,7 +583,7 @@ class MainFrameView {
|
|||
scrollPane(constraints : BorderLayout.CENTER) {
|
||||
table(id : "feeds-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.feeds) {
|
||||
closureColumn(header : trans("PUBLISHER"), preferredWidth: 350, type : String, read : {it.getPublisher().getHumanReadableName()})
|
||||
closureColumn(header : trans("PUBLISHER"), preferredWidth: 350, type : Persona, read : {it.getPublisher()})
|
||||
closureColumn(header : trans("FILES"), preferredWidth: 10, type : Integer, read : {model.core.feedManager.getFeedItems(it.getPublisher()).size()})
|
||||
closureColumn(header : trans("LAST_UPDATED"), type : Long, read : {it.getLastUpdated()})
|
||||
closureColumn(header : trans("STATUS"), preferredWidth: 10, type : String, read : {trans(it.getStatus().name())})
|
||||
|
@ -651,7 +648,7 @@ class MainFrameView {
|
|||
table(id: "contacts-table", autoCreateRowSorter: true, rowHeight: rowHeight,
|
||||
dragEnabled: true, transferHandler: new PersonaTransferHandler()) {
|
||||
tableModel(list: model.contacts) {
|
||||
closureColumn(header: trans("CONTACTS"), preferredWidth: 250, type: String, read: { it.persona.getHumanReadableName() })
|
||||
closureColumn(header: trans("CONTACTS"), preferredWidth: 250, type: Persona, read: { it.persona })
|
||||
closureColumn(header: trans("REASON"), preferredWidth: 450, type: String, read: { it.reason })
|
||||
closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 60, type: String, read: { row ->
|
||||
trans(model.core.trustService.getLevel(row.persona.destination).name())
|
||||
|
@ -691,7 +688,7 @@ class MainFrameView {
|
|||
scrollPane(constraints : BorderLayout.CENTER) {
|
||||
table(id : "subscription-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.subscriptions) {
|
||||
closureColumn(header : trans("NAME"), preferredWidth: 200, type: String, read : {it.persona.getHumanReadableName()})
|
||||
closureColumn(header : trans("NAME"), preferredWidth: 200, type: Persona, read : {it.persona})
|
||||
closureColumn(header : trans("TRUSTED"), preferredWidth : 20, type: Integer, read : {it.good.size()})
|
||||
closureColumn(header : trans("DISTRUSTED"), preferredWidth: 20, type: Integer, read : {it.bad.size()})
|
||||
closureColumn(header : trans("STATUS"), preferredWidth: 30, type: String, read : {trans(it.status.name())})
|
||||
|
@ -1065,10 +1062,14 @@ class MainFrameView {
|
|||
|
||||
|
||||
// collections table
|
||||
def personaRenderer = new PersonaCellRenderer()
|
||||
def personaComparator = new PersonaComparator()
|
||||
collectionsTable.setDefaultRenderer(Integer.class, centerRenderer)
|
||||
collectionsTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
collectionsTable.columnModel.getColumn(3).setCellRenderer(new SizeRenderer())
|
||||
collectionsTable.columnModel.getColumn(6).setCellRenderer(new DateRenderer())
|
||||
|
||||
collectionsTable.rowSorter.setComparator(1, personaComparator)
|
||||
collectionsTable.rowSorter.addRowSorterListener({ evt -> lastCollectionSortEvent = evt })
|
||||
|
||||
selectionModel = collectionsTable.getSelectionModel()
|
||||
|
@ -1135,8 +1136,10 @@ class MainFrameView {
|
|||
})
|
||||
|
||||
// uploadsTable
|
||||
def uploadsTable = builder.getVariable("uploads-table")
|
||||
JTable uploadsTable = builder.getVariable("uploads-table")
|
||||
|
||||
uploadsTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
uploadsTable.rowSorter.setComparator(2, personaComparator)
|
||||
uploadsTable.rowSorter.addRowSorterListener({ evt -> lastUploadsSortEvent = evt })
|
||||
uploadsTable.rowSorter.setSortsOnUpdates(true)
|
||||
|
||||
|
@ -1155,7 +1158,8 @@ class MainFrameView {
|
|||
})
|
||||
|
||||
// searches table
|
||||
def searchesTable = builder.getVariable("searches-table")
|
||||
JTable searchesTable = builder.getVariable("searches-table")
|
||||
searchesTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
JPopupMenu searchTableMenu = new JPopupMenu()
|
||||
|
||||
JMenuItem copySearchToClipboard = new JMenuItem(trans("COPY_SEARCH_TO_CLIPBOARD"))
|
||||
|
@ -1184,9 +1188,11 @@ class MainFrameView {
|
|||
})
|
||||
|
||||
// feeds table
|
||||
def feedsTable = builder.getVariable("feeds-table")
|
||||
JTable feedsTable = builder.getVariable("feeds-table")
|
||||
feedsTable.rowSorter.addRowSorterListener({ evt -> lastFeedsSortEvent = evt })
|
||||
feedsTable.rowSorter.setSortsOnUpdates(true)
|
||||
feedsTable.rowSorter.setComparator(0, personaComparator)
|
||||
feedsTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
feedsTable.setDefaultRenderer(Integer.class, centerRenderer)
|
||||
feedsTable.setDefaultRenderer(Long.class, new DateRenderer())
|
||||
selectionModel = feedsTable.getSelectionModel()
|
||||
|
@ -1277,10 +1283,12 @@ class MainFrameView {
|
|||
})
|
||||
|
||||
// subscription table
|
||||
def subscriptionTable = builder.getVariable("subscription-table")
|
||||
JTable subscriptionTable = builder.getVariable("subscription-table")
|
||||
subscriptionTable.setDefaultRenderer(Integer.class, centerRenderer)
|
||||
subscriptionTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
subscriptionTable.rowSorter.addRowSorterListener({ evt -> lastContactsSubscriptionSortEvent = evt })
|
||||
subscriptionTable.rowSorter.setSortsOnUpdates(true)
|
||||
subscriptionTable.rowSorter.setComparator(0, personaComparator)
|
||||
selectionModel = subscriptionTable.getSelectionModel()
|
||||
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
selectionModel.addListSelectionListener({
|
||||
|
@ -1313,7 +1321,9 @@ class MainFrameView {
|
|||
subscriptionTable.setDefaultRenderer(Long.class, new DateRenderer())
|
||||
|
||||
// contacts table
|
||||
def contactsTable = builder.getVariable("contacts-table")
|
||||
JTable contactsTable = builder.getVariable("contacts-table")
|
||||
contactsTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
contactsTable.rowSorter.setComparator(0, personaComparator)
|
||||
contactsTable.rowSorter.addRowSorterListener({ evt -> lastContactsSortEvent = evt })
|
||||
contactsTable.rowSorter.setSortsOnUpdates(true)
|
||||
selectionModel = contactsTable.getSelectionModel()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import com.muwire.core.collections.FileCollection
|
||||
import com.muwire.core.messenger.MWMessage
|
||||
import com.muwire.core.messenger.MWMessageAttachment
|
||||
|
@ -59,7 +60,7 @@ class MessageFolderView {
|
|||
dragEnabled: true, transferHandler: new MessageExportTransferHandler()) {
|
||||
if (!model.outgoing) {
|
||||
tableModel(list: model.messageHeaders) {
|
||||
closureColumn(header: trans("SENDER"), preferredWidth: 200, type: String, read: { it.message.sender.getHumanReadableName() })
|
||||
closureColumn(header: trans("SENDER"), preferredWidth: 200, type: Persona, read: { it.message.sender })
|
||||
closureColumn(header: trans("SUBJECT"), preferredWidth: 300, type: String, read: { HTMLSanitizer.sanitize(it.message.subject) })
|
||||
closureColumn(header: trans("RECIPIENTS"), preferredWidth: 20, type: Integer, read: { it.message.recipients.size() })
|
||||
closureColumn(header: trans("DATE"), preferredWidth: 50, type: Long, read: { it.message.timestamp })
|
||||
|
@ -68,7 +69,14 @@ class MessageFolderView {
|
|||
} else {
|
||||
tableModel(list : model.messageHeaders) {
|
||||
closureColumn(header: trans("RECIPIENTS"), preferredWidth: 400, type: String, read : {
|
||||
it.message.recipients.stream().map({it.getHumanReadableName()}).collect(Collectors.joining(","))
|
||||
StringBuilder sb = new StringBuilder()
|
||||
sb.append("<html>")
|
||||
String collected = it.message.recipients.stream().
|
||||
map(PersonaCellRenderer::htmlize).
|
||||
collect(Collectors.joining(","))
|
||||
sb.append(collected)
|
||||
sb.append("</html>")
|
||||
return sb.toString()
|
||||
})
|
||||
closureColumn(header: trans("SUBJECT"), preferredWidth: 300, type: String, read: { it.message.subject })
|
||||
closureColumn(header: trans("DATE"), preferredWidth: 50, type: Long, read: { it.message.timestamp })
|
||||
|
@ -182,9 +190,12 @@ class MessageFolderView {
|
|||
void mvcGroupInit(Map<String, String> args) {
|
||||
def centerRenderer = new DefaultTableCellRenderer()
|
||||
centerRenderer.setHorizontalAlignment(JLabel.CENTER)
|
||||
|
||||
|
||||
messageHeaderTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
messageHeaderTable.setDefaultRenderer(Integer.class, centerRenderer)
|
||||
messageHeaderTable.setDefaultRenderer(Long.class, new DateRenderer())
|
||||
if (!model.outgoing)
|
||||
messageHeaderTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
messageHeaderTable.rowSorter.addRowSorterListener({evt -> lastMessageHeaderTableSortEvent = evt})
|
||||
messageHeaderTable.rowSorter.setSortsOnUpdates(true)
|
||||
def sortKey = new RowSorter.SortKey(model.outgoing ? 2 : 3, SortOrder.ASCENDING)
|
||||
|
|
|
@ -270,7 +270,7 @@ class NewMessageView {
|
|||
}
|
||||
|
||||
public String toString() {
|
||||
persona.getHumanReadableName()
|
||||
"<html>" + PersonaCellRenderer.htmlize(persona) + "</html>"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -95,7 +95,7 @@ class SearchTabView {
|
|||
scrollPane (constraints : BorderLayout.CENTER) {
|
||||
sendersTable = table(id : "senders-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.senders) {
|
||||
closureColumn(header : trans("SENDER"), preferredWidth : 500, type: String, read : { SenderBucket row -> row.sender.getHumanReadableName()})
|
||||
closureColumn(header : trans("SENDER"), preferredWidth : 500, type: Persona, read : { SenderBucket row -> row.sender})
|
||||
closureColumn(header : trans("RESULTS"), preferredWidth : 20, type: Integer, read : {SenderBucket row -> row.results.size()})
|
||||
closureColumn(header : trans("BROWSE"), preferredWidth : 20, type: Boolean, read : {SenderBucket row -> row.results[0].browse})
|
||||
closureColumn(header : trans("COLLECTIONS"), preferredWidth : 20, type: Boolean, read : {SenderBucket row -> row.results[0].browseCollections})
|
||||
|
@ -394,8 +394,12 @@ class SearchTabView {
|
|||
})
|
||||
|
||||
// senders table
|
||||
def personaRenderer = new PersonaCellRenderer()
|
||||
def personaComparator = new PersonaComparator()
|
||||
sendersTable.addMouseListener(sendersMouseListener)
|
||||
sendersTable.setDefaultRenderer(Integer.class, centerRenderer)
|
||||
sendersTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
sendersTable.rowSorter.setComparator(0, personaComparator)
|
||||
sendersTable.rowSorter.addRowSorterListener({evt -> lastSendersSortEvent = evt})
|
||||
sendersTable.rowSorter.setSortsOnUpdates(true)
|
||||
selectionModel = sendersTable.getSelectionModel()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import griffon.core.artifact.GriffonView
|
||||
import static com.muwire.gui.Translator.trans
|
||||
import griffon.inject.MVCMember
|
||||
|
@ -52,7 +53,7 @@ class SharedFileView {
|
|||
scrollPane(constraints : BorderLayout.CENTER) {
|
||||
searchersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.searchers) {
|
||||
closureColumn(header : trans("SEARCHER"), type : String, read : {it.searcher?.getHumanReadableName()})
|
||||
closureColumn(header : trans("SEARCHER"), type : Persona, read : {it.searcher})
|
||||
closureColumn(header : trans("QUERY"), type : String, read : {HTMLSanitizer.sanitize(it.query)})
|
||||
closureColumn(header : trans("TIMESTAMP"), type : Long, read : {it.timestamp})
|
||||
}
|
||||
|
@ -76,7 +77,7 @@ class SharedFileView {
|
|||
scrollPane(constraints : BorderLayout.CENTER) {
|
||||
certificatesTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.certificates) {
|
||||
closureColumn(header : trans("ISSUER"), type:String, read : {it.issuer.getHumanReadableName()})
|
||||
closureColumn(header : trans("ISSUER"), type: Persona, read : {it.issuer})
|
||||
closureColumn(header : trans("FILE_NAME"), type : String, read : {HTMLSanitizer.sanitize(it.name.name)})
|
||||
closureColumn(header : trans("COMMENT"), type : Boolean, read : {it.comment != null})
|
||||
closureColumn(header : trans("TIMESTAMP"), type : Long, read : {it.timestamp})
|
||||
|
@ -90,7 +91,12 @@ class SharedFileView {
|
|||
}
|
||||
|
||||
void mvcGroupInit(Map<String,String> args) {
|
||||
|
||||
def personaRenderer = new PersonaCellRenderer()
|
||||
def personaComparator = new PersonaComparator()
|
||||
|
||||
certificatesTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
certificatesTable.rowSorter.setComparator(0, personaComparator)
|
||||
certificatesTable.rowSorter.addRowSorterListener({evt -> lastCertificateSortEvent = evt})
|
||||
def selectionModel = certificatesTable.getSelectionModel()
|
||||
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
|
@ -113,6 +119,8 @@ class SharedFileView {
|
|||
certificatesTable.setDefaultRenderer(Long.class, new DateRenderer())
|
||||
|
||||
|
||||
searchersTable.rowSorter.setComparator(0, personaComparator)
|
||||
searchersTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
searchersTable.setDefaultRenderer(Long.class, new DateRenderer())
|
||||
|
||||
def tabbedPane = new JTabbedPane()
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import griffon.core.artifact.GriffonView
|
||||
import griffon.inject.MVCMember
|
||||
import griffon.metadata.ArtifactProviderFor
|
||||
|
||||
import javax.swing.JTable
|
||||
|
||||
import static com.muwire.gui.Translator.trans
|
||||
import javax.swing.JDialog
|
||||
import javax.swing.ListSelectionModel
|
||||
|
@ -49,7 +53,7 @@ class TrustListView {
|
|||
scrollPane (constraints : BorderLayout.CENTER){
|
||||
table(id : "trusted-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.trusted) {
|
||||
closureColumn(header: trans("TRUSTED_USERS"), type : String, read : {it.persona.getHumanReadableName()})
|
||||
closureColumn(header: trans("TRUSTED_USERS"), type : Persona, read : {it.persona})
|
||||
closureColumn(header: trans("REASON"), type : String, read : {HTMLSanitizer.sanitize(it.reason)})
|
||||
closureColumn(header: trans("YOUR_TRUST"), type : String, read : {trans(model.trustService.getLevel(it.persona.destination).name())})
|
||||
}
|
||||
|
@ -66,7 +70,7 @@ class TrustListView {
|
|||
scrollPane (constraints : BorderLayout.CENTER ){
|
||||
table(id : "distrusted-table", autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list : model.distrusted) {
|
||||
closureColumn(header: trans("DISTRUSTED_USERS"), type : String, read : {it.persona.getHumanReadableName()})
|
||||
closureColumn(header: trans("DISTRUSTED_USERS"), type : Persona, read : {it.persona})
|
||||
closureColumn(header: trans("REASON"), type:String, read : {HTMLSanitizer.sanitize(it.reason)})
|
||||
closureColumn(header: trans("YOUR_TRUST"), type : String, read : {trans(model.trustService.getLevel(it.persona.destination).name())})
|
||||
}
|
||||
|
@ -83,13 +87,20 @@ class TrustListView {
|
|||
}
|
||||
|
||||
void mvcGroupInit(Map<String,String> args) {
|
||||
|
||||
def personaRenderer = new PersonaCellRenderer()
|
||||
def personaComparator = new PersonaComparator()
|
||||
|
||||
def trustedTable = builder.getVariable("trusted-table")
|
||||
JTable trustedTable = builder.getVariable("trusted-table")
|
||||
trustedTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
trustedTable.rowSorter.setComparator(0, personaComparator)
|
||||
trustedTable.rowSorter.addRowSorterListener({evt -> sortEvents["trusted-table"] = evt})
|
||||
trustedTable.rowSorter.setSortsOnUpdates(true)
|
||||
trustedTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
|
||||
def distrustedTable = builder.getVariable("distrusted-table")
|
||||
JTable distrustedTable = builder.getVariable("distrusted-table")
|
||||
distrustedTable.setDefaultRenderer(Persona.class, personaRenderer)
|
||||
distrustedTable.rowSorter.setComparator(0, personaComparator)
|
||||
distrustedTable.rowSorter.addRowSorterListener({evt -> sortEvents["distrusted-table"] = evt})
|
||||
distrustedTable.rowSorter.setSortsOnUpdates(true)
|
||||
distrustedTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package com.muwire.gui.chat
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import com.muwire.gui.PersonaCellRenderer
|
||||
import com.muwire.gui.PersonaComparator
|
||||
import griffon.core.artifact.GriffonView
|
||||
import griffon.inject.MVCMember
|
||||
import griffon.metadata.ArtifactProviderFor
|
||||
|
@ -42,8 +45,8 @@ class ChatFavoritesView {
|
|||
scrollPane(constraints : BorderLayout.CENTER) {
|
||||
favoritesTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list: model.chatFavorites.favorites) {
|
||||
closureColumn(header: trans("SERVER"), type: String,
|
||||
read : {ChatFavorite cf -> cf.address.getHumanReadableName()})
|
||||
closureColumn(header: trans("SERVER"), type: Persona,
|
||||
read : {ChatFavorite cf -> cf.address})
|
||||
closureColumn(header: trans("CHAT_SERVERS_STARTUP_CONNECT"), preferredWidth: 50,
|
||||
type: Boolean,
|
||||
read : {ChatFavorite cf -> cf.autoConnect},
|
||||
|
@ -83,6 +86,8 @@ class ChatFavoritesView {
|
|||
|
||||
void mvcGroupInit(Map<String, String> args) {
|
||||
|
||||
favoritesTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
favoritesTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
favoritesTable.selectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
|
||||
window.addWindowListener( new WindowAdapter() {
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package com.muwire.gui.resultdetails
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import com.muwire.core.filecert.Certificate
|
||||
import com.muwire.gui.DateRenderer
|
||||
import com.muwire.gui.HTMLSanitizer
|
||||
import com.muwire.gui.PersonaCellRenderer
|
||||
import com.muwire.gui.PersonaComparator
|
||||
import griffon.core.artifact.GriffonView
|
||||
import griffon.inject.MVCMember
|
||||
import griffon.metadata.ArtifactProviderFor
|
||||
|
@ -43,8 +46,8 @@ class CertificateTabView {
|
|||
scrollPane(constraints: BorderLayout.CENTER) {
|
||||
certsTable = table(autoCreateRowSorter: true, rowHeight: rowHeight) {
|
||||
tableModel(list: model.certificates) {
|
||||
closureColumn(header: trans("ISSUER"), preferredWidth: 150, type:String,
|
||||
read:{it.issuer.getHumanReadableName()})
|
||||
closureColumn(header: trans("ISSUER"), preferredWidth: 150, type: Persona,
|
||||
read:{it.issuer})
|
||||
closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 30, type:String,
|
||||
read:{trans(model.core.trustService.getLevel(it.issuer.destination).name())})
|
||||
closureColumn(header: trans("NAME"), preferredWidth: 450,
|
||||
|
@ -65,7 +68,9 @@ class CertificateTabView {
|
|||
}
|
||||
|
||||
void mvcGroupInit(Map<String,String> args) {
|
||||
certsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
certsTable.setDefaultRenderer(Long.class, new DateRenderer())
|
||||
certsTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
certsTable.rowSorter.setSortsOnUpdates(true)
|
||||
|
||||
def selectionModel = certsTable.getSelectionModel()
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package com.muwire.gui.resultdetails
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import com.muwire.core.collections.FileCollection
|
||||
import com.muwire.gui.DateRenderer
|
||||
import com.muwire.gui.HTMLSanitizer
|
||||
import com.muwire.gui.PersonaCellRenderer
|
||||
import com.muwire.gui.PersonaComparator
|
||||
import com.muwire.gui.SizeRenderer
|
||||
import griffon.core.artifact.GriffonView
|
||||
import griffon.inject.MVCMember
|
||||
|
@ -44,7 +47,7 @@ class MiniCollectionTabView {
|
|||
collectionsTable = table(autoCreateRowSorter: true, rowHeight: rowHeight) {
|
||||
tableModel(list : model.collections) {
|
||||
closureColumn(header: trans("NAME"), preferredWidth: 300, type : String, read : { HTMLSanitizer.sanitize(it.name)})
|
||||
closureColumn(header: trans("AUTHOR"), preferredWidth: 200, type : String, read : {it.author.getHumanReadableName()})
|
||||
closureColumn(header: trans("AUTHOR"), preferredWidth: 200, type : Persona, read : {it.author})
|
||||
closureColumn(header: trans("COLLECTION_TOTAL_FILES"), preferredWidth: 20, type: Integer, read : {it.numFiles()})
|
||||
closureColumn(header: trans("COLLECTION_TOTAL_SIZE"), preferredWidth: 20, type: Long, read : {it.totalSize()})
|
||||
closureColumn(header: trans("COMMENT"), preferredWidth: 20, type: Boolean, read: {it.comment != ""})
|
||||
|
@ -61,8 +64,10 @@ class MiniCollectionTabView {
|
|||
}
|
||||
|
||||
void mvcGroupInit(Map<String,String> args) {
|
||||
collectionsTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
collectionsTable.columnModel.getColumn(3).setCellRenderer(new SizeRenderer())
|
||||
collectionsTable.columnModel.getColumn(5).setCellRenderer(new DateRenderer())
|
||||
collectionsTable.rowSorter.setComparator(1, new PersonaComparator())
|
||||
collectionsTable.rowSorter.setSortsOnUpdates(true)
|
||||
def selectionModel = collectionsTable.getSelectionModel()
|
||||
selectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
package com.muwire.gui.resultdetails
|
||||
|
||||
import com.muwire.core.Persona
|
||||
import com.muwire.gui.PersonaCellRenderer
|
||||
import com.muwire.gui.PersonaComparator
|
||||
import griffon.core.GriffonApplication
|
||||
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
|
||||
|
@ -81,9 +85,9 @@ class ResultDetailsFrameView {
|
|||
constraints: gbc(gridx: 0, gridy: gridy++, fill: GridBagConstraints.BOTH, weightx: 100, weighty: 100)) {
|
||||
gridLayout(rows: 1, cols: 1)
|
||||
scrollPane {
|
||||
table(autoCreateRowSorter: true, rowHeight: rowHeight) {
|
||||
table(id: "senders-table", autoCreateRowSorter: true, rowHeight: rowHeight) {
|
||||
tableModel(list: model.senders.toList()) {
|
||||
closureColumn(header: trans("SENDER"), read: { it.getHumanReadableName() })
|
||||
closureColumn(header: trans("SENDER"), type: Persona, read: { it })
|
||||
closureColumn(header: trans("TRUST_NOUN"), read: {
|
||||
Destination destination = it.destination
|
||||
trans(model.core.trustService.getLevel(destination).name())
|
||||
|
@ -117,6 +121,11 @@ class ResultDetailsFrameView {
|
|||
}
|
||||
|
||||
void mvcGroupInit(Map<String, String> args) {
|
||||
if (model.senders.size() > 1) {
|
||||
JTable sendersTable = builder.getVariable("senders-table")
|
||||
sendersTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
sendersTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
}
|
||||
if (certificatesPanel != null) {
|
||||
String mvcId = mvcGroup.mvcId + "_certificates"
|
||||
def params = [:]
|
||||
|
|
|
@ -3,6 +3,8 @@ 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.resultdetails.ResultListCellRenderer
|
||||
import griffon.core.artifact.GriffonView
|
||||
import griffon.core.mvc.MVCGroup
|
||||
|
@ -61,7 +63,7 @@ class ResultDetailsTabsView {
|
|||
scrollPane(constraints: BorderLayout.CENTER) {
|
||||
sendersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) {
|
||||
tableModel(list: model.results) {
|
||||
closureColumn(header: trans("SENDER"), preferredWidth: 150, type: String, read : {it.sender.getHumanReadableName()})
|
||||
closureColumn(header: trans("SENDER"), preferredWidth: 150, type: Persona, read : {it.sender})
|
||||
closureColumn(header: trans("TRUST_STATUS"), preferredWidth: 30, type:String, read : {
|
||||
trans(model.core.trustService.getLevel(it.sender.destination).name())
|
||||
})
|
||||
|
@ -166,6 +168,8 @@ class ResultDetailsTabsView {
|
|||
void mvcGroupInit(Map<String,String> args) {
|
||||
|
||||
// all senders table
|
||||
sendersTable.setDefaultRenderer(Persona.class, new PersonaCellRenderer())
|
||||
sendersTable.rowSorter.setComparator(0, new PersonaComparator())
|
||||
def selectionModel = sendersTable.getSelectionModel()
|
||||
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
|
||||
selectionModel.addListSelectionListener({
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
|
||||
import javax.swing.JTable
|
||||
import javax.swing.table.DefaultTableCellRenderer
|
||||
import java.awt.Component
|
||||
|
||||
class PersonaCellRenderer extends DefaultTableCellRenderer {
|
||||
|
||||
@Override
|
||||
Component getTableCellRendererComponent(JTable table, Object value,
|
||||
boolean isSelected, boolean hasFocus, int row, int column) {
|
||||
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column)
|
||||
Persona persona = (Persona) value
|
||||
setText("<html>${htmlize(persona)}</html>")
|
||||
if (isSelected) {
|
||||
setForeground(table.getSelectionForeground())
|
||||
setBackground(table.getSelectionBackground())
|
||||
} else {
|
||||
setForeground(table.getForeground())
|
||||
setBackground(table.getBackground())
|
||||
}
|
||||
this
|
||||
}
|
||||
|
||||
static String htmlize(Persona persona) {
|
||||
int atIdx = persona.getHumanReadableName().indexOf("@")
|
||||
String nickname = persona.getHumanReadableName().substring(0, atIdx)
|
||||
String hashPart = persona.getHumanReadableName().substring(atIdx)
|
||||
"$nickname<font color='gray'>$hashPart</font>"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package com.muwire.gui
|
||||
|
||||
import com.muwire.core.Persona
|
||||
|
||||
class PersonaComparator implements Comparator<Persona>{
|
||||
@Override
|
||||
int compare(Persona a, Persona b) {
|
||||
return String.compare(a.getHumanReadableName(), b.getHumanReadableName())
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package com.muwire.gui.resultdetails
|
||||
|
||||
import com.muwire.core.search.UIResultEvent
|
||||
import com.muwire.gui.PersonaCellRenderer
|
||||
|
||||
import javax.swing.JLabel
|
||||
import javax.swing.JList
|
||||
|
@ -13,7 +14,8 @@ class ResultListCellRenderer implements ListCellRenderer<UIResultEvent>{
|
|||
UIResultEvent value, int index,
|
||||
boolean isSelected, boolean cellHasFocus) {
|
||||
JLabel rv = new JLabel()
|
||||
rv.setText(value.sender.getHumanReadableName())
|
||||
String text = "<html>" + PersonaCellRenderer.htmlize(value.sender) + "</html>"
|
||||
rv.setText(text)
|
||||
if (!isSelected) {
|
||||
rv.setForeground(list.getForeground())
|
||||
rv.setBackground(list.getSelectionBackground())
|
||||
|
|
Loading…
Reference in New Issue