com.trenako.web.tags.PaginationTags.java Source code

Java tutorial

Introduction

Here is the source code for com.trenako.web.tags.PaginationTags.java

Source

/*
 * Copyright 2012 the original author or authors.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.trenako.web.tags;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;

import org.springframework.data.domain.Page;

import com.trenako.web.tags.html.HtmlTag;
import static com.trenako.web.tags.html.HtmlBuilder.*;

/**
 * 
 * @author Carlo Micieli
 *
 */
@SuppressWarnings("serial")
public class PaginationTags extends SpringTagSupport {

    private Page<?> page;

    public Page<?> getPage() {
        return page;
    }

    public void setPage(Page<?> page) {
        this.page = page;
    }

    @Override
    protected int writeTagContent(JspWriter jspWriter, String contextPath) throws JspException {

        String path = getRequestContext().getPathToServlet();

        int page = getPage().getNumber() + 1;
        int numberOfPages = getPage().getTotalPages();

        List<HtmlTag> items = new ArrayList<HtmlTag>();
        for (Integer p = 1; p <= numberOfPages; p++) {
            HtmlTag a = a(p.toString()).href(path + "?page.page=" + p);

            if (page == p) {
                items.add(li(a).cssClass("active"));
            } else {
                items.add(li(a));
            }
        }

        HtmlTag pagination = div(ul(tags(items))).cssClass("pagination pagination-centered");

        try {
            jspWriter.append(pagination.build());
        } catch (IOException e) {
            e.printStackTrace();
        }

        return SKIP_BODY;
    }

}