public <T> GenericInputReader<T> newGenericInputReader(Function<String, InputReader.ParseResult<T>> parser) { return new GenericInputReader<T>(textTerminalSupplier, parser); } }
private static BiConsumer<TextIO, RunnerData> chooseMenu(TextIO textIO) { List<BiConsumer<TextIO, RunnerData>> apps = Arrays.asList( chatMenu, new AutosaveMenu(), new SaveMenu(), new TimeRatioMenu(), // new Weather(), new ExitMenu() ); BiConsumer<TextIO, RunnerData> app = textIO.<BiConsumer<TextIO, RunnerData>>newGenericInputReader(null) .withNumberedPossibleValues(apps) .read(System.lineSeparator() + "------------------- C O N S O L E M E N U -------------------" + System.lineSeparator()); String propsFileName = app.getClass().getSimpleName() + ".properties"; System.setProperty(AbstractTextTerminal.SYSPROP_PROPERTIES_FILE_LOCATION, propsFileName); // profile.term().moveToLineStart(); return app; }
private static BiConsumer<TextIO, RunnerData> chooseApp(TextIO textIO) { List<BiConsumer<TextIO, RunnerData>> apps = Arrays.asList( new UserDataCollector(), new ECommerce(), new Cuboid(), new Weather(), new ShoppingList(), new ContactInfo() ); BiConsumer<TextIO, RunnerData> app = textIO.<BiConsumer<TextIO, RunnerData>>newGenericInputReader(null) .withNumberedPossibleValues(apps) .read("Choose the application to be run"); String propsFileName = app.getClass().getSimpleName() + ".properties"; System.setProperty(AbstractTextTerminal.SYSPROP_PROPERTIES_FILE_LOCATION, propsFileName); return app; }
private static TextIoApp<?> createTextIoApp(TextIO textIO, BiConsumer<TextIO, RunnerData> app, WebTextTerminal webTextTerm) { class Provider { private final String name; private final Supplier<TextIoApp<?>> supplier; private Provider(String name, Supplier<TextIoApp<?>> supplier) { this.name = name; this.supplier = supplier; } @Override public String toString() { return name; } } Provider textIoAppProvider = textIO.<Provider>newGenericInputReader(null) .withNumberedPossibleValues( new Provider("Ratpack", () -> new RatpackTextIoApp(app, webTextTerm)), new Provider("Spark", () -> new SparkTextIoApp(app, webTextTerm)) ) .read("\nChoose the web framework to be used"); return textIoAppProvider.supplier.get(); }
while(true) { TextTerminalProvider terminalProvider = textIO.<TextTerminalProvider>newGenericInputReader(null) .withNumberedPossibleValues( new NamedProvider("Default terminal (provided by TextIoFactory)", TextIoFactory::getTextTerminal), new SystemTextTerminalProvider(), new NamedProvider("Web terminal", WebTextTerminal::new) .read("\nChoose the terminal to be used for running the demo");