You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by df...@apache.org on 2004/06/07 12:44:50 UTC

cvs commit: jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table TablePager.java

dflorey     2004/06/07 03:44:50

  Modified:    proposals/projector/src/java/org/apache/slide/projector/processor/table
                        TablePager.java
  Log:
  Improved generic table pager
  
  Revision  Changes    Path
  1.4       +20 -14    jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TablePager.java
  
  Index: TablePager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TablePager.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TablePager.java	3 Jun 2004 14:53:15 -0000	1.3
  +++ TablePager.java	7 Jun 2004 10:44:50 -0000	1.4
  @@ -92,13 +92,13 @@
           }
           StringBuffer buffer = new StringBuffer();
           if (pre != null) pre.evaluate(buffer, parameters);
  -        parameters.put(TableHandler.TARGET_POSITION, new NumberValue(new Integer(0)));
  +        createHandler(0, handlerUrl, storeName, id, parameters);
           if ( firstSelected != null && !hasPrevious ) {
               firstSelected.evaluate(buffer, parameters);
           } else if ( first  != null) {
               first.evaluate(buffer, parameters);
           }
  -        parameters.put(TableHandler.TARGET_POSITION, new NumberValue(new Integer(currentPosition - itemsPerPage)));
  +        createHandler(Math.max(0, currentPosition - itemsPerPage), handlerUrl, storeName, id, parameters);
           if (hasPrevious) {
               if ( previous != null) previous.evaluate(buffer, parameters);
           } else {
  @@ -107,19 +107,16 @@
           int step = itemsPerPage > 0 ? itemsPerPage : 1;
           boolean first = true;
           lastItem = 0;
  +        int itemsInRange = range * step;
  +        int lowerBorder = currentPosition - itemsInRange;
  +        int upperBorder = currentPosition + itemsInRange;
           for (int i = 0; i < length; i += step) {
               lastItem = i;
               parameters.put(CURRENT_PAGE, new NumberValue(new Integer(i / itemsPerPage + 1)));
  -            parameters.put(TableHandler.TARGET_POSITION, new NumberValue(new Integer(i)));
  -            StringBuffer handlerBuffer = new StringBuffer(128);
  -            handlerBuffer.append(handlerUrl).append('?').append(TableHandler.TARGET_POSITION).append('=').append(i).
  -                    append('&').append(TableHandler.STORE).append('=').append(storeName).append('&').append(TableHandler.ID).append('=').append(id);
  -            parameters.put(HANDLER_URL, new StringValue(handlerBuffer.toString()));
  +            createHandler(i, handlerUrl, storeName, id, parameters);
               int rangeState = IN;
  -            if (showRange && (i < currentPosition - range * step || i > currentPosition + range * step))
  -                rangeState = OUT;
  -            if (showRange && (i == currentPosition - range * step || i == currentPosition + range * step))
  -                rangeState = BORDER;
  +            if (showRange && (i < lowerBorder || i > upperBorder)) rangeState = OUT;
  +            if (showRange && (i == lowerBorder || i == upperBorder)) rangeState = BORDER;
               boolean pagingTemplate = false;
               Template templateToUse = null;
               if (i == currentPosition && selectedPage != null) {
  @@ -144,13 +141,13 @@
                   templateToUse.evaluate(buffer, parameters);
               }
           }
  -        parameters.put(TableHandler.TARGET_POSITION, new NumberValue(new Integer(currentPosition + itemsPerPage)));
  +        createHandler(currentPosition + itemsPerPage, handlerUrl, storeName, id, parameters);
           if (hasNext) {
               if ( next != null) next.evaluate(buffer, parameters);
           } else {
               if ( nextDisabled != null) nextDisabled.evaluate(buffer, parameters);
           }
  -        parameters.put(TableHandler.TARGET_POSITION, new NumberValue(new Integer(currentPosition + itemsPerPage)));
  +        createHandler(length - itemsPerPage, handlerUrl, storeName, id, parameters);
           if ( lastSelected != null && !hasNext ) {
               lastSelected.evaluate(buffer, parameters);
           } else if ( last != null) {
  @@ -161,6 +158,14 @@
           return result;
       }
       
  +    protected void createHandler(int i, String handlerUrl, String storeName, String id, Map parameters) {
  +        parameters.put(TableHandler.TARGET_POSITION, new NumberValue(new Integer(i)));
  +        StringBuffer handlerBuffer = new StringBuffer(128);
  +        handlerBuffer.append(handlerUrl).append('?').append(TableHandler.TARGET_POSITION).append('=').append(i).
  +                append('&').append(TableHandler.STORE).append('=').append(storeName).append('&').append(TableHandler.ID).append('=').append(id);
  +        parameters.put(HANDLER_URL, new StringValue(handlerBuffer.toString()));
  +    }
  +    
       public void configure(StreamableValue config) throws ConfigurationException {
           super.configure(config);
           ParameterDescriptor []parentParameterDescriptors = super.getParameterDescriptors();
  @@ -191,6 +196,7 @@
           page = getOptionalFragment(PAGE_FRAGMENT);
           pageSeparator = getOptionalFragment(PAGE_SEPARATOR_FRAGMENT);
           selectedPage = getOptionalFragment(SELECTED_PAGE_FRAGMENT);
  +        etc = getOptionalFragment(ETC_FRAGMENT);
       }
   
       public ParameterDescriptor[] getParameterDescriptors() {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org