package cbccore.config; import java.util.HashMap; import java.util.Iterator; import java.util.Set; import cbccore.sensors.IBooleanSensor; public class ChoiceConfigurator implements Configurator { Choices choices = null; IBooleanSensor[] sensors = null; public ChoiceConfigurator(IBooleanSensor[] sensors, Choices choices) { this.choices = choices; this.sensors = sensors; } private IBooleanSensor waitForInput(Set<IBooleanSensor> sensors) { for(;;) { for(IBooleanSensor sensor : sensors) { if(sensor.getValue()) return sensor; } } } @Override public int ask() { HashMap<IBooleanSensor, Integer> elements = new HashMap<IBooleanSensor, Integer>(); int i = 0; for(IBooleanSensor sensor : sensors) { elements.put(sensor, (Integer) choices.keySet().toArray()[i++]); if(i > choices.size() - 1) break; } Iterator<IBooleanSensor> it = elements.keySet().iterator(); while(it.hasNext()) { IBooleanSensor sensor = it.next(); System.out.println("Press " + sensor + " to " + choices.get(elements.get(sensor))); } IBooleanSensor sensor = waitForInput(elements.keySet()); return elements.get(sensor); } }