Merge change 3869 into donut

* changes:
  SDK Updater: implement tree check callback on remote page.
This commit is contained in:
Android (Google) Code Review
2009-06-11 11:56:08 -07:00

View File

@@ -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() {