/******************************************************************************* * Copyright (c) 2006 Sybase, Inc. 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: * Sybase, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.jst.jsf.common.ui.internal.guiutils; import org.eclipse.draw2d.ColorConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; /** * A general purpose class for displying an image in a composite. There is no * eclipse tool for doing this other than CLabl which is bulkly. * * This was original written by Karl Reti. * * @author mengbo */ public class ImageContainer extends Composite { private Image _image = null; private boolean _bCleanupImage; /** * @param parent */ public ImageContainer(Composite parent) { super(parent, SWT.NONE);// SWT.NO_BACKGROUND );//| // SWT.NO_REDRAW_RESIZE); setBackground(ColorConstants.white); // paint the image addPaintListener(new PaintListener() { public void paintControl(PaintEvent e) { if (_image != null) { e.gc.drawImage(_image, 0, 0); } } }); addControlListener(new ControlAdapter() { public void controlResized(ControlEvent e) { setSize(_image.getBounds().width, _image.getBounds().height); } }); // tidy up addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { if (_bCleanupImage && _image != null && !_image.isDisposed()) { _image.dispose(); } } }); } /** * @return Returns the image. */ public Image getImage() { return _image; } /** * @return should the image be disposed of on cleanup. Set false if the * image is cached. */ public boolean isCleanupImage() { return _bCleanupImage; } /** * @param image * The image to set. */ public void setImage(Image image) { setImage(image, false); } /** * @param image * The image to set. * @param bCleanupImage */ public void setImage(Image image, boolean bCleanupImage) { _image = image; _bCleanupImage = bCleanupImage; setSize(image.getBounds().width, image.getBounds().height); } }