src/jdk.internal.le/share/classes/jdk/internal/jline/console/completer/StringsCompleter.java
changeset 53333 fd6de53a0d6e
parent 53332 ab474ef0a0ac
parent 53010 086dfcfc3731
child 53334 b94283cb226b
equal deleted inserted replaced
53332:ab474ef0a0ac 53333:fd6de53a0d6e
     1 /*
       
     2  * Copyright (c) 2002-2016, the original author or authors.
       
     3  *
       
     4  * This software is distributable under the BSD license. See the terms of the
       
     5  * BSD license in the documentation provided with this software.
       
     6  *
       
     7  * http://www.opensource.org/licenses/bsd-license.php
       
     8  */
       
     9 package jdk.internal.jline.console.completer;
       
    10 
       
    11 import java.util.Arrays;
       
    12 import java.util.Collection;
       
    13 import java.util.List;
       
    14 import java.util.SortedSet;
       
    15 import java.util.TreeSet;
       
    16 
       
    17 import static jdk.internal.jline.internal.Preconditions.checkNotNull;
       
    18 
       
    19 /**
       
    20  * Completer for a set of strings.
       
    21  *
       
    22  * @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
       
    23  * @since 2.3
       
    24  */
       
    25 public class StringsCompleter
       
    26     implements Completer
       
    27 {
       
    28     private final SortedSet<String> strings = new TreeSet<String>();
       
    29 
       
    30     public StringsCompleter() {
       
    31         // empty
       
    32     }
       
    33 
       
    34     public StringsCompleter(final Collection<String> strings) {
       
    35         checkNotNull(strings);
       
    36         getStrings().addAll(strings);
       
    37     }
       
    38 
       
    39     public StringsCompleter(final String... strings) {
       
    40         this(Arrays.asList(strings));
       
    41     }
       
    42 
       
    43     public Collection<String> getStrings() {
       
    44         return strings;
       
    45     }
       
    46 
       
    47     public int complete(final String buffer, final int cursor, final List<CharSequence> candidates) {
       
    48         // buffer could be null
       
    49         checkNotNull(candidates);
       
    50 
       
    51         if (buffer == null) {
       
    52             candidates.addAll(strings);
       
    53         }
       
    54         else {
       
    55             for (String match : strings.tailSet(buffer)) {
       
    56                 if (!match.startsWith(buffer)) {
       
    57                     break;
       
    58                 }
       
    59 
       
    60                 candidates.add(match);
       
    61             }
       
    62         }
       
    63 
       
    64         return candidates.isEmpty() ? -1 : 0;
       
    65     }
       
    66 }