package fr.openwide.core.wicket.more.markup.html.bootstrap.label.component; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.GenericPanel; import org.apache.wicket.model.IModel; import fr.openwide.core.commons.util.functional.Predicates2; import fr.openwide.core.wicket.behavior.ClassAttributeAppender; import fr.openwide.core.wicket.more.condition.Condition; import fr.openwide.core.wicket.more.markup.html.bootstrap.label.behavior.BootstrapColorBehavior; import fr.openwide.core.wicket.more.markup.html.bootstrap.label.renderer.BootstrapRenderer; import fr.openwide.core.wicket.more.markup.html.bootstrap.label.renderer.IBootstrapRendererModel; public class BootstrapLabel<T> extends GenericPanel<T> { private static final long serialVersionUID = -7040646675697285281L; public BootstrapLabel(String id, IModel<T> model, final BootstrapRenderer<? super T> renderer) { super(id, model); IBootstrapRendererModel labelModel = renderer.asModel(model); IModel<String> iconCssClassModel = labelModel.getIconCssClassModel(); add( new WebMarkupContainer("icon") .add(new ClassAttributeAppender(iconCssClassModel)) .add(Condition.modelNotNull(iconCssClassModel).thenShow()), new Label("label", labelModel) ); add( BootstrapColorBehavior.label(labelModel.getColorModel()), Condition.predicate(labelModel, Predicates2.hasText()).thenShowInternal(), new AttributeAppender("title", labelModel.getTooltipModel()) ); } }