package view;

import java.awt.Color;
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JTabbedPane;
import javax.swing.event.ChangeListener;

public class OngletDeGauche extends VueTabbed implements ChangeListener{
	private Map<String, Vue> tabs;
	private int modifiedTabCount;
	
	public OngletDeGauche() {
		super(JTabbedPane.LEFT);
		init();
	}

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

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


	public void addJPanelObservable(String tabName, Vue _vue, Object _message){
		Component tmp = add(tabName.replace("%", ""), _vue);
		connecterUneAction(tabName.replace("%", ""), _message);
		tabs.put(tabName.replace("%", ""), _vue);
		setMnemonicAt(indexOfComponent(tmp), tabName.charAt(tabName.indexOf('%')+1));
	}

	public Vue setSelectedTab(String name){
		setSelectedComponent(tabs.get(name.replace("%", "")));
		setSelectedIndex(indexOfTab(name.replace("%", "")));
		
		return tabs.get(name.replace("%", ""));
	}
	
	public void setModifiedTab(String name, boolean modified){
		if(getForegroundAt(indexOfTab(name.replace("%", ""))) != Color.RED)
		{
			if(modified)
			{
				modifiedTabCount++;
				setForegroundAt(indexOfTab(name.replace("%", "")), Color.RED);
			}
		}
		else
		{
			if(!modified)
			{
				modifiedTabCount--;
				setForegroundAt(indexOfTab(name.replace("%", "")), Color.DARK_GRAY);
			}
		}
		
		
		System.out.println(modifiedTabCount);
	}
	
	public boolean getModifiedTab(){
		return (modifiedTabCount == 0?false:true);
	}

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