1 20 package net.mlw.vlh.web.tag.support; 21 22 import java.util.HashMap ; 23 import java.util.Locale ; 24 import java.util.Map ; 25 26 import javax.servlet.http.HttpServletRequest ; 27 import javax.servlet.jsp.JspException ; 28 29 import net.mlw.vlh.ValueListInfo; 30 import net.mlw.vlh.web.ValueListConfigBean; 31 import net.mlw.vlh.web.tag.TableInfo; 32 33 import org.apache.commons.logging.Log; 34 import org.apache.commons.logging.LogFactory; 35 36 40 public class HtmlDisplayProvider extends AbstractHTMLDisplayProvider 41 { 42 45 private static final Log LOGGER = LogFactory.getLog(HtmlDisplayProvider.class); 46 47 private String imageHome = "images"; 48 49 private boolean preAppendContextPath = false; 50 51 private boolean usePadding = true; 52 53 private boolean useNoWrap = true; 54 55 59 public String getImageHome() 60 { 61 return imageHome; 62 } 63 64 68 public boolean isPreAppendContextPath() 69 { 70 return preAppendContextPath; 71 } 72 73 77 public boolean isUseNoWrap() 78 { 79 return useNoWrap; 80 } 81 82 86 public boolean isUsePadding() 87 { 88 return usePadding; 89 } 90 91 105 public void setPreAppendContextPath(boolean preAppendAppDir) 106 { 107 this.preAppendContextPath = preAppendAppDir; 108 } 109 110 127 public void setImageHome(String dir) 128 { 129 imageHome = dir; 130 } 131 132 137 public String getHeaderCellPreProcess(ColumnInfo columnInfo, ValueListInfo info) 138 { 139 StringBuffer sb = new StringBuffer (); 140 sb.append("\n <th"); 141 if (useNoWrap) 142 { 143 sb.append(" nowrap=\"true\""); 144 } 145 if (columnInfo != null) 146 { 147 if (columnInfo.getToolTip() != null) 148 { 149 sb.append(" title=\"").append(columnInfo.getToolTip()).append("\""); } 151 if (columnInfo.getAttributes() != null) 152 { 153 sb.append(" ").append(columnInfo.getAttributes()); 154 } 155 } 156 sb.append(">"); 157 if (usePadding) 158 { 159 sb.append(" "); 160 } 161 return sb.toString(); 162 } 163 164 174 public String getHeaderLabel(ColumnInfo columnInfo, TableInfo tableInfo, ValueListInfo info, Map includeParameters) 175 { 176 177 ValueListConfigBean config = tableInfo.getConfig(); 178 Map parameters = new HashMap (includeParameters); 179 180 if (columnInfo.getDefaultSort() != null) 181 { 182 String column = info.getSortingColumn(); 184 Integer direction = info.getSortingDirection(); 185 186 parameters.put(ValueListInfo.PAGING_NUMBER_PER + tableInfo.getId(), String.valueOf(info.getPagingNumberPer())); 187 parameters.put(ValueListInfo.PAGING_PAGE + tableInfo.getId(), "1"); 188 parameters.put(ValueListInfo.SORT_COLUMN + tableInfo.getId(), columnInfo.getAdapterPropertyName()); 189 parameters 190 .put( 191 ValueListInfo.SORT_DIRECTION + tableInfo.getId(), 192 ((columnInfo.getAdapterPropertyName().equals(column)) ? (ValueListInfo.ASCENDING.equals(direction) ? ValueListInfo.DESCENDING 193 : ValueListInfo.ASCENDING) 194 : columnInfo.getDefaultSort())); 195 196 if (info.isFocusEnabled()) 197 { 198 parameters.put(ValueListInfo.DO_FOCUS + tableInfo.getId(), info.isDoFocusAgain() ? "true" : "false"); 199 if (info.getFocusProperty() != null) 200 { 201 parameters.put(ValueListInfo.FOCUS_PROPERTY + tableInfo.getId(), info.getFocusProperty()); 202 } 203 if (info.getFocusValue() != null) 204 { 205 parameters.put(ValueListInfo.FOCUS_VALUE + tableInfo.getId(), info.getFocusValue()); 206 } 207 } 208 209 StringBuffer sb = new StringBuffer (); 210 211 renderHeaderLabelLink(sb, columnInfo, tableInfo, info, parameters); 212 213 if (columnInfo.getAdapterPropertyName().equals(column)) 214 { 215 if (usePadding) 216 { 217 sb.append(" "); 218 } 219 sb.append("<img SRC=\"").append(getImageHome((HttpServletRequest ) tableInfo.getPageContext().getRequest())).append("/sort("); 220 sb.append((ValueListInfo.ASCENDING.equals(direction) ? ValueListInfo.DESCENDING : ValueListInfo.ASCENDING)); 221 sb.append(").png\" border=\"0\"/>"); 222 } 223 else if (columnInfo.getDefaultSort() != null) 224 { 225 Locale locale = config.getLocaleResolver().resolveLocale((HttpServletRequest ) (tableInfo.getPageContext().getRequest())); 226 String altSort; 227 try 228 { 229 altSort = config.getDisplayHelper().help(tableInfo.getPageContext(), 230 config.getMessageSource().getMessage("sorting", null, "Sort", locale)); 231 } 232 catch (JspException e) 233 { 234 LOGGER.error("getHeaderLabel() - Error getting property 'sorting' : " + e.getMessage() 235 + " Locale locale = " + locale 236 + ", String column = " + column + " using defalt hint for sorting images."); 237 238 altSort = "Sort"; 239 } 240 241 sb.append(((usePadding) ? " " : "")).append("<img alt=\"").append(altSort).append("\" SRC=\"").append( 242 getImageHome((HttpServletRequest ) tableInfo.getPageContext().getRequest())).append("/sort(null).png\" border=\"0\"/>"); 243 } 244 245 return sb.toString(); 246 247 } 248 else 249 { 250 return columnInfo.getTitle(); 251 } 252 } 253 254 263 protected void renderHeaderLabelLink(StringBuffer sb, ColumnInfo columnInfo, TableInfo tableInfo, ValueListInfo info, Map parameters) 264 { 265 266 269 sb.append("<a HREF=\"").append(tableInfo.getUrl()); 270 271 sb.append(tableInfo.getConfig().getLinkEncoder().encode(tableInfo.getPageContext(), parameters)); 272 273 sb.append("\">").append(columnInfo.getTitle()).append("</a>"); 274 } 275 276 283 public String getImageHome(HttpServletRequest request) 284 { 285 if (preAppendContextPath && request != null) 286 { 287 if (LOGGER.isDebugEnabled()) 288 { 289 LOGGER.debug("Preappending context path='" + request.getContextPath() + "' to image Home '" + imageHome + "'."); 290 } 291 return request.getContextPath() + "/" + imageHome; 292 } 293 return imageHome; 294 } 295 296 301 public String getHeaderCellPostProcess() 302 { 303 return ((usePadding) ? " " : "") + "</th>"; 304 } 305 306 public String getCellPreProcess(Attributes attributes) 307 { 308 return (attributes == null) ? "\n<td>" : "\n<td " + attributes.getCellAttributesAsString() + ">" + ((usePadding) ? " " : ""); 309 } 310 311 public String getCellPostProcess() 312 { 313 return ((usePadding) ? " " : "") + "</td>"; 314 } 315 316 319 public String toString() 320 { 321 return "Images home(without context path): " + getImageHome(null) + " - " + super.toString(); 322 } 323 324 327 public void setUsePadding(boolean usePadding) 328 { 329 this.usePadding = usePadding; 330 } 331 332 335 public void setUseNoWrap(boolean useNoWrap) 336 { 337 this.useNoWrap = useNoWrap; 338 } 339 340 } | Popular Tags |