package automatvgi.widgets;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import automatvgi.LatexColor;

/**
 * 
 * @author lombardy
 * Palette permet de selectionner une couleur parmi celles definies dans LatexColor
 * L'objet Palette est ecoute par un ColorSetter qui recoit la couleur selectionnee
 * Palette implemente elle-meme ColorSetter, car elle ecoute un ColorSelector
 * qui permet d'ajouter des couleurs personnalisees a la palette.
 */
public class Palette extends JFrame implements ActionListener, ColorSetter{

	private static final long serialVersionUID = 1L;

	private ColorSetter cs;
	private HashMap<JButton, LatexColor> map=new HashMap<JButton, LatexColor>(70);
	private JLabel resultat= new JLabel();
	private JPanel jp;
	
	public Palette(ColorSetter cs){
		this.cs=cs;
		JPanel content=new JPanel();
		content.setLayout(new BorderLayout());
		jp=new JPanel();
		jp.setLayout(new GridLayout(10,10));
		for(LatexColor cn : LatexColor.colors)
			setColor(cn);
		JButton jb=new JButton("u");
		jb.addActionListener(this);
		jp.add(jb);
		content.add(jp,BorderLayout.CENTER);
		resultat.setOpaque(true);
		resultat.setPreferredSize(new Dimension(30,20));
		content.add(resultat,BorderLayout.SOUTH);
		setContentPane(content);
		pack();
		setResizable(false);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new Palette(null);		
	}

		public void actionPerformed(ActionEvent e) {
			if(((JButton)e.getSource()).getText().equals("u")){
				new ColorSelector2(this);
				return;
			}
			LatexColor cn=map.get(e.getSource());
			resultat.setText(cn.toString());
			resultat.setBackground(cn.getColor());
			repaint();
			if(cs!=null)
				cs.setColor(cn);
		}

		//@Override
		public void setColor(LatexColor cn) {
			JButton jb=new JButton();
			jb.setIcon(new ColorIcon(cn.getColor()));
			jb.setPreferredSize(new Dimension(18,18));
			jb.addActionListener(this);
			jp.add(jb);
			map.put(jb, cn);
			repaint();
		}
}