001    /*
002     * Copyright 2011 The Kuali Foundation.
003     * 
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     * http://www.opensource.org/licenses/ecl2.php
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.kfs.sys.document.web;
017    
018    import javax.servlet.jsp.JspException;
019    import javax.servlet.jsp.PageContext;
020    import javax.servlet.jsp.tagext.Tag;
021    
022    import org.apache.commons.lang.StringUtils;
023    import org.kuali.kfs.sys.document.web.renderers.LabelRenderer;
024    
025    /**
026     * A class which represents a renderable header label for an input
027     */
028    public class FieldHeaderLabel extends HeaderLabel {
029        private HeaderLabelPopulating headerLabelPopulator;
030        private String label;
031        private boolean readOnly = false;
032        private boolean required = false;
033        private String labelFor;
034        private String fullClassNameForHelp;
035        private String attributeEntryForHelp;
036        
037        /**
038         * Constructs a FieldHeaderLabel, forcing an implementation of HeaderLabelPopulating to be passed in
039         * @param headerLabelPopulator the populator who will populate this label when the time has come
040         */
041        public FieldHeaderLabel(HeaderLabelPopulating headerLabelPopulator) {
042            this.headerLabelPopulator = headerLabelPopulator;
043        }
044    
045        /**
046         * Gets the attributeEntryForHelp attribute. 
047         * @return Returns the attributeEntryForHelp.
048         */
049        public String getAttributeEntryForHelp() {
050            return attributeEntryForHelp;
051        }
052    
053        /**
054         * Sets the attributeEntryForHelp attribute value.
055         * @param attributeEntryForHelp The attributeEntryForHelp to set.
056         */
057        public void setAttributeEntryForHelp(String attributeEntryForHelp) {
058            this.attributeEntryForHelp = attributeEntryForHelp;
059        }
060    
061        /**
062         * Gets the fullClassNameForHelp attribute. 
063         * @return Returns the fullClassNameForHelp.
064         */
065        public String getFullClassNameForHelp() {
066            return fullClassNameForHelp;
067        }
068    
069        /**
070         * Sets the fullClassNameForHelp attribute value.
071         * @param fullClassNameForHelp The fullClassNameForHelp to set.
072         */
073        public void setFullClassNameForHelp(String fullClassNameForHelp) {
074            this.fullClassNameForHelp = fullClassNameForHelp;
075        }
076    
077        /**
078         * Gets the label attribute. 
079         * @return Returns the label.
080         */
081        public String getLabel() {
082            return label;
083        }
084    
085        /**
086         * Sets the label attribute value.
087         * @param label The label to set.
088         */
089        public void setLabel(String label) {
090            this.label = label;
091        }
092    
093        /**
094         * Gets the labelFor attribute. 
095         * @return Returns the labelFor.
096         */
097        public String getLabelFor() {
098            return labelFor;
099        }
100    
101        /**
102         * Sets the labelFor attribute value.
103         * @param labelFor The labelFor to set.
104         */
105        public void setLabelFor(String labelFor) {
106            this.labelFor = labelFor;
107        }
108    
109        /**
110         * Gets the readOnly attribute. 
111         * @return Returns the readOnly.
112         */
113        public boolean isReadOnly() {
114            return readOnly;
115        }
116    
117        /**
118         * Sets the readOnly attribute value.
119         * @param readOnly The readOnly to set.
120         */
121        public void setReadOnly(boolean readOnly) {
122            this.readOnly = readOnly;
123        }
124    
125        /**
126         * Gets the required attribute. 
127         * @return Returns the required.
128         */
129        public boolean isRequired() {
130            return required;
131        }
132    
133        /**
134         * Sets the required attribute value.
135         * @param required The required to set.
136         */
137        public void setRequired(boolean required) {
138            this.required = required;
139        }
140    
141        /**
142         * @see org.kuali.kfs.sys.document.web.RenderableElement#renderElement(javax.servlet.jsp.PageContext, javax.servlet.jsp.tagext.Tag, org.kuali.kfs.sys.document.web.AccountingLineRenderingContext)
143         */
144        public void renderElement(PageContext pageContext, Tag parentTag, AccountingLineRenderingContext renderingContext) throws JspException {
145            headerLabelPopulator.populateHeaderLabel(this, renderingContext);
146            LabelRenderer renderer = new LabelRenderer();
147            renderer.setLabel(label);
148            renderer.setRequired(required);
149            renderer.setReadOnly(readOnly);
150            renderer.setLabelFor(labelFor);
151            if (!StringUtils.isBlank(fullClassNameForHelp)) {
152                renderer.setFullClassNameForHelp(fullClassNameForHelp);
153            }
154            if (!StringUtils.isBlank(attributeEntryForHelp)) {
155                renderer.setAttributeEntryForHelp(attributeEntryForHelp);
156            }
157            renderer.render(pageContext, parentTag);
158            renderer.clear();
159        }
160    
161    }