/*
 * Projet : Trustopics
 * Version : 0.2.1
 * Fichier : ExitButton.java
 */

import java.awt.BasicStroke;
import java.awt.Color;
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.util.Timer;

import javax.swing.BorderFactory;
import javax.swing.JButton;

public class ExitButton extends JButton implements MouseListener,ActionListener {
	
	private final Color glb_colText = Defines.UIcolForeGDrawingCDE1.brighter();
	private final Color glb_colBack = Defines.UIcolForeGDrawingCDE2.darker();
	private final int glb_widthStroke = 6;
	private Color glb_colTextBak;
	private Color glb_colBackBak;
	private Timer glb_timer;
	
	public ExitButton(Timer prm_timer) {
		glb_timer = prm_timer;
		glb_colTextBak = glb_colText;
		glb_colBackBak = glb_colBack;
		addMouseListener(this);
		addActionListener(this);
		setBorder(BorderFactory.createEmptyBorder());
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D) g;
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
		g2.setPaint(glb_colBackBak);
		g2.fillRect(0,0,getWidth(),getHeight());
		g2.setStroke( new BasicStroke(glb_widthStroke,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
		g2.setPaint(glb_colTextBak);
		g2.drawLine(glb_widthStroke,glb_widthStroke,getWidth()-glb_widthStroke,getHeight()-glb_widthStroke);
		g2.drawLine(getWidth()-glb_widthStroke,glb_widthStroke,glb_widthStroke,getHeight()-glb_widthStroke);
	}
	
	public void mouseEntered(MouseEvent prm_evt) {
		glb_colTextBak = glb_colBack;
		glb_colBackBak = glb_colText;
		update(getGraphics());
	}
	
	public void mouseExited(MouseEvent prm_evt) {
		glb_colTextBak = glb_colText;
		glb_colBackBak = glb_colBack;
		update(getGraphics());
	}
	
	public void mouseClicked(MouseEvent prm_evt) {
	}
	
	public void mousePressed(MouseEvent prm_evt) {
		glb_colTextBak = glb_colBack;
		glb_colBackBak = glb_colText.brighter();
	}
	
	public void mouseReleased(MouseEvent prm_evt) {
	}
	
	public void actionPerformed(ActionEvent prm_evt) {
		if (!Defines.topicsUpdateIsInProgress) {
			glb_timer.cancel();
			System.exit(0);
		}
	}
}