mirror of
https://gitlab.com/2009scape/tools/rs09-thanos-tool.git
synced 2026-08-01 14:39:20 -06:00
Added bonus editor
This commit is contained in:
parent
0111912144
commit
0ea51eb95b
2 changed files with 115 additions and 1 deletions
93
src/main/kotlin/BonusEditor.kt
Normal file
93
src/main/kotlin/BonusEditor.kt
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
import java.awt.BorderLayout
|
||||
import java.awt.Dimension
|
||||
import java.awt.FlowLayout
|
||||
import javax.swing.*
|
||||
|
||||
object BonusEditor : JFrame("Bonus Editor") {
|
||||
val bonusFiels = ArrayList<JTextField>()
|
||||
val bonusLabels = arrayOf("Stab ATK: ", "Slash ATK: ", "Crush ATK: ", "Magic ATK: ", "Ranged ATK: ", "Stab DEF: ", "Slash DEF: ", "Crush DEF: ", "Magic DEF: ", "Ranged DEF: ", "Summoning DEF: ", "Strength Bonus: ", "Prayer Bonus: ", "Magic Strength: ", "Ranged Strength: ")
|
||||
var initialValues = Array<String>(15) { "0" }
|
||||
private var callback: (result: String) -> Unit = {}
|
||||
|
||||
init {
|
||||
layout = BorderLayout()
|
||||
val panel = JPanel()
|
||||
panel.layout = BoxLayout(panel, BoxLayout.PAGE_AXIS)
|
||||
defaultCloseOperation = HIDE_ON_CLOSE
|
||||
|
||||
for(bonus in bonusLabels.indices){
|
||||
val rowPanel = JPanel(FlowLayout())
|
||||
val rowLabel = JLabel(bonusLabels[bonus])
|
||||
val rowField = JTextField()
|
||||
rowField.text = initialValues[bonus]
|
||||
rowLabel.preferredSize = Dimension(200,20)
|
||||
rowField.preferredSize = Dimension(100,20)
|
||||
bonusFiels.add(rowField)
|
||||
rowPanel.add(rowLabel)
|
||||
rowPanel.add(rowField)
|
||||
panel.add(rowPanel)
|
||||
panel.add(JSeparator(JSeparator.HORIZONTAL))
|
||||
}
|
||||
|
||||
val buttonPanel = JPanel(BorderLayout())
|
||||
buttonPanel.minimumSize = Dimension(300,20)
|
||||
|
||||
val submit = JButton("Submit")
|
||||
submit.addActionListener {
|
||||
val sb = StringBuilder()
|
||||
for(field in bonusFiels.indices){
|
||||
sb.append(bonusFiels[field].text)
|
||||
if(field != bonusFiels.size - 1) sb.append(",")
|
||||
}
|
||||
callback.invoke(sb.toString())
|
||||
isVisible = false
|
||||
}
|
||||
|
||||
val reset = JButton("Reset")
|
||||
reset.addActionListener {
|
||||
setFieldsToInitial()
|
||||
repaint()
|
||||
}
|
||||
|
||||
val clear = JButton("Clear")
|
||||
clear.addActionListener {
|
||||
setInitialValues("")
|
||||
setFieldsToInitial()
|
||||
repaint()
|
||||
}
|
||||
|
||||
buttonPanel.add(reset, BorderLayout.WEST)
|
||||
buttonPanel.add(submit, BorderLayout.CENTER)
|
||||
buttonPanel.add(clear, BorderLayout.EAST)
|
||||
|
||||
panel.add(buttonPanel)
|
||||
|
||||
add(panel)
|
||||
|
||||
setLocationRelativeTo(null)
|
||||
isVisible = false
|
||||
pack()
|
||||
}
|
||||
|
||||
fun setInitialValues(string: String){
|
||||
val split = string.split(",")
|
||||
if(split.size > 3){
|
||||
for(i in initialValues.indices){
|
||||
initialValues[i] = split.getOrElse(i) {"0"}
|
||||
}
|
||||
} else {
|
||||
initialValues = Array(15) {"0"}
|
||||
}
|
||||
setFieldsToInitial()
|
||||
}
|
||||
|
||||
private fun setFieldsToInitial(){
|
||||
for(i in bonusFiels.indices){
|
||||
bonusFiels[i].text = initialValues[i]
|
||||
}
|
||||
}
|
||||
|
||||
fun setCallback(method: (result: String) -> Unit){
|
||||
callback = method
|
||||
}
|
||||
}
|
||||
|
|
@ -6,12 +6,14 @@ import java.awt.FlowLayout
|
|||
import java.awt.event.ActionEvent
|
||||
import java.awt.event.KeyEvent
|
||||
import java.awt.event.KeyListener
|
||||
import java.util.*
|
||||
import java.util.regex.PatternSyntaxException
|
||||
import javax.swing.*
|
||||
import javax.swing.event.TableModelEvent
|
||||
import javax.swing.event.TableModelListener
|
||||
import javax.swing.table.DefaultTableModel
|
||||
import javax.swing.table.TableRowSorter
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
/**
|
||||
* Represents a generic JTable-based editor. Pretty much just a cleaner visualisation of JSON objects with editing functionality.
|
||||
|
|
@ -19,7 +21,26 @@ import javax.swing.table.TableRowSorter
|
|||
class TableEditor(val editor: Editors) : JFrame("Editing ${editor.name.replace("_"," ").toLowerCase()}") {
|
||||
val searchField = JTextField()
|
||||
val model = DefaultTableModel()
|
||||
var table = JTable(model)
|
||||
var table = object : JTable(model){
|
||||
override fun editCellAt(p0: Int, p1: Int): Boolean {
|
||||
return super.editCellAt(p0, p1, null)
|
||||
}
|
||||
override fun editCellAt(p0: Int, p1: Int, p2: EventObject?): Boolean {
|
||||
val realRow = convertRowIndexToModel(p0)
|
||||
val realColumn = convertColumnIndexToModel(p1)
|
||||
val columnName = model.getColumnName(realColumn)
|
||||
if(columnName == "bonuses"){
|
||||
val existingBonuses = model.getValueAt(realRow,realColumn).toString()
|
||||
BonusEditor.setInitialValues(existingBonuses)
|
||||
BonusEditor.setCallback { result ->
|
||||
model.setValueAt(result, realRow, realColumn)
|
||||
}
|
||||
BonusEditor.isVisible = true
|
||||
return false
|
||||
}
|
||||
return super.editCellAt(p0, p1, p2)
|
||||
}
|
||||
}
|
||||
val sorter = TableRowSorter(model)
|
||||
|
||||
init {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue