package ddddbb.gui3d;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.SwingConstants;
import javax.swing.plaf.basic.BasicArrowButton;
import ddddbb.game.Settings;
import ddddbb.gen.AChangeListener;
import ddddbb.sound.SoundEnum;
@SuppressWarnings("serial")
public class DArrowButton extends BasicArrowButton {
int w;
int h;
boolean mouseInside = false;
private float brightness;
public DArrowButton(int direction) {
super(direction);
new AChangeListener() {
public void stateChanged() {
brightness = (float)Settings.brightness.getDouble();
repaint();
}
}.addTo(Settings.brightness);
setBackground(Color.black);
addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {
mouseInside = true;
if ((e.getModifiersEx() & InputEvent.BUTTON1_DOWN_MASK) == InputEvent.BUTTON1_DOWN_MASK) return;
repaint();
SoundEnum.MOUSEOVER.play();
}
@Override
public void mouseExited(MouseEvent e) {
mouseInside = false;
repaint();
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
});
setPreferredSize(new Dimension(16,16));
}
public static final int[] xWest = new int[] {8+2,4+2,8+2};
public static final int[] yWest = new int[] {4,8,12};
public static final int[] xEast = new int[] {8-2,12-2,8-2};
public static final int[] yEast = new int[] {4,8,12};
public void paint(Graphics g) {
Graphics2D gc = (Graphics2D) g;
gc.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
gc.setRenderingHint( RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
gc.setColor(getBackground());
gc.fillRect(0, 0, getWidth(), getHeight());
w = getWidth() - 1;
h = getHeight() - 1;
gc.setColor(new Color(brightness,brightness,brightness));
if (mouseInside) {
gc.drawOval(0, 0, w, h);
}
else {
gc.drawRect(0, 0, w, h);
}
switch (direction) {
case SwingConstants.WEST:
if(mouseInside) {
gc.fillPolygon(xWest, yWest, xWest.length);
}
else {
gc.drawPolygon(xWest, yWest, xWest.length);
}
break;
case SwingConstants.EAST:
if (mouseInside) {
gc.fillPolygon(xEast, yEast, xEast.length);
}
else {
gc.drawPolygon(xEast, yEast, xEast.length);
}
// gc.drawLine(8-2, 4, 12-2, 8);
// gc.drawLine(12-2, 8, 8-2, 12);
// gc.drawLine(8-2, 12, 8-2, 4);
}
}
}