All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.agilecoders.wicket.markup.html.bootstrap.button.ButtonGroup Maven / Gradle / Ivy

package de.agilecoders.wicket.markup.html.bootstrap.button;

import com.google.common.collect.Lists;
import de.agilecoders.wicket.markup.html.bootstrap.behavior.BootstrapBaseBehavior;
import de.agilecoders.wicket.markup.html.bootstrap.behavior.CssClassNameAppender;
import de.agilecoders.wicket.util.Iterables;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;

import java.util.List;

/**
 * Wrap a series of buttons with .btn in .btn-group.
 *
 * @author miha
 * @version 1.0
 */
public class ButtonGroup extends Panel {

    public static String getButtonMarkupId() {
        return "button";
    }

    private List buttonList;

    public ButtonGroup(final String markupId) {
        super(markupId);

        buttonList = Lists.newArrayList();

        add(new BootstrapBaseBehavior());
        add(new CssClassNameAppender("btn-group"));
        add(newButtonList("buttons"));
    }

    public ButtonGroup addButton(AbstractLink button) {
        return addButtons(button);
    }

    public ButtonGroup addButtons(AbstractLink... buttons) {
        List buttonsList = Iterables.forEach(buttons, new AssertValidButtonPredicate(getButtonMarkupId()));

        buttonList.addAll(buttonsList);
        return this;
    }

    protected Component newButtonList(final String markupId) {
        return new ListView(markupId, newButtonListModel()) {
            @Override
            protected void populateItem(ListItem item) {
                AbstractLink link = item.getModelObject();

                item.add(link);
            }
        }.setRenderBodyOnly(true)
                .setOutputMarkupId(true);
    }

    protected IModel> newButtonListModel() {
        return new LoadableDetachableModel>() {
            @Override
            protected List load() {
                return buttonList;
            }
        };
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy