aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/ui/ErrorImageComposite.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/ui/ErrorImageComposite.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/ui/ErrorImageComposite.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/ui/ErrorImageComposite.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/ui/ErrorImageComposite.java
new file mode 100644
index 000000000..7085e5d50
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/ui/ErrorImageComposite.java
@@ -0,0 +1,72 @@
+package com.android.ide.eclipse.adt.internal.editors.ui;
+
+import static org.eclipse.ui.ISharedImages.IMG_DEC_FIELD_ERROR;
+import static org.eclipse.ui.ISharedImages.IMG_DEC_FIELD_WARNING;
+import static org.eclipse.ui.ISharedImages.IMG_OBJS_ERROR_TSK;
+import static org.eclipse.ui.ISharedImages.IMG_OBJS_WARN_TSK;
+
+import org.eclipse.jface.resource.CompositeImageDescriptor;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.DecorationOverlayIcon;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * ImageDescriptor that adds a error marker.
+ * Based on {@link DecorationOverlayIcon} only available in Eclipse 3.3
+ */
+public class ErrorImageComposite extends CompositeImageDescriptor {
+
+ private Image mBaseImage;
+ private ImageDescriptor mErrorImageDescriptor;
+ private Point mSize;
+
+ /**
+ * Creates a new {@link ErrorImageComposite}
+ *
+ * @param baseImage the base image to overlay an icon on top of
+ */
+ public ErrorImageComposite(Image baseImage) {
+ this(baseImage, false);
+ }
+
+ /**
+ * Creates a new {@link ErrorImageComposite}
+ *
+ * @param baseImage the base image to overlay an icon on top of
+ * @param warning if true, add a warning icon, otherwise an error icon
+ */
+ public ErrorImageComposite(Image baseImage, boolean warning) {
+ mBaseImage = baseImage;
+ ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
+ mErrorImageDescriptor = sharedImages.getImageDescriptor(
+ warning ? IMG_DEC_FIELD_WARNING : IMG_DEC_FIELD_ERROR);
+ if (mErrorImageDescriptor == null) {
+ mErrorImageDescriptor = sharedImages.getImageDescriptor(
+ warning ? IMG_OBJS_WARN_TSK : IMG_OBJS_ERROR_TSK);
+ }
+ mSize = new Point(baseImage.getBounds().width, baseImage.getBounds().height);
+ }
+
+ @Override
+ protected void drawCompositeImage(int width, int height) {
+ ImageData baseData = mBaseImage.getImageData();
+ drawImage(baseData, 0, 0);
+
+ ImageData overlayData = mErrorImageDescriptor.getImageData();
+ if (overlayData.width == baseData.width && overlayData.height == baseData.height) {
+ overlayData = overlayData.scaledTo(14, 14);
+ drawImage(overlayData, -3, mSize.y - overlayData.height + 3);
+ } else {
+ drawImage(overlayData, 0, mSize.y - overlayData.height);
+ }
+ }
+
+ @Override
+ protected Point getSize() {
+ return mSize;
+ }
+}