/** * SlingBeans - NetBeans Sling plugin * https://github.com/jkan997/SlingBeans * Licensed under Apache 2.0 license * http://www.apache.org/licenses/LICENSE-2.0 */ package org.jkan997.slingbeans.helper; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * * @author jkan997 */ public class ComboBoxSet { private final Set sourceSet; private final boolean sort; private String[] stringArray; private Map<String,Object> labelMap = new HashMap<String,Object>(); public ComboBoxSet(Set sourceSet, boolean sort) { this.sourceSet = sourceSet; this.sort = sort; getStringArray(); } public ComboBoxSet(Set sourceSet) { this.sourceSet = sourceSet; this.sort = false; getStringArray(); } public String getFirstString() { String[] elements = getStringArray(); if (elements.length > 0) { return elements[0]; } return null; } public Object getByLabel(String label){ return labelMap.get(label); } public String[] getStringArray() { if (stringArray == null) { String label = null;; String[] res = new String[sourceSet.size()]; int i = 0; for (Object o : sourceSet) { label = convertToString(o); res[i] = label; labelMap.put(label, o); i++; } if (sort) { Arrays.sort(res); } stringArray = res; } return stringArray; } protected String convertToString(Object o) { if (o == null) { return ""; } return o.toString(); } public Object getValue(String val) { for (Object o : sourceSet) { if (o.toString().equals(val)) { return val; } } return null; } public Set getSourceSet() { return sourceSet; } }