import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Panel formulir kontak: tiga isian berjajar dengan label rata kanan.
 * Panel hanya membaca dan menulis komponen Swing.
 */
public class PanelFormKontak extends JPanel {

    private final JTextField isianNama = new JTextField(16);
    private final JTextField isianEmail = new JTextField(16);
    private final JTextField isianTelepon = new JTextField(16);

    public PanelFormKontak() {
        super(new GridBagLayout());
        GridBagConstraints k = new GridBagConstraints();
        k.insets = new Insets(4, 4, 4, 4);
        k.anchor = GridBagConstraints.LINE_END;

        String[] label = { "Nama:", "Email:", "Telepon:" };
        JTextField[] isian = { isianNama, isianEmail, isianTelepon };
        for (int i = 0; i < label.length; i++) {
            k.gridx = 0;
            k.gridy = i;
            add(new JLabel(label[i]), k);
            k.gridx = 1;
            k.fill = GridBagConstraints.HORIZONTAL;
            k.weightx = 1.0;
            add(isian[i], k);
            k.fill = GridBagConstraints.NONE;
            k.weightx = 0.0;
        }
    }

    /** Membaca isi formulir sebagai satu kontak; id ditentukan pemanggil. */
    public Kontak hasilKontak(int id) {
        return new Kontak(id,
                isianNama.getText().strip(),
                isianEmail.getText().strip(),
                isianTelepon.getText().strip());
    }

    /** Mengisi formulir dari satu kontak. */
    public void isi(Kontak kontak) {
        isianNama.setText(kontak.nama());
        isianEmail.setText(kontak.email());
        isianTelepon.setText(kontak.telepon());
    }

    /** Mengosongkan seluruh isian setelah kontak selesai disimpan. */
    public void kosongkan() {
        isianNama.setText("");
        isianEmail.setText("");
        isianTelepon.setText("");
    }
}
