diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/LocalPackagesPage.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/LocalPackagesPage.java index 804b05391..f87f30abd 100755 --- a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/LocalPackagesPage.java +++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/LocalPackagesPage.java @@ -241,7 +241,7 @@ public class LocalPackagesPage extends Composite implements ISdkListener { } private void onUpdateInstalledPackage() { - mUpdaterData.updateAll(null /*selectedArchives*/); + mUpdaterData.updateOrInstallAll(null /*selectedArchives*/); } private void onDeleteSelected() { 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 88ad591f2..e187de670 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 @@ -292,7 +292,7 @@ public class RemotePackagesPage extends Composite implements ISdkListener { } if (mUpdaterData != null) { - mUpdaterData.updateAll(archives); + mUpdaterData.updateOrInstallAll(archives); } } diff --git a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java index 77760a385..f8373dd6d 100755 --- a/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java +++ b/tools/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java @@ -314,13 +314,24 @@ class UpdaterData { * This can be null, in which case a list of remote archive is fetched from all * available sources. */ - public void updateAll(Collection selectedArchives) { + public void updateOrInstallAll(Collection selectedArchives) { if (selectedArchives == null) { refreshSources(true); } final Map updates = findUpdates(selectedArchives); + if (selectedArchives != null) { + // Not only we want to perform updates but we also want to install the + // selected archives. If they do not match an update, list them anyway + // except they map themselves to null (no "old" archive) + for (Archive a : selectedArchives) { + if (!updates.containsValue(a)) { + updates.put(a, null); + } + } + } + UpdateChooserDialog dialog = new UpdateChooserDialog(this, updates); dialog.open();