View Javadoc
1   package io.extact.rms.client.console.ui.textio;
2   
3   import java.util.ArrayList;
4   import java.util.Collections;
5   import java.util.List;
6   
7   import org.beryx.textio.InputReader;
8   import org.beryx.textio.IntInputReader;
9   import org.beryx.textio.TextTerminal;
10  
11  public class RmsIntInputReader extends IntInputReader {
12  
13      private List<Integer> selectableValues;
14  
15      public RmsIntInputReader(TextTerminal<?> textTerminalSupplier) {
16          super(() -> textTerminalSupplier);
17          valueCheckers.add((val, propName) -> getSelectableValidationErrors(val));
18      }
19  
20      public InputReader<Integer, IntInputReader> withSelectableValues(List<Integer> values, int excludeValue) {
21          values = new ArrayList<>(values);
22          values.add(excludeValue);
23          return withSelectableValues(values);
24      }
25  
26      public InputReader<Integer, IntInputReader> withSelectableValues(List<Integer> values) {
27          selectableValues = values;
28          return this;
29      }
30  
31      private List<String> getSelectableValidationErrors(Integer val) {
32          if (!selectableValues.contains(val)) {
33              return Collections.singletonList("Please enter a selectable value.");
34          }
35          return null;
36      }
37  }