package InterfGraph;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTabbedPane;

public class Fen01 extends JFrame
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * @param args
	 */
	private JTabbedPane mesOnglets = new JTabbedPane();
	private JPanel monPanneau01 = new JPanel(),
			monPanneau02 = new JPanel(),
			monPanneau03 = new JPanel();
	private Villes mesVilles = new Villes();
	
	private JMenuBar maBarre = new JMenuBar();
	
	private JMenu menuFichier = new JMenu("Fichier"),
			menuStock = new JMenu("Stock"),
			menuClient = new JMenu ("Client"),
			menuFournisseur = new JMenu("Fournisseur"),
			menuChoix = new JMenu ("Dessert");
	
	private JMenuItem itemOuvrir = new JMenuItem("Ouvrir"),
				itemFermer = new JMenuItem ("Fermer"),
				itemNouveauClient = new JMenuItem("Nouveau client"),
				itemNouveauFournisseur = new JMenuItem("Nouveau fournisseur"),
				itemSuppClient = new JMenuItem("Supprimer client"),
				itemSuppFournisseur = new JMenuItem("Supprimer fournisseur"),
				itemControleStock = new JMenuItem ("Contrôler");
	
	private JRadioButtonMenuItem choix01 = new JRadioButtonMenuItem("Fraise"),
				choix02 = new JRadioButtonMenuItem("Framboise"),
				choix03 = new JRadioButtonMenuItem("Vanille");
	
	private ButtonGroup groupeDessert = new ButtonGroup();
	
	private JButton monBouton01 = new JButton("Bouton01");
			//monBouton02 = new JButton("Bouton02");
	
	private JCheckBox maCase = new JCheckBox("Choix");
	private ColorPanel monColorPanel = new ColorPanel(); 
	private ControlPanel monPanneauControle = new ControlPanel(monColorPanel);
	
	private Gestionnaire monGestionnaire = new Gestionnaire();
	private EcouteFenetre monEcouteFenetre = new EcouteFenetre();
	private EcouteSouris monEcouteSouris = new EcouteSouris();
	//Graphics g = this.getGraphics();
	
	public Fen01()
	{
		this.setTitle("Mon interface graphique");
		this.setSize(800, 400);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.addWindowListener(monEcouteFenetre);

		//Composer l'interface graphique
		//this.setLayout(new FlowLayout(FlowLayout.RIGHT));
		monPanneau01.setLayout(new BorderLayout());
		
		monBouton01.addActionListener(monGestionnaire);
		//monBouton02.addActionListener(monGestionnaire);
		maCase.addActionListener(monGestionnaire);
		
		monPanneau01.add(monBouton01, BorderLayout.WEST);
		//this.add(monBouton02, BorderLayout.EAST);
		monPanneau01.add(monPanneauControle, BorderLayout.EAST);
		monPanneau01.add(maCase, BorderLayout.SOUTH);
		
		// Ecouteurs du menu
		itemOuvrir.addActionListener(monGestionnaire);
		
		// Construction du menu
		menuFichier.add(itemOuvrir);
		menuFichier.add(itemFermer);
		menuClient.add (itemNouveauClient);
		menuClient.add (itemSuppClient);
		menuFournisseur.add(itemNouveauFournisseur);
		menuFournisseur.add(itemSuppFournisseur);
		
		menuChoix.add (choix01);
		menuChoix.add (choix02);
		menuChoix.add (choix03);
		
		groupeDessert.add (choix01);
		groupeDessert.add (choix02);
		groupeDessert.add (choix03);
		
		menuStock.add(menuClient);
		menuStock.add(menuFournisseur);
		menuStock.addSeparator();
		menuStock.add (itemControleStock);
		menuStock.add (menuChoix);
		
		maBarre.add(menuFichier);
		maBarre.add(menuStock);
		
		choix01.setSelected(true);
		
		monPanneau01.add (maBarre, BorderLayout.NORTH);
		monPanneau01.add(monColorPanel, BorderLayout.CENTER);
		monPanneau01.addMouseListener(monEcouteSouris);
		
		monPanneau02.setLayout(new BorderLayout());
		monPanneau02.add (mesVilles, BorderLayout.NORTH);
		
		mesOnglets.add("Onglet01", monPanneau01);
		mesOnglets.add("Onglet02", monPanneau02);
		mesOnglets.add("Onglet03", monPanneau03);
		
		this.add (mesOnglets);
		
	}
	
	private void rectangle(String pChaine, Color pCouleur, int a, int b)
	{
		Graphics g = this.getGraphics();
		g.setColor(pCouleur);
		/*g.fillOval(a, b, 60, 40);
		g.setColor(Color.RED);
		g.drawRect(a, b, 60, 40);*/
		g.drawString(pChaine + "(" + a +":"+ b + ")", a, b);
	}

	private class Gestionnaire implements ActionListener
	{
		@Override
		public void actionPerformed(ActionEvent arg0)
		{
			System.out.print("Il se passe quelque chose : ");
			if (arg0.getSource() == monBouton01)
			{
				System.out.println("Bouton01");
			}
			/*else if (arg0.getSource() == monBouton02)
			{
				System.out.println("Bouton02");
			}*/
			else if (arg0.getSource() == maCase)
			{
				if (maCase.isSelected())
				{
					System.out.println("Cochée");
				}
				else
				{
					System.out.println("Vide");
				}
			}
			else if (arg0.getSource() == itemOuvrir)
			{
				System.out.println("Ouverture d'un fichier.");
			}
		}
	}
	
	private class EcouteFenetre implements WindowListener
	{

		@Override
		public void windowActivated(WindowEvent arg0)
		{
			// TODO Auto-generated method stub
			System.out.println("Fenêtre activée");
		}

		@Override
		public void windowClosed(WindowEvent arg0)
		{
			// TODO Auto-generated method stub
			System.out.println("Au revoir.");
		}

		@Override
		public void windowClosing(WindowEvent arg0)
		{
			// TODO Auto-generated method stub
			System.out.println("On va fermer");
		}

		@Override
		public void windowDeactivated(WindowEvent arg0)
		{
			// TODO Auto-generated method stub
			System.out.println("Fenêtre désactivée");
		}

		@Override
		public void windowDeiconified(WindowEvent arg0)
		{
			// TODO Auto-generated method stub
			System.out.println("Fenêtre restaurée d'une icône.");
		}

		@Override
		public void windowIconified(WindowEvent arg0)
		{
			// TODO Auto-generated method stub
			System.out.println("Fenêtre icônisée.");
		}

		@Override
		public void windowOpened(WindowEvent arg0)
		{
			// TODO Auto-generated method stub
			System.out.println("Bonjour, on ouvre !");
		}
		
	}
	
	private class EcouteSouris implements MouseListener
	{

		@Override
		public void mouseClicked(MouseEvent e)
		{
			// TODO Auto-generated method stub
			System.out.println("Clic en " + e.getX() + " - "+ e.getY());
			//rectangle("Clic", new Color(255,127,0), e.getX(), e.getY());
		}

		@Override
		public void mouseEntered(MouseEvent e)
		{
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseExited(MouseEvent e)
		{
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mousePressed(MouseEvent e)
		{
			// TODO Auto-generated method stub
			System.out.print("Enfoncé ");
			//rectangle("Press", Color.blue, e.getX(), e.getY());
		}

		@Override
		public void mouseReleased(MouseEvent e)
		{
			// TODO Auto-generated method stub
			System.out.println("... relâché.");
			//rectangle("Rel", Color.MAGENTA, e.getX(), e.getY());
		}
		
	}
}
