import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 * Panel tabel kontak: JTable di dalam JScrollPane.
 * Data disimpan pada DefaultTableModel — praktis untuk permulaan.
 */
public class PanelTabelKontak extends JScrollPane {

    private final JTable tabel;
    private final DefaultTableModel model;

    public PanelTabelKontak() {
        super();
        model = new DefaultTableModel(
                new Object[] { "Id", "Nama", "Email", "Telepon" }, 0) {
            // Sel tabel tidak bisa disunting langsung; perubahan lewat formulir.
            @Override
            public boolean isCellEditable(int baris, int kolom) {
                return false;
            }
        };
        tabel = new JTable(model);
        setViewportView(tabel);
    }

    /** Tabel yang dipakai panel — pembacaan nilai lewat view ini. */
    public JTable tabel() {
        return tabel;
    }

    /** Menambah satu kontak sebagai baris baru. */
    public void tambahBaris(Kontak kontak) {
        model.addRow(new Object[] {
                kontak.id(), kontak.nama(), kontak.email(), kontak.telepon() });
    }

    /** Jumlah baris data saat ini. */
    public int jumlahBaris() {
        return model.getRowCount();
    }

    /**
     * Id untuk baris berikutnya: jumlah baris + 1.
     * Cepat, tetapi rapuh — id akan berulang setelah baris dihapus.
     */
    public int idBerikutnya() {
        return jumlahBaris() + 1;
    }
}
