public void initTerminal(final ToolWindow toolWindow) { LocalTerminalDirectRunner terminalRunner = LocalTerminalDirectRunner.createTerminalRunner(myProject); toolWindow.setToHideOnEmptyContent(true); Content content = createTerminalInContentPanel(terminalRunner, toolWindow); toolWindow.getContentManager().addContent(content); ((ToolWindowManagerEx) ToolWindowManager.getInstance(myProject)) .addToolWindowManagerListener( new ToolWindowManagerListener() { @Override public void toolWindowRegistered(@NotNull String id) {} @Override public void stateChanged() { ToolWindow window = ToolWindowManager.getInstance(myProject) .getToolWindow(TerminalToolWindowFactory.TOOL_WINDOW_ID); if (window != null) { boolean visible = window.isVisible(); if (visible && toolWindow.getContentManager().getContentCount() == 0) { initTerminal(window); } } } }); Disposer.register( myProject, new Disposable() { @Override public void dispose() { if (myTerminalWidget != null) { myTerminalWidget.dispose(); myTerminalWidget = null; } } }); if (myDockContainer == null) { myDockContainer = new TerminalDockContainer(toolWindow); Disposer.register(myProject, myDockContainer); DockManager.getInstance(myProject).register(myDockContainer); } }
public void openLocalSession(Project project, ToolWindow terminal) { LocalTerminalDirectRunner terminalRunner = LocalTerminalDirectRunner.createTerminalRunner(project); openSession(terminal, terminalRunner); }