import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Integer;

public class Calculette	extends	JFrame implements ActionListener {
    
    GridBagConstraints gbc = new GridBagConstraints();
    JTextField champTexte	= new JTextField("0");

    public final int NONE = 0;
    public final int AC = 1;
    public final int SQRT = 2;
    public final int PLUS = 3;
    
    // A COMPLETER

    int operation = NONE;
    boolean nombrSuiv = true;
    boolean decimal = false;
    double valCalcul= 0.0;

    public Calculette() {
	super("Calculatrice");
	setDefaultCloseOperation(EXIT_ON_CLOSE );
	setSize(200, 250);

	Container cp = this.getContentPane();

	AuditeurConteneur auditeur = new AuditeurConteneur();
	cp.addContainerListener(auditeur);

	gbc.weightx  = 1.0; gbc.weighty = 1.0;
	// permet de remplir l'espace disponible horizontalement 
	// et verticalement
	gbc.fill = GridBagConstraints.BOTH;

	//positionnement de champTexte
	//fixe la largeur du composant champTexte
	champTexte.setHorizontalAlignment(JTextField.RIGHT);
	gbc.gridwidth = 4;
	addGB(cp,champTexte, 0, 0);
	
	// La ligne supérieure du clavier
	JPanel ligneSup = new JPanel( );
	ligneSup.addContainerListener(auditeur);
	//largeur des composants de ligneSup
	gbc.gridwidth = 1;
	gbc.weightx	= 1.0;
	addGB(ligneSup, new BoutonCalc("AC", AC, 0), 0, 0);
	gbc.weightx	= 0.33;
	addGB(ligneSup, new BoutonCalc("Sqrt", SQRT, 0), 1, 0);
	gbc.weightx	= 1.0;
	addGB(ligneSup, new BoutonCalc("+", PLUS, 0), 2, 0 );
	//largeur de ligneSup
	gbc.gridwidth = 4;
	addGB(cp, ligneSup, 0, 1);

	//A COMPLETER

    }

    void addGB(Container cont, Component comp, int x, int y) {
	if ((cont.getLayout() instanceof GridBagLayout) ==  false)
	    cont.setLayout(new GridBagLayout());
	gbc.gridx = x; 
	gbc.gridy = y;
	cont.add(comp, gbc);
    }

class AuditeurConteneur extends ContainerAdapter {
		public void componentAdded(ContainerEvent e) {
		    Component comp = e.getChild();
		    if (comp instanceof BoutonCalc)
			((BoutonCalc)comp).addActionListener(Calculette.this);
		}
	    }

public void actionPerformed(ActionEvent e) {
	BoutonCalc cal =  (BoutonCalc)e.getSource();
	//int numeroOp = cal.getnumOp();
	//int valeurOp = cal.getvalOp();

	// A COMPLETER
    }

    public void calcule(int op){
	
	// A COMPLETER

    }
    public void concatene(int valOp){

	// A COMPLETER
    }

    public static void main(String[] args) {
	Calculette fen = new Calculette();	
	fen.setVisible(true);
    }
}

class BoutonCalc extends JButton{
    public int numBouton;
    public int valBouton;
    BoutonCalc(String s, int numBouton, int valBouton){
	super(s);
	this.numBouton=numBouton;
	this.valBouton=valBouton;
    }
    // A COMPLETER
}
