mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PyRunConfigurationFactory in OpenAPI
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="python-psi-api" exported="" />
|
||||
<orderEntry type="module" module-name="platform-impl" />
|
||||
<orderEntry type="module" module-name="lang-api" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jetbrains.python.run;
|
||||
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.module.Module;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
public abstract class PyRunConfigurationFactory {
|
||||
public static PyRunConfigurationFactory getInstance() {
|
||||
return ServiceManager.getService(PyRunConfigurationFactory.class);
|
||||
}
|
||||
|
||||
public abstract PythonRunConfigurationParams createPythonScriptRunConfiguration(Module module, String scriptName);
|
||||
|
||||
public abstract RunnerAndConfigurationSettings createRunConfiguration(Module module, ConfigurationFactory factory);
|
||||
}
|
||||
-3
@@ -1,8 +1,5 @@
|
||||
package com.jetbrains.python.run;
|
||||
|
||||
import com.jetbrains.python.debugger.remote.PyPathMappingSettings;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author Leonid Shalupov
|
||||
*/
|
||||
@@ -87,6 +87,8 @@
|
||||
implementationClass="com.jetbrains.python.codeInsight.PyDeclarationRangeHandler"/>
|
||||
|
||||
<!-- Run/Debug -->
|
||||
<applicationService serviceInterface="com.jetbrains.python.run.PyRunConfigurationFactory"
|
||||
serviceImplementation="com.jetbrains.python.run.PyRunConfigurationFactoryImpl"/>
|
||||
<applicationService serviceInterface="com.jetbrains.python.run.PythonRunConfigurationExtensionsManager"
|
||||
serviceImplementation="com.jetbrains.python.run.PythonRunConfigurationExtensionsManager"/>
|
||||
<configurationType implementation="com.jetbrains.python.run.PythonConfigurationType"/>
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.jetbrains.python.run;
|
||||
|
||||
import com.intellij.execution.RunManagerEx;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
public class PyRunConfigurationFactoryImpl extends PyRunConfigurationFactory {
|
||||
@Override
|
||||
public PythonRunConfigurationParams createPythonScriptRunConfiguration(Module module, String scriptName) {
|
||||
RunnerAndConfigurationSettings settings = createRunConfiguration(module, PythonConfigurationType.getInstance().getFactory());
|
||||
PythonRunConfigurationParams configuration = (PythonRunConfigurationParams)settings.getConfiguration();
|
||||
configuration.setScriptName(scriptName);
|
||||
return configuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RunnerAndConfigurationSettings createRunConfiguration(Module module, ConfigurationFactory factory) {
|
||||
final Project project = module.getProject();
|
||||
final RunManagerEx runManagerEx = RunManagerEx.getInstanceEx(project);
|
||||
final RunnerAndConfigurationSettings settings = createConfigurationSettings(factory, module);
|
||||
runManagerEx.addConfiguration(settings, false);
|
||||
runManagerEx.setSelectedConfiguration(settings);
|
||||
return settings;
|
||||
}
|
||||
|
||||
private static RunnerAndConfigurationSettings createConfigurationSettings(ConfigurationFactory factory, @NotNull final Module module) {
|
||||
final RunnerAndConfigurationSettings settings =
|
||||
RunManagerEx.getInstanceEx(module.getProject()).createConfiguration(module.getName(), factory);
|
||||
ModuleBasedConfiguration configuration = (ModuleBasedConfiguration) settings.getConfiguration();
|
||||
configuration.setModule(module);
|
||||
return settings;
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,9 @@ import javax.swing.*;
|
||||
* @author yole
|
||||
*/
|
||||
public class PythonConfigurationType implements ConfigurationType {
|
||||
|
||||
private final PythonConfigurationFactory myFactory = new PythonConfigurationFactory(this);
|
||||
|
||||
public static PythonConfigurationType getInstance() {
|
||||
for(ConfigurationType configType: Extensions.getExtensions(CONFIGURATION_TYPE_EP)) {
|
||||
if (configType instanceof PythonConfigurationType) {
|
||||
@@ -51,7 +54,11 @@ public class PythonConfigurationType implements ConfigurationType {
|
||||
}
|
||||
|
||||
public ConfigurationFactory[] getConfigurationFactories() {
|
||||
return new ConfigurationFactory[]{new PythonConfigurationFactory(this)};
|
||||
return new ConfigurationFactory[]{myFactory};
|
||||
}
|
||||
|
||||
public PythonConfigurationFactory getFactory() {
|
||||
return myFactory;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -18,9 +18,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementAdapter;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.util.xmlb.XmlSerializer;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.debugger.remote.PyPathMappingSettings;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user