/* AtomFilterChainTableModel.java created 2008-03-04
*
*/
package org.signalml.app.view.book.filter;
import static org.signalml.app.util.i18n.SvarogI18n._;
import javax.swing.table.AbstractTableModel;
import org.signalml.domain.book.filter.AtomFilterChain;
import org.signalml.exception.SanityCheckException;
import org.springframework.context.MessageSourceResolvable;
/** AtomFilterChainTableModel
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class AtomFilterChainTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
public static final int INDEX_COLUMN = 0;
public static final int NAME_COLUMN = 1;
public static final int TYPE_COLUMN = 2;
public static final int BLOCKING_COLUMN = 3;
public static final int ENABLED_COLUMN = 4;
private AtomFilterChain chain;
public AtomFilterChainTableModel() {
}
public AtomFilterChain getChain() {
return chain;
}
public void setChain(AtomFilterChain chain) {
if (this.chain != chain) {
this.chain = chain;
fireTableDataChanged();
}
}
@Override
public int getColumnCount() {
return 5;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case INDEX_COLUMN :
return Integer.class;
case NAME_COLUMN :
return String.class;
case TYPE_COLUMN :
return MessageSourceResolvable.class;
case BLOCKING_COLUMN :
return Boolean.class;
case ENABLED_COLUMN :
return Boolean.class;
default :
throw new SanityCheckException("Unsupported index [" + columnIndex + "]");
}
}
@Override
public String getColumnName(int column) {
switch (column) {
case INDEX_COLUMN :
return _("Index");
case NAME_COLUMN :
return _("Name");
case TYPE_COLUMN :
return _("Type");
case BLOCKING_COLUMN :
return _("Blocking");
case ENABLED_COLUMN :
return _("Enabled");
default :
throw new SanityCheckException("Unsupported index [" + column + "]");
}
}
@Override
public int getRowCount() {
if (chain == null) {
return 0;
}
return chain.getFilterCount();
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == BLOCKING_COLUMN || columnIndex == ENABLED_COLUMN) {
return true;
}
return false;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case INDEX_COLUMN :
return new Integer(rowIndex+1);
case NAME_COLUMN :
return chain.getFilterAt(rowIndex).getName();
case TYPE_COLUMN :
return chain.getFilterAt(rowIndex);
case BLOCKING_COLUMN :
return new Boolean(chain.getFilterAt(rowIndex).isBlocking());
case ENABLED_COLUMN :
return new Boolean(chain.getFilterAt(rowIndex).isEnabled());
default :
throw new SanityCheckException("Unsupported index [" + columnIndex + "]");
}
}
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
switch (columnIndex) {
case BLOCKING_COLUMN :
chain.getFilterAt(rowIndex).setBlocking((Boolean) value);
break;
case ENABLED_COLUMN :
chain.getFilterAt(rowIndex).setEnabled((Boolean) value);
break;
default :
throw new SanityCheckException("Unsupported index [" + columnIndex + "]");
}
}
// TODO rework into an event driven model if ever have time
public void onUpdate() {
fireTableDataChanged();
}
public void onUpdate(int row) {
fireTableRowsUpdated(row, row);
}
public void onInsert(int row) {
fireTableRowsInserted(row, row);
}
public void onDelete(int row) {
fireTableRowsDeleted(row, row);
}
}