From ef3da9dbff25b50d38d56ac2b31420a4a6d18a29 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Wed, 27 May 2009 15:32:07 +0000 Subject: [PATCH] Pagelength can now be changed by extending Select. Fixes #3019 svn changeset:8035/svn branch:6.0 --- .../terminal/gwt/client/ui/VFilterSelect.java | 16 ++++++++++------ src/com/vaadin/ui/Select.java | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java index 4b13c22cce..3babf3bea4 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java @@ -141,7 +141,7 @@ public class VFilterSelect extends Composite implements Paintable, Field, topPosition += tb.getOffsetHeight(); setPopupPosition(x, topPosition); - final int first = currentPage * PAGELENTH + final int first = currentPage * pageLength + (nullSelectionAllowed && currentPage > 0 ? 0 : 1); final int last = first + currentSuggestions.size() - 1; final int matches = totalSuggestions @@ -158,7 +158,7 @@ public class VFilterSelect extends Composite implements Paintable, Field, } // We don't need to show arrows or statusbar if there is only one // page - if (matches <= PAGELENTH) { + if (matches <= pageLength) { setPagingEnabled(false); } else { setPagingEnabled(true); @@ -290,7 +290,7 @@ public class VFilterSelect extends Composite implements Paintable, Field, menu.setHeight(""); if (currentPage > 0) { // fix height to avoid height change when getting to last page - menu.fixHeightTo(PAGELENTH); + menu.fixHeightTo(pageLength); } offsetHeight = getOffsetHeight(); @@ -501,7 +501,7 @@ public class VFilterSelect extends Composite implements Paintable, Field, private static final String CLASSNAME = "v-filterselect"; - public static final int PAGELENTH = 10; + protected int pageLength = 10; private final FlowPanel panel = new FlowPanel(); @@ -591,7 +591,7 @@ public class VFilterSelect extends Composite implements Paintable, Field, } public boolean hasNextPage() { - if (totalMatches > (currentPage + 1) * PAGELENTH) { + if (totalMatches > (currentPage + 1) * pageLength) { return true; } else { return false; @@ -657,6 +657,10 @@ public class VFilterSelect extends Composite implements Paintable, Field, currentPage = uidl.getIntVariable("page"); + if (uidl.hasAttribute("pagelength")) { + pageLength = uidl.getIntAttribute("pagelength"); + } + if (uidl.hasAttribute(ATTR_INPUTPROMPT)) { // input prompt changed from server inputPrompt = uidl.getStringAttribute(ATTR_INPUTPROMPT); @@ -716,7 +720,7 @@ public class VFilterSelect extends Composite implements Paintable, Field, // we're paging w/ arrows if (lastIndex == 0) { // going up, select last item - int lastItem = PAGELENTH - 1; + int lastItem = pageLength - 1; List items = suggestionPopup.menu.getItems(); /* * The first page can contain less than 10 items if the null diff --git a/src/com/vaadin/ui/Select.java b/src/com/vaadin/ui/Select.java index 9b16830a31..6d07aff5b3 100644 --- a/src/com/vaadin/ui/Select.java +++ b/src/com/vaadin/ui/Select.java @@ -137,6 +137,8 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering { && getNullSelectionItemId() == null ? 0 : 1)]; } + target.addAttribute("pagelength", pageLength); + target.addAttribute("filteringmode", getFilteringMode()); // Paints the options and create array of selected id keys -- 2.39.5