package com.vistatec.ocelot.rules; import javax.swing.JTable; import com.vistatec.ocelot.rules.NullITSMetadata.NullDataCategoryFlag; import com.vistatec.ocelot.rules.RuleConfiguration.FilterMode; /** * Class that wraps a {@link JTable} that contains rule information * and checkboxes to select them. */ public class RulesTable extends FilterViewTable { public RulesTable(RuleConfiguration ruleConfig) { super(ruleConfig); } @Override protected boolean getInitialAllowSelection() { return (getConfig().getFilterMode() == FilterMode.SELECTED_SEGMENTS); } @Override protected TableModel getTableModel() { return new TableModel(); } class TableModel extends FilterTableModel { private static final long serialVersionUID = 1L; @Override public int getRowCount() { return getConfig().getRules().size(); } @Override public Object getValueAt(int row, int column) { Rule rule = getConfig().getRules().get(row); switch (column) { case 0: return rule.getEnabled(); case 1: return rule.getLabel(); case 2: DataCategoryFlag flag = rule.getFlag(); return (flag != null) ? flag : NullDataCategoryFlag.getInstance(); } throw new IllegalArgumentException("Invalid column " + column); } @Override public void setValueAt(Object obj, int row, int column) { if (obj instanceof Boolean && column == 0) { Rule rule = getConfig().getRules().get(row); getConfig().enableRule(rule, (Boolean)obj); fireTableCellUpdated(row, column); } } } }