diff --git a/src/main/kotlin/app/termora/Actions.kt b/src/main/kotlin/app/termora/Actions.kt index 6ff3b85..a9977ca 100644 --- a/src/main/kotlin/app/termora/Actions.kt +++ b/src/main/kotlin/app/termora/Actions.kt @@ -52,4 +52,9 @@ object Actions { * 终端日志记录 */ const val TERMINAL_LOGGER = "TerminalLogAction" + + /** + * 打开 SFTP Tab Action + */ + const val SFTP = "SFTPAction" } \ No newline at end of file diff --git a/src/main/kotlin/app/termora/CustomizeToolBarDialog.kt b/src/main/kotlin/app/termora/CustomizeToolBarDialog.kt index be691bb..2d65df1 100644 --- a/src/main/kotlin/app/termora/CustomizeToolBarDialog.kt +++ b/src/main/kotlin/app/termora/CustomizeToolBarDialog.kt @@ -260,17 +260,16 @@ class CustomizeToolBarDialog( removeWindowListener(this) val allActions = toolbar.getAllActions().toMutableList() - val shownActions = toolbar.getShownActions().filter { it.visible } - .map { it.id } - allActions.removeAll(shownActions) + val shownActions = toolbar.getShownActions().associate { Pair(it.id, it.visible) } for (action in allActions) { - actionManager.getAction(action)?.let { leftList.model.addElement(ActionHolder(action, it)) } + if (shownActions[action] == false) { + actionManager.getAction(action)?.let { leftList.model.addElement(ActionHolder(action, it)) } + } else { + actionManager.getAction(action)?.let { rightList.model.addElement(ActionHolder(action, it)) } + } } - for (action in shownActions) { - actionManager.getAction(action)?.let { rightList.model.addElement(ActionHolder(action, it)) } - } } }) } diff --git a/src/main/kotlin/app/termora/TermoraFrame.kt b/src/main/kotlin/app/termora/TermoraFrame.kt index 3987e0a..553594c 100644 --- a/src/main/kotlin/app/termora/TermoraFrame.kt +++ b/src/main/kotlin/app/termora/TermoraFrame.kt @@ -5,6 +5,7 @@ import app.termora.highlight.KeywordHighlightDialog import app.termora.keymgr.KeyManagerDialog import app.termora.macro.MacroAction import app.termora.tlog.TerminalLoggerAction +import app.termora.transport.SFTPAction import com.formdev.flatlaf.FlatClientProperties import com.formdev.flatlaf.FlatLaf import com.formdev.flatlaf.extras.FlatDesktop @@ -205,6 +206,9 @@ class TermoraFrame : JFrame() { // 终端日志记录 ActionManager.getInstance().addAction(Actions.TERMINAL_LOGGER, TerminalLoggerAction()) + // SFTP + ActionManager.getInstance().addAction(Actions.SFTP, SFTPAction()) + // macro ActionManager.getInstance().addAction(Actions.MACRO, MacroAction()) diff --git a/src/main/kotlin/app/termora/TermoraToolBar.kt b/src/main/kotlin/app/termora/TermoraToolBar.kt index 68ad5df..e388756 100644 --- a/src/main/kotlin/app/termora/TermoraToolBar.kt +++ b/src/main/kotlin/app/termora/TermoraToolBar.kt @@ -53,6 +53,7 @@ class TermoraToolBar( fun getAllActions(): List { return listOf( + Actions.SFTP, Actions.TERMINAL_LOGGER, Actions.MACRO, Actions.KEYWORD_HIGHLIGHT, diff --git a/src/main/kotlin/app/termora/findeverywhere/QuickCommandFindEverywhereProvider.kt b/src/main/kotlin/app/termora/findeverywhere/QuickCommandFindEverywhereProvider.kt index e7883b0..6cb9eae 100644 --- a/src/main/kotlin/app/termora/findeverywhere/QuickCommandFindEverywhereProvider.kt +++ b/src/main/kotlin/app/termora/findeverywhere/QuickCommandFindEverywhereProvider.kt @@ -7,11 +7,11 @@ import java.awt.event.ActionEvent import javax.swing.Icon class QuickCommandFindEverywhereProvider : FindEverywhereProvider { - + private val actionManager get() = ActionManager.getInstance() override fun find(pattern: String): List { val list = mutableListOf() - ActionManager.getInstance().getAction(Actions.ADD_HOST)?.let { + actionManager?.let { list.add(CreateHostFindEverywhereResult()) } @@ -21,34 +21,21 @@ class QuickCommandFindEverywhereProvider : FindEverywhereProvider { Icons.terminal ) { override fun actionPerformed(evt: ActionEvent) { - ActionManager.getInstance().getAction(Actions.OPEN_HOST) - ?.actionPerformed( - OpenHostActionEvent( - this, Host( - name = name, - protocol = Protocol.Local - ) + actionManager.getAction(Actions.OPEN_HOST)?.actionPerformed( + OpenHostActionEvent( + this, Host( + name = name, + protocol = Protocol.Local ) ) + ) } })) // SFTP - list.add(ActionFindEverywhereResult(object : AnAction("SFTP", Icons.fileTransfer) { - override fun actionPerformed(evt: ActionEvent) { - val terminalTabbedManager = Application.getService(TerminalTabbedManager::class) - val tabs = terminalTabbedManager.getTerminalTabs() - for (i in tabs.indices) { - val tab = tabs[i] - if (tab is SFTPTerminalTab) { - terminalTabbedManager.setSelectedTerminalTab(tab) - return - } - } - // 创建一个新的 - terminalTabbedManager.addTerminalTab(SFTPTerminalTab()) - } - })) + actionManager.getAction(Actions.SFTP)?.let { + list.add(ActionFindEverywhereResult(it)) + } return list } diff --git a/src/main/kotlin/app/termora/transport/SFTPAction.kt b/src/main/kotlin/app/termora/transport/SFTPAction.kt new file mode 100644 index 0000000..3f8b403 --- /dev/null +++ b/src/main/kotlin/app/termora/transport/SFTPAction.kt @@ -0,0 +1,20 @@ +package app.termora.transport + +import app.termora.* +import java.awt.event.ActionEvent + +class SFTPAction : AnAction("SFTP", Icons.fileTransfer) { + override fun actionPerformed(evt: ActionEvent) { + val terminalTabbedManager = Application.getService(TerminalTabbedManager::class) + val tabs = terminalTabbedManager.getTerminalTabs() + for (tab in tabs) { + if (tab is SFTPTerminalTab) { + terminalTabbedManager.setSelectedTerminalTab(tab) + return + } + } + + // 创建一个新的 + terminalTabbedManager.addTerminalTab(SFTPTerminalTab()) + } +} \ No newline at end of file