package view;

import java.awt.Color;
import java.awt.Component;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import javax.swing.event.ChangeListener;

import view.vueGestionEmploye.VueGestionModifierUtilisateur;

public class OngletSuperieur extends VueTabbed implements ChangeListener{
	private Map<String, OngletDeGauche> tabs;
	
	public OngletSuperieur() {
		super();
		init();
	}

	public OngletSuperieur(int tabPlacement, int tabLayoutPolicy) {
		super(tabPlacement, tabLayoutPolicy);
		init();
	}

	public OngletSuperieur(int tabPlacement) {
		super(tabPlacement);
		init();
	}
	
	private void init (){
		tabs = new HashMap<>();
	}

	public void addSubTab(String tabName, OngletDeGauche subTab){
		tabs.put(tabName.replace("%", ""), subTab);
		Component tmp = add(tabName.replace("%", ""),(Component)subTab);
		setMnemonicAt(indexOfComponent(tmp), tabName.charAt(tabName.indexOf('%')+1));
	}

	public Vue setSelectedTab(String name, String subName) throws SQLException{
		setSelectedIndex(indexOfTab(name.replace("%", "")));
		if (tabs.containsKey(name.replace("%", ""))){
			return tabs.get(name.replace("%", "")).setSelectedTab(subName.replace("%", ""));
		}
		return null;
	}
	
	public void setModifiedTab(String name, String subName, boolean modified) throws SQLException{
		if (tabs.containsKey(name.replace("%", ""))){
			tabs.get(name.replace("%", "")).setModifiedTab(subName.replace("%", ""), modified);
			
			setForegroundAt(indexOfTab(name.replace("%", "")), (tabs.get(name.replace("%", "")).getModifiedTab()?Color.red:Color.DARK_GRAY));
		}
	}

	@Override
	public void refreshSelectedTab(){
		String tabName = getTitleAt(getSelectedIndex());
		getObservable().setCompositingObject(getSelectedComponent());
		getObservable().notifyObservers(obtenirMessage(tabName));
		tabs.get(tabName).refreshSelectedTab();
	}	
}
