1 19 20 package com.sslexplorer.table.tags; 21 22 import java.net.MalformedURLException ; 23 import java.util.HashMap ; 24 import java.util.Map ; 25 import java.util.StringTokenizer ; 26 27 import javax.servlet.jsp.JspException ; 28 import javax.servlet.jsp.tagext.TagSupport ; 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 { 37 protected String pagerProperty = null; 38 protected String pagerName = null; 39 protected String action = null; 40 protected String styleId = null; 41 protected String styleClass = null; 42 protected String style = null; 43 protected String disabledStyleId = null; 44 protected String disabledStyleClass = null; 45 protected String disabledStyle = null; 46 protected String forward = null; 47 protected String attributesName; 48 protected String attributesProperties; 49 protected String subForm = null; 50 private String selectedStyle; 51 private String selectedStyleClass; 52 private String selectedStyleId; 53 54 public String getPagerName() { 55 return (this.pagerName); 56 } 57 58 public void setAction(String action) { 59 this.action = action; 60 } 61 62 public String getAction() { 63 return action; 64 } 65 66 public String getForward() { 67 return forward; 68 } 69 70 public void setForward(String forward) { 71 this.forward = forward; 72 } 73 74 public void setPagerName(String pagerName) { 75 this.pagerName = pagerName; 76 } 77 78 public String getPagerProperty() { 79 return (this.pagerProperty); 80 } 81 82 public void setPagerProperty(String pagerProperty) { 83 this.pagerProperty = pagerProperty; 84 } 85 86 public void setStyle(String style) { 87 this.style = style; 88 } 89 90 public String getStyle() { 91 return style; 92 } 93 94 public void setSubForm(String subForm) { 95 this.subForm = subForm; 96 } 97 98 public String getSubForm() { 99 return subForm; 100 } 101 102 public void setStyleClass(String styleClass) { 103 this.styleClass = styleClass; 104 } 105 106 public String getStyleClass() { 107 return styleClass; 108 } 109 110 public void setStyleId(String styleId) { 111 this.styleId = styleId; 112 } 113 114 public String getStyleId() { 115 return styleId; 116 } 117 118 public void setDisabledStyle(String disabledStyle) { 119 this.disabledStyle = disabledStyle; 120 } 121 122 public String getDisabledStyle() { 123 return disabledStyle; 124 } 125 126 public void setDisabledStyleClass(String disabledStyleClass) { 127 this.disabledStyleClass = disabledStyleClass; 128 } 129 130 public String getDisabledStyleClass() { 131 return disabledStyleClass; 132 } 133 134 public void setDisabledStyleId(String disabledStyleId) { 135 this.disabledStyleId = disabledStyleId; 136 } 137 138 public String getDisabledStyleId() { 139 return disabledStyleId; 140 } 141 142 public void setSelectedStyle(String selectedStyle) { 143 this.selectedStyle = selectedStyle; 144 } 145 146 public String getSelectedStyle() { 147 return selectedStyle; 148 } 149 150 public void setSelectedStyleClass(String selectedStyleClass) { 151 this.selectedStyleClass = selectedStyleClass; 152 } 153 154 public String getSelectedStyleClass() { 155 return selectedStyleClass; 156 } 157 158 public void setSelectedStyleId(String selectedStyleId) { 159 this.selectedStyleId = selectedStyleId; 160 } 161 162 public String 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 attributesName) { 187 this.attributesName = attributesName; 188 } 189 190 public void setAttributesProperties(String attributesProperties) { 191 this.attributesProperties = attributesProperties; 192 } 193 194 public int doEndTag() throws JspException { 195 StringBuffer results = new StringBuffer (); 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 202 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><<</span></div>"); 214 results.append("</a></li>"); 215 216 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><</span></div>"); 227 results.append("</a></li>"); 228 229 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 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>></span></div>"); 259 results.append("</a></li>"); 260 261 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("\""); 285 results.append(makeStyles(false, false)); 286 results.append(">"); 287 results.append("<div class=\"lastPage\"><span>>></span></div>"); 288 results.append("</a></li>"); 289 results.append("</ul>"); 290 } else { 291 results.append(" "); 292 } 293 294 TagUtils.getInstance().write(pageContext, results.toString()); 295 return (EVAL_PAGE); 296 297 } 298 299 protected String getPageLink(int startRow, Pager pager) { 300 String url = null; 301 try { 302 Map params = new HashMap (); 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 t = new StringTokenizer (attributesProperties, ","); 312 while (t.hasMoreTokens()) { 313 String attr = t.nextToken(); 314 try { 315 params.put(attr, TagUtils.getInstance().lookup(pageContext, attributesName, attr, null).toString()); 316 } catch (Exception e) { 317 } 318 } 319 } 320 url = TagUtils.getInstance().computeURLWithCharEncoding(pageContext, forward, null, "", action, null, params, null, 321 false, false); 322 } catch (MalformedURLException e) { 323 } 324 return (url); 325 } 326 327 protected String makeStyles(boolean disabled, boolean selected) throws JspException { 328 StringBuffer results = new StringBuffer (); 329 String 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 355 public int doStartTag() throws JspException { 356 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 |