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));
  }
}
