diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index 291d61c7..564adb9b 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -82,11 +82,18 @@ class MainFrameController { int row = table.getSelectedRow() if (row == -1) return + def sortEvt = group.view.lastSortEvent + if (sortEvt != null) { + row = sortEvt.convertPreviousRowIndexToModel(row) + } group.model.results[row] } private def selectedDownload() { def selected = builder.getVariable("downloads-table").getSelectedRow() + def sortEvt = mvcGroup.view.lastDownloadSortEvent + if (sortEvt != null) + selected = sortEvt.convertPreviousRowIndexToModel(selected) model.downloads[selected].downloader } diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index de81d1aa..66a242cb 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -37,6 +37,9 @@ class MainFrameView { @MVCMember @Nonnull MainFrameModel model + def downloadsTable + def lastDownloadSortEvent + void initUI() { builder.with { application(size : [1024,768], id: 'main-frame', @@ -105,7 +108,7 @@ class MainFrameView { panel (constraints : JSplitPane.BOTTOM) { borderLayout() scrollPane (constraints : BorderLayout.CENTER) { - table(id : "downloads-table", autoCreateRowSorter : true) { + downloadsTable = table(id : "downloads-table", autoCreateRowSorter : true) { tableModel(list: model.downloads) { closureColumn(header: "Name", preferredWidth: 350, type: String, read : {row -> row.downloader.file.getName()}) closureColumn(header: "Status", preferredWidth: 50, type: String, read : {row -> row.downloader.getCurrentState()}) @@ -280,7 +283,9 @@ class MainFrameView { def centerRenderer = new DefaultTableCellRenderer() centerRenderer.setHorizontalAlignment(JLabel.CENTER) - builder.getVariable("downloads-table").setDefaultRenderer(Integer.class, centerRenderer) + downloadsTable.setDefaultRenderer(Integer.class, centerRenderer) + + downloadsTable.rowSorter.addRowSorterListener({evt -> lastDownloadSortEvent = evt}) } def showSearchWindow = { diff --git a/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy b/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy index b253625a..a5c86e07 100644 --- a/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy @@ -26,6 +26,7 @@ class SearchTabView { def parent def searchTerms def resultsTable + def lastSortEvent void initUI() { builder.with { @@ -84,6 +85,8 @@ class SearchTabView { resultsTable.columnModel.getColumn(1).setCellRenderer(centerRenderer) resultsTable.setDefaultRenderer(Integer.class,centerRenderer) resultsTable.columnModel.getColumn(4).setCellRenderer(centerRenderer) + + resultsTable.rowSorter.addRowSorterListener({ evt -> lastSortEvent = evt}) } def closeTab = {