package com.rapidftr.controls; import net.rim.device.api.ui.Field; import net.rim.device.api.ui.FieldChangeListener; import net.rim.device.api.ui.component.ObjectChoiceField; import com.rapidftr.form.FormField; import com.rapidftr.form.OptionAction; public class SelectboxFormField extends CustomField { private ObjectChoiceField choiceField; public SelectboxFormField(final FormField field) { super(field, Field.FIELD_LEFT); initializeChoiceField(field); add(choiceField); } private void initializeChoiceField(final FormField field) { final String[] optionArray = field.getOptionsArray(); if (optionArray[0] == "") { optionArray[0] = "..."; } choiceField = createChoiceField(field.getDisplayName(), optionArray); choiceField.setChangeListener(new FieldChangeListener() { public void fieldChanged(Field changedField, int context) { setFieldValue(optionArray[choiceField.getSelectedIndex()]); } }); } private ObjectChoiceField createChoiceField(String label, String[] optionArray) { return new ObjectChoiceField(label + ":", optionArray); } public void setValue(final String value) { field.forEachOption(new OptionAction() { int i = 0; public void execute(String option) { if(option.equals(value)){ choiceField.setSelectedIndex(i); } i++; } }); setFieldValue(value); } }