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 transient List<TwoColumnDiff.Item> rows = new ArrayList<>();
017    private boolean reversed;
018
019    public void setRows(List<TwoColumnDiff.Item> rows, boolean reversed) {
020        this.rows = rows;
021        this.reversed = reversed;
022        fireTableDataChanged();
023    }
024
025    @Override
026    public int getRowCount() {
027        return rows.size();
028    }
029
030    @Override
031    public int getColumnCount() {
032        return 1;
033    }
034
035    public boolean isReversed() {
036        return reversed;
037    }
038
039    @Override
040    public TwoColumnDiff.Item getValueAt(int rowIndex, int columnIndex) {
041        return rows.get(rowIndex);
042    }
043
044    public int getFirstChange() {
045        for (int i = 0; i < rows.size(); i++) {
046            if (rows.get(i).state != DiffItemType.SAME)
047                return i;
048        }
049        return -1;
050    }
051}