diff --git a/src/main/kotlin/NPCMenu.kt b/src/main/kotlin/NPCMenu.kt index ef7c983..0133490 100644 --- a/src/main/kotlin/NPCMenu.kt +++ b/src/main/kotlin/NPCMenu.kt @@ -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? = 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?,> = 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) diff --git a/src/main/kotlin/TableEditor.kt b/src/main/kotlin/TableEditor.kt index fe555ad..d3dee08 100644 --- a/src/main/kotlin/TableEditor.kt +++ b/src/main/kotlin/TableEditor.kt @@ -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 } }