
import java.awt.*;

/**
 * Bouton image à trois états.<BR>
 * Ce bouton ressemble aux boutons classiques de Windows, mais il réagit au passage
 * de la souris.<BR>
 * 
 * @author Denis Bredelet
 * @see FlyButton
 */
public class FlyImageButton extends FlyButton
{
    public FlyImageButton(int width, int height)
    {
        super();
		setBorderStyle(BORDER_RAISED, BRUSHED);
		setBorderStyle(BORDER_LOWERED, PRESSED);
		
		pic = new Picture(width, height);
		add(pic);
    }
    
    public void setImageNormal(Image im)
    {
		images[NORMAL] = im;
		pic.addImage(im);
    }

    public void setImageBrushed(Image im)
    {
		images[BRUSHED] = im;
		pic.addImage(im);
    }

    public void setImagePressed(Image im)
    {
		images[PRESSED] = im;
		pic.addImage(im);
    }

    public void setImageDisabled(Image im)
    {
		images[DISABLED] = im;
		pic.addImage(im);
    }
    
    public void paintNormal(Graphics g)
    {
		pic.setImage(images[NORMAL]);
    }

    public void paintBrushed(Graphics g)
    {
		pic.setImage(images[BRUSHED]);
    }

    public void paintPressed(Graphics g)
    {
		pic.setImage(images[PRESSED]);
    }

    public void paintDisabled(Graphics g)
    {
		pic.setImage(images[DISABLED]);
    }
    
    public Dimension getPreferredSize()
    {
		Dimension dim = pic.getPreferredSize();
		dim.width += 4;
		dim.height += 4;
		return dim;
    }
    
    protected Picture pic;
	
	private Image images[] = new Image[4];
	private static final int DISABLED = 3;
}