Skip to content

Commit 47a72e1

Browse files
authored
Merge pull request #9 from Vacxe/migrate-new-terminal
feat(debt): migrate to new terminal
2 parents 93301dc + bb1ea66 commit 47a72e1

File tree

7 files changed

+46
-15
lines changed

7 files changed

+46
-15
lines changed

Diff for: README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ groups:
5353
commands:
5454
- name: Command Name
5555
command: your-terminal-command
56-
prompt: true/false
56+
prompt: true/false (default false)
57+
forceNewTab: true/false (default false)
5758
```
5859
5960
## Troubleshooting

Diff for: build.gradle.kts

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ plugins {
88
}
99

1010
group = "io.github.vacxe"
11-
version = "1.0.5"
11+
version = "1.0.6"
1212

1313
repositories {
1414
mavenCentral()
1515
}
1616

1717
intellij {
18-
version.set("2022.2.1")
18+
version.set("2023.2.2")
1919
pluginName.set("CLI Actions")
2020
plugins.set(listOf("org.jetbrains.plugins.terminal"))
2121
}
@@ -30,10 +30,10 @@ tasks {
3030
}
3131

3232
patchPluginXml {
33-
sinceBuild.set("222")
33+
sinceBuild.set("232")
3434
untilBuild.set("")
3535
changeNotes.set("""
36-
Added autorefresh for configurations on case of yaml change. No more IDE restart for update! Yay!
36+
Migrate from deprecated Terminal View. Tab names support and reuse tabs.
3737
""")
3838
}
3939

Diff for: src/main/kotlin/io/github/vacxe/cliactions/CliActionsToolWindowFactory.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class CliActionsToolWindowFactory : DumbAware, ToolWindowFactory {
1717

1818
val cmdPanel = CliActionsTablePanel(
1919
configurationFinder = configurationFinder,
20-
runTerminalCommand = { name, command -> terminalProvider.run(name, command) }
20+
runTerminalCommand = { name, command, forceNewTab -> terminalProvider.run(name, command, forceNewTab) }
2121
)
2222
val content: Content = ContentFactory.getInstance().createContent(cmdPanel, null, true)
2323
content.setDisposer(cmdPanel::dispose)

Diff for: src/main/kotlin/io/github/vacxe/cliactions/model/Command.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ import kotlinx.serialization.Serializable
66
data class Command(
77
val name: String,
88
val command: String,
9-
val prompt: Boolean = false
9+
val prompt: Boolean = false,
10+
val forceNewTab: Boolean = false
1011
)

Diff for: src/main/kotlin/io/github/vacxe/cliactions/terminal/IntellijIDETerminal.kt

+23-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,33 @@
11
package io.github.vacxe.cliactions.terminal
22

33
import com.intellij.openapi.project.Project
4-
import org.jetbrains.plugins.terminal.TerminalView
4+
import com.intellij.openapi.wm.ToolWindowManager
5+
import org.jetbrains.plugins.terminal.ShellTerminalWidget
6+
import org.jetbrains.plugins.terminal.TerminalToolWindowFactory
7+
import org.jetbrains.plugins.terminal.TerminalToolWindowManager
58
import java.io.IOException
69

710
class IntellijIDETerminal(private val project: Project) : Terminal {
8-
override fun run(name: String, command: String) {
9-
val terminalView: TerminalView = TerminalView.getInstance(project)
11+
override fun run(
12+
name: String,
13+
command: String,
14+
forceNewTab: Boolean
15+
) {
1016
try {
11-
terminalView.createLocalShellWidget(project.basePath, name).executeCommand(command)
17+
val terminalView = TerminalToolWindowManager.getInstance(project)
18+
val window = ToolWindowManager.getInstance(project).getToolWindow(TerminalToolWindowFactory.TOOL_WINDOW_ID)
19+
val contentManager = window?.contentManager
20+
21+
val widget = if (forceNewTab) {
22+
terminalView.createLocalShellWidget(project.basePath, name)
23+
} else {
24+
when (val content = contentManager?.findContent(name)) {
25+
null -> terminalView.createLocalShellWidget(project.basePath, name)
26+
else -> TerminalToolWindowManager.getWidgetByContent(content) as ShellTerminalWidget
27+
}
28+
}
29+
30+
widget.executeCommand(command)
1231
} catch (err: IOException) {
1332
err.printStackTrace()
1433
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.github.vacxe.cliactions.terminal
22

33
interface Terminal {
4-
fun run(name: String, command: String)
4+
fun run(name: String,
5+
command: String,
6+
forceNewTab: Boolean = false)
57
}

Diff for: src/main/kotlin/io/github/vacxe/cliactions/ui/CliActionsTablePanel.kt

+11-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import java.io.File
1515
import javax.swing.*
1616

1717
class CliActionsTablePanel(
18-
private val configurationFinder: ConfigurationProvider, private val runTerminalCommand: (String, String) -> Unit
18+
private val configurationFinder: ConfigurationProvider, private val runTerminalCommand: (String, String, Boolean) -> Unit
1919
) : JPanel() {
2020

2121
private val configsUpdate: (Sequence<File>) -> Unit = { configFiles ->
@@ -80,10 +80,18 @@ class CliActionsTablePanel(
8080
null, "Run: ${iCmdCommand.name} ?", "Confirm Action", JOptionPane.YES_NO_OPTION
8181
) == 0
8282
) {
83-
runTerminalCommand.invoke(iCmdCommand.name, iCmdCommand.command)
83+
runTerminalCommand.invoke(
84+
iCmdCommand.name,
85+
iCmdCommand.command,
86+
iCmdCommand.forceNewTab
87+
)
8488
}
8589
} else {
86-
runTerminalCommand.invoke(iCmdCommand.name, iCmdCommand.command)
90+
runTerminalCommand.invoke(
91+
iCmdCommand.name,
92+
iCmdCommand.command,
93+
iCmdCommand.forceNewTab
94+
)
8795
}
8896
}
8997
panel.add(button)

0 commit comments

Comments
 (0)