package org.itscool.weber.tag;

import javax.servlet.jsp.JspException;

import org.itscool.commons.util.JspTagUtil;

/**
 * HTMLの&lt;inut type="text"&gt;タグを生成するタグです。<BR>
 * テキストボックス内に初期表示される値はvalue属性で指定した値です。<BR>
 * value属性を指定しない場合はname属性で指定したBeanに対応するプロパティ
 * の値になります。<BR>
 * name属性を指定しない場合はnull値を返します。<BR>
 *（sturtsの場合はStruts設定ファイルでこのフォームに関連づけられたBean
 * に対応するプロパティの値になります。)<BR>
 *<BR>
 *【属性】<BR>
 * maxlength このフィールドに入力できるテキストの最大値<BR>
 * readonly このフィールドを表示のみで入力不可にする場合はtrueを設定する<BR>
 * size このフィールドの表示桁数<BR>
 * name このフィールドの初期値を設定する際に使われるBeanの名前（必須）<BR>
 * property サブミット時に送信されるリクエストパラメータ名（必須）<BR>
 * value このフィールドの初期値。指定しない場合は関連付けられたBeanの
 *       プロパティ値が使われる。<BR>
 *
 * @author KANO
 * @since jdk1.4.1
 * @version 1.00A 2004/11/1
*/
public class PasswordTag extends HtmlTag {
    /** 文字列の最大長 */
    protected String maxlength;
    /** テキストフィールドのサイズ */
    protected String size;

    /**
     * 文字列の最大長を取得します
     * @return 文字列の最大長
    */
    public String getMaxlength() {
        return maxlength;
    }

    /**
     * 文字列の最大長をセットします
     * @param maxlength 文字列の最大長
    */
    public void setMaxlength(String maxlength) {
        this.maxlength = maxlength;
    }

    /**
     * テキストフィールドのサイズを取得します
     * @return size テキストフィールドのサイズ
    */
    public String getSize() {
        return size;
    }

    /**
     * テキストフィールドのサイズをセットします
     * @param size テキストフィールドのサイズ
    */
    public void setSize(String size) {
        this.size = size;
    }

    /**
     * HTMLの&lt;inut type="text"&gt;タグを生成します<br>
     * scopeが指定されていない場合は、次の順序でオブジェクトを検索します。<br>
     * request, session, contextの順
    */
    public int doStartTag() throws JspException {
        StringBuffer inputTag = new StringBuffer("<input type=\"password\" ");
		if( htmlname != null && htmlname.length() > 0 ){
			inputTag.append( JspTagUtil.createAttribute("name", htmlname) );
		}else{
			inputTag.append( JspTagUtil.createAttribute("name", property) );
		}
        inputTag.append(JspTagUtil.createAttribute("maxlength", maxlength));
        inputTag.append(JspTagUtil.createAttribute("size", size));
        inputTag.append(JspTagUtil.createAttribute("style", style));
		inputTag.append(JspTagUtil.createBoolAttribute("readonly", readonly));
		inputTag.append(JspTagUtil.createBoolAttribute("disabled", disabled));
		inputTag.append(JspTagUtil.createBoolAttribute("class", csClass));
        inputTag.append( JspTagUtil.createAttribute( pageContext, name,
        	property, scope, "value", value));
        inputTag.append(this.createJavaScriptTag());
        inputTag.append(">");

        try {
            pageContext.getOut().print(inputTag.toString());
        } catch (Exception e) {
            throw new JspException(e.getMessage());
        }

        return SKIP_BODY;
    }

    public int doEndTag() {
        return EVAL_PAGE;
    }

}
