package lt.inventi.wicket.component.bootstrap.form;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.border.Border;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.util.iterator.ComponentHierarchyIterator;
public class ControlGroup extends Border {
private final Label label = new Label("label");
public ControlGroup(String id) {
super(id);
addToBorder(label);
}
@Override
protected void onInitialize() {
super.onInitialize();
setRenderBodyOnly(true);
label.setDefaultModel(new ResourceModel(getLabelModelId()));
}
private String getLabelModelId() {
List<FormComponent<?>> formComponents = findFormComponents();
if (formComponents.size() == 1) {
return formComponents.get(0).getId();
}
return getId();
}
private List<FormComponent<?>> findFormComponents() {
ComponentHierarchyIterator it = getBodyContainer().visitChildren(FormComponent.class);
List<FormComponent<?>> components = new ArrayList<FormComponent<?>>();
while (it.hasNext()) {
components.add((FormComponent<?>) it.next());
}
return components;
}
}