001    package nl.cwi.sen1.gui.plugin.data;
002    
003    import java.util.Iterator;
004    import java.util.Vector;
005    
006    import javax.swing.table.DefaultTableModel;
007    
008    import nl.cwi.sen1.gui.plugin.ProgressCell;
009    
010    import aterm.ATerm;
011    
012    public class ProgressTableModel extends DefaultTableModel {
013            public void removeStatus(ATerm id) {
014                    for (Iterator iter = dataVector.iterator(); iter.hasNext();) {
015                            Vector row = (Vector) iter.next();
016                            ProgressCell cell = (ProgressCell) row.elementAt(0);
017                            if (cell.getId().isEqual(id)) {
018                                    iter.remove();
019                            }
020                    }
021            }
022    
023            public void setStatus(ATerm id, String columnName, String status) {
024                    Vector found = null;
025    
026                    for (Iterator iter = dataVector.iterator(); iter.hasNext();) {
027                            Vector row = (Vector) iter.next();
028                            ProgressCell cell = (ProgressCell) row.elementAt(0);
029                            if (cell.getId().isEqual(id)) {
030                                    found = row;
031                            }
032                    }
033    
034                    int column = findColumn(columnName);
035                    if (column == -1) {
036                            addColumn(columnName);
037                            column = findColumn(columnName);
038                    }
039    
040                    if (found != null) {
041                            found.setElementAt(new ProgressCell(id, status), column);
042                    } else {
043                            ProgressCell[] rowData = new ProgressCell[getColumnCount()];
044                            rowData[0] = new ProgressCell(id, id.toString());
045                            rowData[column] = new ProgressCell(status);
046                            addRow(rowData);
047                    }
048                    fireTableDataChanged();
049            }
050    
051            public void setMessage(ATerm id, String message) {
052                    Vector found = null;
053                    
054                    for (Iterator iter = dataVector.iterator(); iter.hasNext();) {
055                            Vector row = (Vector) iter.next();
056                            ProgressCell cell = (ProgressCell) row.elementAt(0);
057                            if (cell.getId().isEqual(id)) {
058                                    found = row;
059                            }
060                    }
061                    
062                    if (found != null) {
063                            found.setElementAt(new ProgressCell(id, message), 0);
064                    } else {
065                            ProgressCell[] rowData = new ProgressCell[getColumnCount()];
066                            rowData[0] = new ProgressCell(id, message);
067                            addRow(rowData);
068                    }
069                    fireTableDataChanged();
070            }
071    
072            public boolean isCellEditable(int row, int col) {
073                    return false;
074            }
075    }