mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-15 18:02:58 +08:00
chore: enhance terminal tab closing behavior to support reconnect option
This commit is contained in:
@@ -179,7 +179,7 @@ abstract class PtyHostTerminalTab(
|
|||||||
|
|
||||||
val tab = createReconnectTerminalTab()
|
val tab = createReconnectTerminalTab()
|
||||||
manager.addTerminalTab(index, tab, true)
|
manager.addTerminalTab(index, tab, true)
|
||||||
manager.closeTerminalTab(this, true)
|
manager.closeTerminalTab(this, disposable = true, reconnect = true)
|
||||||
|
|
||||||
if (tab is HostTerminalTab) {
|
if (tab is HostTerminalTab) {
|
||||||
tab.start()
|
tab.start()
|
||||||
|
|||||||
@@ -141,12 +141,14 @@ class TerminalTabbed(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun removeTabAt(index: Int, disposable: Boolean = true) {
|
private fun removeTabAt(index: Int, disposable: Boolean = true, reconnect: Boolean = false) {
|
||||||
if (tabbedPane.isTabClosable(index)) {
|
if (tabbedPane.isTabClosable(index)) {
|
||||||
val tab = tabs[index]
|
val tab = tabs[index]
|
||||||
|
|
||||||
// 询问是否可以关闭
|
// 询问是否可以关闭
|
||||||
if (disposable) {
|
if (disposable) {
|
||||||
|
// 如果是重连接,那么直接关闭不进行任何形式的询问
|
||||||
|
if (reconnect.not()) {
|
||||||
// 如果开启了关闭确认,那么直接询问用户
|
// 如果开启了关闭确认,那么直接询问用户
|
||||||
if (appearance.confirmTabClose) {
|
if (appearance.confirmTabClose) {
|
||||||
if (OptionPane.showConfirmDialog(
|
if (OptionPane.showConfirmDialog(
|
||||||
@@ -162,6 +164,7 @@ class TerminalTabbed(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 通知即将关闭
|
// 通知即将关闭
|
||||||
if (disposable) {
|
if (disposable) {
|
||||||
@@ -361,7 +364,7 @@ class TerminalTabbed(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun indexOfTerminalTab(tab: TerminalTab):Int {
|
override fun indexOfTerminalTab(tab: TerminalTab): Int {
|
||||||
return tabbedPane.indexOfComponent(tab.getJComponent())
|
return tabbedPane.indexOfComponent(tab.getJComponent())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -451,10 +454,10 @@ class TerminalTabbed(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun closeTerminalTab(tab: TerminalTab, disposable: Boolean) {
|
override fun closeTerminalTab(tab: TerminalTab, disposable: Boolean, reconnect: Boolean) {
|
||||||
for (i in 0 until tabs.size) {
|
for (i in 0 until tabs.size) {
|
||||||
if (tabs[i] == tab) {
|
if (tabs[i] == tab) {
|
||||||
removeTabAt(i, disposable)
|
removeTabAt(i, disposable, reconnect)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ interface TerminalTabbedManager {
|
|||||||
fun getSelectedTerminalTab(): TerminalTab?
|
fun getSelectedTerminalTab(): TerminalTab?
|
||||||
fun getTerminalTabs(): List<TerminalTab>
|
fun getTerminalTabs(): List<TerminalTab>
|
||||||
fun setSelectedTerminalTab(tab: TerminalTab)
|
fun setSelectedTerminalTab(tab: TerminalTab)
|
||||||
fun closeTerminalTab(tab: TerminalTab, disposable: Boolean = true)
|
fun closeTerminalTab(tab: TerminalTab, disposable: Boolean = true, reconnect: Boolean = false)
|
||||||
fun refreshTerminalTabs()
|
fun refreshTerminalTabs()
|
||||||
fun indexOfTerminalTab(tab: TerminalTab): Int
|
fun indexOfTerminalTab(tab: TerminalTab): Int
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user