/** * @author Mauricio Araya (maray[at]inf.utfsm.cl) * @author Jorge Avarias (javarias[at]inf.utfsm.cl) * * @since 1.0 */ package cl.utfsm.acs.ebe.util; import java.lang.reflect.Array; import java.util.TreeMap; import javax.swing.table.AbstractTableModel; import cl.utfsm.acs.ebe.Error; import cl.utfsm.acs.ebe.ErrorBrowserEditor; import cl.utfsm.acs.ebe.Member; import cl.utfsm.acs.types.SimpleObject; /** * * @author Jorge Avarias (javarias[at]inf.utfsm.cl) * * Implements the table model used in the GUI of * Error Browser and Editor. This model is used to * show the members list with their attributes * */ public class MembersTableModel extends AbstractTableModel { private Object[][]tableObjects; private TreeMap<String,Member> members=null; private ErrorBrowserEditor editor; private static String[] columnNames = { "Name", "Type", "Description" }; public MembersTableModel(){ } public MembersTableModel(ErrorBrowserEditor editor) { this.editor=editor; members=editor.getSelectedError().getMembers(); tableObjects = new Object[members.size()][3]; int i = 0; for(Member mem: members.values()){ tableObjects[i][0]=mem.getAttributes().get("name").toString(); tableObjects[i][1]=mem.getAttributes().get("type").toString(); tableObjects[i][2]=mem.getAttributes().get("description").toString(); i++; } } public int getRowCount() { if (tableObjects!=null) return Array.getLength(tableObjects); return 0; } public int getColumnCount() { return 3; } public Object getValueAt(int rowIndex, int columnIndex) { return tableObjects[rowIndex][columnIndex]; } public boolean isCellEditable(int row, int col){ return true; } public String getColumnName(int c){ return columnNames[c]; } public void setValueAt(Object value, int row, int col){ TreeMap <String,SimpleObject>attrs = members.get(tableObjects[row][0].toString()).getAttributes(); String oldValue = tableObjects[row][col].toString(); tableObjects[row][col]=value; if(col==0){ Error error = editor.getSelectedError(); Member mem = error.getMembers().get(oldValue); error.getMembers().remove(oldValue); //Member mem = new Member(); mem.setValue(value.toString()); mem.setAttributeValue("name",value.toString()); error.getMembers().put(mem.getValue(),mem); editor.refreshMembersTable(); return; } if(col==1){ SimpleObject o = attrs.get("type"); o.setValue(value.toString()); attrs.put("type",o); } if(col==2){ SimpleObject o = attrs.get("description"); o.setValue(value.toString()); attrs.put("description",o); } } }