import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTable;

/**
 * Menguji perakitan antarmuka tanpa membuka jendela nyata:
 * susun isi jendela dari komponen ringan, isi formulir,
 * lalu picu tombol Tambah dengan doClick().
 */
public class DemoAntarmuka {

    public static void main(String[] args) {
        PanelFormKontak form = new PanelFormKontak();
        PanelTabelKontak panelTabel = new PanelTabelKontak();
        JPanel tombol = JendelaUtama.bangunPanelTombol(form, panelTabel);

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

        System.out.println("== struktur antarmuka ==");
        System.out.println("anak panel isi  = " + isi.getComponentCount());
        System.out.println("anak form       = " + form.getComponentCount());
        System.out.println("anak tombol     = " + tombol.getComponentCount());
        JTable tabel = panelTabel.tabel();
        System.out.println("kolom tabel     = " + tabel.getColumnCount());
        System.out.println("judul kolom     = " + tabel.getColumnName(0) + ", "
                + tabel.getColumnName(1) + ", " + tabel.getColumnName(2) + ", "
                + tabel.getColumnName(3));

        System.out.println();
        System.out.println("== simulasi klik Tambah ==");
        form.isi(new Kontak(0, "Budi", "budi@example.com", "0812-1000-1001"));
        ((JButton) tombol.getComponent(0)).doClick();
        cetakBaris(tabel);

        form.isi(new Kontak(0, "Siti", "siti@example.com", "0812-1000-1002"));
        ((JButton) tombol.getComponent(0)).doClick();
        cetakBaris(tabel);

        System.out.println("form kosong     = " + form.hasilKontak(0).nama().isEmpty());
        System.out.println("id berikutnya   = " + panelTabel.idBerikutnya());
    }

    /** Mencetak seluruh baris tabel lewat pembacaan view. */
    private static void cetakBaris(JTable tabel) {
        System.out.println("jumlah baris    = " + tabel.getRowCount());
        for (int r = 0; r < tabel.getRowCount(); r++) {
            System.out.println("  baris " + r + ": " + tabel.getValueAt(r, 0)
                    + " | " + tabel.getValueAt(r, 1)
                    + " | " + tabel.getValueAt(r, 2)
                    + " | " + tabel.getValueAt(r, 3));
        }
    }
}
