SDK Updater: display icons for local packages.

This commit is contained in:
Raphael
2009-06-17 14:55:57 -07:00
parent 340a79b590
commit 97d3769f36
6 changed files with 74 additions and 46 deletions

View File

@@ -20,6 +20,7 @@ import com.android.sdklib.internal.repository.IDescription;
import com.android.sdklib.internal.repository.LocalSdkParser;
import com.android.sdklib.internal.repository.Package;
import com.android.sdklib.internal.repository.RepoSource;
import com.android.sdkuilib.internal.repository.icons.ImageFactory;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ILabelProvider;
@@ -50,10 +51,16 @@ class LocalSdkAdapter {
// ------------
public static class ViewerLabelProvider extends LabelProvider {
/** Returns null by default */
public class ViewerLabelProvider extends LabelProvider {
/** Returns an image appropriate for this element. */
@Override
public Image getImage(Object element) {
ImageFactory imgFactory = mUpdaterData.getImageFactory();
if (imgFactory != null) {
return imgFactory.getImageForObject(element);
}
return super.getImage(element);
}
@@ -69,7 +76,7 @@ class LocalSdkAdapter {
// ------------
private static class TableContentProvider implements IStructuredContentProvider {
private class TableContentProvider implements IStructuredContentProvider {
// Called when the viewer is disposed
public void dispose() {
@@ -78,7 +85,7 @@ class LocalSdkAdapter {
// Called when the input is set or changed on the provider
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// pass
assert newInput == LocalSdkAdapter.this;
}
/**
@@ -87,15 +94,14 @@ class LocalSdkAdapter {
* of {@link RepoSource}.
*/
public Object[] getElements(Object inputElement) {
if (inputElement instanceof LocalSdkAdapter) {
LocalSdkAdapter adapter = (LocalSdkAdapter) inputElement;
LocalSdkParser parser = adapter.mUpdaterData.getLocalSdkParser();
if (inputElement == LocalSdkAdapter.this) {
LocalSdkParser parser = mUpdaterData.getLocalSdkParser();
Package[] packages = parser.getPackages();
if (packages == null) {
// load on demand the first time
packages = parser.parseSdk(adapter.mUpdaterData.getOsSdkRoot());
packages = parser.parseSdk(mUpdaterData.getOsSdkRoot());
}
if (packages != null) {

View File

@@ -16,16 +16,12 @@
package com.android.sdkuilib.internal.repository;
import com.android.sdklib.internal.repository.AddonPackage;
import com.android.sdklib.internal.repository.Archive;
import com.android.sdklib.internal.repository.DocPackage;
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.PlatformPackage;
import com.android.sdklib.internal.repository.RepoSource;
import com.android.sdklib.internal.repository.ToolPackage;
import com.android.sdkuilib.internal.repository.icons.ImageFactory;
import org.eclipse.jface.viewers.IContentProvider;
@@ -61,38 +57,14 @@ class RepoSourcesAdapter {
public class ViewerLabelProvider extends LabelProvider {
/** Returns null by default */
/** Returns an image appropriate for this element. */
@Override
public Image getImage(Object element) {
ImageFactory imgFactory = mUpdaterData.getImageFactory();
if (imgFactory != null) {
if (element instanceof RepoSource) {
return imgFactory.getImage("source_icon16.png");
} else if (element instanceof PlatformPackage) {
return imgFactory.getImage("android_icon_16.png");
} else if (element instanceof AddonPackage) {
return imgFactory.getImage("addon_icon16.png");
} else if (element instanceof ToolPackage) {
return imgFactory.getImage("tool_icon16.png");
} else if (element instanceof DocPackage) {
return imgFactory.getImage("doc_icon16.png");
} else if (element instanceof Package) {
return imgFactory.getImage("extra_pkg_icon16.png");
} else if (element instanceof Archive) {
if (((Archive) element).isCompatible()) {
return imgFactory.getImage("archive_icon16.png");
} else {
return imgFactory.getImage("incompat_icon16.png");
}
}
return imgFactory.getImageForObject(element);
}
return super.getImage(element);

View File

@@ -310,7 +310,7 @@ final class UpdateChooserDialog extends Dialog {
if (mUpdaterData != null) {
ImageFactory imgFactory = mUpdaterData.getImageFactory();
if (imgFactory != null) {
mDialogShell.setImage(imgFactory.getImage(imageName));
mDialogShell.setImage(imgFactory.getImageByName(imageName));
}
}
}
@@ -533,11 +533,11 @@ final class UpdateChooserDialog extends Dialog {
ImageFactory imgFactory = mUpdaterData.getImageFactory();
if (imgFactory != null) {
if (mAccepted.contains(element)) {
return imgFactory.getImage("accept_icon16.png");
return imgFactory.getImageByName("accept_icon16.png");
} else if (mRejected.contains(element)) {
return imgFactory.getImage("reject_icon16.png");
return imgFactory.getImageByName("reject_icon16.png");
}
return imgFactory.getImage("unknown_icon16.png");
return imgFactory.getImageByName("unknown_icon16.png");
}
return super.getImage(element);
}

View File

@@ -190,7 +190,7 @@ public class UpdaterWindowImpl {
if (mUpdaterData != null) {
ImageFactory imgFactory = mUpdaterData.getImageFactory();
if (imgFactory != null) {
mAndroidSdkUpdater.setImage(imgFactory.getImage(imageName));
mAndroidSdkUpdater.setImage(imgFactory.getImageByName(imageName));
}
}
}

View File

@@ -16,6 +16,14 @@
package com.android.sdkuilib.internal.repository.icons;
import com.android.sdklib.internal.repository.AddonPackage;
import com.android.sdklib.internal.repository.Archive;
import com.android.sdklib.internal.repository.DocPackage;
import com.android.sdklib.internal.repository.Package;
import com.android.sdklib.internal.repository.PlatformPackage;
import com.android.sdklib.internal.repository.RepoSource;
import com.android.sdklib.internal.repository.ToolPackage;
import org.eclipse.swt.SWTException;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
@@ -41,8 +49,13 @@ public class ImageFactory {
/**
* Loads an image given its filename (with its extension).
* Might return null if the image cannot be loaded.
*
* @param imageName The filename (with extension) of the image to load.
* @return A new or existing {@link Image}. The caller must NOT dispose the image (the
* image will disposed by {@link #dispose()}). The returned image can be null if the
* expected file is missing.
*/
public Image getImage(String imageName) {
public Image getImageByName(String imageName) {
Image image = mImages.get(imageName);
if (image != null) {
@@ -66,6 +79,43 @@ public class ImageFactory {
return image;
}
/**
* Loads and returns the appropriate image for a given package, archive or source object.
*
* @param object A {@link RepoSource} or {@link Package} or {@link Archive}.
* @return A new or existing {@link Image}. The caller must NOT dispose the image (the
* image will disposed by {@link #dispose()}). The returned image can be null if the
* expected file is missing.
*/
public Image getImageForObject(Object object) {
if (object instanceof RepoSource) {
return getImageByName("source_icon16.png");
} else if (object instanceof PlatformPackage) {
return getImageByName("android_icon_16.png");
} else if (object instanceof AddonPackage) {
return getImageByName("addon_icon16.png");
} else if (object instanceof ToolPackage) {
return getImageByName("tool_icon16.png");
} else if (object instanceof DocPackage) {
return getImageByName("doc_icon16.png");
} else if (object instanceof Package) {
return getImageByName("extra_pkg_icon16.png");
} else if (object instanceof Archive) {
if (((Archive) object).isCompatible()) {
return getImageByName("archive_icon16.png");
} else {
return getImageByName("incompat_icon16.png");
}
}
return null;
}
/**
* Dispose all the images created by this factory so far.
*/

View File

@@ -243,8 +243,8 @@ public final class AvdSelector {
// get some bitmaps.
mIconFactory = new ImageFactory(parent.getDisplay());
mOkImage = mIconFactory.getImage("accept_icon16.png");
mBrokenImage = mIconFactory.getImage("reject_icon16.png");
mOkImage = mIconFactory.getImageByName("accept_icon16.png");
mBrokenImage = mIconFactory.getImageByName("reject_icon16.png");
adjustColumnsWidth(mTable, column0, column1, column2, column3);
setupSelectionListener(mTable);