package com.cfinkel.reports.valuelist;
import net.mlw.vlh.web.tag.support.HtmlDisplayProvider;
import net.mlw.vlh.web.tag.support.ColumnInfo;
import net.mlw.vlh.web.tag.TableInfo;
import net.mlw.vlh.web.ValueListConfigBean;
import net.mlw.vlh.ValueListInfo;
import com.cfinkel.reports.web.WebContext;
import com.cfinkel.reports.web.ParameterNames;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import java.util.Map;
import java.util.HashMap;
/**
* $Author:charles $
* $Revision:10429 $
* $Date:2006-07-26 18:00:43 -0400 (Wed, 26 Jul 2006) $
* <p/>
* created:
* User: charles
* Date: May 17, 2006
* Time: 3:39:43 PM
*/
public class CFHtmlDisplayProvider extends HtmlDisplayProvider {
// add sortable:
public String getHeaderCellPreProcess(ColumnInfo columnInfo,
ValueListInfo info) {
HttpServletRequest request = WebContext.get().getRequest();
String sortColumn = request.getParameter(ParameterNames.sortColumn);
String sortDirection = request.getParameter(ParameterNames.sortDirection);
StringBuilder sb = new StringBuilder();
sb.append(" <th class=\"sortable");
if (sortColumn != null && sortColumn.equals(columnInfo.getTitle())) {
// we are sorting by this column:
sb.append(" sorted ");
sb.append(sortDirection == null ? "" : sortDirection.equals("1") ? " order1 " : " order2 " );
}
sb.append("\"");
sb.append((columnInfo == null || columnInfo.getAttributes() == null) ? ""
: columnInfo.getAttributes());
sb.append(">");
return sb.toString();
}
/**
* Get the HTML that comes before the column text.
*
* @return The HTML that comes before the column text.
*/
public String getHeaderRowPreProcess() {
return "<thead><tr>\n";
}
/**
* Get the HTML that comes before the column text.
*
* @return The HTML that comes before the column text.
*/
public String getHeaderRowPostProcess() {
return "</tr></thead>\n";
}
/**
* Changed to not include sort image
*
* @param columnInfo The ColumnInfo.
* @param tableInfo The TableInfo.
* @param info The ValueListInfo.
* @return The formated HTML.
*/
public String getHeaderLabel(ColumnInfo columnInfo, TableInfo tableInfo,
ValueListInfo info, Map includeParameters)
{
StringBuffer sb = new StringBuffer();
ValueListConfigBean config = tableInfo.getConfig();
Map parameters = new HashMap(includeParameters);
if (columnInfo.getDefaultSort() != null)
{
// Get the current sort column and direction.
String column = info.getSortingColumn();
Integer direction = info.getSortingDirection();
sb.append("<a href=\"").append(tableInfo.getUrl());
parameters.put(ValueListInfo.PAGING_PAGE + tableInfo.getId(), "1");
parameters.put(ValueListInfo.SORT_COLUMN + tableInfo.getId(),
columnInfo.getAdapterPropertyName());
parameters
.put(
ValueListInfo.SORT_DIRECTION + tableInfo.getId(),
((columnInfo.getAdapterPropertyName()
.equals(column)) ? (ValueListInfo.ASCENDING
.equals(direction) ? ValueListInfo.DESCENDING
: ValueListInfo.ASCENDING)
: columnInfo.getDefaultSort()));
if (info.isFocusEnabled() == true)
{
parameters.put(ValueListInfo.DO_FOCUS + tableInfo.getId(), info
.isDoFocusAgain() ? "true" : "false");
if (info.getFocusProperty() != null)
{
parameters.put(ValueListInfo.FOCUS_PROPERTY
+ tableInfo.getId(), info.getFocusProperty());
}
if (info.getFocusValue() != null)
{
parameters.put(ValueListInfo.FOCUS_VALUE
+ tableInfo.getId(), info.getFocusValue());
}
}
sb.append(config.getLinkEncoder().encode(
tableInfo.getPageContext(), parameters));
sb.append("\">").append(columnInfo.getTitle()).append("</a>");
}
else
{
sb.append(columnInfo.getTitle());
}
return sb.toString();
}
}