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>");
}
}