package org.gwtoolbox.widget.client.form.renderer.html;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import org.gwtoolbox.commons.util.client.template.Template;
import org.gwtoolbox.widget.client.form.field.FormField;
import org.gwtoolbox.widget.client.form.field.HasFields;
import org.gwtoolbox.widget.client.form.renderer.FieldsRenderer;
/**
* @author Uri Boness
*/
public abstract class HtmlFieldsRenderer implements FieldsRenderer {
public Widget render(HasFields fields) {
String html = getHtmlTemplate();
Template template = Template.compile(html);
html = template.render(new Template.Model() {
public String resolve(String parameter) {
return "<div id=\"" + parameter + "\"><div>";
}
});
HTMLPanel panel = new HTMLPanel(html);
for (String key : fields.getKeys()) {
FormField field = fields.getField(key);
panel.addAndReplaceElement(new Label(field.getLabel()), key + "#label");
panel.addAndReplaceElement(field.getEditor().getWidget(), key + "#editor");
}
return panel;
}
protected abstract String getHtmlTemplate();
}