import javax.swing.table.DefaultTableModel;

// Razred za model tabele, ki prikazuje seznam cest
public class CestaTableModel extends DefaultTableModel {
    private static final String[] COLUMN_NAMES = {"Ime", "Dolžina (km)", "Številka", "Vrsta", "Dodatne Informacije"}; // Imena stolpcev
    private Cesta[] cestniSeznam;  // Seznam vseh cest (trenutno ni uporabljen)

    // Konstruktor za inicializacijo modela tabele
    public CestaTableModel() {
        super(COLUMN_NAMES, 0);  // Nastavi imena stolpcev in začetno število vrstic
        cestniSeznam = new Cesta[0];  // Inicializira prazno tabelo cest
    }

    // Metoda za dodajanje nove ceste v tabelo
    public void addCesta(Cesta cesta) {
        // Pripravi podatke za vrstico
        Object[] rowData = new Object[5];
        rowData[0] = cesta.getIme();  // Ime ceste
        rowData[1] = cesta.getDolzina();  // Dolžina ceste
        rowData[2] = cesta.getStevilka();  // Številka ceste
        rowData[3] = cesta.getVrsta();  // Vrsta ceste
        rowData[4] = cesta instanceof Avtocesta ? "Max Hitrost: " + ((Avtocesta) cesta).getMaxHitrost() :
                      cesta instanceof KmeckaCesta ? "Asfaltirana: " + ((KmeckaCesta) cesta).isAsfaltirana() : "";

        // Dodaj novo vrstico v tabelo
        addRow(rowData);
    }

    // Metoda za posodobitev obstoječe ceste v tabeli
    public void updateCesta(int rowIndex, Cesta cesta) {
        // Preveri, ali je indeks v veljavnem razponu
        if (rowIndex >= 0 && rowIndex < getRowCount()) {
            // Posodobi podatke v izbrani vrstici
            setValueAt(cesta.getIme(), rowIndex, 0);  // Ime ceste
            setValueAt(cesta.getDolzina(), rowIndex, 1);  // Dolžina ceste
            setValueAt(cesta.getStevilka(), rowIndex, 2);  // Številka ceste
            setValueAt(cesta.getVrsta(), rowIndex, 3);  // Vrsta ceste
            setValueAt(cesta instanceof Avtocesta ? "Max Hitrost: " + ((Avtocesta) cesta).getMaxHitrost() :
                      cesta instanceof KmeckaCesta ? "Asfaltirana: " + ((KmeckaCesta) cesta).isAsfaltirana() : "", rowIndex, 4);  // Dodatne informacije
        }
    }
}
