package org.hive2hive.client.console; import java.util.List; public class SelectionMenu<T> extends ConsoleMenu { private final List<T> options; private final List<String> displayTexts; private final String instructions; private T selection = null; public SelectionMenu(List<T> options, List<String> displayTexts, String instructions) { this.options = options; this.displayTexts = displayTexts; this.instructions = instructions; } public SelectionMenu(List<T> options, String instructions) { this(options, null, instructions); } @Override protected void addMenuItems() { for (int i = 0; i < options.size(); i++) { add(new SelectionMenuItem<T>(options.get(i), displayTexts != null && i < displayTexts.size() ? displayTexts.get(i) : options.get(i).toString()) { protected void execute() throws Exception { selection = option; exit(); } }); } } public T openAndSelect() { open(); return selection; } @Override protected String getInstruction() { return instructions; } }