From 679b24a74d46051443f130ed0a1a8912cdb607cc Mon Sep 17 00:00:00 2001 From: hstyi Date: Tue, 12 Aug 2025 14:59:14 +0800 Subject: [PATCH] chore: simplify host field input --- .../plugin/internal/ssh/SSHHostOptionsPane.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/kotlin/app/termora/plugin/internal/ssh/SSHHostOptionsPane.kt b/src/main/kotlin/app/termora/plugin/internal/ssh/SSHHostOptionsPane.kt index f3d10cf..92e0b85 100644 --- a/src/main/kotlin/app/termora/plugin/internal/ssh/SSHHostOptionsPane.kt +++ b/src/main/kotlin/app/termora/plugin/internal/ssh/SSHHostOptionsPane.kt @@ -24,6 +24,7 @@ import org.eclipse.jgit.internal.transport.sshd.agent.connector.WinPipeConnector import java.awt.* import java.awt.event.* import javax.swing.* +import javax.swing.event.DocumentEvent import javax.swing.table.DefaultTableCellRenderer import javax.swing.table.DefaultTableModel @@ -46,6 +47,7 @@ internal class SSHHostOptionsPane(private val accountOwner: AccountOwner) : Opti private val jumpHostsOption = JumpHostsOption() private val sftpOption = SFTPOption() private val owner: Window get() = SwingUtilities.getWindowAncestor(this) + private var setHostMode = false init { addOption(generalOption) @@ -135,6 +137,7 @@ internal class SSHHostOptionsPane(private val accountOwner: AccountOwner) : Opti } fun setHost(host: Host) { + setHostMode = true generalOption.portTextField.value = host.port generalOption.nameTextField.text = host.name generalOption.usernameTextField.text = host.username @@ -298,6 +301,8 @@ internal class SSHHostOptionsPane(private val accountOwner: AccountOwner) : Opti val remarkTextArea = FixedLengthTextArea(512) val authenticationTypeComboBox = FlatComboBox() + private var hostFocused = false + init { initView() initEvents() @@ -405,6 +410,26 @@ internal class SSHHostOptionsPane(private val accountOwner: AccountOwner) : Opti removeComponentListener(this) } }) + + hostTextField.addFocusListener(object : FocusAdapter() { + override fun focusGained(e: FocusEvent) { + hostTextField.removeFocusListener(this) + hostFocused = true + } + }) + + nameTextField.document.addDocumentListener(object : DocumentAdaptor() { + override fun changedUpdate(e: DocumentEvent) { + if (nameTextField.hasFocus().not()) return + + if (hostFocused || setHostMode) { + nameTextField.document.removeDocumentListener(this) + return + } + + hostTextField.text = nameTextField.text + } + }) } private fun chooseKeyPair() {