package leaf;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JButton;

public class LeafButton extends JButton
{
	private static final long serialVersionUID = 1L;

	public LeafButton(String text)
	{
		super( text );
		setOpaque( false );
	}

	protected void paintComponent( Graphics g )
	{
		boolean pushed = getModel().isPressed();
//		Color borderColor = getBackground();
//		Color highlightColor = getBackground();
		Color textColor = isEnabled() ? getForeground() : getForeground().brighter().brighter().brighter();
		Color textAccent = getBackground();
		Color textAccentHot = getBackground();
		GradientPaint topGradientUp = new GradientPaint( 0, 0, getBackground().brighter(), 0, getHeight() / 2, getBackground() );
		GradientPaint topGradientDown = new GradientPaint( 0, 0, getBackground().brighter(), 0, getHeight() / 2, getBackground() );
		GradientPaint bottomGradientDown = new GradientPaint( 0, getHeight() / 2, getBackground(), 0, getHeight(), getBackground().darker() );
		GradientPaint bottomGradientUp = new GradientPaint( 0, getHeight() / 2, getBackground(), 0, getHeight(), getBackground().darker().darker() );
		Graphics2D g2 = (Graphics2D) g;
		g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );

		int height = getHeight() / 2;

		g2.setPaint( pushed ? topGradientDown : topGradientUp );
		g2.fillRect( 0, 0, getWidth(), height );

		g2.setPaint( pushed ? bottomGradientDown : bottomGradientUp );
		g2.fillRect( 0, height, getWidth(), height );

		// g2.setColor( borderColor );
		// g2.drawRect( 0, 0, getWidth() - 1, getHeight() - 1 );
		//
		// g2.setColor( highlightColor );
		// g2.drawRect( 1, 1, getWidth() - 3, getHeight() - 3 );

		int x = (getWidth() - g2.getFontMetrics().stringWidth( getText() )) / 2;
		int y = getHeight() - ((getHeight() - g2.getFontMetrics().getHeight()) / 2) - 3;

		y += 1;
		g2.setColor( pushed ? textAccentHot : textAccent );
		g2.drawString( getText(), x, y );

		y -= 1;
		g2.setColor( textColor );
		g2.drawString( getText(), x, y );
		// super.paintComponent( g );
	}
}