mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Disable package management actions for Docker based interpreters.
This commit is contained in:
@@ -279,7 +279,7 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
final int[] selected = myPackagesTable.getSelectedRows();
|
||||
boolean upgradeAvailable = false;
|
||||
boolean canUninstall = selected.length != 0;
|
||||
boolean canInstall = true;
|
||||
boolean canInstall = installEnabled();
|
||||
boolean canUpgrade = true;
|
||||
if (myPackageManagementService != null && selected.length != 0) {
|
||||
for (int i = 0; i != selected.length; ++i) {
|
||||
@@ -318,6 +318,10 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected boolean installEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected boolean canUpgradePackage(InstalledPackage pyPackage) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ public class PyInstalledPackagesPanel extends InstalledPackagesPanel {
|
||||
}
|
||||
myNotificationArea.showWarning(builder.toString());
|
||||
}
|
||||
myInstallButton.setEnabled(!invalid && myHasManagement);
|
||||
myInstallButton.setEnabled(!invalid && installEnabled());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -155,6 +155,11 @@ public class PyInstalledPackagesPanel extends InstalledPackagesPanel {
|
||||
@Override
|
||||
protected boolean canUninstallPackage(InstalledPackage pkg) {
|
||||
if (!myHasManagement) return false;
|
||||
|
||||
if (PythonSdkType.isDocker(getSelectedSdk())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (PythonSdkType.isVirtualEnv(getSelectedSdk()) && pkg instanceof PyPackage) {
|
||||
final String location = ((PyPackage)pkg).getLocation();
|
||||
if (location != null && location.startsWith(PySdkUtil.getUserSite())) {
|
||||
@@ -173,11 +178,24 @@ public class PyInstalledPackagesPanel extends InstalledPackagesPanel {
|
||||
|
||||
@Override
|
||||
protected boolean canInstallPackage(@NotNull final InstalledPackage pyPackage) {
|
||||
return installEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean installEnabled() {
|
||||
if (PythonSdkType.isDocker(getSelectedSdk())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return myHasManagement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canUpgradePackage(InstalledPackage pyPackage) {
|
||||
if (PythonSdkType.isDocker(getSelectedSdk())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return myHasManagement && !PyCondaPackageManagerImpl.PYTHON.equals(pyPackage.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,6 +250,12 @@ public class PythonSdkType extends SdkType {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isDocker(@Nullable final Sdk sdk) {
|
||||
return sdk != null && sdk.getSdkAdditionalData() instanceof RemoteSdkAdditionalData &&
|
||||
((RemoteSdkAdditionalData) sdk.getSdkAdditionalData()).getRemoteConnectionType() == CredentialsType.DOCKER;
|
||||
|
||||
}
|
||||
|
||||
public static boolean isRemote(@Nullable String sdkPath) {
|
||||
return isRemote(findSdkByPath(sdkPath));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user