package lt.inventi.wicket.component.bootstrap.form; import org.apache.wicket.Component; import org.apache.wicket.markup.IMarkupFragment; import org.apache.wicket.markup.Markup; import org.apache.wicket.markup.MarkupNotFoundException; import org.apache.wicket.markup.html.WebMarkupContainer; /** * Adds a bit of magic to bootstrap's horizontal forms. * <p> * If SingleControlGroup is placed inside of a form you MUST have a localized * property with key equal to <code>formId.formComponentId</code>, otherwise * with <code>formComponentId</code>. * <p> * Java: * * <pre> * new SingleControlGroup(new TextField<String>("input")); * </pre> * * HTML: * * <pre> * <input type="text" wicket:id="input" /> * </pre> * * Properties: * * <pre> * input = Label * </pre> * * Result: * * <pre> * <div class="control-group"> * <label class="control-label">Label</label> * * <div class="controls"> * <input type="text" name="input:input:input_body:input" value="" /> * </div> * </div> * </pre> * * @author vplatonov * */ public class SingleControlGroup extends WebMarkupContainer { public SingleControlGroup(Component component) { super(component.getId()); add(new ControlGroup(component.getId()).add(component)); } @Override public IMarkupFragment getMarkup() { IMarkupFragment markup = super.getMarkup(); if (markup == null) { throw new MarkupNotFoundException("Can not determine Markup. " + toString()); } return Markup.of("<div wicket:id=\"" + getId() + "\">" + markup.toString(true) + "</div>"); } }