package magic.ui.screen.widget;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.SwingUtilities;
import magic.data.MagicIcon;
import magic.ui.MagicImages;
import magic.ui.MagicSound;
import magic.ui.helpers.ImageHelper;
@SuppressWarnings("serial")
public class DialButton extends ActionBarButton {
private static final ImageIcon DIAL_ICON = MagicImages.getIcon(MagicIcon.MARKER);
private final int increment;
private int position;
public DialButton(int count, int start, String caption, String tooltip, AbstractAction action) {
super(DIAL_ICON, caption, tooltip, action);
increment = 360 / count;
position = increment * start;
rotateIconImage();
addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
position = (position + increment) % 360;
rotateIconImage();
MagicSound.CLICK.play();
}
}
});
}
private void rotateIconImage() {
final BufferedImage image = ImageHelper.getCompatibleBufferedImage(
DIAL_ICON.getIconWidth(), DIAL_ICON.getIconWidth(), BufferedImage.TRANSLUCENT
);
final Graphics2D g2d = image.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.rotate(Math.toRadians(position), image.getWidth() / 2.0D, image.getHeight() / 2.0D);
g2d.drawImage(DIAL_ICON.getImage(), 0, 0, null);
super.setIcon(new ImageIcon(image));
g2d.dispose();
}
}