mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
Use same py sdk renderer in run configurations as in project interpreter settings (PY-32814)
This commit is contained in:
@@ -12,7 +12,6 @@ import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.SdkModel;
|
||||
import com.intellij.openapi.projectRoots.impl.SdkListCellRenderer;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.ui.ComboBox;
|
||||
@@ -29,6 +28,7 @@ import com.jetbrains.python.configuration.PyConfigurableInterpreterList;
|
||||
import com.jetbrains.python.configuration.PyConfigureInterpretersLinkPanel;
|
||||
import com.jetbrains.python.run.AbstractPyCommonOptionsForm;
|
||||
import com.jetbrains.python.run.PyCommonOptionsFormData;
|
||||
import com.jetbrains.python.sdk.PySdkListCellRenderer;
|
||||
import com.jetbrains.python.sdk.PySdkUtil;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -65,7 +65,6 @@ public class PyIdeCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
private final Project myProject;
|
||||
private List<Sdk> myPythonSdks;
|
||||
private boolean myInterpreterRemote;
|
||||
private final HideableDecorator myDecorator;
|
||||
|
||||
private final List<Consumer<Boolean>> myRemoteInterpreterModeListeners = Lists.newArrayList();
|
||||
|
||||
@@ -117,7 +116,7 @@ public class PyIdeCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
|
||||
updateRemoteInterpreterMode();
|
||||
|
||||
myDecorator = new HideableDecorator(myHideablePanel, "Environment", false) {
|
||||
final HideableDecorator decorator = new HideableDecorator(myHideablePanel, "Environment", false) {
|
||||
@Override
|
||||
protected void on() {
|
||||
super.on();
|
||||
@@ -134,8 +133,8 @@ public class PyIdeCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
PropertiesComponent.getInstance().setValue(EXPAND_PROPERTY_KEY, String.valueOf(isExpanded()), "true");
|
||||
}
|
||||
};
|
||||
myDecorator.setOn(PropertiesComponent.getInstance().getBoolean(EXPAND_PROPERTY_KEY, true));
|
||||
myDecorator.setContentComponent(myMainPanel);
|
||||
decorator.setOn(PropertiesComponent.getInstance().getBoolean(EXPAND_PROPERTY_KEY, true));
|
||||
decorator.setContentComponent(myMainPanel);
|
||||
|
||||
|
||||
addInterpreterModeListener((b) ->
|
||||
@@ -222,7 +221,7 @@ public class PyIdeCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
private void updateDefaultInterpreter(Module module) {
|
||||
final Sdk sdk = module == null ? null : ModuleRootManager.getInstance(module).getSdk();
|
||||
String projectSdkName = sdk == null ? "none" : sdk.getName();
|
||||
myInterpreterComboBox.setRenderer(new SdkListCellRenderer("Project Default (" + projectSdkName + ")"));
|
||||
myInterpreterComboBox.setRenderer(new PySdkListCellRenderer(null,"Project Default (" + projectSdkName + ")"));
|
||||
}
|
||||
|
||||
public void updateSdkList(boolean preserveSelection, PyConfigurableInterpreterList myInterpreterList) {
|
||||
|
||||
@@ -10,7 +10,6 @@ import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.impl.SdkListCellRenderer;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.ui.configuration.ModulesAlphaComparator;
|
||||
@@ -24,6 +23,7 @@ import com.intellij.ui.components.JBCheckBox;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import com.intellij.util.PathMappingSettings;
|
||||
import com.jetbrains.python.sdk.PreferredSdkComparator;
|
||||
import com.jetbrains.python.sdk.PySdkListCellRenderer;
|
||||
import com.jetbrains.python.sdk.PySdkUtil;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -58,7 +58,6 @@ public class PyPluginCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
private JBCheckBox myAddContentRootsCheckbox;
|
||||
private JBCheckBox myAddSourceRootsCheckbox;
|
||||
private JComponent labelAnchor;
|
||||
private final HideableDecorator myDecorator;
|
||||
|
||||
private final List<Consumer<Boolean>> myRemoteInterpreterModeListeners = Lists.newArrayList();
|
||||
|
||||
@@ -72,7 +71,7 @@ public class PyPluginCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
myModuleComboBox.setSelectedModule(selection);
|
||||
|
||||
myInterpreterComboBox.setMinimumAndPreferredWidth(100);
|
||||
myInterpreterComboBox.setRenderer(new SdkListCellRenderer("<Project Default>"));
|
||||
myInterpreterComboBox.setRenderer(new PySdkListCellRenderer(null,"<Project Default>"));
|
||||
myWorkingDirectoryTextField.addBrowseFolderListener("Select Working Directory", "", data.getProject(),
|
||||
FileChooserDescriptorFactory.createSingleFolderDescriptor());
|
||||
|
||||
@@ -90,7 +89,7 @@ public class PyPluginCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
setAnchor(myEnvsComponent.getLabel());
|
||||
|
||||
|
||||
myDecorator = new HideableDecorator(myHideablePanel, "Environment", false) {
|
||||
final HideableDecorator decorator = new HideableDecorator(myHideablePanel, "Environment", false) {
|
||||
@Override
|
||||
protected void on() {
|
||||
super.on();
|
||||
@@ -107,8 +106,8 @@ public class PyPluginCommonOptionsForm implements AbstractPyCommonOptionsForm {
|
||||
PropertiesComponent.getInstance().setValue(EXPAND_PROPERTY_KEY, String.valueOf(isExpanded()), "true");
|
||||
}
|
||||
};
|
||||
myDecorator.setOn(PropertiesComponent.getInstance().getBoolean(EXPAND_PROPERTY_KEY, true));
|
||||
myDecorator.setContentComponent(myMainPanel);
|
||||
decorator.setOn(PropertiesComponent.getInstance().getBoolean(EXPAND_PROPERTY_KEY, true));
|
||||
decorator.setContentComponent(myMainPanel);
|
||||
myPathMappingsComponent.setAnchor(myEnvsComponent.getLabel());
|
||||
updateControls();
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@ import javax.swing.JList
|
||||
/**
|
||||
* @author vlan
|
||||
*/
|
||||
open class PySdkListCellRenderer(private val sdkModifiers: Map<Sdk, SdkModificator>?) : ColoredListCellRenderer<Any>() {
|
||||
open class PySdkListCellRenderer @JvmOverloads constructor(private val sdkModifiers: Map<Sdk, SdkModificator>?,
|
||||
private val nullSdk: String = "<No interpreter>") : ColoredListCellRenderer<Any>() {
|
||||
override fun getListCellRendererComponent(list: JList<out Any>?, value: Any?, index: Int, selected: Boolean,
|
||||
hasFocus: Boolean): Component =
|
||||
when (value) {
|
||||
@@ -54,7 +55,7 @@ open class PySdkListCellRenderer(private val sdkModifiers: Map<Sdk, SdkModificat
|
||||
icon = customizeIcon(value)
|
||||
}
|
||||
is String -> append(value)
|
||||
null -> append("<No interpreter>")
|
||||
null -> append(nullSdk)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user