/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.sys.document.web.renderers;
import java.io.IOException;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import org.kuali.rice.kns.web.ui.Field;
/**
* Renders a set of read only fields to a table cell
*/
public class MultipleReadOnlyFieldsRenderer implements Renderer {
private List<Field> fields;
private ReadOnlyRenderer readOnlyRenderer = new ReadOnlyRenderer();
/**
*
* @see org.kuali.kfs.sys.document.web.renderers.Renderer#clear()
*/
public void clear() {
fields = null;
}
/**
*
* @see org.kuali.kfs.sys.document.web.renderers.Renderer#render(javax.servlet.jsp.PageContext, javax.servlet.jsp.tagext.Tag)
* KRAD Conversion: Customization of render with fieldsand inquiry urls.
*/
public void render(PageContext pageContext, Tag parentTag) throws JspException {
try {
JspWriter out = pageContext.getOut();
if (fields != null && !fields.isEmpty()) {
out.write(beginReadOnlyLayout());
for (Field field : fields) {
out.write(beginReadOnlyLabel());
out.write(renderLabel(field));
out.write(endReadOnlyLabel());
out.write(beginReadOnlyValue());
readOnlyRenderer.setField(field);
if (field.getInquiryURL() != null) {
readOnlyRenderer.setShouldRenderInquiry(true);
}
readOnlyRenderer.render(pageContext, parentTag);
readOnlyRenderer.clear();
out.write(endReadOnlyValue());
}
out.write(endReadOnlyLayout());
} else {
out.write(renderEmptyCell());
}
}
catch (IOException ioe) {
throw new JspException("Could not render MultipleReadOnlyFields", ioe);
}
}
/**
* @return the value to render for an empty cell
*/
protected String renderEmptyCell() {
return " ";
}
protected String beginReadOnlyLayout() {
return "<table>";
}
protected String beginReadOnlyLabel() {
return "<tr><td width=\"50%\">";
}
protected String endReadOnlyLabel() {
return "</td>";
}
protected String beginReadOnlyValue() {
return "<td width=\"50%\">";
}
protected String endReadOnlyValue() {
return "</td></tr>";
}
/**
* KRAD Conversion: getting field label
*/
protected String renderLabel(Field field) {
return field.getFieldLabel();
}
protected String endReadOnlyLayout() {
return "</table>";
}
/**
* @return the current list of fields to render through this render pass
*
* KRAD Conversion: getting fields
*/
public List<Field> getFields() {
return fields;
}
/**
* Associate fields with this render pass of the renderer
* @param fields the fields to render through this render pass
*
* KRAD Conversion: setting fields
*/
public void setFields(List<Field> fields) {
this.fields = fields;
}
}