package com.opticalcobra.storybear.menu; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.border.Border; import com.opticalcobra.storybear.res.FontCache; import com.opticalcobra.storybear.res.Ressources; public class TextButton extends JButton implements MouseListener{ private final static int borderThick = 2; private final static float fontSize = (float)(28f/Ressources.SCALE); private final static Font font = FontCache.getInstance().getFont("Fontin_SC", fontSize); private Border standardBorder; private Border hoverBorder; private Border disabledBorder; private Color standardColor = Color.black; private Color hoverColor = Ressources.MENUCOLORSELECTED; private Color disabledColor = Color.gray; public TextButton(String text, int x, int y, int width, int height, float size, Color standard) { this(text, x, y, width, height, size); setForeground(standard); standardColor = standard; standardBorder = BorderFactory.createLineBorder(standard, borderThick); setStyle(standard, standardBorder); } public TextButton(String text, int x, int y, int width, int height, float size) { this(text, x, y, width, height); setFontSize(size); } public TextButton(String text, int x, int y, int width, int height) { standardBorder = BorderFactory.createLineBorder(standardColor, borderThick); hoverBorder = BorderFactory.createLineBorder(hoverColor, borderThick); disabledBorder = BorderFactory.createLineBorder(disabledColor, borderThick); addMouseListener(this); setOpaque(false); setContentAreaFilled(false); setText(text); setFont(font); setCursor(Ressources.CURSORCLICKABLE); setBounds((int)(x/Ressources.SCALE), (int)(y/Ressources.SCALE), (int)(width/Ressources.SCALE), (int)(height/Ressources.SCALE)); setFocusable(false); setStyle(standardColor, standardBorder); } public void setFontSize(float size) { setFont(getFont().deriveFont(size)); } private void setStyle(Color color, Border border) { setBorder(border); setForeground(color); } @Override public void setEnabled(boolean enable) { if(enable) setStyle(standardColor, standardBorder); else setStyle(disabledColor,disabledBorder); super.setEnabled(enable); } @Override public void mouseClicked(MouseEvent e) { if(isEnabled()) setStyle(standardColor, standardBorder); } @Override public void mouseEntered(MouseEvent e) { if(isEnabled()) setStyle(hoverColor, hoverBorder); } @Override public void mouseExited(MouseEvent e) { if(isEnabled()) setStyle(standardColor, standardBorder); } @Override public void mousePressed(MouseEvent e) {} @Override public void mouseReleased(MouseEvent e) {} }