Java tutorial
/******************************************************************************* * Copyright (c) 2015 Synflow SAS. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Matthieu Wipliez - initial API and implementation and/or initial documentation *******************************************************************************/ package com.synflow.cx.ui.labeling; import org.eclipse.core.resources.IMarker; import org.eclipse.jface.resource.CompositeImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.Point; import com.synflow.cx.ui.internal.CxActivator; /** * This class defines a composite image descriptor that adds an error or a warning overlay. Images * and addBottomLeftImage method borrowed from JDT are Copyright (c) 2000, 2013 IBM Corporation and * others. * * @author Matthieu Wipliez * */ public class CxImageDescriptor extends CompositeImageDescriptor { private static final String CX_UI_PLUGIN_ID = "com.synflow.cx.ui"; private static final ImageDescriptor ERROR = CxActivator.imageDescriptorFromPlugin(CX_UI_PLUGIN_ID, "icons/error_co.gif"); private static final ImageDescriptor WARNING = CxActivator.imageDescriptorFromPlugin(CX_UI_PLUGIN_ID, "icons/warning_co.gif"); private Image baseImage; private int severity; private Point size; public CxImageDescriptor(Image image, int severity, Point size) { this.baseImage = image; this.size = size; this.severity = severity; } private void addBottomLeftImage(ImageDescriptor desc) { ImageData data = desc.getImageData(); int y = size.y - data.height; if (data.width < getSize().x && y >= 0) { drawImage(data, 0, y); } } @Override protected void drawCompositeImage(int width, int height) { drawImage(baseImage.getImageData(), 0, 0); if (severity == IMarker.SEVERITY_ERROR) { addBottomLeftImage(ERROR); } else if (severity == IMarker.SEVERITY_WARNING) { addBottomLeftImage(WARNING); } } @Override protected Point getSize() { return size; } }