From 6f36a417e865ab09b423f3d73eb10191a7878de4 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Wed, 17 Aug 2016 20:29:29 +0300 Subject: [PATCH] Disabled ability to remove detected Python interpreter (PY-13708) The list of removed interpreters that were detected at the same time was confusing to users since its state was hidden with no ability to revert an interpreter to become detected, but not added. --- .../python/PythonSdkChooserCombo.java | 4 - .../PythonGenerateProjectCallback.java | 1 - .../PyActiveSdkConfigurable.java | 3 - .../PyConfigurableInterpreterList.java | 15 +--- .../configuration/PythonSdkDetailsDialog.java | 6 +- python/src/META-INF/python-core-common.xml | 2 - .../python/sdk/CreateVirtualEnvDialog.java | 3 - .../jetbrains/python/sdk/PySdkService.java | 82 ------------------- .../python/sdk/PythonSdkDetailsStep.java | 5 -- 9 files changed, 5 insertions(+), 116 deletions(-) delete mode 100644 python/src/com/jetbrains/python/sdk/PySdkService.java diff --git a/python/ide/src/com/jetbrains/python/PythonSdkChooserCombo.java b/python/ide/src/com/jetbrains/python/PythonSdkChooserCombo.java index 032bda6b3741..1affe3370eeb 100644 --- a/python/ide/src/com/jetbrains/python/PythonSdkChooserCombo.java +++ b/python/ide/src/com/jetbrains/python/PythonSdkChooserCombo.java @@ -27,7 +27,6 @@ import com.intellij.ui.ComboboxWithBrowseButton; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.python.configuration.PyConfigurableInterpreterList; import com.jetbrains.python.sdk.PySdkListCellRenderer; -import com.jetbrains.python.sdk.PySdkService; import com.jetbrains.python.sdk.PythonSdkDetailsStep; import javax.swing.*; @@ -77,9 +76,6 @@ public class PythonSdkChooserCombo extends ComboboxWithBrowseButton { final Sdk oldSelectedSdk = (Sdk)comboBox.getSelectedItem(); PythonSdkDetailsStep.show(project, sdks, null, this, getButton().getLocationOnScreen(), sdk -> { if (sdk == null) return; - final PySdkService sdkService = PySdkService.getInstance(); - sdkService.restoreSdk(sdk); - final ProjectSdksModel projectSdksModel = interpreterList.getModel(); if (projectSdksModel.findSdk(sdk) == null) { projectSdksModel.addSdk(sdk); diff --git a/python/ide/src/com/jetbrains/python/newProject/actions/PythonGenerateProjectCallback.java b/python/ide/src/com/jetbrains/python/newProject/actions/PythonGenerateProjectCallback.java index d2030822d229..accace38f836 100644 --- a/python/ide/src/com/jetbrains/python/newProject/actions/PythonGenerateProjectCallback.java +++ b/python/ide/src/com/jetbrains/python/newProject/actions/PythonGenerateProjectCallback.java @@ -116,7 +116,6 @@ public class PythonGenerateProjectCallback implements NullableConsumer result) { - final PySdkService sdkService = PySdkService.getInstance(); final List sdkHomes = new ArrayList<>(); sdkHomes.addAll(VirtualEnvSdkFlavor.INSTANCE.suggestHomePaths()); for (PythonSdkFlavor flavor : PythonSdkFlavor.getApplicableFlavors()) { @@ -84,16 +84,9 @@ public class PyConfigurableInterpreterList { sdkHomes.addAll(flavor.suggestHomePaths()); } Collections.sort(sdkHomes); - sdkHomes.addAll(sdkService.getAddedSdks()); for (String sdkHome : SdkConfigurationUtil.filterExistingPaths(PythonSdkType.getInstance(), sdkHomes, getModel().getSdks())) { result.add(new PyDetectedSdk(sdkHome)); } - Iterables.removeIf(result, new Predicate() { - @Override - public boolean apply(@Nullable Sdk input) { - return input != null && sdkService.isRemoved(input); - } - }); } public List getAllPythonSdks() { diff --git a/python/python-community-configure/src/com/jetbrains/python/configuration/PythonSdkDetailsDialog.java b/python/python-community-configure/src/com/jetbrains/python/configuration/PythonSdkDetailsDialog.java index 521e3e982f6e..9fbec16b0f34 100644 --- a/python/python-community-configure/src/com/jetbrains/python/configuration/PythonSdkDetailsDialog.java +++ b/python/python-community-configure/src/com/jetbrains/python/configuration/PythonSdkDetailsDialog.java @@ -154,6 +154,7 @@ public class PythonSdkDetailsDialog extends DialogWrapper { updateOkButton(); } }) + .setRemoveActionUpdater(e -> !(getSelectedSdk() instanceof PyDetectedSdk)) .addExtraAction(new ToggleVirtualEnvFilterButton()) .addExtraAction(new ShowPathButton()); @@ -279,9 +280,6 @@ public class PythonSdkDetailsDialog extends DialogWrapper { private void addCreatedSdk(@Nullable final Sdk sdk, boolean newVirtualEnv) { if (sdk != null) { - final PySdkService sdkService = PySdkService.getInstance(); - sdkService.restoreSdk(sdk); - boolean isVirtualEnv = PythonSdkType.isVirtualEnv(sdk); if (isVirtualEnv && !newVirtualEnv) { AddVEnvOptionsDialog dialog = new AddVEnvOptionsDialog(myMainPanel); @@ -390,8 +388,6 @@ public class PythonSdkDetailsDialog extends DialogWrapper { final Sdk currentSdk = getSelectedSdk(); if (currentSdk != null) { final Sdk sdk = myProjectSdksModel.findSdk(currentSdk); - final PySdkService sdkService = PySdkService.getInstance(); - sdkService.removeSdk(currentSdk); DumbService.allowStartingDumbModeInside(DumbModePermission.MAY_START_MODAL, () -> SdkConfigurationUtil.removeSdk(sdk)); myProjectSdksModel.removeSdk(sdk); diff --git a/python/src/META-INF/python-core-common.xml b/python/src/META-INF/python-core-common.xml index 28636cc51b6d..ddbefb393665 100644 --- a/python/src/META-INF/python-core-common.xml +++ b/python/src/META-INF/python-core-common.xml @@ -428,8 +428,6 @@ serviceImplementation="com.jetbrains.python.codeInsight.PyCodeInsightSettings"/> - { - - public static PySdkService getInstance() { - return ServiceManager.getService(PySdkService.class); - } - - public Set REMOVED_SDKS = new HashSet<>(); - public Set ADDED_SDKS = new HashSet<>(); - - public void removeSdk(@NotNull final Sdk sdk) { - final String homePath = sdk.getHomePath(); - if (ADDED_SDKS.contains(homePath)) - ADDED_SDKS.remove(homePath); - REMOVED_SDKS.add(homePath); - } - - public void addSdk(@NotNull final Sdk sdk) { - ADDED_SDKS.add(sdk.getHomePath()); - } - - public Set getAddedSdks() { - return ADDED_SDKS; - } - - public void restoreSdk(@NotNull final Sdk sdk) { - final String homePath = sdk.getHomePath(); - if (REMOVED_SDKS.contains(homePath)) { - REMOVED_SDKS.remove(homePath); - } - } - - public boolean isRemoved(@NotNull final Sdk sdk) { - final String homePath = sdk.getHomePath(); - return REMOVED_SDKS.contains(homePath); - } - - public void solidifySdk(@NotNull final Sdk sdk) { - final String homePath = sdk.getHomePath(); - if (ADDED_SDKS.contains(homePath)) { - ADDED_SDKS.remove(homePath); - } - } - - @Override - public PySdkService getState() { - return this; - } - - @Override - public void loadState(PySdkService state) { - XmlSerializerUtil.copyBean(state, this); - } -} diff --git a/python/src/com/jetbrains/python/sdk/PythonSdkDetailsStep.java b/python/src/com/jetbrains/python/sdk/PythonSdkDetailsStep.java index abd080c2714b..755858b51c8d 100644 --- a/python/src/com/jetbrains/python/sdk/PythonSdkDetailsStep.java +++ b/python/src/com/jetbrains/python/sdk/PythonSdkDetailsStep.java @@ -45,7 +45,6 @@ import java.awt.*; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Set; public class PythonSdkDetailsStep extends BaseListPopupStep { @Nullable private DialogWrapper myMore; @@ -174,10 +173,6 @@ public class PythonSdkDetailsStep extends BaseListPopupStep { allSdks.add(new PyDetectedSdk(string)); } } - final Set sdks = PySdkService.getInstance().getAddedSdks(); - for (String string : SdkConfigurationUtil.filterExistingPaths(PythonSdkType.getInstance(), sdks, myExistingSdks)) { - allSdks.add(new PyDetectedSdk(string)); - } if (myProject != null) { dialog = new CreateVirtualEnvDialog(myProject, allSdks); }