11package org .thymeleaf .dialect .springdata .decorator ;
22
3- import java .util .Locale ;
4-
53import org .springframework .data .domain .Page ;
64import org .thymeleaf .context .ITemplateContext ;
75import org .thymeleaf .dialect .springdata .Keys ;
6+ import org .thymeleaf .dialect .springdata .SpringDataDialect ;
87import org .thymeleaf .dialect .springdata .util .Messages ;
98import org .thymeleaf .dialect .springdata .util .PageUtils ;
109import org .thymeleaf .dialect .springdata .util .Strings ;
1110import org .thymeleaf .model .IProcessableElementTag ;
1211
12+ import java .util .Locale ;
13+ import java .util .Map ;
14+
1315public final class FullPaginationDecorator implements PaginationDecorator {
1416 private static final String DEFAULT_CLASS = "pagination" ;
1517 private static final String BUNDLE_NAME = FullPaginationDecorator .class .getSimpleName ();
1618 private static final int DEFAULT_PAGE_SPLIT = 7 ;
19+ private static final String CSS_ATTR_PREFIX = SpringDataDialect .PREFIX + ":" + DEFAULT_CLASS + "-" ;
20+
21+ // define custom CSS tags
22+ private String cssPageItem = "page-item" ;
23+ private String cssPageLink = "page-link" ;
24+ private String cssDisabled = "disabled" ;
25+ private String cssActive = "active" ;
1726
1827 public String getIdentifier () {
1928 return "full" ;
@@ -23,6 +32,8 @@ public String decorate(final IProcessableElementTag tag, final ITemplateContext
2332
2433 Page <?> page = PageUtils .findPage (context );
2534
35+ configureCss (tag .getAttributeMap ());
36+
2637 // laquo
2738 String firstPage = PageUtils .createPageUrl (context , 0 );
2839 Locale locale = context .getLocale ();
@@ -93,27 +104,27 @@ private String createPageLinks(final Page<?> page, final ITemplateContext contex
93104 }
94105
95106 private String getLaquo (Locale locale ) {
96- return Messages .getMessage (BUNDLE_NAME , "laquo" , locale );
107+ return Messages .getMessage (BUNDLE_NAME , "laquo" , locale , cssPageItem , cssPageLink , cssDisabled );
97108 }
98109
99110 private String getLaquo (String firstPage , Locale locale ) {
100- return Messages .getMessage (BUNDLE_NAME , "laquo.link" , locale , firstPage );
111+ return Messages .getMessage (BUNDLE_NAME , "laquo.link" , locale , firstPage , cssPageItem , cssPageLink );
101112 }
102113
103114 private String getRaquo (Locale locale ) {
104- return Messages .getMessage (BUNDLE_NAME , "raquo" , locale );
115+ return Messages .getMessage (BUNDLE_NAME , "raquo" , locale , cssPageItem , cssPageLink , cssDisabled );
105116 }
106117
107118 private String getRaquo (String lastPage , Locale locale ) {
108- return Messages .getMessage (BUNDLE_NAME , "raquo.link" , locale , lastPage );
119+ return Messages .getMessage (BUNDLE_NAME , "raquo.link" , locale , lastPage , cssPageItem , cssPageLink );
109120 }
110121
111122 private String getLink (int pageNumber , Locale locale ) {
112- return Messages .getMessage (BUNDLE_NAME , "link.active" , locale , pageNumber );
123+ return Messages .getMessage (BUNDLE_NAME , "link.active" , locale , pageNumber , cssActive , cssPageLink );
113124 }
114125
115126 private String getLink (int pageNumber , String url , Locale locale ) {
116- return Messages .getMessage (BUNDLE_NAME , "link" , locale , url , pageNumber );
127+ return Messages .getMessage (BUNDLE_NAME , "link" , locale , url , pageNumber , cssPageItem , cssPageLink );
117128 }
118129
119130 private String getPreviousPageLink (Page <?> page , final ITemplateContext context ) {
@@ -122,7 +133,7 @@ private String getPreviousPageLink(Page<?> page, final ITemplateContext context)
122133 int previousPage = page .getNumber ()-1 ;
123134 String link = PageUtils .createPageUrl (context , previousPage );
124135
125- return Messages .getMessage (BUNDLE_NAME , msgKey , locale , link );
136+ return Messages .getMessage (BUNDLE_NAME , msgKey , locale , link , cssPageItem , cssPageLink , cssDisabled );
126137 }
127138
128139 private String getNextPageLink (Page <?> page , final ITemplateContext context ) {
@@ -131,7 +142,26 @@ private String getNextPageLink(Page<?> page, final ITemplateContext context) {
131142 int nextPage = page .getNumber () + 1 ;
132143 String link = PageUtils .createPageUrl (context , nextPage );
133144
134- return Messages .getMessage (BUNDLE_NAME , msgKey , locale , link );
145+ return Messages .getMessage (BUNDLE_NAME , msgKey , locale , link , cssPageItem , cssPageLink , cssDisabled );
146+ }
147+
148+ private void configureCss (Map <String ,String > attributeMap ) {
149+
150+ if (attributeMap .get (CSS_ATTR_PREFIX + "page-item" ) != null ) {
151+ this .cssPageItem = attributeMap .get (CSS_ATTR_PREFIX + "page-item" );
152+ }
153+
154+ if (attributeMap .get (CSS_ATTR_PREFIX + "page-link" ) != null ) {
155+ this .cssPageLink = attributeMap .get (CSS_ATTR_PREFIX + "page-link" );
156+ }
157+
158+ if (attributeMap .get (CSS_ATTR_PREFIX + "disabled" ) != null ) {
159+ this .cssDisabled = attributeMap .get (CSS_ATTR_PREFIX + "disabled" );
160+ }
161+
162+ if (attributeMap .get (CSS_ATTR_PREFIX + "active" ) != null ) {
163+ this .cssActive = attributeMap .get (CSS_ATTR_PREFIX + "active" );
164+ }
135165 }
136166
137167}
0 commit comments