disable buttons if no row is selected

This commit is contained in:
Zlatin Balevsky
2019-06-01 12:23:20 +01:00
parent 4bb27b84de
commit 7e3b0795af
4 changed files with 19 additions and 7 deletions

View File

@@ -49,7 +49,8 @@ class MainFrameController {
def group = selected.getClientProperty("mvc-group") def group = selected.getClientProperty("mvc-group")
def table = selected.getClientProperty("results-table") def table = selected.getClientProperty("results-table")
int row = table.getSelectedRow() int row = table.getSelectedRow()
if (row == -1)
return
group.model.results[row] group.model.results[row]
} }

View File

@@ -37,11 +37,13 @@ class MainFrameModel {
@Observable boolean coreInitialized = false @Observable boolean coreInitialized = false
def results = new ConcurrentHashMap<>() def results = new ConcurrentHashMap<>()
@Observable def downloads = [] def downloads = []
@Observable def uploads = [] def uploads = []
@Observable def shared = [] def shared = []
@Observable int connections @Observable int connections
@Observable String me @Observable String me
@Observable boolean searchButtonsEnabled
private final Set<InfoHash> infoHashes = new HashSet<>() private final Set<InfoHash> infoHashes = new HashSet<>()

View File

@@ -69,9 +69,9 @@ class MainFrameView {
borderLayout() borderLayout()
tabbedPane(id : "result-tabs", constraints: BorderLayout.CENTER) tabbedPane(id : "result-tabs", constraints: BorderLayout.CENTER)
panel(constraints : BorderLayout.SOUTH) { panel(constraints : BorderLayout.SOUTH) {
button(text : "Download", downloadAction) button(text : "Download", enabled : bind {model.searchButtonsEnabled}, downloadAction)
button(text : "Trust", trustAction) button(text : "Trust", enabled: bind {model.searchButtonsEnabled }, trustAction)
button(text : "Distrust", distrustAction) button(text : "Distrust", enabled : bind {model.searchButtonsEnabled}, distrustAction)
} }
} }
panel (constraints : JSplitPane.BOTTOM) { panel (constraints : JSplitPane.BOTTOM) {

View File

@@ -4,6 +4,8 @@ import griffon.core.artifact.GriffonView
import griffon.core.mvc.MVCGroup import griffon.core.mvc.MVCGroup
import griffon.inject.MVCMember import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor import griffon.metadata.ArtifactProviderFor
import javax.swing.ListSelectionModel
import javax.swing.SwingConstants import javax.swing.SwingConstants
import java.awt.BorderLayout import java.awt.BorderLayout
@@ -39,6 +41,12 @@ class SearchTabView {
this.pane = pane this.pane = pane
this.pane.putClientProperty("mvc-group", mvcGroup) this.pane.putClientProperty("mvc-group", mvcGroup)
this.pane.putClientProperty("results-table",resultsTable) this.pane.putClientProperty("results-table",resultsTable)
def selectionModel = resultsTable.getSelectionModel()
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
selectionModel.addListSelectionListener( {
mvcGroup.parentGroup.model.searchButtonsEnabled = true
})
} }
} }
@@ -66,6 +74,7 @@ class SearchTabView {
def closeTab = { def closeTab = {
int index = parent.indexOfTab(searchTerms) int index = parent.indexOfTab(searchTerms)
parent.removeTabAt(index) parent.removeTabAt(index)
mvcGroup.parentGroup.model.searchButtonsEnabled = false
mvcGroup.destroy() mvcGroup.destroy()
} }
} }