package husacct.graphics.presentation.tables; import husacct.ServiceProvider; import husacct.common.dto.DependencyDTO; import husacct.common.locale.ILocaleService; import java.util.HashMap; import javax.swing.table.AbstractTableModel; public class DependencyDataModel extends AbstractTableModel { private static final long serialVersionUID = -298507387139026205L; private ILocaleService localeService; private DependencyDTO[] data; private HashMap<String, String> columnNames; private String[] columnKeys; public DependencyDataModel(DependencyDTO[] dtos) { localeService = ServiceProvider.getInstance().getLocaleService(); columnKeys = new String[] { "From", "To", "Type", "Linenumber", "Direct/Indirect" }; 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])); columnNames.put(columnKeys[4], localeService.getTranslatedString("Direct")); 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]; DependencyDTO 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 localeService.getTranslatedString(row.type); else if (columnKey.equals(columnKeys[3])) return row.lineNumber; else if (columnKey.equals(columnKeys[4])) return row.isIndirect ? localeService.getTranslatedString("Indirect") : localeService.getTranslatedString("Direct"); else return null; } //JTable uses this method to determine the default renderer/editor for each cell. @Override public Class getColumnClass(int c) { if (c == 3) { return new Integer(5).getClass(); } else { String s = ""; return s.getClass(); } } }