mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Fix Execute selection in console for toolwindow.
This commit is contained in:
@@ -26,7 +26,7 @@
|
||||
|
||||
<project-components>
|
||||
<component>
|
||||
<implementation-class>com.jetbrains.python.PythonConsoleToolWindow</implementation-class>
|
||||
<implementation-class>com.jetbrains.python.console.PythonConsoleToolWindow</implementation-class>
|
||||
</component>
|
||||
</project-components>
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
<!-- Console -->
|
||||
<toolWindow id="Python Console" anchor="bottom" icon="PythonIcons.Python.PythonConsoleToolWindow"
|
||||
factoryClass="com.jetbrains.python.PythonConsoleToolWindowFactory" secondary="false"/>
|
||||
factoryClass="com.jetbrains.python.console.PythonConsoleToolWindowFactory" secondary="false"/>
|
||||
</extensions>
|
||||
|
||||
<actions>
|
||||
|
||||
@@ -654,7 +654,7 @@
|
||||
|
||||
|
||||
<action id="ExecuteInPyConsoleAction"
|
||||
class="com.jetbrains.python.actions.ExecuteInConsoleAction"
|
||||
class="com.jetbrains.python.actions.PyExecuteSelectionAction"
|
||||
text="Execute selection in console"
|
||||
description="Executes selected code fragment in Python/Django console">
|
||||
<add-to-group group-id="EditorPopupMenu" anchor="before" relative-to-action="CompareClipboardWithSelection"/>
|
||||
|
||||
+42
-12
@@ -15,7 +15,12 @@
|
||||
*/
|
||||
package com.jetbrains.python.actions;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.FluentIterable;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.execution.ExecutionHelper;
|
||||
import com.intellij.execution.console.LanguageConsoleView;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
@@ -25,22 +30,28 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.ui.content.Content;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.NotNullFunction;
|
||||
import com.jetbrains.python.console.PyCodeExecutor;
|
||||
import com.jetbrains.python.console.PydevConsoleRunner;
|
||||
import com.jetbrains.python.console.PythonConsoleToolWindow;
|
||||
import com.jetbrains.python.console.PythonConsoleToolWindowFactory;
|
||||
import com.jetbrains.python.psi.PyFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecuteInConsoleAction extends AnAction {
|
||||
public class PyExecuteSelectionAction extends AnAction {
|
||||
|
||||
public static final String EXECUTE_SELECTION_IN_CONSOLE = "Execute Selection in Console";
|
||||
|
||||
public ExecuteInConsoleAction() {
|
||||
public PyExecuteSelectionAction() {
|
||||
super(EXECUTE_SELECTION_IN_CONSOLE);
|
||||
}
|
||||
|
||||
@@ -183,6 +194,21 @@ public class ExecuteInConsoleAction extends AnAction {
|
||||
}
|
||||
|
||||
private static Collection<RunContentDescriptor> getConsoles(Project project) {
|
||||
PythonConsoleToolWindow toolWindow = PythonConsoleToolWindow.getInstance(project);
|
||||
|
||||
if (toolWindow != null) {
|
||||
ToolWindow tw = toolWindow.getToolWindow();
|
||||
return FluentIterable.from(Lists.newArrayList(tw.getContentManager().getContents()))
|
||||
.transform(new Function<Content, RunContentDescriptor>() {
|
||||
@Override
|
||||
public RunContentDescriptor apply(@Nullable Content input) {
|
||||
return input != null ? input.getUserData(PythonConsoleToolWindow.CONTENT_DESCRIPTOR) : null;
|
||||
}
|
||||
}).filter(
|
||||
Predicates.notNull()).toList();
|
||||
}
|
||||
|
||||
|
||||
return ExecutionHelper.findRunningConsole(project, new NotNullFunction<RunContentDescriptor, Boolean>() {
|
||||
@NotNull
|
||||
@Override
|
||||
@@ -211,16 +237,20 @@ public class ExecuteInConsoleAction extends AnAction {
|
||||
private static void startConsole(final Project project,
|
||||
final Consumer<PyCodeExecutor> consumer,
|
||||
Module context) {
|
||||
//TODO
|
||||
//PydevConsoleRunner runner = PydevConsoleRunner.runPythonConsole(project, context);
|
||||
//runner.addConsoleListener(new PydevConsoleRunner.ConsoleListener() {
|
||||
// @Override
|
||||
// public void handleConsoleInitialized(LanguageConsoleView consoleView) {
|
||||
// if (consoleView instanceof PyCodeExecutor) {
|
||||
// consumer.consume((PyCodeExecutor)consoleView);
|
||||
// }
|
||||
// }
|
||||
//});
|
||||
ToolWindow toolWindow = ToolWindowManager.getInstance(project).getToolWindow(PythonConsoleToolWindowFactory.ID);
|
||||
|
||||
|
||||
PydevConsoleRunner runner = PydevConsoleRunner.runPythonConsole(project, context, toolWindow != null ? PythonConsoleToolWindow
|
||||
.toolWindowConsole(toolWindow)
|
||||
: PydevConsoleRunner.factory());
|
||||
runner.addConsoleListener(new PydevConsoleRunner.ConsoleListener() {
|
||||
@Override
|
||||
public void handleConsoleInitialized(LanguageConsoleView consoleView) {
|
||||
if (consoleView instanceof PyCodeExecutor) {
|
||||
consumer.consume((PyCodeExecutor)consoleView);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static boolean canFindConsole(AnActionEvent e) {
|
||||
+5
-4
@@ -1,9 +1,10 @@
|
||||
package com.jetbrains.python;
|
||||
package com.jetbrains.python.console;
|
||||
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.ui.SimpleToolWindowPanel;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
|
||||
@@ -11,8 +12,6 @@ import com.intellij.openapi.wm.ex.ToolWindowManagerListener;
|
||||
import com.intellij.openapi.wm.impl.content.ToolWindowContentUi;
|
||||
import com.intellij.ui.content.Content;
|
||||
import com.intellij.ui.content.ContentFactory;
|
||||
import com.jetbrains.python.console.PyConsoleType;
|
||||
import com.jetbrains.python.console.PydevConsoleRunner;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -25,6 +24,7 @@ import java.util.Map;
|
||||
* @author traff
|
||||
*/
|
||||
public class PythonConsoleToolWindow {
|
||||
public static final Key<RunContentDescriptor> CONTENT_DESCRIPTOR = Key.create("CONTENT_DESCRIPTOR");
|
||||
|
||||
private final Project myProject;
|
||||
|
||||
@@ -119,10 +119,11 @@ public class PythonConsoleToolWindow {
|
||||
|
||||
private static void resetContent(RunContentDescriptor contentDescriptor, SimpleToolWindowPanel panel, Content content) {
|
||||
panel.setContent(contentDescriptor.getComponent());
|
||||
//panel.addFocusListener(createFocusListener(toolWindow));
|
||||
|
||||
content.setComponent(panel);
|
||||
content.setPreferredFocusableComponent(contentDescriptor.getComponent());
|
||||
|
||||
content.putUserData(CONTENT_DESCRIPTOR, contentDescriptor);
|
||||
}
|
||||
|
||||
private static FocusListener createFocusListener(final ToolWindow toolWindow) {
|
||||
+1
-2
@@ -13,13 +13,12 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jetbrains.python;
|
||||
package com.jetbrains.python.console;
|
||||
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowFactory;
|
||||
import com.jetbrains.python.console.PydevConsoleRunner;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
+1
-3
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jetbrains.python;
|
||||
package com.jetbrains.python.console;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Predicate;
|
||||
@@ -26,8 +26,6 @@ import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.ui.content.Content;
|
||||
import com.jetbrains.python.console.PyConsoleType;
|
||||
import com.jetbrains.python.console.PydevConsoleRunner;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
Reference in New Issue
Block a user