feat: Welcome search supports keyboard navigation (#404)

This commit is contained in:
hstyi
2025-03-27 17:33:24 +08:00
committed by GitHub
parent 0c5b6f8112
commit 24677ca4a6

View File

@@ -16,9 +16,7 @@ import java.awt.BorderLayout
import java.awt.Component import java.awt.Component
import java.awt.Dimension import java.awt.Dimension
import java.awt.KeyboardFocusManager import java.awt.KeyboardFocusManager
import java.awt.event.ActionEvent import java.awt.event.*
import java.awt.event.ComponentAdapter
import java.awt.event.ComponentEvent
import javax.swing.* import javax.swing.*
import javax.swing.event.DocumentEvent import javax.swing.event.DocumentEvent
import kotlin.math.max import kotlin.math.max
@@ -219,6 +217,26 @@ class WelcomePanel(private val windowScope: WindowScope) : JPanel(BorderLayout()
} }
} }
}) })
searchTextField.addKeyListener(object : KeyAdapter() {
private val event = ActionEvent(hostTree, ActionEvent.ACTION_PERFORMED, StringUtils.EMPTY)
private val openHostAction get() = ActionManager.getInstance().getAction(OpenHostAction.OPEN_HOST)
override fun keyPressed(e: KeyEvent) {
if (e.keyCode == KeyEvent.VK_DOWN || e.keyCode == KeyEvent.VK_ENTER || e.keyCode == KeyEvent.VK_UP) {
when (e.keyCode) {
KeyEvent.VK_UP -> hostTree.actionMap.get("selectPrevious")?.actionPerformed(event)
KeyEvent.VK_DOWN -> hostTree.actionMap.get("selectNext")?.actionPerformed(event)
else -> {
for (node in hostTree.getSelectionSimpleTreeNodes(true)) {
openHostAction?.actionPerformed(OpenHostActionEvent(hostTree, node.host, e))
}
}
}
e.consume()
}
}
})
} }
private fun perform() { private fun perform() {