package com.rapidftr.controls;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.container.VerticalFieldManager;
import com.rapidftr.form.Form;
import com.rapidftr.form.FormField;
import com.rapidftr.form.FormFieldAction;
import com.rapidftr.model.Child;
public class UIForm extends VerticalFieldManager {
private final Form form;
private final FormFieldFactory factory;
private Child child;
private boolean rendered = false;
public UIForm(Form form, FormFieldFactory formFieldFactory, Child child) {
this.form = form;
this.factory = formFieldFactory;
this.child = child;
}
protected void onDisplay() {
if(!rendered){
form.forEachField(new FormFieldAction() {
public void execute(FormField field) {
Field createField = createField(field);
add(createField);
add(new BlankSeparatorField(10));
}
});
rendered = true;
}
}
private Field createField(FormField field) {
CustomField formField = factory.createFrom(field);
if (null != this.child)
formField.setValue(child.getField(field.getName()));
return formField;
}
public String getName() {
return form.getName();
}
}