/******************************************************************************* * Copyright (c) 2006, 2007 Spring IDE Developers * 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: * Spring IDE Developers - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.ui; import org.eclipse.jface.resource.CompositeImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.Point; import org.springframework.util.Assert; /** * @author Torsten Juergeleit * @author Christian Dupuis */ public abstract class AbstractCompositeImageDescriptor extends CompositeImageDescriptor { private Image baseImage; private int flags; private Point size; protected AbstractCompositeImageDescriptor(Image baseImage, int flags) { Assert.notNull(baseImage); this.baseImage = baseImage; this.flags = flags; } @Override public boolean equals(Object object) { if (!(object instanceof AbstractCompositeImageDescriptor)) { return false; } AbstractCompositeImageDescriptor other = (AbstractCompositeImageDescriptor) object; return (baseImage.equals(other.baseImage) && flags == other.flags); } @Override public int hashCode() { return baseImage.hashCode() | flags; } public int getFlags() { return flags; } @Override protected final Point getSize() { if (size == null) { ImageData data = baseImage.getImageData(); size = new Point(data.width, data.height); } return size; } @Override protected final void drawCompositeImage(int width, int height) { ImageData background = baseImage.getImageData(); if (background == null) { background = DEFAULT_IMAGE_DATA; } drawImage(background, 0, 0); drawOverlays(); } protected abstract void drawOverlays(); }