package org.richfaces.bootstrap.ui.pagination;
import org.richfaces.bootstrap.ui.paginationitem.AbstractPaginationItem;
import org.richfaces.bootstrap.ui.paginationitem.PaginationItemRendererBase;
import org.richfaces.cdk.annotations.*;
import org.richfaces.ui.attribute.CoreProps;
import javax.faces.component.UIComponent;
import javax.faces.component.UIOutput;
/**
* Base class for Pagination component
*
* @author Lukas Eichler
*/
@JsfComponent(
type = AbstractPagination.COMPONENT_TYPE,
family = AbstractPagination.COMPONENT_FAMILY,
renderer = @JsfRenderer(type = PaginationRendererBase.RENDERER_TYPE),
tag = @Tag(name = "pagination"))
public abstract class AbstractPagination extends UIOutput implements CoreProps {
public static final String COMPONENT_FAMILY = "org.richfaces.bootstrap.Pagination";
public static final String COMPONENT_TYPE = "org.richfaces.bootstrap.Pagination";
@Attribute(suggestedValue = "large" + ","
+ "normal" + ","
+ "small" + ","
+ "mini" + ",", description = @Description("Predefined css based sizes. "))
public abstract String getSize();
@Attribute(suggestedValue = "left" + ","
+ "center" + ","
+ "right" + ",", description = @Description("Defines the horizontal alignment. The default value is left"))
public abstract String getAlign();
public boolean isPaginationItem(UIComponent component) {
return component instanceof AbstractPaginationItem;
}
public String generateClasses() {
StringBuilder sb = new StringBuilder("pagination");
String size = getSize();
if (size != null && !size.isEmpty()) {
sb.append(" pagination-").append(size);
}
String align = getAlign();
if (align != null && !align.isEmpty()) {
if (align.equals("right")) {
sb.append(" pagination-right");
} else if (align.equals("center")) {
sb.append(" pagination-centered");
}
}
if (getStyleClass() != null) {
sb.append(" ").append(getStyleClass());
}
return sb.toString();
}
}