package view;

import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;

import javax.swing.JPanel;

import tool.observable.EasyObservable;

public abstract class Vue extends JPanel implements ActionListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = -7079213720381976935L;

	private EasyObservable obs;
	
	private HashMap<Object, Object> messagePourControleur;

	
	protected Vue(){
		super();
		obs = new EasyObservable(this);
		messagePourControleur = new HashMap<>();
	}
	
	protected Vue(LayoutManager a){
		super(a);
		obs = new EasyObservable(this);
		messagePourControleur = new HashMap<>();
	}
	
    public EasyObservable getObservable(){
        return obs;
    }
    
    public void connecterUneAction(Object acteur, Object message){
    	messagePourControleur.put(acteur, message);
    }
    
    public Object obtenirMessage(Object object){
    	if (!messagePourControleur.containsKey(object))
    		return null;
    	return messagePourControleur.get(object);
    }
    
	@Override
	public void actionPerformed(ActionEvent e) {
		getObservable().notifyObservers(obtenirMessage(e.getSource()));
	}
	
}
