1 16 package com.blandware.atleap.webapp.taglib.core.grid; 17 18 import com.blandware.atleap.webapp.taglib.core.util.TaglibConstants; 19 import org.apache.commons.logging.Log; 20 import org.apache.commons.logging.LogFactory; 21 22 import javax.servlet.jsp.JspException ; 23 import javax.servlet.jsp.JspTagException ; 24 import javax.servlet.jsp.PageContext ; 25 import javax.servlet.jsp.tagext.JspFragment ; 26 import javax.servlet.jsp.tagext.SimpleTagSupport ; 27 import java.io.IOException ; 28 29 54 public class PagesIteratorTag extends SimpleTagSupport { 55 56 protected transient final Log log = LogFactory.getLog(PagesIteratorTag.class); 57 58 61 protected String var; 62 63 66 protected Integer pageNumber = new Integer (1); 67 68 private int loopStart = 0; 69 private int loopFinish = 0; 70 71 80 public String getVar() { 81 return var; 82 } 83 84 89 public void setVar(String var) { 90 this.var = var; 91 } 92 93 98 public Integer getPageNumber() { 99 return pageNumber; 100 } 101 102 107 public void setPageNumber(Integer pageNumber) { 108 this.pageNumber = pageNumber; 109 } 110 111 117 public void doTag() throws JspException , IOException { 118 119 PageContext pageContext = (PageContext ) getJspContext(); 120 121 PagerTag parentPagerTag = (PagerTag) findAncestorWithClass(this, PagerTag.class); 123 124 if ( parentPagerTag == null ) { 125 JspTagException e = new JspTagException ("Parent tag is invalid! This tag is only valid when nested within 'pager' tag"); 126 throw e; 127 } 128 129 GridTag parentGridTag = (GridTag) findAncestorWithClass(this, GridTag.class); 130 131 135 int pageCount = parentPagerTag.getPageCount().intValue(); 136 int currentPageNumber = parentGridTag.getCurrentPageNumber().intValue(); 137 int firstPageNumber = 1; 138 int lastPageNumber = parentPagerTag.getLastPageNumber().intValue(); 139 int diff = (pageCount / 2); 140 loopStart = currentPageNumber - diff; 141 if ( loopStart < firstPageNumber ) { 142 loopStart = firstPageNumber; 143 } 144 loopFinish = loopStart + pageCount - 1; 145 if ( loopFinish > lastPageNumber ) { 146 loopFinish = lastPageNumber; 147 loopStart = loopFinish - pageCount + 1; 148 if ( loopStart < firstPageNumber ) { 149 loopStart = firstPageNumber; 150 } 151 } 152 153 if ( var == null ) { 154 var = TaglibConstants.PAGE_NUMBER_ATTR; 155 } 156 157 while ( loopStart <= loopFinish ) { 158 pageNumber = new Integer (loopStart++); 160 pageContext.setAttribute(var, pageNumber); 161 JspFragment body = getJspBody(); 162 if ( body != null ) { 163 body.invoke(null); 164 } 165 } 166 } 167 168 } 169 | Popular Tags |