![JAR search and dependency download from the Maven repository](/logo.png)
com.talk2object.plum.view._abstract.components.PagingationPanel Maven / Gradle / Ivy
package com.talk2object.plum.view._abstract.components;
import com.talk2object.plum.view.component.Button;
import com.talk2object.plum.view.component.ClickEventListener;
import com.talk2object.plum.view.component.Component;
import com.talk2object.plum.view.component.containers.Panel;
import com.talk2object.plum.view.event.AbstractEventListener;
import com.talk2object.plum.view.event.EventListener;
import com.talk2object.plum.view.misc.Font;
import com.talk2object.plum.view.misc.FontWeight;
public class PagingationPanel extends Panel {
private static final String EVENT_PAGE_CHANGED = "PAGE_CHANGED";
private Pagingnation pagingation;
public PagingationPanel(Pagingnation pagingation) {
this.pagingation = pagingation;
refreshView();
}
public void setCurrentPage(int currentPage) {
pagingation.setCurrentPage(currentPage);
refreshView();
}
private void updateSelf() {
refreshView();
notifyEventListeners(EVENT_PAGE_CHANGED, pagingation.getCurrentPage());
}
public void refreshView() {
this.removeAllChildren();
Button first = new Button();
first.setCaption("First");
first.addClickListener(new ClickEventListener() {
@Override
public void onClick(Component source) {
pagingation.gotoFirstPage();
updateSelf();
}
});
if (shouldDisable(pagingation.getFirstPage()))
first.setDisabled(true);
addChild(first);
Button previous = new Button();
previous.setCaption("Prev");
previous.addClickListener(new ClickEventListener() {
@Override
public void onClick(Component source) {
pagingation.gotoPreviousPage();
updateSelf();
}
});
if (shouldDisable(pagingation.getPreviousPage()))
previous.setDisabled(true);
addChild(previous);
for (final int page : pagingation.getListedPages()) {
Button btn = new Button();
btn.setCaption(String.valueOf(page));
btn.addClickListener(new ClickEventListener() {
@Override
public void onClick(Component source) {
pagingation.setCurrentPage(page);
updateSelf();
}
});
if (shouldDisable(page))
btn.setDisabled(true);
if (pagingation.getCurrentPage() == page) {
Font font = btn.getFont(true);
font.setWeight(FontWeight.BOLD);
}
addChild(btn);
}
Button next = new Button();
next.setCaption("Next");
next.addClickListener(new ClickEventListener() {
@Override
public void onClick(Component source) {
pagingation.gotoNextPage();
updateSelf();
}
});
if (shouldDisable(pagingation.getNextPage()))
next.setDisabled(true);
addChild(next);
Button last = new Button();
last.setCaption("Last");
last.addClickListener(new ClickEventListener() {
@Override
public void onClick(Component source) {
pagingation.gotoLastPage();
updateSelf();
}
});
if (shouldDisable(pagingation.getLastPage()))
last.setDisabled(true);
addChild(last);
}
private boolean shouldDisable(int page) {
return pagingation.getCurrentPage() == page
|| !pagingation.isValidPage(page);
}
public void addPageChangedEventListener(EventListener listener) {
addEventListener(EVENT_PAGE_CHANGED, listener);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy