diff --git a/src/main/kotlin/com/jetbrains/micropython/actions/RemoveAllFilesFromDeviceAction.kt b/src/main/kotlin/com/jetbrains/micropython/actions/RemoveAllFilesFromDeviceAction.kt index 73b0bfc4..32f3ab8b 100644 --- a/src/main/kotlin/com/jetbrains/micropython/actions/RemoveAllFilesFromDeviceAction.kt +++ b/src/main/kotlin/com/jetbrains/micropython/actions/RemoveAllFilesFromDeviceAction.kt @@ -28,8 +28,11 @@ import com.intellij.terminal.TerminalExecutionConsole import com.intellij.ui.content.ContentFactory import com.jetbrains.micropython.repl.MicroPythonReplManager import com.jetbrains.micropython.settings.MicroPythonFacet +import com.jetbrains.micropython.settings.MicroPythonFacetType import com.jetbrains.micropython.settings.firstMicroPythonFacet +private val COMMAND_KEY = com.intellij.openapi.util.Key("MicroPythonCommand") + class RemoveAllFilesFromDeviceAction : MicroPythonAction() { override fun actionPerformed(e: AnActionEvent) { @@ -50,9 +53,9 @@ class RemoveAllFilesFromDeviceAction : MicroPythonAction() { Disposer.register(facet, console) osProcessHandler.addProcessListener( - object: ProcessListener{ + object : ProcessListener { override fun processTerminated(event: ProcessEvent) { - with(console.terminalWidget.terminal){ + with(console.terminalWidget.terminal) { nextLine() writeCharacters("==== Finished with exit code ${event.exitCode} ====") } @@ -60,16 +63,18 @@ class RemoveAllFilesFromDeviceAction : MicroPythonAction() { } ) - val toolWindow = ToolWindowManager.getInstance(project).getToolWindow("MicroPython") ?: return + val toolWindow = + ToolWindowManager.getInstance(project).getToolWindow(MicroPythonFacetType.PRESENTABLE_NAME) ?: return toolWindow.show() val contentManager = toolWindow.contentManager - var content = contentManager.findContent("Command") + var content = contentManager.contents.firstOrNull { it.getUserData(COMMAND_KEY) ?: false } if (content == null) { - content = ContentFactory.getInstance().createContent(null, "Command", true) + content = ContentFactory.getInstance().createContent(console.component, "Command", true) + content.putUserData(COMMAND_KEY, true) + content.isCloseable = true contentManager.addContent(content) } - content.component = console.component toolWindow.activate(null) contentManager.setSelectedContent(content) osProcessHandler.startNotify() diff --git a/src/main/kotlin/com/jetbrains/micropython/run/MicroPythonRunConfiguration.kt b/src/main/kotlin/com/jetbrains/micropython/run/MicroPythonRunConfiguration.kt index b3909e40..8e12c960 100644 --- a/src/main/kotlin/com/jetbrains/micropython/run/MicroPythonRunConfiguration.kt +++ b/src/main/kotlin/com/jetbrains/micropython/run/MicroPythonRunConfiguration.kt @@ -39,7 +39,6 @@ import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService import com.intellij.openapi.util.Key import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.vfs.StandardFileSystems -import com.intellij.openapi.wm.ToolWindowManager import com.intellij.util.PathUtil import com.intellij.util.PlatformUtils import com.jetbrains.micropython.repl.MicroPythonReplManager @@ -88,7 +87,6 @@ class MicroPythonRunConfiguration(project: Project, factory: ConfigurationFactor return RunStateWrapper(state) { ApplicationManager.getApplication().invokeLater { project.service().startOrRestartRepl() - ToolWindowManager.getInstance(project).getToolWindow("MicroPython")?.show() } } } diff --git a/src/main/kotlin/com/jetbrains/micropython/ui/MicroPythonToolWindowFactory.kt b/src/main/kotlin/com/jetbrains/micropython/ui/MicroPythonToolWindowFactory.kt index f08a2ca7..69632791 100644 --- a/src/main/kotlin/com/jetbrains/micropython/ui/MicroPythonToolWindowFactory.kt +++ b/src/main/kotlin/com/jetbrains/micropython/ui/MicroPythonToolWindowFactory.kt @@ -6,6 +6,8 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.wm.ToolWindow import com.intellij.openapi.wm.ToolWindowFactory import com.intellij.ui.content.ContentFactory +import com.jetbrains.micropython.repl.MICROPYTHON_REPL_CONTROL +import com.jetbrains.micropython.repl.MicroPythonReplControl import com.jetbrains.micropython.repl.MicroPythonReplManager import com.jetbrains.micropython.repl.ToolWindowReplTab import com.jetbrains.micropython.settings.firstMicroPythonFacet @@ -19,6 +21,15 @@ class MicroPythonToolWindowFactory : ToolWindowFactory, DumbAware { terminalContent.component = ToolWindowReplTab(it.module, terminalContent).createUI() toolWindow.contentManager.addContent(terminalContent) project.service().startOrRestartRepl() + project.messageBus.connect().subscribe(MICROPYTHON_REPL_CONTROL, + object : MicroPythonReplControl { + override fun stopRepl() {} + override fun startOrRestartRepl() { + toolWindow.contentManager.setSelectedContent(terminalContent) + toolWindow.show() + } + } + ) } }