chore: optimising SFTP for Linux edit (#229)

This commit is contained in:
hstyi
2025-02-14 15:00:19 +08:00
committed by GitHub
parent ff865f13a2
commit ea9c0f1225
4 changed files with 20 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ package app.termora.transport
import app.termora.* import app.termora.*
import app.termora.actions.AnActionEvent import app.termora.actions.AnActionEvent
import app.termora.actions.SettingsAction
import com.formdev.flatlaf.FlatClientProperties import com.formdev.flatlaf.FlatClientProperties
import com.formdev.flatlaf.extras.components.FlatPopupMenu import com.formdev.flatlaf.extras.components.FlatPopupMenu
import com.formdev.flatlaf.extras.components.FlatToolBar import com.formdev.flatlaf.extras.components.FlatToolBar
@@ -20,6 +21,7 @@ import org.apache.sshd.sftp.client.SftpClient
import org.apache.sshd.sftp.client.fs.SftpFileSystem import org.apache.sshd.sftp.client.fs.SftpFileSystem
import org.apache.sshd.sftp.client.fs.SftpPath import org.apache.sshd.sftp.client.fs.SftpPath
import org.jdesktop.swingx.JXBusyLabel import org.jdesktop.swingx.JXBusyLabel
import org.jdesktop.swingx.action.ActionManager
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import java.awt.BorderLayout import java.awt.BorderLayout
import java.awt.Component import java.awt.Component
@@ -70,6 +72,8 @@ class FileSystemPanel(
private val properties get() = Database.getDatabase().properties private val properties get() = Database.getDatabase().properties
private val showHiddenFilesKey by lazy { "termora.transport.host.${host.id}.show-hidden-files" } private val showHiddenFilesKey by lazy { "termora.transport.host.${host.id}.show-hidden-files" }
private val evt by lazy { AnActionEvent(this, StringUtils.EMPTY, EventObject(this)) } private val evt by lazy { AnActionEvent(this, StringUtils.EMPTY, EventObject(this)) }
private val sftp get() = Database.getDatabase().sftp
private val actionManager get() = ActionManager.getInstance()
/** /**
* Edit * Edit
@@ -596,6 +600,19 @@ class FileSystemPanel(
if (files.isEmpty()) return if (files.isEmpty()) return
val transportManager = evt.getData(TransportDataProviders.TransportManager) ?: return val transportManager = evt.getData(TransportDataProviders.TransportManager) ?: return
if (SystemInfo.isLinux) {
if (sftp.editCommand.isBlank()) {
OptionPane.showMessageDialog(
owner,
I18n.getString("termora.transport.table.contextmenu.edit-command"),
messageType = JOptionPane.INFORMATION_MESSAGE
)
actionManager.getAction(SettingsAction.SETTING)
?.actionPerformed(AnActionEvent(this, StringUtils.EMPTY, EventObject(this)))
return
}
}
val temporary = Paths.get(Application.getBaseDataDir().absolutePath, "temporary") val temporary = Paths.get(Application.getBaseDataDir().absolutePath, "temporary")
Files.createDirectories(temporary) Files.createDirectories(temporary)
@@ -617,7 +634,6 @@ class FileSystemPanel(
private fun editFileTransportListener(source: Path, localPath: Path): TransportListener { private fun editFileTransportListener(source: Path, localPath: Path): TransportListener {
return object : TransportListener { return object : TransportListener {
private val sftp get() = Database.getDatabase().sftp
override fun onTransportChanged(transport: Transport) { override fun onTransportChanged(transport: Transport) {
// 传输成功 // 传输成功
if (transport.state == TransportState.Done) { if (transport.state == TransportState.Done) {

View File

@@ -265,6 +265,7 @@ termora.transport.table.owner=Owner
# contextmenu # contextmenu
termora.transport.table.contextmenu.transfer=Transfer termora.transport.table.contextmenu.transfer=Transfer
termora.transport.table.contextmenu.edit=${termora.keymgr.edit} termora.transport.table.contextmenu.edit=${termora.keymgr.edit}
termora.transport.table.contextmenu.edit-command=You must configure the "Edit Command" in "Settings - SFTP" before you can edit the file
termora.transport.table.contextmenu.copy-path=Copy Path termora.transport.table.contextmenu.copy-path=Copy Path
termora.transport.table.contextmenu.open-in-folder=Open in {0} termora.transport.table.contextmenu.open-in-folder=Open in {0}
termora.transport.table.contextmenu.rename=${termora.welcome.contextmenu.rename} termora.transport.table.contextmenu.rename=${termora.welcome.contextmenu.rename}

View File

@@ -257,6 +257,7 @@ termora.transport.table.owner=所有者
# contextmenu # contextmenu
termora.transport.table.contextmenu.transfer=传输 termora.transport.table.contextmenu.transfer=传输
termora.transport.table.contextmenu.copy-path=复制路径 termora.transport.table.contextmenu.copy-path=复制路径
termora.transport.table.contextmenu.edit-command=你必须在 “设置 - SFTP” 中配置 “编辑命令” 后才能编辑文件
termora.transport.table.contextmenu.open-in-folder=在{0}中打开 termora.transport.table.contextmenu.open-in-folder=在{0}中打开
termora.transport.table.contextmenu.change-permissions=更改权限... termora.transport.table.contextmenu.change-permissions=更改权限...
termora.transport.table.contextmenu.refresh=刷新 termora.transport.table.contextmenu.refresh=刷新

View File

@@ -251,6 +251,7 @@ termora.transport.table.owner=所有者
# contextmenu # contextmenu
termora.transport.table.contextmenu.transfer=傳輸 termora.transport.table.contextmenu.transfer=傳輸
termora.transport.table.contextmenu.copy-path=複製路徑 termora.transport.table.contextmenu.copy-path=複製路徑
termora.transport.table.contextmenu.edit-command=你必須在 “設定 - SFTP” 中設定 “編輯指令” 後才能編輯文件
termora.transport.table.contextmenu.open-in-folder=在{0}中打開 termora.transport.table.contextmenu.open-in-folder=在{0}中打開
termora.transport.table.contextmenu.change-permissions=更改權限... termora.transport.table.contextmenu.change-permissions=更改權限...
termora.transport.table.contextmenu.refresh=刷新 termora.transport.table.contextmenu.refresh=刷新