View Javadoc

1   /*
2    *  XNap - A P2P framework and client.
3    *
4    *  See the file AUTHORS for copyright information.
5    *
6    *  This program is free software; you can redistribute it and/or modify
7    *  it under the terms of the GNU General Public License as published by
8    *  the Free Software Foundation.
9    *
10   *  This program 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
13   *  GNU General Public License for more details.
14   *
15   *  You should have received a copy of the GNU General Public License
16   *  along with this program; if not, write to the Free Software
17   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18   */
19  
20  package org.xnap.cmdl;
21  
22  import java.util.Iterator;
23  import java.util.TreeSet;
24  
25  public class DefaultCompleter implements Completer {
26  
27      // --- Data Field(s) ---
28  
29      private TreeSet completions = new TreeSet();
30  	private Iterator possibleValues;
31  
32      // --- Constructor(s) ---
33  
34      public DefaultCompleter()
35      {
36      }
37  
38      // --- Method(s) ---
39  
40      public void add(String completion)
41      {
42  		completions.add(completion);
43      }
44  
45      public void remove(String completion)
46      {
47  		completions.remove(completion);
48      }
49  
50      public String[] getCompletions()
51      {
52  		return (String[])completions.toArray(new String[0]);
53      }
54  
55      /*** 
56       *
57       */
58      public String completer(String text, int state) 
59      {
60  		if (state == 0) {
61  			// first call to completer(): initialize our choices-iterator
62  			possibleValues = completions.tailSet(text).iterator();
63  		}
64  
65  		if (possibleValues.hasNext()) {
66  			String nextKey = (String)possibleValues.next();
67  			if (nextKey.startsWith(text))
68  				return nextKey;
69  		}
70           
71  		return null;
72  	}
73  
74  }