import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * Jendela utama aplikasi Buku Kontak.
 * JFrame tidak bisa dibuat pada lingkungan tanpa layar, sehingga
 * perakitan panel tombol dipisahkan ke method static yang bisa
 * dipanggil tanpa membuka jendela nyata.
 */
public class JendelaUtama extends JFrame {

    public JendelaUtama() {
        super("Buku Kontak");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        PanelFormKontak form = new PanelFormKontak();
        PanelTabelKontak tabel = new PanelTabelKontak();
        JPanel tombol = bangunPanelTombol(form, tabel);

        JPanel isi = new JPanel(new BorderLayout(8, 8));
        isi.add(form, BorderLayout.NORTH);
        isi.add(tabel, BorderLayout.CENTER);
        isi.add(tombol, BorderLayout.SOUTH);
        setContentPane(isi);

        pack();
        setLocationRelativeTo(null);
    }

    /**
     * Membangun panel tombol beserta aksinya.
     * Pada tahap ini tombol Tambah menulis langsung ke tabel:
     * bekerja, tetapi aturan data terkunci di dalam listener.
     */
    static JPanel bangunPanelTombol(PanelFormKontak form, PanelTabelKontak tabel) {
        JPanel tombol = new JPanel(new FlowLayout(FlowLayout.LEADING));
        JButton tambah = new JButton("Tambah");

        tambah.addActionListener(e -> {
            Kontak baru = form.hasilKontak(tabel.idBerikutnya());
            tabel.tambahBaris(baru);
            form.kosongkan();
        });

        tombol.add(tambah);
        return tombol;
    }
}
