1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.wcm.webui.paginator;
18
19 import org.exoplatform.commons.exception.ExoMessageException;
20 import org.exoplatform.resolver.ResourceResolver;
21 import org.exoplatform.services.log.ExoLogger;
22 import org.exoplatform.services.log.Log;
23 import org.exoplatform.webui.application.WebuiRequestContext;
24 import org.exoplatform.webui.config.annotation.ComponentConfig;
25 import org.exoplatform.webui.config.annotation.EventConfig;
26 import org.exoplatform.webui.core.UIComponent;
27 import org.exoplatform.webui.core.UIPageIterator;
28 import org.exoplatform.webui.core.lifecycle.Lifecycle;
29 import org.exoplatform.webui.event.Event;
30 import org.exoplatform.webui.event.EventListener;
31
32
33
34
35
36
37
38 @ComponentConfig(
39 lifecycle = Lifecycle.class,
40 events = @EventConfig(listeners = UICustomizeablePaginator.ShowPageActionListener.class )
41 )
42 public class UICustomizeablePaginator extends UIPageIterator {
43
44 private static final Log LOG = ExoLogger.getLogger(UICustomizeablePaginator.class.getName());
45
46
47 private String templatePath;
48
49
50 private ResourceResolver resourceResolver;
51
52
53 private String pageMode;
54
55
56
57
58 public UICustomizeablePaginator() {
59 }
60
61
62
63
64
65
66 public int getTotalPages() { return getPageList().getAvailablePage(); }
67
68
69
70
71
72
73 public int getTotalItems() { return getPageList().getAvailable(); }
74
75
76
77
78
79
80 public int getItemPerPage() { return getPageList().getPageSize(); }
81
82
83
84
85
86
87
88 public void init(ResourceResolver resourceResolver, String templatePath) {
89 this.resourceResolver = resourceResolver;
90 this.templatePath = templatePath;
91 }
92
93
94
95
96
97
98 public void setTemplatePath(String path) { this.templatePath = path; }
99
100
101
102
103
104
105 public void setResourceResolver(ResourceResolver resolver) { this.resourceResolver = resolver; }
106
107
108
109
110 public String getTemplate() {
111 if(templatePath != null)
112 return templatePath;
113 return super.getTemplate();
114 }
115
116
117
118
119
120 public String getPageMode() {
121 return pageMode;
122 }
123
124
125
126
127
128
129 public void setPageMode(String pageMode) {
130 this.pageMode = pageMode;
131 }
132
133
134
135
136
137
138
139 public ResourceResolver getTemplateResourceResolver(WebuiRequestContext context,String template) {
140 if(resourceResolver != null)
141 return resourceResolver;
142 return super.getTemplateResourceResolver(context,template);
143 }
144
145
146
147
148
149
150
151
152
153
154
155 static public class ShowPageActionListener extends EventListener<UICustomizeablePaginator> {
156
157
158
159
160 public void execute(Event<UICustomizeablePaginator> event) throws Exception {
161 UICustomizeablePaginator uiPaginator = event.getSource() ;
162 int page = Integer.parseInt(event.getRequestContext().getRequestParameter(OBJECTID)) ;
163 try {
164 uiPaginator.setCurrentPage(page) ;
165 } catch (ExoMessageException e) {
166 if (LOG.isWarnEnabled()) {
167 LOG.warn(e.getMessage());
168 }
169 }
170 UIComponent parent = uiPaginator.getParent();
171 if(parent == null) return ;
172 event.getRequestContext().addUIComponentToUpdateByAjax(parent);
173 parent.broadcast(event,event.getExecutionPhase());
174 }
175 }
176 }