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

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