KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > contact > gui > box > FilteringModel


1 package org.columba.contact.gui.box;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.List JavaDoc;
5
6 import javax.swing.AbstractListModel JavaDoc;
7 import javax.swing.event.DocumentEvent JavaDoc;
8 import javax.swing.event.DocumentListener JavaDoc;
9 import javax.swing.text.BadLocationException JavaDoc;
10 import javax.swing.text.Document JavaDoc;
11
12 import org.columba.addressbook.model.IContactModelPartial;
13
14 public class FilteringModel extends AbstractListModel JavaDoc implements
15         DocumentListener JavaDoc {
16     List JavaDoc<IContactModelPartial> list;
17
18     List JavaDoc<IContactModelPartial> filteredList;
19
20     String JavaDoc lastFilter = "";
21
22     public FilteringModel() {
23         list = new ArrayList JavaDoc<IContactModelPartial>();
24         filteredList = new ArrayList JavaDoc<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 JavaDoc getElementAt(int index) {
37         Object JavaDoc 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 JavaDoc search) {
47         filteredList.clear();
48         for (IContactModelPartial element : list) {
49             String JavaDoc 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     // DocumentListener Methods
59

60     public void insertUpdate(DocumentEvent JavaDoc event) {
61         Document JavaDoc doc = event.getDocument();
62         try {
63             lastFilter = doc.getText(0, doc.getLength());
64             filter(lastFilter);
65         } catch (BadLocationException JavaDoc ble) {
66             System.err.println("Bad location: " + ble);
67         }
68     }
69
70     public void removeUpdate(DocumentEvent JavaDoc event) {
71         Document JavaDoc doc = event.getDocument();
72         try {
73             lastFilter = doc.getText(0, doc.getLength());
74             filter(lastFilter);
75         } catch (BadLocationException JavaDoc ble) {
76             System.err.println("Bad location: " + ble);
77         }
78     }
79
80     public void changedUpdate(DocumentEvent JavaDoc event) {
81     }
82 }
83
Popular Tags