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 }