From 941b3c8ab5704dfcbd541af0f4fdcfe50d47974b Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 3 May 2013 20:04:40 +0200 Subject: [PATCH] push out creation of PackageManagementService to clients of InstalledPackagesPanel --- .../python/packaging/PyManagePackagesDialog.java | 7 ++++--- .../python/packaging/ui/InstalledPackagesPanel.java | 12 ++++++++---- .../packaging/ui/PyInstalledPackagesPanel.java | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/python/pluginSrc/com/jetbrains/python/packaging/PyManagePackagesDialog.java b/python/pluginSrc/com/jetbrains/python/packaging/PyManagePackagesDialog.java index 4b46fb3b1227..ae498a368b1f 100644 --- a/python/pluginSrc/com/jetbrains/python/packaging/PyManagePackagesDialog.java +++ b/python/pluginSrc/com/jetbrains/python/packaging/PyManagePackagesDialog.java @@ -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); } }); diff --git a/python/src/com/jetbrains/python/packaging/ui/InstalledPackagesPanel.java b/python/src/com/jetbrains/python/packaging/ui/InstalledPackagesPanel.java index f026bb8301a0..3a5bca7fc7fb 100644 --- a/python/src/com/jetbrains/python/packaging/ui/InstalledPackagesPanel.java +++ b/python/src/com/jetbrains/python/packaging/ui/InstalledPackagesPanel.java @@ -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> 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 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 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 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); diff --git a/python/src/com/jetbrains/python/packaging/ui/PyInstalledPackagesPanel.java b/python/src/com/jetbrains/python/packaging/ui/PyInstalledPackagesPanel.java index e782414e6890..c58de888f597 100644 --- a/python/src/com/jetbrains/python/packaging/ui/PyInstalledPackagesPanel.java +++ b/python/src/com/jetbrains/python/packaging/ui/PyInstalledPackagesPanel.java @@ -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 listener : myPathChangedListeners) { listener.consume(sdk); }