package husacct.graphics.presentation.tables;
import java.util.HashMap;
import javax.swing.table.AbstractTableModel;
import husacct.ServiceProvider;
import husacct.common.dto.UmlLinkDTO;
import husacct.common.locale.ILocaleService;
public class UmlLinkDataModel extends AbstractTableModel {
private static final long serialVersionUID = -298507387139026205L;
private ILocaleService localeService;
private UmlLinkDTO[] data;
private HashMap<String, String> columnNames;
private String[] columnKeys;
public UmlLinkDataModel(UmlLinkDTO[] dtos) {
localeService = ServiceProvider.getInstance().getLocaleService();
columnKeys = new String[] { "From", "To", "Type", "Attribute" };
columnNames = new HashMap<String, String>();
columnNames.put(columnKeys[0], localeService.getTranslatedString(columnKeys[0]));
columnNames.put(columnKeys[1], localeService.getTranslatedString(columnKeys[1]));
columnNames.put(columnKeys[2], localeService.getTranslatedString(columnKeys[2]));
columnNames.put(columnKeys[3], localeService.getTranslatedString(columnKeys[3]));
data = dtos;
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int columnIndex) {
return columnNames.get(columnKeys[columnIndex]);
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
String columnKey = columnKeys[columnIndex];
UmlLinkDTO row = data[rowIndex];
if (columnKey.equals(columnKeys[0])) return row.from;
else if (columnKey.equals(columnKeys[1])) return row.to;
else if (columnKey.equals(columnKeys[2])) return row.type;
else if (columnKey.equals(columnKeys[3])) return row.attributeFrom;
else return null;
}
//JTable uses this method to determine the default renderer/editor for each cell.
@Override
public Class getColumnClass(int c) {
if (c == 5) {
return new Integer(4).getClass();
} else {
String s = "";
return s.getClass();
}
}
}