mirror of
https://gitlab.com/2009scape/tools/rs09-thanos-tool.git
synced 2026-08-01 14:39:20 -06:00
Update sorter so the first row actually gets sorted too
This commit is contained in:
parent
c7334798f6
commit
9a68867769
2 changed files with 37 additions and 20 deletions
|
|
@ -13,20 +13,27 @@ import javax.swing.table.TableRowSorter
|
|||
|
||||
object NPCMenu : JFrame("NPC Selection Menu") {
|
||||
var model = DefaultTableModel()
|
||||
var searchField = JTextField()
|
||||
var searchNameField = JTextField()
|
||||
var searchIdField = JTextField()
|
||||
var sorter = TableRowSorter(model)
|
||||
var cellRenderer = DefaultTableCellRenderer()
|
||||
var populated = false
|
||||
var caller: ((Int,String) -> Unit)? = null
|
||||
private fun filter() {
|
||||
var rf: RowFilter<DefaultTableModel?, Any?>? = null
|
||||
//If current expression doesn't parse, don't update.
|
||||
rf = try {
|
||||
RowFilter.regexFilter("(?i)${searchField.text}")
|
||||
} catch (e: PatternSyntaxException) {
|
||||
return
|
||||
}
|
||||
sorter.rowFilter = rf
|
||||
val rfs: List<RowFilter<DefaultTableModel?, Any?>?,> = listOf(
|
||||
try {
|
||||
RowFilter.regexFilter("(?i)${searchNameField.text}", 1)
|
||||
} catch (e: PatternSyntaxException) {
|
||||
null
|
||||
},
|
||||
try {
|
||||
RowFilter.regexFilter(searchIdField.text, 0)
|
||||
} catch (e: PatternSyntaxException) {
|
||||
return
|
||||
}
|
||||
|
||||
)
|
||||
sorter.rowFilter = RowFilter.andFilter(rfs)
|
||||
}
|
||||
|
||||
fun open() {
|
||||
|
|
@ -47,10 +54,14 @@ object NPCMenu : JFrame("NPC Selection Menu") {
|
|||
layout = BorderLayout()
|
||||
cellRenderer.toolTipText = "Double-Click to select."
|
||||
val searchPanel = JPanel()
|
||||
val searchLabel = JLabel("Search for NPC:")
|
||||
searchField.preferredSize = Dimension(100, 20)
|
||||
searchPanel.add(searchLabel)
|
||||
searchPanel.add(searchField)
|
||||
val searchIdLabel = JLabel("Search for ID:")
|
||||
val searchNameLabel = JLabel("Search for NPC:")
|
||||
searchIdField.preferredSize = Dimension(100, 20)
|
||||
searchNameField.preferredSize = Dimension(100, 20)
|
||||
searchPanel.add(searchIdLabel)
|
||||
searchPanel.add(searchIdField)
|
||||
searchPanel.add(searchNameLabel)
|
||||
searchPanel.add(searchNameField)
|
||||
add(searchPanel, BorderLayout.NORTH)
|
||||
setLocationRelativeTo(null)
|
||||
val npcTable: JTable = object : JTable(model) {
|
||||
|
|
@ -81,13 +92,21 @@ object NPCMenu : JFrame("NPC Selection Menu") {
|
|||
override fun mouseEntered(mouseEvent: MouseEvent) {}
|
||||
override fun mouseExited(mouseEvent: MouseEvent) {}
|
||||
})
|
||||
searchField.addKeyListener(object : KeyListener {
|
||||
override fun keyTyped(keyEvent: KeyEvent) {
|
||||
searchNameField.addKeyListener(object : KeyListener {
|
||||
override fun keyTyped(keyEvent: KeyEvent) {}
|
||||
override fun keyPressed(keyEvent: KeyEvent) {}
|
||||
|
||||
override fun keyReleased(keyEvent: KeyEvent) {
|
||||
filter()
|
||||
}
|
||||
|
||||
})
|
||||
searchIdField.addKeyListener(object : KeyListener {
|
||||
override fun keyTyped(keyEvent: KeyEvent) {}
|
||||
override fun keyPressed(keyEvent: KeyEvent) {}
|
||||
override fun keyReleased(keyEvent: KeyEvent) {}
|
||||
|
||||
override fun keyReleased(keyEvent: KeyEvent) {
|
||||
filter()
|
||||
}
|
||||
})
|
||||
val scrollPane = JScrollPane(npcTable)
|
||||
add(scrollPane, BorderLayout.SOUTH)
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ class TableEditor(val editor: Editors) : JFrame("Editing ${editor.name.replace("
|
|||
}
|
||||
var rowHeaderTable = JTable(rowHeaderModel)
|
||||
val sorter = TableRowSorter(model)
|
||||
val rowHeaderSorter = TableRowSorter(rowHeaderModel)
|
||||
|
||||
init {
|
||||
layout = BorderLayout()
|
||||
|
|
@ -62,7 +61,7 @@ class TableEditor(val editor: Editors) : JFrame("Editing ${editor.name.replace("
|
|||
})
|
||||
|
||||
table.rowSorter = sorter
|
||||
rowHeaderTable.rowSorter = rowHeaderSorter
|
||||
rowHeaderTable.rowSorter = sorter
|
||||
|
||||
|
||||
val addButton = JButton("Add Row")
|
||||
|
|
@ -240,7 +239,6 @@ class TableEditor(val editor: Editors) : JFrame("Editing ${editor.name.replace("
|
|||
return regex.containsMatchIn(getData()[rowId]["name"].toString())
|
||||
}
|
||||
}
|
||||
rowHeaderSorter.rowFilter = filter
|
||||
sorter.rowFilter = filter
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue