1 package org.columba.mail.gui.config.filter; 17 18 import javax.swing.table.AbstractTableModel ; 19 20 import org.columba.core.filter.Filter; 21 import org.columba.core.filter.FilterList; 22 import org.columba.core.filter.IFilter; 23 import org.columba.core.filter.IFilterList; 24 import org.columba.mail.util.MailResourceLoader; 25 26 27 class FilterListDataModel extends AbstractTableModel { 28 final String [] columnNames = { 29 MailResourceLoader.getString("dialog", "filter", 30 "description_tableheader"), 31 MailResourceLoader.getString("dialog", "filter", "enabled_tableheader") 32 }; 33 private IFilterList filterList; 34 35 public FilterListDataModel(IFilterList list) { 36 super(); 37 this.filterList = list; 38 } 39 40 41 public int getColumnCount() { 42 return columnNames.length; 43 } 44 45 46 public int getRowCount() { 47 return filterList.count(); 48 } 49 50 51 public String getColumnName(int col) { 52 return columnNames[col]; 53 } 54 55 56 public Object getValueAt(int row, int col) { 57 IFilter filter = filterList.get(row); 58 59 if (filter == null) { 60 return ""; 61 } 62 63 if (col == 0) { 64 String description = filter.get("description"); 66 67 if (description == null) { 68 return ""; 69 } 70 71 return description; 72 } else { 73 boolean enabled = filter.getBoolean("enabled"); 75 76 return enabled ? Boolean.TRUE : Boolean.FALSE; 77 } 78 } 79 80 81 public Class getColumnClass(int c) { 82 if (c == 0) { 83 return String .class; 84 } else { 85 return Boolean .class; 86 } 87 } 88 89 90 public boolean isCellEditable(int row, int col) { 91 return col == 1; 92 } 93 94 95 public void setValueAt(Object value, int row, int col) { 96 if (col == 1) { 97 IFilter filter = filterList.get(row); 98 filter.setEnabled(((Boolean ) value).booleanValue()); 99 } 100 } 101 102 107 public IFilter getFilter(int row) { 108 return filterList.get(row); 109 } 110 111 116 public void addFilter(Filter newFilter) throws IndexOutOfBoundsException { 117 int row = filterList.count(); 118 filterList.add(newFilter); 119 fireTableRowsInserted(row, row); 120 } 121 122 128 public void insertFilter(Filter newFilter, int index) { 129 filterList.insert(newFilter, index); 130 fireTableRowsInserted(index, index); 131 } 132 133 137 public void removeFilter(Filter filter) { 138 filterList.remove(filter); 139 fireTableDataChanged(); 140 } 141 } 142 | Popular Tags |