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.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Fen01 extends JFrame
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * @param args
	 */
	private JMenuBar maBarre = new JMenuBar();
	
	private JMenu menuFichier = new JMenu("Fichier"),
			menuDossier = new JMenu("Dossier");
	
	private JMenuItem itemOuvrir = new JMenuItem("Ouvrir"),
				itemFermer = new JMenuItem ("Fermer"),
				itemNouveau = new JMenuItem("Nouveau"),
				itemCloturer = new JMenuItem ("Clôturer");
	
	
	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);
		
		//Composer l'interface graphique
		//this.setLayout(new FlowLayout(FlowLayout.RIGHT));
		this.setLayout(new BorderLayout());
		
		monBouton01.addActionListener(monGestionnaire);
		//monBouton02.addActionListener(monGestionnaire);
		maCase.addActionListener(monGestionnaire);
		
		//this.add(monBouton01, BorderLayout.WEST);
		//this.add(monBouton02, BorderLayout.EAST);
		this.add(monPanneauControle, BorderLayout.EAST);
		this.add(maCase, BorderLayout.SOUTH);
		
		// Ecouteurs du menu
		
		itemOuvrir.addActionListener(monGestionnaire);
		
		// Construction du menu
		menuFichier.add(itemOuvrir);
		menuFichier.add(itemFermer);
		menuDossier.add(itemNouveau);
		menuDossier.add(itemCloturer);
		
		maBarre.add(menuFichier);
		maBarre.add(menuDossier);
		
		this.add (maBarre, BorderLayout.NORTH);
		this.add(monColorPanel, BorderLayout.CENTER);
		this.addWindowListener(monEcouteFenetre);
		this.addMouseListener(monEcouteSouris);
	}
	
	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());
		}
		
	}
}
