fix buttons when tables are sorted

This commit is contained in:
Zlatin Balevsky
2019-06-08 17:09:44 +01:00
parent 32b7867e44
commit 33a45c3835
3 changed files with 17 additions and 2 deletions

View File

@@ -82,11 +82,18 @@ class MainFrameController {
int row = table.getSelectedRow() int row = table.getSelectedRow()
if (row == -1) if (row == -1)
return return
def sortEvt = group.view.lastSortEvent
if (sortEvt != null) {
row = sortEvt.convertPreviousRowIndexToModel(row)
}
group.model.results[row] group.model.results[row]
} }
private def selectedDownload() { private def selectedDownload() {
def selected = builder.getVariable("downloads-table").getSelectedRow() def selected = builder.getVariable("downloads-table").getSelectedRow()
def sortEvt = mvcGroup.view.lastDownloadSortEvent
if (sortEvt != null)
selected = sortEvt.convertPreviousRowIndexToModel(selected)
model.downloads[selected].downloader model.downloads[selected].downloader
} }

View File

@@ -37,6 +37,9 @@ class MainFrameView {
@MVCMember @Nonnull @MVCMember @Nonnull
MainFrameModel model MainFrameModel model
def downloadsTable
def lastDownloadSortEvent
void initUI() { void initUI() {
builder.with { builder.with {
application(size : [1024,768], id: 'main-frame', application(size : [1024,768], id: 'main-frame',
@@ -105,7 +108,7 @@ class MainFrameView {
panel (constraints : JSplitPane.BOTTOM) { panel (constraints : JSplitPane.BOTTOM) {
borderLayout() borderLayout()
scrollPane (constraints : BorderLayout.CENTER) { scrollPane (constraints : BorderLayout.CENTER) {
table(id : "downloads-table", autoCreateRowSorter : true) { downloadsTable = table(id : "downloads-table", autoCreateRowSorter : true) {
tableModel(list: model.downloads) { tableModel(list: model.downloads) {
closureColumn(header: "Name", preferredWidth: 350, type: String, read : {row -> row.downloader.file.getName()}) 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()}) closureColumn(header: "Status", preferredWidth: 50, type: String, read : {row -> row.downloader.getCurrentState()})
@@ -280,7 +283,9 @@ class MainFrameView {
def centerRenderer = new DefaultTableCellRenderer() def centerRenderer = new DefaultTableCellRenderer()
centerRenderer.setHorizontalAlignment(JLabel.CENTER) 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 = { def showSearchWindow = {

View File

@@ -26,6 +26,7 @@ class SearchTabView {
def parent def parent
def searchTerms def searchTerms
def resultsTable def resultsTable
def lastSortEvent
void initUI() { void initUI() {
builder.with { builder.with {
@@ -84,6 +85,8 @@ class SearchTabView {
resultsTable.columnModel.getColumn(1).setCellRenderer(centerRenderer) resultsTable.columnModel.getColumn(1).setCellRenderer(centerRenderer)
resultsTable.setDefaultRenderer(Integer.class,centerRenderer) resultsTable.setDefaultRenderer(Integer.class,centerRenderer)
resultsTable.columnModel.getColumn(4).setCellRenderer(centerRenderer) resultsTable.columnModel.getColumn(4).setCellRenderer(centerRenderer)
resultsTable.rowSorter.addRowSorterListener({ evt -> lastSortEvent = evt})
} }
def closeTab = { def closeTab = {