package open.dolphin.impl.img; import java.util.List; import javax.swing.table.AbstractTableModel; import open.dolphin.client.ImageEntry; /** * ImageTableModel * * @author Minagawa, Kazushi. Digital Globe, Inc. */ public class ImageTableModel extends AbstractTableModel { private final String[] columnNames; private final int columnCount; private List imageList; public ImageTableModel(String[] columnNames, int columnCount) { this.columnNames = columnNames; this.columnCount = columnCount; } @Override public String getColumnName(int col) { return (columnNames != null && col < columnNames.length) ? columnNames[col] : null; } @Override public int getColumnCount() { return columnCount; } @Override public int getRowCount() { if (imageList == null) { return 0; } int size = imageList.size(); int rowCount = size / columnCount; return ( (size % columnCount) != 0 ) ? (rowCount + 1) : rowCount; } @Override public Object getValueAt(int row, int col) { int index = row * columnCount + col; if (!isValidIndex(index)) { return null; } ImageEntry entry = (ImageEntry)imageList.get(index); return (Object)entry; } public void setImageList(List list) { if (imageList != null) { imageList.clear(); imageList = null; } imageList = list; this.fireTableDataChanged(); } public List getImageList() { return imageList; } private boolean isValidIndex(int index) { return (imageList != null && index >= 0 && index < imageList.size()); } public void clear() { if (imageList != null) { imageList.clear(); this.fireTableDataChanged(); } } }