KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > calendar > ui > box > FilteringModel


1 package org.columba.calendar.ui.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.calendar.model.api.IEventInfo;
13
14 public class FilteringModel extends AbstractListModel JavaDoc implements
15         DocumentListener JavaDoc {
16     List JavaDoc<IEventInfo> list;
17
18     List JavaDoc<IEventInfo> filteredList;
19
20     String JavaDoc lastFilter = "";
21
22     public FilteringModel() {
23         list = new ArrayList JavaDoc<IEventInfo>();
24         filteredList = new ArrayList JavaDoc<IEventInfo>();
25     }
26
27     public void addElement(IEventInfo 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 (IEventInfo element : list) {
49             String JavaDoc s = search.toLowerCase();
50             if (element.getEvent().getSummary().toLowerCase().indexOf(s) != -1)
51                 filteredList.add(element);
52         }
53         fireContentsChanged(this, 0, getSize());
54     }
55
56     // DocumentListener Methods
57

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