com.synflow.cx.ui.labeling.CxImageDescriptor.java Source code

Java tutorial

Introduction

Here is the source code for com.synflow.cx.ui.labeling.CxImageDescriptor.java

Source

/*******************************************************************************
 * 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;
    }

}