1 21 24 package org.lobobrowser.html.js; 25 26 import java.util.*; 27 28 import org.lobobrowser.js.*; 29 30 public class FilteredObjectList extends AbstractScriptableDelegate { 31 private final Collection sourceNodeList; 32 private final ObjectFilter filter; 33 private final Object lock; 34 35 39 public FilteredObjectList(ObjectFilter filter, Collection list, Object lock) { 40 super(); 41 this.filter = filter; 42 sourceNodeList = list; 43 this.lock = lock; 44 } 45 46 public Object item(int index) { 47 synchronized(this.lock) { 48 int count = 0; 49 Iterator i = this.sourceNodeList.iterator(); 50 while(i.hasNext()) { 51 Object node = (Object ) i.next(); 52 if(this.filter.accept(node)) { 53 if(count == index) { 54 return node; 55 } 56 count++; 57 } 58 } 59 return null; 60 } 61 } 62 63 public int getLength() { 64 synchronized(this.lock) { 65 int count = 0; 66 Iterator i = this.sourceNodeList.iterator(); 67 while(i.hasNext()) { 68 Object node = (Object ) i.next(); 69 if(this.filter.accept(node)) { 70 count++; 71 } 72 } 73 return count; 74 } 75 } 76 } 77 | Popular Tags |