mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-15 18:02:58 +08:00
chore: select host
This commit is contained in:
@@ -2,6 +2,7 @@ package app.termora
|
|||||||
|
|
||||||
import app.termora.actions.AnAction
|
import app.termora.actions.AnAction
|
||||||
import app.termora.actions.AnActionEvent
|
import app.termora.actions.AnActionEvent
|
||||||
|
import app.termora.plugin.internal.extension.DynamicExtensionHandler
|
||||||
import app.termora.tree.NewHostTree
|
import app.termora.tree.NewHostTree
|
||||||
import com.formdev.flatlaf.extras.components.FlatTabbedPane
|
import com.formdev.flatlaf.extras.components.FlatTabbedPane
|
||||||
import com.formdev.flatlaf.extras.components.FlatToolBar
|
import com.formdev.flatlaf.extras.components.FlatToolBar
|
||||||
@@ -9,15 +10,14 @@ import com.formdev.flatlaf.util.SystemInfo
|
|||||||
import java.awt.BorderLayout
|
import java.awt.BorderLayout
|
||||||
import java.awt.Dimension
|
import java.awt.Dimension
|
||||||
import java.awt.Font
|
import java.awt.Font
|
||||||
import java.awt.event.ComponentAdapter
|
import java.awt.event.*
|
||||||
import java.awt.event.ComponentEvent
|
|
||||||
import java.awt.event.KeyEvent
|
|
||||||
import java.awt.event.MouseAdapter
|
|
||||||
import javax.swing.*
|
import javax.swing.*
|
||||||
|
import javax.swing.tree.TreePath
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
|
||||||
|
|
||||||
class TermoraFencePanel(
|
class TermoraFencePanel(
|
||||||
|
private val ws: WindowScope,
|
||||||
private val terminalTabbed: TerminalTabbed,
|
private val terminalTabbed: TerminalTabbed,
|
||||||
private val tabbed: FlatTabbedPane,
|
private val tabbed: FlatTabbedPane,
|
||||||
private val moveMouseAdapter: MouseAdapter,
|
private val moveMouseAdapter: MouseAdapter,
|
||||||
@@ -98,6 +98,40 @@ class TermoraFencePanel(
|
|||||||
toggle()
|
toggle()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DynamicExtensionHandler.getInstance()
|
||||||
|
.register(TerminalTabbedContextMenuExtension::class.java, object : TerminalTabbedContextMenuExtension {
|
||||||
|
override fun createJMenuItem(
|
||||||
|
windowScope: WindowScope,
|
||||||
|
tab: TerminalTab
|
||||||
|
): JMenuItem {
|
||||||
|
if (windowScope != ws) throw UnsupportedOperationException()
|
||||||
|
if (tab !is HostTerminalTab) throw UnsupportedOperationException()
|
||||||
|
if (tab.host.isTemporary) throw UnsupportedOperationException()
|
||||||
|
if (tab.host.id == "local") throw UnsupportedOperationException()
|
||||||
|
|
||||||
|
val item = JMenuItem(I18n.getString("termora.tabbed.contextmenu.select-host"))
|
||||||
|
item.addActionListener(object : AbstractAction() {
|
||||||
|
override fun actionPerformed(e: ActionEvent) {
|
||||||
|
val tree = getHostTree()
|
||||||
|
for (node in tree.simpleTreeModel.root.getAllChildren()) {
|
||||||
|
if (node.id == tab.host.id) {
|
||||||
|
tree.selectionPath = TreePath(tree.simpleTreeModel.getPathToRoot(node))
|
||||||
|
tree.requestFocusInWindow()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun ordered(): Long {
|
||||||
|
return Long.MAX_VALUE
|
||||||
|
}
|
||||||
|
|
||||||
|
}).let { Disposer.register(this, it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class LeftTreePanel : JPanel(BorderLayout()), Disposable {
|
private inner class LeftTreePanel : JPanel(BorderLayout()), Disposable {
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ class TermoraFrame : JFrame(), DataProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (layout == TermoraLayout.Fence) {
|
if (layout == TermoraLayout.Fence) {
|
||||||
val fencePanel = TermoraFencePanel(terminalTabbed, tabbedPane, moveMouseAdapter)
|
val fencePanel = TermoraFencePanel(windowScope, terminalTabbed, tabbedPane, moveMouseAdapter)
|
||||||
add(fencePanel, BorderLayout.CENTER)
|
add(fencePanel, BorderLayout.CENTER)
|
||||||
dataProviderSupport.addData(DataProviders.Welcome.HostTree, fencePanel.getHostTree())
|
dataProviderSupport.addData(DataProviders.Welcome.HostTree, fencePanel.getHostTree())
|
||||||
Disposer.register(windowScope, fencePanel)
|
Disposer.register(windowScope, fencePanel)
|
||||||
|
|||||||
@@ -69,4 +69,7 @@ class SftpCommandTerminalTabbedContextMenuExtension private constructor() : Term
|
|||||||
openHostAction.actionPerformed(OpenHostActionEvent(evt.source, host, evt))
|
openHostAction.actionPerformed(OpenHostActionEvent(evt.source, host, evt))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun ordered(): Long {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -250,6 +250,7 @@ termora.keymgr.ssh-copy-id.end=End of public key copying
|
|||||||
|
|
||||||
# Tabbed
|
# Tabbed
|
||||||
termora.tabbed.contextmenu.rename=Rename
|
termora.tabbed.contextmenu.rename=Rename
|
||||||
|
termora.tabbed.contextmenu.select-host=Select Host
|
||||||
termora.tabbed.contextmenu.sftp-command=SFTP Command
|
termora.tabbed.contextmenu.sftp-command=SFTP Command
|
||||||
termora.tabbed.contextmenu.sftp-not-install=SFTP programme not found, please install and try again
|
termora.tabbed.contextmenu.sftp-not-install=SFTP programme not found, please install and try again
|
||||||
termora.tabbed.contextmenu.clone=Clone
|
termora.tabbed.contextmenu.clone=Clone
|
||||||
|
|||||||
@@ -193,6 +193,7 @@ termora.keymgr.ssh-copy-id.end=Копирования открытого клю
|
|||||||
|
|
||||||
# Tabbed
|
# Tabbed
|
||||||
termora.tabbed.contextmenu.rename=Переименовать
|
termora.tabbed.contextmenu.rename=Переименовать
|
||||||
|
termora.tabbed.contextmenu.select-host=Выбрать хост
|
||||||
termora.tabbed.contextmenu.sftp-command=SFTP Команда
|
termora.tabbed.contextmenu.sftp-command=SFTP Команда
|
||||||
termora.tabbed.contextmenu.sftp-not-install=Программа SFTP не найдена, пожалуйста, установите и повторите попытку.
|
termora.tabbed.contextmenu.sftp-not-install=Программа SFTP не найдена, пожалуйста, установите и повторите попытку.
|
||||||
termora.tabbed.contextmenu.clone=Дублировать
|
termora.tabbed.contextmenu.clone=Дублировать
|
||||||
|
|||||||
@@ -246,6 +246,7 @@ termora.tools.multiple=将命令发送到当前窗口会话
|
|||||||
|
|
||||||
# Tabbed
|
# Tabbed
|
||||||
termora.tabbed.contextmenu.rename=重命名
|
termora.tabbed.contextmenu.rename=重命名
|
||||||
|
termora.tabbed.contextmenu.select-host=选中主机
|
||||||
termora.tabbed.contextmenu.sftp-command=SFTP 终端
|
termora.tabbed.contextmenu.sftp-command=SFTP 终端
|
||||||
termora.tabbed.contextmenu.sftp-not-install=没有找到 SFTP 程序,请安装后重试
|
termora.tabbed.contextmenu.sftp-not-install=没有找到 SFTP 程序,请安装后重试
|
||||||
termora.tabbed.contextmenu.clone=克隆
|
termora.tabbed.contextmenu.clone=克隆
|
||||||
|
|||||||
@@ -241,6 +241,7 @@ termora.tools.multiple=將命令傳送到目前視窗會話
|
|||||||
|
|
||||||
# Tabbed
|
# Tabbed
|
||||||
termora.tabbed.contextmenu.rename=重新命名
|
termora.tabbed.contextmenu.rename=重新命名
|
||||||
|
termora.tabbed.contextmenu.select-host=選取主機
|
||||||
termora.tabbed.contextmenu.sftp-command=SFTP 終端
|
termora.tabbed.contextmenu.sftp-command=SFTP 終端
|
||||||
termora.tabbed.contextmenu.sftp-not-install=沒有找到 SFTP 程序,請安裝後重試
|
termora.tabbed.contextmenu.sftp-not-install=沒有找到 SFTP 程序,請安裝後重試
|
||||||
termora.tabbed.contextmenu.clone=克隆
|
termora.tabbed.contextmenu.clone=克隆
|
||||||
|
|||||||
Reference in New Issue
Block a user