
import java.awt.GridLayout;
import java.text.Format;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.MaskFormatter;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Andréa
 */
public class AffichageChamps extends JPanel implements Observer {

    private JLabel[] labels = new JLabel[3];
    private JFormattedTextField[] fields = new JFormattedTextField[3];

    public AffichageChamps(Triplet t){
        t.addObserver(this);
        
        MyListener listener = new MyListener(this,t);
        fields[0] = new JFormattedTextField(createFormatter("#"));
        fields[0].addPropertyChangeListener("value", listener);
        fields[0].setName(Triplet.FieldName.A.toString());
        fields[0].setValue(t.getA());

        fields[1] = new JFormattedTextField(createFormatter("#"));
        fields[1].addPropertyChangeListener("value", listener);
        fields[1].setName(Triplet.FieldName.B.toString());
        fields[1].setValue(t.getB());

        fields[2] = new JFormattedTextField(createFormatter("#"));
        fields[2].addPropertyChangeListener("value", listener);
        fields[2].setName(Triplet.FieldName.C.toString());
        fields[2].setValue(t.getC());

        labels[0] = new JLabel("A : ");
        labels[0].setLabelFor(fields[0]);
        labels[1] = new JLabel("B : ");
        labels[1].setLabelFor(fields[1]);
        labels[2] = new JLabel("C : ");
        labels[2].setLabelFor(fields[2]);

        setLayout(new GridLayout(2, 3));

        add(labels[0]);
        add(labels[1]);
        add(labels[2]);
        add(fields[0]);
        add(fields[1]);
        add(fields[2]);
    }

    private MaskFormatter createFormatter(String formatPattern) {
        MaskFormatter format = null;
        try {
            format = new MaskFormatter(formatPattern);
        } catch (ParseException ex) {
            Logger.getLogger(AffichageChamps.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("Formatter : " + format);
        return format;
    }

    public void update(Triplet.FieldName fieldName, Integer newValue) {
//        switch(fieldName){
//            case A:
//                fields[0].setText(String.valueOf(newValue));
//                break;
//            case B:
//                fields[1].setText(String.valueOf(newValue));
//                break;
//            case C:
//                fields[2].setText(String.valueOf(newValue));
//                break;
//        }
    }

}
