diff --git a/pom.xml b/pom.xml index 02d4acd..67094d9 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.academiadecodigo.bootcamp prompt-view - 0.2.1-SNAPSHOT + 0.3.1-SNAPSHOT diff --git a/src/main/java/org/academiadecodigo/bootcamp/scanners/menu/CustomMenuInputScanner.java b/src/main/java/org/academiadecodigo/bootcamp/scanners/menu/CustomMenuInputScanner.java new file mode 100644 index 0000000..8720c95 --- /dev/null +++ b/src/main/java/org/academiadecodigo/bootcamp/scanners/menu/CustomMenuInputScanner.java @@ -0,0 +1,36 @@ +package org.academiadecodigo.bootcamp.scanners.menu; + +import org.academiadecodigo.bootcamp.scanners.integer.IntegerSetInputScanner; +import java.util.Map; +import java.util.TreeMap; + +public class CustomMenuInputScanner extends IntegerSetInputScanner { + private Map optionMap; + + public CustomMenuInputScanner(Map optionMap) { + super(optionMap.keySet()); + this.optionMap = new TreeMap<>(optionMap); + super.setMessage(buildMenu(getMessage())); + } + + @Override + public void setMessage(String message) { + super.setMessage(buildMenu(message)); + } + + private String buildMenu(String message) { + + StringBuilder menuBuilder = new StringBuilder("\n"); + menuBuilder.append(message); + menuBuilder.append("\n"); + + for(Integer i: optionMap.keySet()) { + menuBuilder.append("\n"); + menuBuilder.append(i).append(" - ").append(optionMap.get(i)); + } + + menuBuilder.append("\n> "); + return menuBuilder.toString(); + + } +} diff --git a/src/test/java/examples/menu/CustomMenuInputScannerTest.java b/src/test/java/examples/menu/CustomMenuInputScannerTest.java new file mode 100644 index 0000000..c811fe8 --- /dev/null +++ b/src/test/java/examples/menu/CustomMenuInputScannerTest.java @@ -0,0 +1,23 @@ +package examples.menu; + +import org.academiadecodigo.bootcamp.Prompt; +import org.academiadecodigo.bootcamp.scanners.menu.CustomMenuInputScanner; + +import java.util.HashMap; +import java.util.Map; + +public class CustomMenuInputScannerTest { + public static void main(String[] args) { + Prompt prompt = new Prompt(System.in,System.out); + + Map options = new HashMap<>(); + options.put(5,"Bahia"); + options.put(30,"João"); + options.put(2,"Tiago"); + + CustomMenuInputScanner scanner = new CustomMenuInputScanner(options); + scanner.setMessage("Choose someone:"); + + System.out.println(prompt.getUserInput(scanner)); + } +}