View Javadoc

1   /**
2    *	jline - Java console input library
3    *	Copyright (c) 2002, 2003, 2004, 2005, Marc Prud'hommeaux <mwp1@cornell.edu>
4    *	All rights reserved.
5    *
6    *	Redistribution and use in source and binary forms, with or
7    *	without modification, are permitted provided that the following
8    *	conditions are met:
9    *
10   *	Redistributions of source code must retain the above copyright
11   *	notice, this list of conditions and the following disclaimer.
12   *
13   *	Redistributions in binary form must reproduce the above copyright
14   *	notice, this list of conditions and the following disclaimer
15   *	in the documentation and/or other materials provided with
16   *	the distribution.
17   *
18   *	Neither the name of JLine nor the names of its contributors
19   *	may be used to endorse or promote products derived from this
20   *	software without specific prior written permission.
21   *
22   *	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23   *	"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
24   *	BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
25   *	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
26   *	EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
27   *	FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
28   *	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29   *	PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30   *	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
31   *	AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32   *	LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
33   *	IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
34   *	OF THE POSSIBILITY OF SUCH DAMAGE.
35   */
36  package jline;
37  
38  import java.util.*;
39  
40  /**
41   *  A Completor is the mechanism by which tab-completion candidates
42   *  will be resolved.
43   *  <p>
44   *  <strong>TODO:</strong>
45   *  <ul>
46   *	<li>handle quotes and escaped quotes</li>
47   *	<li>enable automatic escaping of whitespace</li>
48   *  </ul>
49   *
50   *  @author  <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a>
51   */
52  public interface Completor
53  {
54  	/**
55  	 *  Populates <i>candidates</i> with a list of possible
56  	 *  completions for the <i>buffer</i>. The <i>candidates</i>
57  	 *  list will not be sorted before being displayed to the
58  	 *  user: thus, the complete method should sort the
59  	 *  {@link List} before returning.
60  	 *
61  	 *
62  	 *  @param  buffer		the buffer
63  	 *  @param  candidates	the {@link List} of candidates to populate
64  	 *  @return				the index of the <i>buffer</i> for which
65  	 *  					the completion will be relative
66  	 */
67  	int complete (String buffer, int cursor, List candidates);
68  }