task 4
This commit is contained in:
parent
95b0479600
commit
96bbef8bbd
@ -1,5 +1,6 @@
|
|||||||
package ch.hevs.isc.slopify_v2
|
package ch.hevs.isc.slopify_v2
|
||||||
|
|
||||||
|
import java.awt.{GridBagConstraints, GridBagLayout, LayoutManager}
|
||||||
import java.util
|
import java.util
|
||||||
import javax.swing._
|
import javax.swing._
|
||||||
import javax.swing.table.{DefaultTableModel, TableModel, TableRowSorter}
|
import javax.swing.table.{DefaultTableModel, TableModel, TableRowSorter}
|
||||||
@ -12,7 +13,11 @@ class GUI extends JFrame {
|
|||||||
val artistsListModel: DefaultListModel[String] = new DefaultListModel[String]()
|
val artistsListModel: DefaultListModel[String] = new DefaultListModel[String]()
|
||||||
val artistsList: JList[String] = new JList(artistsListModel)
|
val artistsList: JList[String] = new JList(artistsListModel)
|
||||||
artistsList.setLayoutOrientation(JList.VERTICAL)
|
artistsList.setLayoutOrientation(JList.VERTICAL)
|
||||||
val col1: JScrollPane = new JScrollPane(artistsList)
|
val col1: JPanel = new JPanel()
|
||||||
|
val col1Layout: GridBagLayout = new GridBagLayout()
|
||||||
|
col1.setLayout(col1Layout)
|
||||||
|
|
||||||
|
val artistsPane: JScrollPane = new JScrollPane(artistsList)
|
||||||
artistsList.addListSelectionListener(_ => {
|
artistsList.addListSelectionListener(_ => {
|
||||||
val artistName: String = artistsList.getSelectedValue
|
val artistName: String = artistsList.getSelectedValue
|
||||||
val artist: Option[Artist] = db.getArtistByName(artistName)
|
val artist: Option[Artist] = db.getArtistByName(artistName)
|
||||||
@ -23,6 +28,23 @@ class GUI extends JFrame {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
val artistsSearchBar: JTextField = new JTextField()
|
||||||
|
artistsSearchBar.addActionListener(_ => updateArtistsSearch())
|
||||||
|
|
||||||
|
val col1Constraints: GridBagConstraints = new GridBagConstraints()
|
||||||
|
col1Constraints.fill = GridBagConstraints.BOTH
|
||||||
|
col1Constraints.gridx = 0
|
||||||
|
col1Constraints.gridy = 0
|
||||||
|
col1Constraints.weightx = 1
|
||||||
|
col1Constraints.weighty = 1
|
||||||
|
col1.add(artistsPane, col1Constraints)
|
||||||
|
|
||||||
|
col1Constraints.fill = GridBagConstraints.HORIZONTAL
|
||||||
|
col1Constraints.gridx = 0
|
||||||
|
col1Constraints.gridy = 1
|
||||||
|
col1Constraints.weighty = 0
|
||||||
|
col1.add(artistsSearchBar, col1Constraints)
|
||||||
|
|
||||||
// Albums
|
// Albums
|
||||||
val albumsListModel: DefaultListModel[String] = new DefaultListModel[String]()
|
val albumsListModel: DefaultListModel[String] = new DefaultListModel[String]()
|
||||||
val albumsList: JList[String] = new JList(albumsListModel)
|
val albumsList: JList[String] = new JList(albumsListModel)
|
||||||
@ -162,6 +184,21 @@ class GUI extends JFrame {
|
|||||||
def selectSong(song: Song): Unit = {
|
def selectSong(song: Song): Unit = {
|
||||||
curSong = Some(song)
|
curSong = Some(song)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def updateArtistsSearch(): Unit = {
|
||||||
|
val search: String = artistsSearchBar.getText.toLowerCase
|
||||||
|
|
||||||
|
clearArtists()
|
||||||
|
clearAlbums()
|
||||||
|
clearSongs()
|
||||||
|
var artists: Array[Artist] = db.getArtists().sortBy(_.name)
|
||||||
|
if (search.nonEmpty) {
|
||||||
|
artists = artists.filter(_.name.toLowerCase.contains(search))
|
||||||
|
}
|
||||||
|
for (artist: Artist <- artists) {
|
||||||
|
addArtist(artist)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object GUI {
|
object GUI {
|
||||||
|
Loading…
Reference in New Issue
Block a user