mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-16 02:12:58 +08:00
chore: optimising SFTP for Linux edit (#229)
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
@@ -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=刷新
|
||||||
|
|||||||
@@ -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=刷新
|
||||||
|
|||||||
Reference in New Issue
Block a user