Skip to content

Instantly share code, notes, and snippets.

@raphw
Created December 6, 2013 14:11
Show Gist options
  • Save raphw/7824578 to your computer and use it in GitHub Desktop.
Save raphw/7824578 to your computer and use it in GitHub Desktop.
Ajax-enhanced navigator with Twitter bootstrap styles for Wicket
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxNavigationToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
public class AjaxTwitterBootstrapNavigationToolbar extends AjaxNavigationToolbar {
public AjaxTwitterBootstrapNavigationToolbar(DataTable<?, ?> table) {
super(table);
}
@Override
protected PagingNavigator newPagingNavigator(String navigatorId, final DataTable<?, ?> table) {
return new AjaxTwitterBootstrapNavigator(navigatorId, table) {
@Override
protected void onAjaxEvent(final AjaxRequestTarget target) {
target.add(table);
}
};
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<div class="pagination">
<ul>
<li>
<a wicket:id="first" class="first">««</a>
</li>
<li>
<a wicket:id="prev" class="prev">«</a>
</li>
<li wicket:id="navigation">
<a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a>
</li>
<li>
<a wicket:id="next" class="next">»</a>
</li>
<li>
<a wicket:id="last" class="last">»»</a>
</li>
</ul>
</div>
</wicket:panel>
</body>
</html>
import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigation;
public class AjaxTwitterBootstrapNavigator extends AjaxPagingNavigator {
public AjaxTwitterBootstrapNavigator(String id, IPageable pageable) {
super(id, pageable);
}
public AjaxTwitterBootstrapNavigator(String id, IPageable pageable, IPagingLabelProvider labelProvider) {
super(id, pageable, labelProvider);
}
@Override
protected PagingNavigation newNavigation(String id, IPageable pageable, IPagingLabelProvider labelProvider) {
return new TwitterBootstrapPagingNavigation(id, pageable, labelProvider);
}
@Override
protected AbstractLink newPagingNavigationIncrementLink(String id, IPageable pageable, int increment) {
AbstractLink link = super.newPagingNavigationIncrementLink(id, pageable, increment);
link.setBeforeDisabledLink("").setAfterDisabledLink("");
return link;
}
@Override
protected AbstractLink newPagingNavigationLink(String id, IPageable pageable, int pageNumber) {
AbstractLink link = super.newPagingNavigationLink(id, pageable, pageNumber);
link.setBeforeDisabledLink("").setAfterDisabledLink("");
return link;
}
}
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.list.LoopItem;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.navigation.paging.IPagingLabelProvider;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigation;
import org.apache.wicket.model.AbstractReadOnlyModel;
public class TwitterBootstrapPagingNavigation extends PagingNavigation {
public TwitterBootstrapPagingNavigation(String id, IPageable pageable) {
super(id, pageable);
}
public TwitterBootstrapPagingNavigation(String id, IPageable pageable, IPagingLabelProvider labelProvider) {
super(id, pageable, labelProvider);
}
@Override
protected void populateItem(LoopItem loopItem) {
super.populateItem(loopItem);
final long pageIndex = getStartIndex() + loopItem.getIndex();
// Add disabled class to enclosing list item.
loopItem.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {
@Override
public String getObject() {
if (pageable.getCurrentPage() == pageIndex) {
return "active";
} else {
return "";
}
}
}));
// Do not mask diabled link by em tag.
((AbstractLink) loopItem.get("pageLink")).setBeforeDisabledLink("").setAfterDisabledLink("");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment