void () { final int[] selected = myPackagesTable.getSelectedRows(); boolean upgradeAvailable = false; boolean canUninstall = selected.length != 0; boolean canInstall = installEnabled(); boolean canUpgrade = true; if (myPackageManagementService != null && selected.length != 0) { for (int i = 0; i != selected.length; ++i) { final int index = selected[i]; if (index >= myPackagesTable.getRowCount()) continue; final Object value = myPackagesTable.getValueAt(index, 0); if (value instanceof InstalledPackage pkg) { if (!canUninstallPackage(pkg)) { canUninstall = false; } canInstall = canInstallPackage(pkg); if (!canUpgradePackage(pkg)) { canUpgrade = false; } final String pyPackageName = pkg.getName(); final String availableVersion = (String)myPackagesTable.getValueAt(index, 2); if (!upgradeAvailable) { upgradeAvailable = isUpdateAvailable(pkg.getVersion(), availableVersion) && !myCurrentlyInstalling.contains(pyPackageName); } if (!canUninstall && !canUpgrade) break; } } } myUninstallButton.setEnabled(canUninstall); myInstallButton.setEnabled(canInstall); myUpgradeButton.setEnabled(upgradeAvailable && canUpgrade); }