KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > table > tags > NavigationTag


1 /*
2  * SSL-Explorer
3  *
4  * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19             
20 package com.sslexplorer.table.tags;
21
22 import java.net.MalformedURLException JavaDoc;
23 import java.util.HashMap JavaDoc;
24 import java.util.Map JavaDoc;
25 import java.util.StringTokenizer JavaDoc;
26
27 import javax.servlet.jsp.JspException JavaDoc;
28 import javax.servlet.jsp.tagext.TagSupport JavaDoc;
29
30 import org.apache.struts.taglib.TagUtils;
31
32 import com.sslexplorer.core.CoreUtil;
33 import com.sslexplorer.core.tags.FormTag;
34 import com.sslexplorer.table.Pager;
35
36 public class NavigationTag extends TagSupport JavaDoc {
37     protected String JavaDoc pagerProperty = null;
38     protected String JavaDoc pagerName = null;
39     protected String JavaDoc action = null;
40     protected String JavaDoc styleId = null;
41     protected String JavaDoc styleClass = null;
42     protected String JavaDoc style = null;
43     protected String JavaDoc disabledStyleId = null;
44     protected String JavaDoc disabledStyleClass = null;
45     protected String JavaDoc disabledStyle = null;
46     protected String JavaDoc forward = null;
47     protected String JavaDoc attributesName;
48     protected String JavaDoc attributesProperties;
49     protected String JavaDoc subForm = null;
50     private String JavaDoc selectedStyle;
51     private String JavaDoc selectedStyleClass;
52     private String JavaDoc selectedStyleId;
53
54     public String JavaDoc getPagerName() {
55         return (this.pagerName);
56     }
57
58     public void setAction(String JavaDoc action) {
59         this.action = action;
60     }
61
62     public String JavaDoc getAction() {
63         return action;
64     }
65
66     public String JavaDoc getForward() {
67         return forward;
68     }
69
70     public void setForward(String JavaDoc forward) {
71         this.forward = forward;
72     }
73
74     public void setPagerName(String JavaDoc pagerName) {
75         this.pagerName = pagerName;
76     }
77
78     public String JavaDoc getPagerProperty() {
79         return (this.pagerProperty);
80     }
81
82     public void setPagerProperty(String JavaDoc pagerProperty) {
83         this.pagerProperty = pagerProperty;
84     }
85
86     public void setStyle(String JavaDoc style) {
87         this.style = style;
88     }
89
90     public String JavaDoc getStyle() {
91         return style;
92     }
93
94     public void setSubForm(String JavaDoc subForm) {
95         this.subForm = subForm;
96     }
97
98     public String JavaDoc getSubForm() {
99         return subForm;
100     }
101
102     public void setStyleClass(String JavaDoc styleClass) {
103         this.styleClass = styleClass;
104     }
105
106     public String JavaDoc getStyleClass() {
107         return styleClass;
108     }
109
110     public void setStyleId(String JavaDoc styleId) {
111         this.styleId = styleId;
112     }
113
114     public String JavaDoc getStyleId() {
115         return styleId;
116     }
117
118     public void setDisabledStyle(String JavaDoc disabledStyle) {
119         this.disabledStyle = disabledStyle;
120     }
121
122     public String JavaDoc getDisabledStyle() {
123         return disabledStyle;
124     }
125
126     public void setDisabledStyleClass(String JavaDoc disabledStyleClass) {
127         this.disabledStyleClass = disabledStyleClass;
128     }
129
130     public String JavaDoc getDisabledStyleClass() {
131         return disabledStyleClass;
132     }
133
134     public void setDisabledStyleId(String JavaDoc disabledStyleId) {
135         this.disabledStyleId = disabledStyleId;
136     }
137
138     public String JavaDoc getDisabledStyleId() {
139         return disabledStyleId;
140     }
141
142     public void setSelectedStyle(String JavaDoc selectedStyle) {
143         this.selectedStyle = selectedStyle;
144     }
145
146     public String JavaDoc getSelectedStyle() {
147         return selectedStyle;
148     }
149
150     public void setSelectedStyleClass(String JavaDoc selectedStyleClass) {
151         this.selectedStyleClass = selectedStyleClass;
152     }
153
154     public String JavaDoc getSelectedStyleClass() {
155         return selectedStyleClass;
156     }
157
158     public void setSelectedStyleId(String JavaDoc selectedStyleId) {
159         this.selectedStyleId = selectedStyleId;
160     }
161
162     public String JavaDoc getSelectedStyleId() {
163         return selectedStyleId;
164     }
165
166     public void release() {
167         super.release();
168         pagerName = null;
169         pagerProperty = null;
170         action = null;
171         styleId = null;
172         styleClass = null;
173         style = null;
174         disabledStyleId = null;
175         disabledStyleClass = null;
176         disabledStyle = null;
177         selectedStyleId = null;
178         selectedStyleClass = null;
179         selectedStyle = null;
180         attributesName = null;
181         attributesProperties = null;
182         subForm = null;
183
184     }
185
186     public void setAttributesName(String JavaDoc attributesName) {
187         this.attributesName = attributesName;
188     }
189
190     public void setAttributesProperties(String JavaDoc attributesProperties) {
191         this.attributesProperties = attributesProperties;
192     }
193
194     public int doEndTag() throws JspException JavaDoc {
195         StringBuffer JavaDoc results = new StringBuffer JavaDoc();
196         Pager pager = (Pager) TagUtils.getInstance().lookup(pageContext, pagerName, pagerProperty, null);
197         if (pager != null && pager.getModel().getRowCount() >= Integer.parseInt(PageSizeTag.PAGE_SIZES[0])) {
198             // String imagePath =
199
// CoreUtil.getThemePath(pageContext.getSession()) +
200
// "/images/actions/";
201

202             // Start of table
203
results.append("<ul><li>");
204             results.append("<a HREF=\"");
205             if (pager.getStartRow() > 0) {
206                 results.append(getPageLink(0, pager));
207             } else {
208                 results.append("javascript: void();");
209             }
210             results.append("\"");
211             results.append(makeStyles(false, false));
212             results.append(">");
213             results.append("<div class=\"firstPage\"><span>&lt;&lt;</span></div>");
214             results.append("</a></li>");
215
216             // Previous page
217
results.append("<li><a HREF=\"");
218             if (pager.getHasPreviousPage()) {
219                 results.append(getPageLink(pager.getStartRow() - pager.calcPageSize(), pager));
220             } else {
221                 results.append("javascript: void();");
222             }
223             results.append("\"");
224             results.append(makeStyles(false, false));
225             results.append(">");
226             results.append("<div class=\"previousPage\"><span>&lt;</span></div>");
227             results.append("</a></li>");
228
229             // Pages
230
int currPage = pager.getPageSize() == 0 ? 0 : (pager.getStartRow() / pager.getPageSize()) + 1;
231             int maxToDisplay = 10;
232             int page = Math.max(1, currPage - (maxToDisplay / 2));
233             int idx = (page - 1) * pager.getPageSize();
234
235             for (int pageIdx = 0; pageIdx < maxToDisplay && idx < pager.getFilteredRowCount(); pageIdx++) {
236                 boolean selected = idx >= pager.getStartRow() && idx < pager.getStartRow() + pager.calcPageSize();
237                 results.append("<li><a HREF=\"");
238                 results.append(selected ? "#" : getPageLink(idx, pager));
239                 results.append("\" ");
240                 results.append(makeStyles(false, selected));
241                 results.append("><div class=\"pageNumber\">");
242                 results.append(page);
243                 results.append("</div></a></li>");
244                 page++;
245                 idx += pager.calcPageSize();
246             }
247
248             // Next page
249
results.append("<li><a HREF=\"");
250             if (pager.getHasNextPage()) {
251                 results.append(getPageLink(pager.getStartRow() + pager.getPageSize(), pager));
252             } else {
253                 results.append("javascript: void();");
254             }
255             results.append("\"");
256             results.append(makeStyles(false, false));
257             results.append(">");
258             results.append("<div class=\"nextPage\"><span>&gt;</span></div>");
259             results.append("</a></li>");
260
261             // Last page
262
results.append("<li><a HREF=\"");
263             if (pager.getPageSize() != 0) {
264                 int lastPageRow = pager.getFilteredRowCount() - (pager.getFilteredRowCount() % pager.getPageSize());
265                 if (pager.getStartRow() < lastPageRow && lastPageRow < pager.getFilteredRowCount()) {
266                     results.append(getPageLink(lastPageRow, pager));
267                 } else {
268                     results.append("javascript: void();");
269                 }
270             } else {
271                 results.append("javascript: void();");
272             }
273
274             // results.append(getPageLink(pager.getModel().getRowCount() -
275
// pager.getPageSize(), pager));
276
// if (pager.getPageSize() != 0 && pager.getStartRow() < (
277
// pager.getModel().getRowCount() - pager.getPageSize() ) ) {
278
//
279
// results.append(getPageLink(pager.getModel().getRowCount() -
280
// pager.getPageSize(), pager));
281
// } else {
282
// results.append("javascript: void();");
283
// }
284
results.append("\"");
285             results.append(makeStyles(false, false));
286             results.append(">");
287             results.append("<div class=\"lastPage\"><span>&gt;&gt;</span></div>");
288             results.append("</a></li>");
289             results.append("</ul>");
290         } else {
291             results.append("&nbsp;");
292         }
293
294         TagUtils.getInstance().write(pageContext, results.toString());
295         return (EVAL_PAGE);
296
297     }
298
299     protected String JavaDoc getPageLink(int startRow, Pager pager) {
300         String JavaDoc url = null;
301         try {
302             Map JavaDoc params = new HashMap JavaDoc();
303             params.put("startRow", String.valueOf(startRow));
304             params.put("pageSize", String.valueOf(pager.getPageSize()));
305             params.put("sortName", pager.getSortName());
306             params.put("sortReverse", String.valueOf(pager.getSortReverse()));
307
308             if (subForm != null)
309                 params.put("subForm", subForm);
310             if (attributesName != null) {
311                 StringTokenizer JavaDoc t = new StringTokenizer JavaDoc(attributesProperties, ",");
312                 while (t.hasMoreTokens()) {
313                     String JavaDoc attr = t.nextToken();
314                     try {
315                         params.put(attr, TagUtils.getInstance().lookup(pageContext, attributesName, attr, null).toString());
316                     } catch (Exception JavaDoc e) {
317                     }
318                 }
319             }
320             url = TagUtils.getInstance().computeURLWithCharEncoding(pageContext, forward, null, "", action, null, params, null,
321                 false, false);
322         } catch (MalformedURLException JavaDoc e) {
323         }
324         return (url);
325     }
326
327     protected String JavaDoc makeStyles(boolean disabled, boolean selected) throws JspException JavaDoc {
328         StringBuffer JavaDoc results = new StringBuffer JavaDoc();
329         String JavaDoc s = selected ? getSelectedStyleClass() : (disabled ? getDisabledStyleClass() : getStyleClass());
330         if (s != null) {
331             results.append(" class=\"");
332             results.append(s);
333             results.append("\"");
334         }
335         s = selected ? getSelectedStyle() : (disabled ? getDisabledStyle() : getStyle());
336         if (s != null) {
337             results.append(" style=\"");
338             results.append(s);
339             results.append("\"");
340         }
341         s = selected ? getSelectedStyleId() : (disabled ? getDisabledStyleId() : getStyleId());
342         if (s != null) {
343             results.append(" id=\"");
344             results.append(s);
345             results.append("\"");
346         }
347         return results.toString();
348     }
349
350     /*
351      * (non-Javadoc)
352      *
353      * @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
354      */

355     public int doStartTag() throws JspException JavaDoc {
356     // JDR change so that task processes return to the correct location
357
FormTag formTag = (FormTag) CoreUtil.getParentTagOfClass(FormTag.class, this);
358         if (formTag != null) {
359             subForm = formTag.getSubFormName();
360         }
361         else {
362             subForm = null;
363         }
364         return SKIP_BODY;
365     }
366
367 }
368
Popular Tags