blob: ff2533d33b840ad96fba7080eaed1e1332c5bcf8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2006 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ltk.internal.ui.refactoring.history;
import org.eclipse.ltk.internal.ui.refactoring.RefactoringPluginImages;
import org.eclipse.ltk.internal.ui.refactoring.RefactoringUIPlugin;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;
import org.eclipse.jface.resource.CompositeImageDescriptor;
import org.eclipse.jface.resource.ImageDescriptor;
/**
* Refactoring descriptor for decorated refactoring descriptors.
*
* @since 3.2
*/
public final class RefactoringDescriptorImageDescriptor extends CompositeImageDescriptor {
/** The workspace flag */
public static final int WORKSPACE= 1 << 1;
/** The image flags */
private final int fFlags;
/** The base image */
private final ImageDescriptor fImage;
/** The image size */
private final Point fSize;
/**
* Creates a new refactoring descriptor image descriptor.
*
* @param image
* the base image
* @param flags
* image flags
* @param size
* the size of the image
*/
public RefactoringDescriptorImageDescriptor(final ImageDescriptor image, final int flags, final Point size) {
fImage= image;
fFlags= flags;
fSize= size;
}
/**
* Draws the bottom right image decorations.
*/
private void drawBottomRight() {
final Point size= getSize();
int x= size.x;
if ((fFlags & WORKSPACE) != 0) {
ImageData data= getImageData(RefactoringPluginImages.DESC_OVR_WORKSPACE);
x-= data.width;
drawImage(data, x, size.y - data.height);
}
}
/**
* {@inheritDoc}
*/
protected void drawCompositeImage(final int width, final int height) {
drawImage(getImageData(fImage), 0, 0);
drawBottomRight();
}
/**
* {@inheritDoc}
*/
public boolean equals(final Object object) {
if (object == null || !RefactoringDescriptorImageDescriptor.class.equals(object.getClass()))
return false;
final RefactoringDescriptorImageDescriptor other= (RefactoringDescriptorImageDescriptor) object;
return (fImage.equals(other.fImage) && fFlags == other.fFlags && fSize.equals(other.fSize));
}
/**
* Returns the image data for the specified descriptor.
*
* @param descriptor
* the image descriptor
* @return the image data
*/
private ImageData getImageData(final ImageDescriptor descriptor) {
ImageData data= descriptor.getImageData();
if (data == null) {
data= DEFAULT_IMAGE_DATA;
RefactoringUIPlugin.logErrorMessage("Image data not available: " + descriptor.toString()); //$NON-NLS-1$
}
return data;
}
/**
* {@inheritDoc}
*/
protected Point getSize() {
return fSize;
}
/**
* {@inheritDoc}
*/
public int hashCode() {
return fImage.hashCode() | fFlags | fSize.hashCode();
}
}