From e7ff49b82da151037ef5f221a95b95c897deab30 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 23 Oct 2009 13:32:32 -0700 Subject: [PATCH] SDK Manager: properly reset tree when changing updates only SDK BUG 2210573 Change-Id: I32ce7387470cab771001a783b8afad399ab98f6a --- .../repository/RemotePackagesPage.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java index 8757e668d..861389f12 100755 --- a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java +++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java @@ -283,7 +283,32 @@ public class RemotePackagesPage extends Composite implements ISdkListener { SettingsController controller = mUpdaterData.getSettingsController(); controller.setShowUpdateOnly(mUpdateOnlyCheckBox.getSelection()); controller.saveSettings(); + + // Get the list of selected archives + ArrayList archives = new ArrayList(); + for (Object element : mTreeViewerSources.getCheckedElements()) { + if (element instanceof Archive) { + archives.add((Archive) element); + } + // Deselect them all + mTreeViewerSources.setChecked(element, false); + } + mTreeViewerSources.refresh(); + + // Now reselect those that still exist in the tree but only if they + // are compatible archives + for (Archive a : archives) { + if (a.isCompatible() && mTreeViewerSources.setChecked(a, true)) { + // If we managed to select the archive, also select the parent package. + // Technically we should only select the parent package if *all* the + // compatible archives children are selected. In practice we'll rarely + // have more than one compatible archive per package. + mTreeViewerSources.setChecked(a.getParentPackage(), true); + } + } + + updateButtonsState(); } private void onInstallSelectedArchives() {