From 800dd1cbbadccbe66aacb2b3a7d994936a41ff53 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Fri, 8 Nov 2019 08:17:34 +0000 Subject: [PATCH] proper date sorting --- .../muwire/gui/CertificateControlView.groovy | 7 ++--- .../com/muwire/gui/SharedFileView.groovy | 18 ++++++------ .../groovy/com/muwire/gui/DateRenderer.groovy | 29 +++++++++++++++++++ 3 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 gui/src/main/groovy/com/muwire/gui/DateRenderer.groovy diff --git a/gui/griffon-app/views/com/muwire/gui/CertificateControlView.groovy b/gui/griffon-app/views/com/muwire/gui/CertificateControlView.groovy index 6aeea5e0..86566dcd 100644 --- a/gui/griffon-app/views/com/muwire/gui/CertificateControlView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/CertificateControlView.groovy @@ -65,10 +65,7 @@ class CertificateControlView { closureColumn(header : "File Name", type : String, read : {it.name.name}) closureColumn(header : "Hash", type : String, read : {Base64.encode(it.infoHash.getRoot())}) closureColumn(header : "Comment", preferredWidth : 20, type : Boolean, read : {it.comment != null}) - closureColumn(header : "Timestamp", type : String, read : { - def date = new Date(it.timestamp) - date.toString() - }) + closureColumn(header : "Timestamp", type : Long, read : { it.timestamp }) } } } @@ -113,6 +110,8 @@ class CertificateControlView { } }) + certsTable.setDefaultRenderer(Long.class, new DateRenderer()) + dialog.getContentPane().add(panel) dialog.pack() dialog.setLocationRelativeTo(mainFrame) diff --git a/gui/griffon-app/views/com/muwire/gui/SharedFileView.groovy b/gui/griffon-app/views/com/muwire/gui/SharedFileView.groovy index 0739a29b..e74f9f77 100644 --- a/gui/griffon-app/views/com/muwire/gui/SharedFileView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/SharedFileView.groovy @@ -34,6 +34,7 @@ class SharedFileView { def dialog def panel def searchersPanel + def searchersTable def downloadersPanel def certificatesTable def certificatesPanel @@ -48,14 +49,11 @@ class SharedFileView { searchersPanel = builder.panel { borderLayout() scrollPane(constraints : BorderLayout.CENTER) { - table(autoCreateRowSorter : true, rowHeight : rowHeight) { + searchersTable = table(autoCreateRowSorter : true, rowHeight : rowHeight) { tableModel(list : model.searchers) { closureColumn(header : "Searcher", type : String, read : {it.searcher?.getHumanReadableName()}) closureColumn(header : "Query", type : String, read : {it.query}) - closureColumn(header : "Timestamp", type : String, read : { - Date d = new Date(it.timestamp) - d.toString() - }) + closureColumn(header : "Timestamp", type : Long, read : {it.timestamp}) } } } @@ -80,10 +78,7 @@ class SharedFileView { closureColumn(header : "Issuer", type:String, read : {it.issuer.getHumanReadableName()}) closureColumn(header : "File Name", type : String, read : {it.name.name}) closureColumn(header : "Comment", type : Boolean, read : {it.comment != null}) - closureColumn(header : "Timestamp", type : String, read : { - Date d = new Date(it.timestamp) - d.toString() - }) + closureColumn(header : "Timestamp", type : Long, read : {it.timestamp}) } } } @@ -114,6 +109,11 @@ class SharedFileView { } }) + certificatesTable.setDefaultRenderer(Long.class, new DateRenderer()) + + + searchersTable.setDefaultRenderer(Long.class, new DateRenderer()) + def tabbedPane = new JTabbedPane() tabbedPane.addTab("Search Hits", searchersPanel) tabbedPane.addTab("Downloaders", downloadersPanel) diff --git a/gui/src/main/groovy/com/muwire/gui/DateRenderer.groovy b/gui/src/main/groovy/com/muwire/gui/DateRenderer.groovy new file mode 100644 index 00000000..b4f5b557 --- /dev/null +++ b/gui/src/main/groovy/com/muwire/gui/DateRenderer.groovy @@ -0,0 +1,29 @@ +package com.muwire.gui + +import javax.swing.JComponent +import javax.swing.JLabel +import javax.swing.JTable +import javax.swing.table.DefaultTableCellRenderer + +import net.i2p.data.DataHelper + +class DateRenderer extends DefaultTableCellRenderer { + DateRenderer(){ + setHorizontalAlignment(JLabel.CENTER) + } + + JComponent getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + Long l = (Long) value + String formatted = DataHelper.formatTime(l) + setText(formatted) + if (isSelected) { + setForeground(table.getSelectionForeground()) + setBackground(table.getSelectionBackground()) + } else { + setForeground(table.getForeground()) + setBackground(table.getBackground()) + } + this + } +}