/*
* 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 javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import org.apache.commons.lang.StringUtils;
import org.kuali.kfs.sys.KFSConstants;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.core.api.config.property.ConfigurationService;
import org.kuali.rice.krad.util.KRADConstants;
/**
* This renders a label (and not, as I was about to write labels a render). It's main job
* is to render header cells on accounting lines.
*/
public class LabelRenderer implements Renderer {
private boolean required = false;
private boolean readOnly = false;
private String label;
private String fullClassNameForHelp;
private String attributeEntryForHelp;
private String labelFor;
/**
* Gets the attributeEntryForHelp attribute.
* @return Returns the attributeEntryForHelp.
*/
public String getAttributeEntryForHelp() {
return attributeEntryForHelp;
}
/**
* Sets the attributeEntryForHelp attribute value.
* @param attributeEntryForHelp The attributeEntryForHelp to set.
*/
public void setAttributeEntryForHelp(String attributeEntryForHelp) {
this.attributeEntryForHelp = attributeEntryForHelp;
}
/**
* Gets the fullClassNameForHelp attribute.
* @return Returns the fullClassNameForHelp.
*/
public String getFullClassNameForHelp() {
return fullClassNameForHelp;
}
/**
* Sets the fullClassNameForHelp attribute value.
* @param fullClassNameForHelp The fullClassNameForHelp to set.
*/
public void setFullClassNameForHelp(String fullClassNameForHelp) {
this.fullClassNameForHelp = fullClassNameForHelp;
}
/**
* Gets the label attribute.
* @return Returns the label.
*/
public String getLabel() {
return label;
}
/**
* Sets the label attribute value.
* @param label The label to set.
*/
public void setLabel(String label) {
this.label = label;
}
/**
* Gets the required attribute.
* @return Returns the required.
*/
public boolean isRequired() {
return required;
}
/**
* Sets the required attribute value.
* @param required The required to set.
*/
public void setRequired(boolean required) {
this.required = required;
}
/**
* Gets the readOnly attribute.
* @return Returns the readOnly.
*/
public boolean isReadOnly() {
return readOnly;
}
/**
* Sets the readOnly attribute value.
* @param readOnly The readOnly to set.
*/
public void setReadOnly(boolean readOnly) {
this.readOnly = readOnly;
}
/**
* Gets the labelFor attribute.
* @return Returns the labelFor.
*/
public String getLabelFor() {
return labelFor;
}
/**
* Sets the labelFor attribute value.
* @param labelFor The labelFor to set.
*/
public void setLabelFor(String labelFor) {
this.labelFor = labelFor;
}
/**
*
* @see org.kuali.kfs.sys.document.web.renderers.Renderer#clear()
*/
public void clear() {
readOnly = false;
required = false;
label = null;
fullClassNameForHelp = null;
attributeEntryForHelp = null;
labelFor = null;
}
private static String APPLICATION_URL;
protected String getApplicationURL() {
if ( APPLICATION_URL == null ) {
APPLICATION_URL = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(KRADConstants.APPLICATION_URL_KEY);
}
return APPLICATION_URL;
}
/**
*
* @see org.kuali.kfs.sys.document.web.renderers.Renderer#render(javax.servlet.jsp.PageContext, javax.servlet.jsp.tagext.Tag, org.kuali.rice.krad.bo.BusinessObject)
*/
public void render(PageContext pageContext, Tag parentTag) throws JspException {
try {
JspWriter out = pageContext.getOut();
if (!StringUtils.isBlank(labelFor)) {
out.write("<label for=\""+labelFor+"\">");
}
if (required) {
out.write(KFSConstants.REQUIRED_FIELD_SYMBOL);
out.write(" ");
}
if (!StringUtils.isBlank(fullClassNameForHelp) && !StringUtils.isBlank(attributeEntryForHelp)) {
out.write("<a href=\"");
out.write(getApplicationURL());
out.write("/kr/help.do?methodToCall=getAttributeHelpText&businessObjectClassName=");
out.write(fullClassNameForHelp);
out.write("&attributeName=");
out.write(attributeEntryForHelp);
out.write("\" target=\"_blank\">");
}
out.write(label);
if (!StringUtils.isBlank(fullClassNameForHelp) && !StringUtils.isBlank(attributeEntryForHelp)) {
out.write("</a>");
}
if (!StringUtils.isBlank(labelFor)) {
out.write("</label>");
}
}
catch (IOException ioe) {
throw new JspException("Difficulty rendering label", ioe);
}
}
}