aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-06-11 12:04:39 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-06-11 12:04:39 -0700
commitf70a4c1ef6661161f57cf20153c30ebe3eebc7fa (patch)
tree8ab80b21e68549fb1db95d8dbc44e349b4c948bd
parentdc65c324269953f2b09c15def937a8202a698682 (diff)
parent8372070470123e93b01fc5daa5372c6eeebc1a4e (diff)
downloadsdk-f70a4c1ef6661161f57cf20153c30ebe3eebc7fa.zip
sdk-f70a4c1ef6661161f57cf20153c30ebe3eebc7fa.tar.gz
sdk-f70a4c1ef6661161f57cf20153c30ebe3eebc7fa.tar.bz2
am e1c1ac8b: Merge change 3869 into donut
Merge commit 'e1c1ac8b0ea535e334b7f072aaaa98d14dcb8b81' * commit 'e1c1ac8b0ea535e334b7f072aaaa98d14dcb8b81': SDK Updater: implement tree check callback on remote page.
-rwxr-xr-xsdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java47
1 files changed, 42 insertions, 5 deletions
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java
index fb0c504..712821d 100755
--- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java
+++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java
@@ -19,8 +19,8 @@ package com.android.sdkuilib.internal.repository;
import com.android.sdklib.internal.repository.Archive;
import com.android.sdklib.internal.repository.IDescription;
-import com.android.sdklib.internal.repository.ITask;
-import com.android.sdklib.internal.repository.ITaskMonitor;
+import com.android.sdklib.internal.repository.Package;
+import com.android.sdklib.internal.repository.RepoSource;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
@@ -28,6 +28,7 @@ import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlAdapter;
@@ -237,12 +238,46 @@ public class RemotePackagesPage extends Composite {
private void onTreeCheckStateChanged(CheckStateChangedEvent event) {
boolean b = event.getChecked();
Object elem = event.getElement(); // Will be Archive or Package or RepoSource
- Object src = event.getSource();
- // TODO
+
+ assert event.getSource() == mTreeViewerSources;
+
+ // when deselecting, we just deselect all children too
+ if (b == false) {
+ mTreeViewerSources.setSubtreeChecked(elem, b);
+ return;
+ }
+
+ ITreeContentProvider provider =
+ (ITreeContentProvider) mTreeViewerSources.getContentProvider();
+
+ // When selecting, we want to only select compatible archives.
+ if (elem instanceof RepoSource) {
+ mTreeViewerSources.setExpandedState(elem, true);
+ for (Object pkg : provider.getChildren(elem)) {
+ mTreeViewerSources.setChecked(pkg, true);
+ selectCompatibleArchives(pkg, provider);
+ }
+ } else if (elem instanceof Package) {
+ selectCompatibleArchives(elem, provider);
+ }
+ }
+
+ private void selectCompatibleArchives(Object pkg, ITreeContentProvider provider) {
+ mTreeViewerSources.setExpandedState(pkg, true);
+ for (Object archive : provider.getChildren(pkg)) {
+ if (archive instanceof Archive) {
+ if (((Archive) archive).isCompatible()) {
+ mTreeViewerSources.setChecked(archive, true);
+ } else {
+ mTreeViewerSources.setChecked(archive, false);
+ // TODO change the item image to mark it incompatible
+ }
+ }
+ }
}
private void onTreeDoubleClick(DoubleClickEvent event) {
- // TODO
+ // TODO use or remove
}
private void onInstallSelectedArchives() {
@@ -260,9 +295,11 @@ public class RemotePackagesPage extends Composite {
}
private void onAddSiteSelected() {
+ // TODO prompt for new addon site URL, store, refresh
}
private void onRemoveSiteSelected() {
+ // TODO prompt for removing addon site URL, store, refresh
}
private void onRefreshSelected() {