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}