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.renderers;
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.rice.kns.web.taglib.html.KNSTextTag;
024    import org.springframework.web.util.HtmlUtils;
025    
026    /**
027     * Represents a field rendered as a text field
028     */
029    public class TextRenderer extends FieldRendererBase {
030        private KNSTextTag tag = new KNSTextTag();
031    
032        /**
033         * cleans up the html:text tag 
034         * @see org.kuali.kfs.sys.document.web.renderers.FieldRendererBase#clear()
035         */
036        @Override
037        public void clear() {
038            super.clear();
039            tag.setProperty(null);
040            tag.setTitle(null);
041            tag.setSize(null);
042            tag.setMaxlength(null);
043            tag.setOnblur(null);
044            tag.setStyleClass(null);
045            tag.setValue(null);
046            tag.setStyleId(null);
047            tag.setTabindex(null);
048        }
049    
050        /**
051         * Uses a struts html:text tag to render this field
052         * @see org.kuali.kfs.sys.document.web.renderers.Renderer#render(javax.servlet.jsp.PageContext, javax.servlet.jsp.tagext.Tag)
053         */
054        public void render(PageContext pageContext, Tag parentTag) throws JspException {
055            tag.setPageContext(pageContext);
056            tag.setParent(parentTag);
057            tag.setProperty(getFieldName());
058            tag.setTitle(getAccessibleTitle());
059            tag.setSize(getFieldSize());
060            //tag.setTabIndex();
061            tag.setMaxlength(getFieldMaxLength());
062            final String onBlur = buildOnBlur();
063            if (!StringUtils.isBlank(onBlur)) {
064                tag.setOnblur(buildOnBlur());
065            }
066            tag.setStyleClass(getField().getStyleClass());
067    
068            tag.setValue(HtmlUtils.htmlEscape(getField().getPropertyValue()));
069            tag.setStyleId(getFieldName());
070            
071            tag.doStartTag();
072            tag.doEndTag();
073            
074            renderQuickFinderIfNecessary(pageContext, parentTag);
075            
076            if (isShowError()) {
077                renderErrorIcon(pageContext);
078            }
079        }
080        
081        /**
082         * Determines the max length of the field
083         * @return the max length of the field, formatted to a string
084         */
085        protected String getFieldMaxLength() {
086            return Integer.toString(getField().getMaxLength());
087        }
088    
089        /**
090         * Determines the size of the field
091         * @return the size of the field, formatted as a String
092         */
093        protected String getFieldSize() {
094            return Integer.toString(getField().getSize());
095        }
096    
097        /**
098         * Yes, I'd like a quickfinder please
099         * @see org.kuali.kfs.sys.document.web.renderers.FieldRenderer#renderQuickfinder()
100         */
101        public boolean renderQuickfinder() {
102            return true;
103        }
104        
105    }