package org.extremecomponents.table.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.extremecomponents.table.bean.Row;
import org.extremecomponents.table.core.TableModel;
import org.extremecomponents.table.interceptor.RowInterceptor;
import org.extremecomponents.util.ExceptionUtils;
/**
* @jsp.tag name="row" display-name="RowTag" body-content="JSP" description="The
* container which holds all the row specific information."
*
* @author Jeff Johnston
*/
public class RowTag extends TagSupport implements RowInterceptor {
private String highlightClass;
private String highlightRow;
private String interceptor;
private String onclick;
private String onmouseout;
private String onmouseover;
private String style;
private String styleClass;
/**
* @jsp.attribute description="The css class style sheet when highlighting rows." required="false"
* rtexprvalue="true"
*/
public void setHighlightClass(String highlightClass) {
this.highlightClass = highlightClass;
}
/**
* @jsp.attribute description="Used to turn the highlight feature on and
* off. Acceptable values are true or false. The default is false."
* required="false" rtexprvalue="true"
*/
public void setHighlightRow(String showHighlight) {
this.highlightRow = showHighlight;
}
/**
* @jsp.attribute description="A fully qualified class name to a custom
* InterceptRow implementation. Could also be a named type
* in the preferences. Used to add or modify row attributes."
* required="false" rtexprvalue="true"
*/
public void setInterceptor(String interceptor) {
this.interceptor = interceptor;
}
/**
* @jsp.attribute description="The javascript onclick action"
* required="false" rtexprvalue="true"
*/
public void setOnclick(String onclick) {
this.onclick = onclick;
}
/**
* @jsp.attribute description="The javascript onmouseout action"
* required="false" rtexprvalue="true"
*/
public void setOnmouseout(String onmouseout) {
this.onmouseout = onmouseout;
}
/**
* @jsp.attribute description="The javascript onmouseover action"
* required="false" rtexprvalue="true"
*/
public void setOnmouseover(String onmouseover) {
this.onmouseover = onmouseover;
}
/**
* @jsp.attribute description="The css inline style sheet." required="false"
* rtexprvalue="true"
*/
public void setStyle(String style) {
this.style = style;
}
/**
* @jsp.attribute description="The css class style sheet." required="false"
* rtexprvalue="true"
*/
public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
}
public int doStartTag() throws JspException {
try {
TableModel model = TagUtils.getModel(this);
if (TagUtils.isIteratingBody(this)) {
Row row = model.getRowHandler().getRow();
row.setOnclick(TagUtils.evaluateExpressionAsString("onclick", onclick, pageContext));
row.setOnmouseout(TagUtils.evaluateExpressionAsString("onmouseout", onmouseout, pageContext));
row.setOnmouseover(TagUtils.evaluateExpressionAsString("onmouseover", onmouseover, pageContext));
modifyRowAttributes(model, row);
model.getRowHandler().modifyRowAttributes();
} else {
Row row = new Row(model);
row.setHighlightClass(TagUtils.evaluateExpressionAsString("highlightClass", this.highlightClass, pageContext));
row.setHighlightRow(TagUtils.evaluateExpressionAsBoolean("highlightRow", this.highlightRow, pageContext));
row.setInterceptor(TagUtils.evaluateExpressionAsString("interceptor", this.interceptor, pageContext));
row.setOnclick(TagUtils.evaluateExpressionAsString("onclick", onclick, pageContext));
row.setOnmouseout(TagUtils.evaluateExpressionAsString("onmouseout", onmouseout, pageContext));
row.setOnmouseover(TagUtils.evaluateExpressionAsString("onmouseover", onmouseover, pageContext));
row.setStyle(TagUtils.evaluateExpressionAsString("style", style, pageContext));
row.setStyleClass(TagUtils.evaluateExpressionAsString("styleClass", styleClass, pageContext));
addRowAttributes(model, row);
model.addRow(row);
}
} catch (Exception e) {
throw new JspException("RowTag.doStartTag() Problem: " + ExceptionUtils.formatStackTrace(e));
}
return EVAL_BODY_INCLUDE;
}
public void addRowAttributes(TableModel model, Row row) {
}
public void modifyRowAttributes(TableModel model, Row row) {
}
public void release() {
highlightClass = null;
highlightRow = null;
interceptor = null;
onclick = null;
onmouseout = null;
onmouseover = null;
style = null;
styleClass = null;
super.release();
}
}