001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.history;
003
004import java.util.ArrayList;
005import java.util.List;
006
007import javax.swing.table.AbstractTableModel;
008
009import org.openstreetmap.josm.gui.history.TwoColumnDiff.Item.DiffItemType;
010
011/**
012 * Simple model storing "diff cells" in a list. Could probably have
013 * used a {@link javax.swing.table.DefaultTableModel} instead.
014 */
015class DiffTableModel extends AbstractTableModel {
016    private List<TwoColumnDiff.Item> rows;
017
018    public void setRows(List<TwoColumnDiff.Item> rows) {
019        this.rows = rows;
020    }
021
022    public DiffTableModel(List<TwoColumnDiff.Item> rows) {
023        this.rows = rows;
024    }
025    public DiffTableModel() {
026        this.rows = new ArrayList<>();
027    }
028    @Override
029    public int getRowCount() {
030        return rows.size();
031    }
032
033    @Override
034    public int getColumnCount() {
035        return 1;
036    }
037
038    @Override
039    public TwoColumnDiff.Item getValueAt(int rowIndex, int columnIndex) {
040        return rows.get(rowIndex);
041    }
042
043    public int getFirstChange() {
044        for (int i=0; i<rows.size(); i++) {
045            if (rows.get(i).state != DiffItemType.SAME)
046                return i;
047        }
048        return -1;
049    }
050}