Package de.agilecoders.wicket.samples.components.basecss

Source Code of de.agilecoders.wicket.samples.components.basecss.ButtonGroups

package de.agilecoders.wicket.samples.components.basecss;

import de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapBookmarkablePageLink;
import de.agilecoders.wicket.core.markup.html.bootstrap.button.ButtonBehavior;
import de.agilecoders.wicket.core.markup.html.bootstrap.button.ButtonGroup;
import de.agilecoders.wicket.core.markup.html.bootstrap.button.ButtonList;
import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
import de.agilecoders.wicket.core.markup.html.bootstrap.button.Toolbar;
import de.agilecoders.wicket.core.markup.html.bootstrap.image.GlyphIconType;
import de.agilecoders.wicket.core.markup.html.bootstrap.image.Icon;
import de.agilecoders.wicket.jquery.util.Generics2;
import de.agilecoders.wicket.samples.components.base.Section;
import de.agilecoders.wicket.samples.pages.ComponentsPage;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.model.Model;

import java.util.ArrayList;
import java.util.List;

/**
* Panel that shows the usage of button groups.
*
* @author miha
*/
public class ButtonGroups extends Section<Void> {

    /**
     * Construct.
     *
     * @param markupId The wicket markup id.
     */
    public ButtonGroups(final String markupId) {
        super(markupId);

        ButtonGroup buttonGroup = new ButtonGroup("buttonGroup") {
            @Override
            protected List<AbstractLink> newButtons(String buttonMarkupId) {
                return Generics2.newArrayList(createButton("Left"), createButton("Center"), createButton("Right"));
            }
        };
        add(buttonGroup);

        Toolbar toolbar = new Toolbar("toolbar");
        toolbar.add(newButtonGroup("buttonGroup1", 3));
        toolbar.add(newButtonGroup("buttonGroup2", 5));
        toolbar.add(newButtonGroup("buttonGroup3", 1));
        add(toolbar);

        ButtonGroup verticalButtonGroup = new ButtonGroup("verticalButtonGroup", Buttons.Orientation.Vertical) {
            @Override
            protected List<AbstractLink> newButtons(String buttonMarkupId) {
                return Generics2.newArrayList(
                        createIconButton(new Icon(GlyphIconType.alignleft)),
                        createIconButton(new Icon(GlyphIconType.aligncenter)),
                        createIconButton(new Icon(GlyphIconType.alignright)),
                        createIconButton(new Icon(GlyphIconType.alignjustify)));
            }
        };
        add(verticalButtonGroup);
    }

    /**
     * creates a new button with given icon.
     *
     * @param icon The button icon
     * @return The new button instance
     */
    private AbstractLink createIconButton(Icon icon) {
        BootstrapBookmarkablePageLink<Void> button = new BootstrapBookmarkablePageLink<Void>(ButtonList.getButtonMarkupId(), ComponentsPage.class, Buttons.Type.Default);
        button.setLabel(Model.of(""));
        button.setIconType(icon.getType());
        return button;
    }

    /**
     * creates a new button group with given number of buttons.
     *
     * @param markupId The markup id.
     * @param noOfButtons  The number of buttons
     * @return new button group
     */
    private ButtonGroup newButtonGroup(final String markupId, final int noOfButtons) {
        return new ButtonGroup(markupId) {
            @Override
            protected List<AbstractLink> newButtons(String buttonMarkupId) {
                final List<AbstractLink> buttons = new ArrayList<AbstractLink>();

                for (int i = 0; i < noOfButtons; ++i) {
                    buttons.add(createButton(String.valueOf(i + 1)));
                }

                return buttons;
            }
        };
    }

    /**
     * creates a new button with given label.
     *
     * @param label The button label
     * @return The new button instance
     */
    private AbstractLink createButton(final String label) {
        AbstractLink button = new BookmarkablePageLink<Void>(ButtonList.getButtonMarkupId(), ComponentsPage.class).setBody(Model.of(label));
        button.add(new ButtonBehavior());

        return button;
    }
}
TOP

Related Classes of de.agilecoders.wicket.samples.components.basecss.ButtonGroups

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.