package VASSAL.tools; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.JButton; import VASSAL.tools.image.ImageUtils; public class IconButton extends JButton { private static final long serialVersionUID = 1L; public static final int PLUS_ICON = 0; public static final int MINUS_ICON = 1; public static final int TICK_ICON = 2; public static final int CROSS_ICON = 3; public IconButton(int type) { this(type, 22); } public IconButton(int type, int size) { this(type, size, getDefaultColor(type), 2.0f); } public static Color getDefaultColor(int type) { switch (type) { case TICK_ICON: return Color.green; case CROSS_ICON: return Color.red; default: return Color.black; } } public IconButton(int type, int size, Color color, float width) { super(); setMinimumSize(new Dimension(size, size)); setPreferredSize(new Dimension(size, size)); final BufferedImage image = ImageUtils.createCompatibleTranslucentImage(size, size); final Graphics2D g = image.createGraphics(); g.setStroke(new BasicStroke(width)); g.setColor(color); switch (type) { case PLUS_ICON: g.drawLine(5, size / 2, size - 5, size / 2); g.drawLine(size / 2, 5, size / 2, size - 5); break; case MINUS_ICON: g.drawLine(5, size / 2, size - 5, size / 2); break; case TICK_ICON: g.drawLine(5, size/2, size/2, size-5); g.drawLine(size/2, size-5, 5, size-5); break; case CROSS_ICON: g.drawLine(5, 5, size-5, size-5); g.drawLine(5, size-5, size-5, 5); break; } setIcon(new ImageIcon(image)); } }