Use same py sdk renderer in run configurations as in project interpreter settings (PY-32814)

This commit is contained in:
Semyon Proshev
2018-12-03 15:06:27 +03:00
parent cb08bba0f0
commit 76dd5faa7a
3 changed files with 13 additions and 14 deletions

View File

@@ -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) {

View File

@@ -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();

View File

@@ -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)
}
}