public int doWikiStartTag()

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>&nbsp;&nbsp;" );
        }
        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;
    }