From 999b0679fa7a310d3642ee73ab6df20d30ab7a63 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Thu, 30 Apr 2015 16:45:23 +0300 Subject: [PATCH] fixed PY-15720 IPython Notebook: add close button for the console --- .../execution/RunContentExecutor.java | 2 +- .../jetbrains/plugins/ipnb/IpnbConsole.java | 64 ------------------- .../configuration/IpnbConnectionManager.java | 22 ++++++- 3 files changed, 21 insertions(+), 67 deletions(-) delete mode 100644 python/ipnb/src/org/jetbrains/plugins/ipnb/IpnbConsole.java diff --git a/platform/lang-impl/src/com/intellij/execution/RunContentExecutor.java b/platform/lang-impl/src/com/intellij/execution/RunContentExecutor.java index d16c38598b06..2064ea24b59d 100644 --- a/platform/lang-impl/src/com/intellij/execution/RunContentExecutor.java +++ b/platform/lang-impl/src/com/intellij/execution/RunContentExecutor.java @@ -105,7 +105,7 @@ public class RunContentExecutor implements Disposable { final JComponent consolePanel = createConsolePanel(console, actions); RunContentDescriptor descriptor = new RunContentDescriptor(console, myProcess, consolePanel, myTitle); - Disposer.register(this, descriptor); + Disposer.register(console, descriptor); actions.add(new RerunAction(consolePanel)); actions.add(new StopAction()); diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/IpnbConsole.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/IpnbConsole.java deleted file mode 100644 index 1bae047df092..000000000000 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/IpnbConsole.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.jetbrains.plugins.ipnb; - -import com.intellij.execution.ExecutionManager; -import com.intellij.execution.Executor; -import com.intellij.execution.executors.DefaultRunExecutor; -import com.intellij.execution.impl.ConsoleViewImpl; -import com.intellij.execution.process.KillableColoredProcessHandler; -import com.intellij.execution.process.UnixProcessManager; -import com.intellij.execution.ui.RunContentDescriptor; -import com.intellij.icons.AllIcons; -import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.project.DumbAware; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Disposer; -import org.jetbrains.annotations.NotNull; - -import javax.swing.*; -import java.awt.*; - -public class IpnbConsole extends ConsoleViewImpl { - private final KillableColoredProcessHandler myProcess; - - public IpnbConsole(@NotNull final Project project, @NotNull final KillableColoredProcessHandler processHandler) { - super(project, false); - myProcess = processHandler; - - final Executor executor = DefaultRunExecutor.getRunExecutorInstance(); - final DefaultActionGroup actions = new DefaultActionGroup(); - - final JComponent consolePanel = createConsolePanel(actions); - final RunContentDescriptor descriptor = new RunContentDescriptor(this, myProcess, consolePanel, "IPython Notebook"); - - Disposer.register(this, descriptor); - actions.add(new StopAction()); - ExecutionManager.getInstance(getProject()).getContentManager().showRunContent(executor, descriptor); - } - - private JComponent createConsolePanel(ActionGroup actions) { - JPanel panel = new JPanel(); - panel.setLayout(new BorderLayout()); - panel.add(getComponent(), BorderLayout.CENTER); - panel.add(ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, actions, false).getComponent(), BorderLayout.WEST); - return panel; - } - - private class StopAction extends AnAction implements DumbAware { - public StopAction() { - super("Stop", "Stop", AllIcons.Actions.Suspend); - } - - @Override - public void actionPerformed(AnActionEvent e) { - if (myProcess.isProcessTerminated()) return; - myProcess.destroyProcess(); - UnixProcessManager.sendSigIntToProcessTree(myProcess.getProcess()); - } - - @Override - public void update(AnActionEvent e) { - e.getPresentation().setVisible(true); - e.getPresentation().setEnabled(!myProcess.isProcessTerminated()); - } - } -} diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java index c6bb4c83de8b..b7d17c74cfaa 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java @@ -21,6 +21,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.popup.Balloon; import com.intellij.openapi.ui.popup.BalloonBuilder; import com.intellij.openapi.ui.popup.JBPopupFactory; +import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -33,7 +34,6 @@ import com.jetbrains.python.packaging.PyPackageManager; import com.jetbrains.python.sdk.PythonSdkType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.ipnb.IpnbConsole; import org.jetbrains.plugins.ipnb.editor.IpnbFileEditor; import org.jetbrains.plugins.ipnb.editor.panels.code.IpnbCodePanel; import org.jetbrains.plugins.ipnb.format.cells.output.IpnbOutputCell; @@ -302,7 +302,25 @@ public final class IpnbConnectionManager implements ProjectComponent { @Override public void run() { new RunContentExecutor(myProject, processHandler) - .withConsole(new IpnbConsole(myProject, processHandler)) + .withTitle("IPython Notebook") + .withStop(new Runnable() { + @Override + public void run() { + processHandler.destroyProcess(); + UnixProcessManager.sendSigIntToProcessTree(processHandler.getProcess()); + } + }, new Computable() { + @Override + public Boolean compute() { + return !processHandler.isProcessTerminated(); + } + }) + .withRerun(new Runnable() { + @Override + public void run() { + startIpythonServer(url, fileEditor); + } + }) .run(); } });