package lt.inventi.wicket.component.bootstrap.tab; import java.util.Arrays; import java.util.List; import org.apache.wicket.extensions.markup.html.tabs.ITab; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.model.IModel; import org.apache.wicket.util.string.StringValue; import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.BootstrapTabbedPanel; public class RememberingTabbedPanel<T extends ITab> extends BootstrapTabbedPanel<T> { public RememberingTabbedPanel(String id, List<T> tabs, IModel<Integer> model) { super(id, tabs, model); } public RememberingTabbedPanel(String id, List<T> tabs) { super(id, tabs); } public RememberingTabbedPanel(String id, T... tabs) { super(id, Arrays.asList(tabs)); } @Override protected void onInitialize() { super.onInitialize(); StringValue selectedTabId = getPage().getPageParameters().get(getId()); int tab = selectedTabId.toInt(0); if (tab >= getTabs().size()) { setSelectedTab(0); } else { setSelectedTab(tab); } } @Override protected WebMarkupContainer newLink(String linkId, final int index) { return new Link<Void>(linkId) { @Override public void onClick() { setSelectedTab(index); getPage().getPageParameters().set(RememberingTabbedPanel.this.getId(), String.valueOf(index)); } }; } }