/**
 * 
 */
package view.aide;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.sql.SQLException;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.text.BadLocationException;

import tool.observable.EasyObservable;
import tool.observable.EasyObserver;

/**
 * @author alexis
 *
 */
public class HelpSubject extends JPanel implements EasyObserver{

	/**
	 * 
	 */
	private static final long serialVersionUID = -6762980498453967707L;
	private EasyObservable obs;
	
	private String ID;
	private String titre;
	private String texte;
	
	private JLabel labelTitre;
	private JTextArea labelTexte;
	private JPanel panelLien;
	private GridBagConstraints constraint;
	
	public HelpSubject(String _id, String _titre, String _texte) {
		super(new GridBagLayout());
		ID = _id;
		titre = _titre;
		texte = _texte;
		
		initVariable();
		initComponents();
	}
	
	private void initVariable(){
		obs = new EasyObservable();
		
		constraint = new GridBagConstraints();
		panelLien = new JPanel(new GridBagLayout());
		labelTitre = new JLabel(titre);
		labelTitre.setForeground(Color.BLUE);
		labelTitre.setFont(new Font("Arial", Font.ITALIC, 24));
		
		labelTexte = new JTextArea(texte);
		labelTexte.setEnabled(false);
		labelTexte.setDisabledTextColor(Color.black);
		labelTexte.setLineWrap(true);
		labelTexte.setWrapStyleWord(true);
	}
	
	private void initComponents(){
		constraint.anchor  = GridBagConstraints.NORTH;
		constraint.fill    = GridBagConstraints.HORIZONTAL;
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx   = 0;
		constraint.gridy   = 0;
		constraint.insets  = new Insets(0,10,0,10);
		this.add(labelTitre,constraint);
		
		constraint.anchor  = GridBagConstraints.NORTH;
		constraint.fill    = GridBagConstraints.HORIZONTAL;
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx   = 0;
		constraint.gridy   = 1;
		constraint.insets  = new Insets(0,10,5,10);
		this.add(new JSeparator(),constraint);
		
		constraint.anchor  = GridBagConstraints.NORTHWEST;
		constraint.fill    = GridBagConstraints.HORIZONTAL;
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx   = 0;
		constraint.gridy   = 2;
		constraint.insets  = new Insets(0,10,0,10);
		this.add(labelTexte,constraint);
		
		constraint.anchor  = GridBagConstraints.NORTHWEST;
		constraint.fill    = GridBagConstraints.HORIZONTAL;
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx   = 0;
		constraint.gridy   = 3;
		constraint.insets  = new Insets(0,0,0,0);
		this.add(panelLien,constraint);
	}
	
	public void addLink(String ID, String text){
		JLinkedLabel link = new JLinkedLabel(ID,text);
		
		constraint.anchor  = GridBagConstraints.SOUTHWEST;
		constraint.fill    = GridBagConstraints.NONE;
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx   = 0;
		constraint.gridy   = panelLien.getComponentCount();
		constraint.insets  = new Insets(0,10,0,10);
		panelLien.add(link,constraint);
		
		link.getObservable().addObserver(this);
	}
	
	public String getID(){
		return ID;
	}
	
	public EasyObservable getObservable(){
		return obs;
	}

	@Override
	public void update(Object observable, Object message) throws SQLException,Exception {
		obs.notifyObservers(message);
	}
}