import java.awt.GraphicsEnvironment;
import java.nio.file.Path;
import javax.swing.SwingUtilities;

/**
 * Titik masuk aplikasi Buku Kontak: memilih penyimpanan berkas,
 * memuat data, lalu membuka jendela utama pada Event Dispatch Thread.
 */
public class AplikasiKontak {

    public static void main(String[] args) {
        if (GraphicsEnvironment.isHeadless()) {
            System.out.println("Lingkungan tanpa layar terdeteksi; jendela tidak dapat dibuka.");
            System.out.println("Jalankan aplikasi ini pada komputer dengan tampilan grafis.");
            return;
        }
        SwingUtilities.invokeLater(AplikasiKontak::bukaJendela);
    }

    private static void bukaJendela() {
        DaftarKontak daftar;
        try {
            daftar = new DaftarKontak(new KontakDaoBerkas(Path.of("kontak.txt")));
        } catch (PersistensiGagalException e) {
            System.err.println("Gagal memuat penyimpanan: " + e.getMessage());
            daftar = new DaftarKontak();
        }
        new JendelaUtama(daftar).setVisible(true);
    }
}
