    001// Copyright 2006-2013 The Apache Software Foundation
    002//
    003// Licensed under the Apache License, Version 2.0 (the "License");
    004// you may not use this file except in compliance with the License.
    005// You may obtain a copy of the License at
    006//
    007// http://www.apache.org/licenses/LICENSE-2.0
    008//
    009// Unless required by applicable law or agreed to in writing, software
    010// distributed under the License is distributed on an "AS IS" BASIS,
    011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012// See the License for the specific language governing permissions and
    013// limitations under the License.
    014
    015package org.apache.tapestry5.corelib.components;
    016
    017import org.apache.tapestry5.MarkupWriter;
    018import org.apache.tapestry5.corelib.base.AbstractTextField;
    019
    020/**
    021 * TextArea component corresponds to a &lt;textarea&gt; element. The value parameter is almost always bound to a string,
    022 * but this is not an absolute requirement.  Since the component accepts informal parameters, the rows and cols attribute may
    023 * be set that way (there is not a formal parameter).
    024 * <p/>
    025 * Includes the <code>cols</code> attribute, if a {@link org.apache.tapestry5.beaneditor.Width} annotation is present on
    026 * the property bound to the value parameter.
    027 *
    028 * @tapestrydoc
    029 * @see org.apache.tapestry5.corelib.components.TextOutput
    030 * @see TextField
    031 * @see Form
    032 */
    033public class TextArea extends AbstractTextField
    034{
    035    private String value;
    036
    037    @Override
    038    protected final void writeFieldTag(MarkupWriter writer, String value)
    039    {
    040        writer.element("textarea",
    041
    042                "name", getControlName(),
    043
    044                "class", cssClass,
    045
    046                "id", getClientId(),
    047
    048                "cols", getWidth());
    049
    050        // Save until needed in after()
    051
    052        this.value = value;
    053    }
    054
    055    final void afterRender(MarkupWriter writer)
    056    {
    057        // TextArea will not have a template.
    058
    059        if (value != null)
    060            writer.write(value);
    061
    062        writer.end(); // textarea
    063    }
    064
    065}