package ddddbb.gui3d;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Rectangle2D;
import javax.swing.Icon;
import javax.swing.JToggleButton;
import ddddbb.game.Settings;
import ddddbb.sound.SoundEnum;
import ddddbb.sound.SoundEnum.Sound;
public class DToggleButton extends JToggleButton {
private boolean mouseInside = false;
public DToggleButton(int width, int height, String text) {
setPreferredSize(new Dimension(width,height));
setText(text);
setFont(Settings.font);
addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {
mouseInside = true;
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
mouseInside = false;
repaint();
}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
});
//setRolloverIcon(rolloverIcon);
}
public void paint(Graphics g) {
Graphics2D gc = (Graphics2D) g;
// for antialiasing text
gc.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
gc.setRenderingHint( RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
gc.setColor(Color.black);
gc.fillRect(0, 0, getWidth(), getHeight());
//System.out.println(d.width + "x" + d.height);
//System.out.println(d.width + "," + d.height);
int w = getWidth() - 1;
int h = getHeight() - 1;
float brightness = (float) Settings.brightness.getDouble();
gc.setColor(new Color(brightness,brightness,brightness));
if (this.isSelected()) {
if (mouseInside) gc.drawRoundRect(0, 0, w, h, 8, 8);
else gc.drawRect(0, 0, w, h);
}
else {
if (mouseInside) {
gc.drawArc(0,0,8,8,90,90);
gc.drawArc(0,h-8,8,8,180,90);
gc.drawArc(w-8,h-8,8,8,270,90);
gc.drawArc(w-8,0,8,8,0,90);
}
else {
gc.drawPolyline(new int[] {0,0,3}, new int[] {3,0,0},3);
gc.drawPolyline(new int[] {0,0,3}, new int[] {h-3,h,h},3);
gc.drawPolyline(new int[] {w-3,w,w}, new int[] {h,h,h-3},3);
gc.drawPolyline(new int[] {w,w,w-3}, new int[] {3,0,0},3);
}
}
//gc.setFont(font);
FontMetrics fm = gc.getFontMetrics();
Rectangle2D sb = fm.getStringBounds(getText(), gc);
//System.out.println(d.height);
//System.out.println(sb.getHeight());
double x = (getWidth() - sb.getWidth())/2;
double y = (getHeight()+ sb.getHeight())/2 - fm.getDescent();
gc.drawString(getText(), (int)Math.round(x), (int)Math.round(y));
}
}