1 package org.columba.contact.gui.box; 2 3 import java.util.ArrayList ; 4 import java.util.List ; 5 6 import javax.swing.AbstractListModel ; 7 import javax.swing.event.DocumentEvent ; 8 import javax.swing.event.DocumentListener ; 9 import javax.swing.text.BadLocationException ; 10 import javax.swing.text.Document ; 11 12 import org.columba.addressbook.model.IContactModelPartial; 13 14 public class FilteringModel extends AbstractListModel implements 15 DocumentListener { 16 List <IContactModelPartial> list; 17 18 List <IContactModelPartial> filteredList; 19 20 String lastFilter = ""; 21 22 public FilteringModel() { 23 list = new ArrayList <IContactModelPartial>(); 24 filteredList = new ArrayList <IContactModelPartial>(); 25 } 26 27 public void addElement(IContactModelPartial element) { 28 list.add(element); 29 filter(lastFilter); 30 } 31 32 public int getSize() { 33 return filteredList.size(); 34 } 35 36 public Object getElementAt(int index) { 37 Object returnValue; 38 if (index < filteredList.size()) { 39 returnValue = filteredList.get(index); 40 } else { 41 returnValue = null; 42 } 43 return returnValue; 44 } 45 46 void filter(String search) { 47 filteredList.clear(); 48 for (IContactModelPartial element : list) { 49 String s = search.toLowerCase(); 50 if ((element.getAddress().toLowerCase().indexOf(s) != -1) 51 || (element.getName().toLowerCase().indexOf(s) != -1)) { 52 filteredList.add(element); 53 } 54 } 55 fireContentsChanged(this, 0, getSize()); 56 } 57 58 60 public void insertUpdate(DocumentEvent event) { 61 Document doc = event.getDocument(); 62 try { 63 lastFilter = doc.getText(0, doc.getLength()); 64 filter(lastFilter); 65 } catch (BadLocationException ble) { 66 System.err.println("Bad location: " + ble); 67 } 68 } 69 70 public void removeUpdate(DocumentEvent event) { 71 Document doc = event.getDocument(); 72 try { 73 lastFilter = doc.getText(0, doc.getLength()); 74 filter(lastFilter); 75 } catch (BadLocationException ble) { 76 System.err.println("Bad location: " + ble); 77 } 78 } 79 80 public void changedUpdate(DocumentEvent event) { 81 } 82 } 83 | Popular Tags |