1 package org.columba.addressbook.gui.table.model; 19 20 import java.util.ArrayList ; 21 import java.util.Iterator ; 22 import java.util.List ; 23 import java.util.Map ; 24 25 import javax.swing.event.TableModelEvent ; 26 27 import org.columba.addressbook.model.ContactModelPartial; 28 import org.columba.addressbook.model.IContactModelPartial; 29 30 34 public class FilterDecorator extends TableModelDecorator { 35 36 private List list; 37 38 private String pattern = ""; 39 40 43 public FilterDecorator(ContactItemTableModel model) { 44 super(model); 45 46 list = new ArrayList (); 47 48 } 49 50 public void tableChanged(TableModelEvent e) { 51 filter(); 52 } 53 54 55 58 @Override 59 public int getRowCount() { 60 return list.size(); 61 } 62 63 66 public void setContactItemMap(Map <String ,IContactModelPartial> list) { 67 super.setContactItemMap(list); 68 69 if ( list != null) 70 filter(); 71 } 72 73 protected void filter() { 74 this.list = new ArrayList (); 75 76 pattern = pattern.toLowerCase(); 77 78 Iterator it = getRealModel().getContactItemMap().values().iterator(); 79 int i = 0; 80 while (it.hasNext()) { 81 ContactModelPartial item = (ContactModelPartial) it.next(); 82 String name = item.getName(); 83 String adr = item.getAddress(); 84 85 name = name.toLowerCase(); 86 adr = adr.toLowerCase(); 87 88 if ((name.indexOf(pattern) != -1) || (adr.indexOf(pattern) != -1)) { 89 90 this.list.add(new Integer (i)); 91 92 } 93 i++; 94 } 95 } 96 97 100 public Object getValueAt(int rowIndex, int columnIndex) { 101 if ( getRealModel().getRowCount() == 0 ) return null; 102 return getRealModel().getValueAt( 103 ((Integer ) list.get(rowIndex)).intValue(), columnIndex); 104 } 105 106 109 public void setValueAt(Object aValue, int rowIndex, int columnIndex) { 110 getRealModel().setValueAt(aValue, 111 ((Integer ) list.get(rowIndex)).intValue(), columnIndex); 112 } 113 114 117 public String getPattern() { 118 return pattern; 119 } 120 121 125 public void setPattern(String pattern) { 126 this.pattern = pattern; 127 } 128 129 132 public IContactModelPartial getContactItem(int index) { 133 return getRealModel().getContactItem( 134 ((Integer ) list.get(index)).intValue()); 135 } 136 } | Popular Tags |