diff --git a/src/main/kotlin/app/termora/transport/FileSystemPanel.kt b/src/main/kotlin/app/termora/transport/FileSystemPanel.kt index d805996..8901f22 100644 --- a/src/main/kotlin/app/termora/transport/FileSystemPanel.kt +++ b/src/main/kotlin/app/termora/transport/FileSystemPanel.kt @@ -2,6 +2,7 @@ package app.termora.transport import app.termora.* import app.termora.actions.AnActionEvent +import app.termora.actions.SettingsAction import com.formdev.flatlaf.FlatClientProperties import com.formdev.flatlaf.extras.components.FlatPopupMenu 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.SftpPath import org.jdesktop.swingx.JXBusyLabel +import org.jdesktop.swingx.action.ActionManager import org.slf4j.LoggerFactory import java.awt.BorderLayout import java.awt.Component @@ -70,6 +72,8 @@ class FileSystemPanel( private val properties get() = Database.getDatabase().properties 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 sftp get() = Database.getDatabase().sftp + private val actionManager get() = ActionManager.getInstance() /** * Edit @@ -596,6 +600,19 @@ class FileSystemPanel( if (files.isEmpty()) 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") Files.createDirectories(temporary) @@ -617,7 +634,6 @@ class FileSystemPanel( private fun editFileTransportListener(source: Path, localPath: Path): TransportListener { return object : TransportListener { - private val sftp get() = Database.getDatabase().sftp override fun onTransportChanged(transport: Transport) { // 传输成功 if (transport.state == TransportState.Done) { diff --git a/src/main/resources/i18n/messages.properties b/src/main/resources/i18n/messages.properties index faef0b0..3a4dc85 100644 --- a/src/main/resources/i18n/messages.properties +++ b/src/main/resources/i18n/messages.properties @@ -265,6 +265,7 @@ termora.transport.table.owner=Owner # contextmenu termora.transport.table.contextmenu.transfer=Transfer 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.open-in-folder=Open in {0} termora.transport.table.contextmenu.rename=${termora.welcome.contextmenu.rename} diff --git a/src/main/resources/i18n/messages_zh_CN.properties b/src/main/resources/i18n/messages_zh_CN.properties index a989437..0792710 100644 --- a/src/main/resources/i18n/messages_zh_CN.properties +++ b/src/main/resources/i18n/messages_zh_CN.properties @@ -257,6 +257,7 @@ termora.transport.table.owner=所有者 # contextmenu termora.transport.table.contextmenu.transfer=传输 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.change-permissions=更改权限... termora.transport.table.contextmenu.refresh=刷新 diff --git a/src/main/resources/i18n/messages_zh_TW.properties b/src/main/resources/i18n/messages_zh_TW.properties index 5d31e2a..f5e10c0 100644 --- a/src/main/resources/i18n/messages_zh_TW.properties +++ b/src/main/resources/i18n/messages_zh_TW.properties @@ -251,6 +251,7 @@ termora.transport.table.owner=所有者 # contextmenu termora.transport.table.contextmenu.transfer=傳輸 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.change-permissions=更改權限... termora.transport.table.contextmenu.refresh=刷新