KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lobobrowser > html > js > FilteredObjectList


1 /*
2     GNU LESSER GENERAL PUBLIC LICENSE
3     Copyright (C) 2006 The Lobo Project
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Lesser General Public
7     License as published by the Free Software Foundation; either
8     version 2.1 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13     Lesser General Public License for more details.
14
15     You should have received a copy of the GNU Lesser General Public
16     License along with this library; if not, write to the Free Software
17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19     Contact info: xamjadmin@users.sourceforge.net
20 */

21 /*
22  * Created on Oct 9, 2005
23  */

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 JavaDoc lock;
34     
35     /**
36      * @param filter
37      * @param list
38      */

39     public FilteredObjectList(ObjectFilter filter, Collection list, Object JavaDoc lock) {
40         super();
41         this.filter = filter;
42         sourceNodeList = list;
43         this.lock = lock;
44     }
45
46     public Object JavaDoc item(int index) {
47         synchronized(this.lock) {
48             int count = 0;
49             Iterator i = this.sourceNodeList.iterator();
50             while(i.hasNext()) {
51                 Object JavaDoc node = (Object JavaDoc) 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 JavaDoc node = (Object JavaDoc) i.next();
69                 if(this.filter.accept(node)) {
70                     count++;
71                 }
72             }
73             return count;
74         }
75     }
76 }
77
Popular Tags