package org.andrewberman.ui.menu; import java.util.Collection; import java.util.HashMap; import java.util.Set; import java.util.Map.Entry; public class EnumScroller extends NumberScroller { protected HashMap<Integer, String> numToString; public EnumScroller() { numToString = new HashMap<Integer, String>(); } public void setValue(String value) { setValue(parseValueFromString(value)); } public void setValues(String values) { String[] tokens = values.split(","); int i = 0; for (String token : tokens) { token = token.trim(); numToString.put(i, token); i++; } setMin(0); setMax(i-1); setIncrement(1); setScrollSpeed(0.1f); } @Override protected float parseValueFromString(Object s) { if (numToString != null) { // Go through our hashtable, returning the Integer key for the given string if we find it. Set<Entry<Integer, String>> entries = numToString.entrySet(); for (Entry<Integer, String> e : entries) { if (e.getValue().equals(s)) return e.getKey(); } } return 0; } @Override protected String getStringValueForNumber(float value) { if (numToString == null) return ""; String numericalValue = super.getStringValueForNumber(value); // Use the hashtable to grab the appropriate string for the current value. float curValue = value; int curInt = (int) curValue; String myString = numToString.get(curInt); if (myString == null) { System.err.println("Null string from EnumScroller!"); return "Nothing"; } return myString; } }