in jspwiki-main/src/main/java/org/apache/wiki/tags/SetPaginationTag.java [127:222]
public int doWikiStartTag()
throws IOException
{
if( m_total <= m_pagesize ) return SKIP_BODY;
final StringBuilder pagination = new StringBuilder();
if( m_start > m_total ) m_start = m_total;
if( m_start < ALLITEMS ) m_start = 0;
final int maxs = m_pagesize * m_maxlinks;
final int mids = m_pagesize * ( m_maxlinks / 2 );
pagination.append( "<div class='pagination'>");
pagination.append( LocaleSupport.getLocalizedMessage( pageContext, m_fmtkey ) ).append( " " );
int cursor = 0;
int cursormax = m_total;
if( m_total > maxs ) //need to calculate real window ends
{
if( m_start > mids ) cursor = m_start - mids;
if( (cursor + maxs) > m_total )
cursor = ( ( 1 + m_total/m_pagesize ) * m_pagesize ) - maxs ;
cursormax = cursor + maxs;
}
if( ( m_start == ALLITEMS ) || (cursor > 0) )
{
appendLink ( pagination, 0, m_fmtkey + ".first" );
}
if( (m_start != ALLITEMS ) && (m_start-m_pagesize >= 0) )
{
appendLink( pagination, m_start-m_pagesize, m_fmtkey + ".previous" );
}
if( m_start != ALLITEMS )
{
while( cursor < cursormax )
{
if( cursor == m_start )
{
pagination.append( "<span class='cursor'>" );
pagination.append( 1 + cursor/m_pagesize );
pagination.append( "</span>" );
}
else
{
appendLink( pagination, cursor, 1+cursor/m_pagesize );
}
cursor += m_pagesize;
}
}
if( (m_start != ALLITEMS ) && (m_start + m_pagesize < m_total) )
{
appendLink( pagination, m_start+m_pagesize, m_fmtkey + ".next" );
if( (m_start == ALLITEMS ) || (cursormax < m_total) )
appendLink ( pagination, ( (m_total/m_pagesize) * m_pagesize ), m_fmtkey + ".last" );
}
if( m_start == ALLITEMS )
{
pagination.append( "<span class='cursor'>" );
pagination.append( LocaleSupport.getLocalizedMessage(pageContext, m_fmtkey + ".all" ) );
pagination.append( "</span> " );
}
else
{
appendLink ( pagination, ALLITEMS, m_fmtkey + ".all" );
}
//(Total items: " + m_total + ")" );
pagination.append( LocaleSupport.getLocalizedMessage(pageContext, m_fmtkey + ".total",
new Object[]{ m_total } ) );
pagination.append( "</div>" );
/* +++ processing done +++ */
final String p = pagination.toString();
pageContext.getOut().println( p );
pageContext.setAttribute( "pagination", p ); /* and cache for later use in page context */
return SKIP_BODY;
}