mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
push out creation of PackageManagementService to clients of InstalledPackagesPanel
This commit is contained in:
@@ -7,6 +7,7 @@ import com.intellij.openapi.ui.LabeledComponent;
|
||||
import com.intellij.ui.CollectionComboBoxModel;
|
||||
import com.intellij.webcore.packaging.PackagesNotificationPanel;
|
||||
import com.jetbrains.python.packaging.ui.PyInstalledPackagesPanel;
|
||||
import com.jetbrains.python.packaging.ui.PyPackageManagementService;
|
||||
import com.jetbrains.python.sdk.PreferredSdkComparator;
|
||||
import com.jetbrains.python.sdk.PySdkListCellRenderer;
|
||||
import com.jetbrains.python.sdk.PythonSdkType;
|
||||
@@ -25,7 +26,7 @@ import java.util.List;
|
||||
public class PyManagePackagesDialog extends DialogWrapper {
|
||||
private JPanel myMainPanel;
|
||||
|
||||
public PyManagePackagesDialog(@NotNull Project project, Sdk sdk) {
|
||||
public PyManagePackagesDialog(@NotNull final Project project, Sdk sdk) {
|
||||
super(project, true);
|
||||
setTitle("Manage Python Packages");
|
||||
|
||||
@@ -37,7 +38,7 @@ public class PyManagePackagesDialog extends DialogWrapper {
|
||||
PackagesNotificationPanel notificationPanel = new PackagesNotificationPanel(project);
|
||||
final PyInstalledPackagesPanel packagesPanel = new PyInstalledPackagesPanel(project, notificationPanel);
|
||||
packagesPanel.setBorder(BorderFactory.createEmptyBorder(4, 0, 0, 0));
|
||||
packagesPanel.updatePackages(sdk);
|
||||
packagesPanel.updatePackages(sdk, new PyPackageManagementService(project, sdk));
|
||||
packagesPanel.updateNotifications(sdk);
|
||||
|
||||
myMainPanel = new JPanel(new BorderLayout());
|
||||
@@ -51,7 +52,7 @@ public class PyManagePackagesDialog extends DialogWrapper {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Sdk sdk = (Sdk) sdkComboBox.getSelectedItem();
|
||||
packagesPanel.updatePackages(sdk);
|
||||
packagesPanel.updatePackages(sdk, new PyPackageManagementService(project, sdk));
|
||||
packagesPanel.updateNotifications(sdk);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -45,6 +45,7 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
protected final JBTable myPackagesTable;
|
||||
private DefaultTableModel myPackagesTableModel;
|
||||
protected Sdk mySelectedSdk;
|
||||
protected PackageManagementService myPackageManagementService;
|
||||
protected final Project myProject;
|
||||
protected final PackagesNotificationPanel myNotificationArea;
|
||||
protected final List<Consumer<Sdk>> myPathChangedListeners = ContainerUtil.createLockFreeCopyOnWriteList();
|
||||
@@ -140,7 +141,7 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
|
||||
private ManagePackagesDialog createManagePackagesDialog() {
|
||||
return new ManagePackagesDialog(myProject,
|
||||
new PyPackageManagementService(myProject, mySelectedSdk),
|
||||
myPackageManagementService,
|
||||
new PackageManagementService.Listener() {
|
||||
@Override
|
||||
public void installationStarted(String packageName) {
|
||||
@@ -167,6 +168,7 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
final int[] rows = myPackagesTable.getSelectedRows();
|
||||
final Sdk selectedSdk = mySelectedSdk;
|
||||
final PackageManagementService selPackageManagementService = myPackageManagementService;
|
||||
if (selectedSdk != null) {
|
||||
for (int row : rows) {
|
||||
final Object pyPackage = myPackagesTableModel.getValueAt(row, 0);
|
||||
@@ -197,7 +199,7 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
@Override
|
||||
public void finished(final List<PyExternalProcessException> exceptions) {
|
||||
myPackagesTable.clearSelection();
|
||||
updatePackages(selectedSdk);
|
||||
updatePackages(selectedSdk, selPackageManagementService);
|
||||
myPackagesTable.setPaintBusy(false);
|
||||
currentlyInstalling.remove(packageName);
|
||||
if (exceptions.isEmpty()) {
|
||||
@@ -286,6 +288,7 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
final List<PyPackage> packages = getSelectedPackages();
|
||||
final Sdk sdk = mySelectedSdk;
|
||||
final PackageManagementService selPackageManagementService = myPackageManagementService;
|
||||
if (sdk != null) {
|
||||
PyPackageManagerImpl.UI ui = new PyPackageManagerImpl.UI(myProject, sdk, new PyPackageManagerImpl.UI.Listener() {
|
||||
@Override
|
||||
@@ -296,7 +299,7 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
@Override
|
||||
public void finished(final List<PyExternalProcessException> exceptions) {
|
||||
myPackagesTable.clearSelection();
|
||||
updatePackages(sdk);
|
||||
updatePackages(sdk, selPackageManagementService);
|
||||
myPackagesTable.setPaintBusy(false);
|
||||
if (exceptions.isEmpty()) {
|
||||
myNotificationArea.showSuccess("Packages successfully uninstalled");
|
||||
@@ -327,8 +330,9 @@ public class InstalledPackagesPanel extends JPanel {
|
||||
return results;
|
||||
}
|
||||
|
||||
public void updatePackages(Sdk selectedSdk) {
|
||||
public void updatePackages(Sdk selectedSdk, PackageManagementService packageManagementService) {
|
||||
mySelectedSdk = selectedSdk;
|
||||
myPackageManagementService = packageManagementService;
|
||||
myPackagesTable.clearSelection();
|
||||
myPackagesTableModel.getDataVector().clear();
|
||||
doUpdatePackages(selectedSdk);
|
||||
|
||||
@@ -138,7 +138,7 @@ public class PyInstalledPackagesPanel extends InstalledPackagesPanel {
|
||||
packageManager.showInstallationError(myProject, "Failed to install " + name, description);
|
||||
}
|
||||
packageManager.refresh();
|
||||
updatePackages(sdk);
|
||||
updatePackages(sdk, new PyPackageManagementService(myProject, sdk));
|
||||
for (Consumer<Sdk> listener : myPathChangedListeners) {
|
||||
listener.consume(sdk);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user