All pastes #375032 Raw Edit

Untitled

public text v1 · immutable
#375032 ·published 2007-02-27 23:10 UTC
rendered paste body
package swingutils.ui;

import java.awt.Component;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.plaf.UIResource;

public class CloseButton extends JButton implements UIResource
{

	
	private Icon[] iconset; 
	final int index;
	final Icon icon;
	
	public int getIndex(){
		return index;
	}

	public CloseButton(final int index , ActionListener listener , ImageIcon icon)
	{
		super();
		this.icon = icon;
		this.index = index;
		
		iconset = new Icon[]{ new CloseIcon(icon ), new CloseIcon(icon), new CloseIcon(icon),};
		
		
		
		setIcon(iconset[0]);
		setBorderPainted(false);
		setFocusable(false);
		setContentAreaFilled(false);
		setToolTipText("Close Tab ");
		addActionListener(listener);
		addMouseListener(new MouseAdapter() {
			public void mouseEntered(MouseEvent e)
			{
				setIcon(iconset[1]);
			}
			public void mouseExited(MouseEvent e)
			{
				setIcon(iconset[0]);
			}
			public void mousePressed(MouseEvent e)
			{
				setIcon(iconset[2]);
			}
		});
	}
	
	
	
	
	class CloseIcon implements Icon
	{

		final int sz = 10;
		final ImageIcon icon;

		public int getIconWidth()
		{
			return sz;
		}


		public int getIconHeight()
		{
			return sz;
		}

		


		public CloseIcon(ImageIcon icon)
		{
			this.icon = icon;
		}

		
	    public synchronized void paintIcon(Component c, Graphics g, int x, int y) {
	           g.drawImage(icon.getImage() , x, y, c);
	    }

	}
	
	
}