1 package org.columba.calendar.ui.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.calendar.model.api.IEventInfo; 13 14 public class FilteringModel extends AbstractListModel implements 15 DocumentListener { 16 List <IEventInfo> list; 17 18 List <IEventInfo> filteredList; 19 20 String lastFilter = ""; 21 22 public FilteringModel() { 23 list = new ArrayList <IEventInfo>(); 24 filteredList = new ArrayList <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 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 (IEventInfo element : list) { 49 String 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 58 public void insertUpdate(DocumentEvent event) { 59 Document doc = event.getDocument(); 60 try { 61 lastFilter = doc.getText(0, doc.getLength()); 62 filter(lastFilter); 63 } catch (BadLocationException ble) { 64 System.err.println("Bad location: " + ble); 65 } 66 } 67 68 public void removeUpdate(DocumentEvent event) { 69 Document doc = event.getDocument(); 70 try { 71 lastFilter = doc.getText(0, doc.getLength()); 72 filter(lastFilter); 73 } catch (BadLocationException ble) { 74 System.err.println("Bad location: " + ble); 75 } 76 } 77 78 public void changedUpdate(DocumentEvent event) { 79 } 80 } 81 | Popular Tags |