From 6b661b99c528d31d3fe276a553f73be97382cf75 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Fri, 14 Jun 2019 13:47:35 +0100 Subject: [PATCH] fix sorting by size in shared files table --- .../views/com/muwire/gui/MainFrameView.groovy | 7 +++-- .../views/com/muwire/gui/SearchTabView.groovy | 20 +------------ .../groovy/com/muwire/gui/SizeRenderer.groovy | 29 +++++++++++++++++++ 3 files changed, 35 insertions(+), 21 deletions(-) create mode 100644 gui/src/main/groovy/com/muwire/gui/SizeRenderer.groovy diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index f9ad3c58..208fc074 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -144,8 +144,7 @@ class MainFrameView { table(id : "shared-files-table", autoCreateRowSorter: true) { tableModel(list : model.shared) { closureColumn(header : "Name", preferredWidth : 550, type : String, read : {row -> row.file.getAbsolutePath()}) - closureColumn(header : "Size", preferredWidth : 50, type : String, - read : {row -> DataHelper.formatSize2Decimal(row.file.length(),false) + "B"}) + closureColumn(header : "Size", preferredWidth : 50, type : Long, read : {row -> row.file.length() }) } } } @@ -290,6 +289,10 @@ class MainFrameView { downloadsTable.setDefaultRenderer(Integer.class, centerRenderer) downloadsTable.rowSorter.addRowSorterListener({evt -> lastDownloadSortEvent = evt}) + + // shared files table + def sharedFilesTable = builder.getVariable("shared-files-table") + sharedFilesTable.columnModel.getColumn(1).setCellRenderer(new SizeRenderer()) } int selectedDownloaderRow() { diff --git a/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy b/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy index 9b0a793b..9ba1f766 100644 --- a/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy @@ -91,25 +91,7 @@ class SearchTabView { resultsTable.setDefaultRenderer(Integer.class,centerRenderer) resultsTable.columnModel.getColumn(4).setCellRenderer(centerRenderer) - def sizeRenderer = new DefaultTableCellRenderer() { - @Override - JComponent getTableCellRendererComponent(JTable table, Object value, - boolean isSelected, boolean hasFocus, int row, int column) { - Long l = (Long) value - String formatted = DataHelper.formatSize2Decimal(l, false)+"B" - setText(formatted) - if (isSelected) { - setForeground(table.getSelectionForeground()) - setBackground(table.getSelectionBackground()) - } else { - setForeground(table.getForeground()) - setBackground(table.getBackground()) - } - this - } - } - sizeRenderer.setHorizontalAlignment(JLabel.CENTER) - resultsTable.columnModel.getColumn(1).setCellRenderer(sizeRenderer) + resultsTable.columnModel.getColumn(1).setCellRenderer(new SizeRenderer()) resultsTable.rowSorter.addRowSorterListener({ evt -> lastSortEvent = evt}) diff --git a/gui/src/main/groovy/com/muwire/gui/SizeRenderer.groovy b/gui/src/main/groovy/com/muwire/gui/SizeRenderer.groovy new file mode 100644 index 00000000..216f471d --- /dev/null +++ b/gui/src/main/groovy/com/muwire/gui/SizeRenderer.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 SizeRenderer extends DefaultTableCellRenderer { + SizeRenderer() { + setHorizontalAlignment(JLabel.CENTER) + } + @Override + JComponent getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + Long l = (Long) value + String formatted = DataHelper.formatSize2Decimal(l, false)+"B" + setText(formatted) + if (isSelected) { + setForeground(table.getSelectionForeground()) + setBackground(table.getSelectionBackground()) + } else { + setForeground(table.getForeground()) + setBackground(table.getBackground()) + } + this + } +}