feat: keyword highlight set

This commit is contained in:
hstyi
2025-07-18 21:47:57 +08:00
committed by GitHub
parent f99e3e9147
commit ae7730fb35
20 changed files with 545 additions and 259 deletions

View File

@@ -1,6 +1,8 @@
package app.termora.plugins.serial
import app.termora.*
import app.termora.account.AccountOwner
import app.termora.highlight.KeywordHighlight
import app.termora.plugin.internal.AltKeyModifier
import app.termora.plugin.internal.BasicGeneralOption
import app.termora.plugin.internal.BasicTerminalOption
@@ -19,11 +21,12 @@ import java.awt.event.ComponentAdapter
import java.awt.event.ComponentEvent
import javax.swing.*
class SerialHostOptionsPane : OptionsPane() {
class SerialHostOptionsPane(private val accountOwner: AccountOwner) : OptionsPane() {
private val generalOption = BasicGeneralOption()
private val terminalOption = BasicTerminalOption().apply {
showCharsetComboBox = true
showStartupCommandTextField = true
accountOwner = this@SerialHostOptionsPane.accountOwner
init()
}
private val serialCommOption = SerialCommOption()
@@ -56,6 +59,8 @@ class SerialHostOptionsPane : OptionsPane() {
extras = mutableMapOf(
"altModifier" to (terminalOption.altModifierComboBox.selectedItem?.toString()
?: AltKeyModifier.EightBit.name),
"keywordHighlightSetId" to ((terminalOption.highlightSetComboBox.selectedItem as? KeywordHighlight)?.id
?: "-1"),
)
)
@@ -88,6 +93,17 @@ class SerialHostOptionsPane : OptionsPane() {
val altModifier = host.options.extras["altModifier"] ?: AltKeyModifier.EightBit.name
terminalOption.altModifierComboBox.selectedItem = runCatching { AltKeyModifier.valueOf(altModifier) }
.getOrNull() ?: AltKeyModifier.EightBit
val keywordHighlightSetId = host.options.extras["keywordHighlightSetId"]
for (i in 0 until terminalOption.highlightSetComboBox.itemCount) {
val item = terminalOption.highlightSetComboBox.getItemAt(i)
if (item.id == keywordHighlightSetId) {
terminalOption.highlightSetComboBox.selectedItem = item
break
}
}
}
fun validateFields(): Boolean {

View File

@@ -2,11 +2,12 @@ package app.termora.plugins.serial
import app.termora.Disposer
import app.termora.Host
import app.termora.account.AccountOwner
import app.termora.protocol.ProtocolHostPanel
import java.awt.BorderLayout
class SerialProtocolHostPanel : ProtocolHostPanel() {
private val pane = SerialHostOptionsPane()
class SerialProtocolHostPanel(accountOwner: AccountOwner) : ProtocolHostPanel() {
private val pane = SerialHostOptionsPane(accountOwner)
init {
initView()

View File

@@ -16,7 +16,7 @@ internal class SerialProtocolHostPanelExtension private constructor() : Protocol
}
override fun createProtocolHostPanel(accountOwner: AccountOwner): ProtocolHostPanel {
return SerialProtocolHostPanel()
return SerialProtocolHostPanel(accountOwner)
}
override fun ordered(): Long {