@Override protected void printPrompt(List<String> prompt, TextTerminal<?> textTerminal) { List<String> boolPrompt = prompt; if(promptAdjustments && prompt != null && !prompt.isEmpty()) { String lastLine = prompt.get(prompt.size() - 1) + " (" + trueInput + "/" + falseInput + ")"; boolPrompt = new ArrayList<>(prompt); boolPrompt.set(boolPrompt.size() - 1, lastLine); } super.printPrompt(boolPrompt, textTerminal); } }
protected String readWithPrompt(TextTerminal<?> textTerminal, List<String> prompt) { printPrompt(prompt, textTerminal); while(true) { String sInput = null; try { sInput = textTerminal.read(inputMasking); } catch (ReadInterruptionException e) { ReadInterruptionData data = e.getReadInterruptionData(); logger.debug("ReadInterruptionException with data: " + data); switch (data.getAction()) { case CONTINUE: logger.error("ReadInterruptionException with action CONTINUE."); // no break here: handle it as RESTART case RESTART: if(data.isRedrawRequired()) { logger.trace("Re-printing prompt before read restart"); textTerminal.println(); printPrompt(prompt, textTerminal); logger.trace("Prompt re-printed."); } continue; case RETURN: return data.getReturnValue(); case ABORT: throw new ReadAbortedException(data.getPayload(), e.getPartialInput()); } } return sInput; } }