diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.html
index 3699c2400cc..b6ae2e38600 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.html
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.html
@@ -19,13 +19,14 @@
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.java
index 4fc19191256..0b30e7b2e55 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.java
@@ -42,7 +42,9 @@ public class NavigatorPanel extends Panel {
private static final String ID_PREVIOUS_LINK = "previousLink";
private static final String ID_FIRST = "first";
private static final String ID_FIRST_LINK = "firstLink";
- private static final String ID_DOTS = "dots";
+ private static final String ID_LAST = "last";
+ private static final String ID_LAST_LINK = "lastLink";
+// private static final String ID_DOTS = "dots";
private static final String ID_NAVIGATION = "navigation";
private static final String ID_PAGE_LINK = "pageLink";
private static final String ID_NEXT = "next";
@@ -78,10 +80,11 @@ public boolean isVisible() {
}
private void initLayout() {
- initPrevious();
initFirst();
+ initPrevious();
initNavigation();
initNext();
+ initLast();
}
private void initPrevious() {
@@ -113,13 +116,13 @@ public boolean isEnabled() {
private void initFirst() {
WebMarkupContainer first = new WebMarkupContainer(ID_FIRST);
- first.add(new VisibleEnableBehaviour() {
+ first.add(new AttributeModifier("class", new AbstractReadOnlyModel() {
@Override
- public boolean isVisible() {
- return BooleanUtils.isTrue(showPageListingModel.getObject()) && showFirstAndDots();
+ public String getObject() {
+ return isFirstEnabled() ? "" : "disabled";
}
- });
+ }));
add(first);
AjaxLink firstLink = new AjaxLink(ID_FIRST_LINK) {
@@ -128,17 +131,14 @@ public void onClick(AjaxRequestTarget target) {
firstPerformed(target);
}
};
- first.add(firstLink);
-
- WebMarkupContainer dots = new WebMarkupContainer(ID_DOTS);
- dots.add(new VisibleEnableBehaviour() {
+ firstLink.add(new VisibleEnableBehaviour() {
@Override
- public boolean isVisible() {
- return BooleanUtils.isTrue(showPageListingModel.getObject()) && showFirstAndDots();
+ public boolean isEnabled() {
+ return BooleanUtils.isTrue(showPageListingModel.getObject()) && isFirstEnabled();
}
});
- add(dots);
+ first.add(firstLink);
}
private void initNavigation() {
@@ -239,6 +239,34 @@ public boolean isEnabled() {
next.add(nextLink);
}
+ private void initLast() {
+ WebMarkupContainer last = new WebMarkupContainer(ID_LAST);
+ last.add(new AttributeModifier("class", new AbstractReadOnlyModel() {
+
+ @Override
+ public String getObject() {
+ return isLastEnabled() ? "" : "disabled";
+ }
+ }));
+ add(last);
+
+ AjaxLink lastLink = new AjaxLink(ID_LAST_LINK) {
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ lastPerformed(target);
+ }
+ };
+ lastLink.add(new VisibleEnableBehaviour() {
+
+ @Override
+ public boolean isEnabled() {
+ return BooleanUtils.isTrue(showPageListingModel.getObject()) && isLastEnabled();
+ }
+ });
+ last.add(lastLink);
+ }
+
private boolean isPreviousEnabled() {
return pageable.getCurrentPage() > 0;
}
@@ -247,8 +275,12 @@ private boolean isNextEnabled() {
return pageable.getCurrentPage() + 1 < pageable.getPageCount();
}
- private boolean showFirstAndDots() {
- return pageable.getCurrentPage() >= PAGING_SIZE - 1;
+ private boolean isFirstEnabled() {
+ return pageable.getCurrentPage() > 0;
+ }
+
+ private boolean isLastEnabled(){
+ return pageable.getCurrentPage() +1 < pageable.getPageCount();
}
private void previousPerformed(AjaxRequestTarget target) {
@@ -259,6 +291,10 @@ private void firstPerformed(AjaxRequestTarget target) {
changeCurrentPage(target, 0);
}
+ private void lastPerformed(AjaxRequestTarget target){
+ changeCurrentPage(target, pageable.getPageCount() - 1);
+ }
+
private void nextPerformed(AjaxRequestTarget target) {
changeCurrentPage(target, pageable.getCurrentPage() + 1);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.properties
index ff9de0a9996..4a48f40e656 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.properties
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/paging/NavigatorPanel.properties
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-NavigatorPanel.previous=Previous
-NavigatorPanel.dots=...
-NavigatorPanel.next=Next
-NavigatorPanel.first=1
+NavigatorPanel.firstLink=<<
+NavigatorPanel.previousLink=<
+NavigatorPanel.nextLink=>
+NavigatorPanel.lastLink=>>