com.archimatetool.editor.ui.components.CompositeMultiImageDescriptor.java Source code

Java tutorial

Introduction

Here is the source code for com.archimatetool.editor.ui.components.CompositeMultiImageDescriptor.java

Source

/**
 * This program and the accompanying materials
 * are made available under the terms of the License
 * which accompanies this distribution in the file LICENSE.txt
 */
package com.archimatetool.editor.ui.components;

import org.eclipse.jface.resource.CompositeImageDescriptor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;

/**
 * Composite Image Descriptor
 * 
 * @author Phillip Beauvoir
 */
public class CompositeMultiImageDescriptor extends CompositeImageDescriptor {

    private ImageDescriptor[] fOverlays;
    private Point fSize;

    public CompositeMultiImageDescriptor(ImageDescriptor[] overlays) {
        fOverlays = overlays;
    }

    public CompositeMultiImageDescriptor(ImageDescriptor[] overlays, Point size) {
        fSize = size;
        fOverlays = overlays;
    }

    @Override
    protected void drawCompositeImage(int width, int height) {
        for (ImageDescriptor overlay : fOverlays) {
            if (overlay != null) {
                drawImage(overlay.getImageData(), 0, 0);
            }
        }
    }

    @Override
    protected Point getSize() {
        // Find the largest size of all the images
        if (fSize == null) {
            fSize = new Point(1, 1);
            for (ImageDescriptor overlay : fOverlays) {
                if (overlay != null) {
                    ImageData id = overlay.getImageData();
                    fSize.x = Math.max(fSize.x, id.width);
                    fSize.y = Math.max(fSize.y, id.height);
                }
            }
        }
        return fSize;
    }
}