package org.itscool.weber.tag;

import javax.servlet.jsp.tagext.TagSupport;

import org.itscool.commons.util.JspTagUtil;

/**
 * TagSupportを拡張する基本タグクラスです。
 * HtmlTagは以下の属性をサポートします<br>
 * 
 * 【属性】<BR>
 * <table cellSpacing=0 cellPadding=0 border=1 >
 * <tr>
 *   <td>property</td>
 *   <td>
 *   サブミット時に送信されるリクエストパラメータ名（必須）又、サーブレットからフォワード
 *   されたときにnameで指定されたBeanインスタンスに該当するプロパティがセットされます。<br>
 *   name属性が指定されていない場合はpropertyに指定された値をサーバから取得します。<br>
 *   尚、HTMLのname属性にはpropertyに指定した文字列が出力されます。
 *  （ただしoption、link、imgタグは除く）
 *   </td>
 * <tr>
 * <tr>
 *   <td>name</td>
 *   <td>propertyが属するBeanの名前を指定します。</td>
 * </tr>
 * <tr>
 *   <td>htmlname</td>
 *   <td>
 *   HTMLのname属性にpropertyを使用したくない場合は、htmlnameにname属性を指定します。
 *   この属性を指定するとHTML出力時にpropertyではなくhtmlnameの値がname属性として出力されます。
 *   </td>
 * </tr>
 * <tr>
 *   <td>value</td>
 *   <td>このコンポーネントにセットされる初期値</td>
 * </tr>
 * <tr>
 *   <td>style</td>
 *   <td>このコンポーネントのスタイル</td>
 * </tr>
 * <tr>
 *   <td>scope</td>
 *   <td>propertyのスコープ</td>
 * </tr>
 * <tr>
 *   <td>readonly</td>
 *   <td>このコンポーネントの読取属性（trueの場合は読取専用）</td>
 * </tr>
 * <tr>
 *   <td>disabled</td>
 *   <td>このコンポーネントの使用可否属性（falseの場合は使用不可）</td>
 * </tr>
 * <tr>
 *   <td>csclass</td>
 *   <td>このコンポーネントに指定するスタイルシート</td>
 * </tr>
 * <tr>
 *   <td>
 *   onblur<br>
 *   onchange<br>
 *   onclick<br>
 *   ondblclick<br>
 *   onfocus<br>
 *   onkeydown<br>
 *   onkeypress<br>
 *   onkeyup<br>
 *   onmousedown<br>
 *   onmousemove<br>
 *   onmouseout<br>
 *   onmouseover<br>
 *   onmouseup<br>
 *   </td>
 *   <td>
 *    Javaスクリプト
 *   </td>
 * </tr>
 * </table>
 * <BR>
 * @author KANO
 * @since jdk1.4.1
 * @version 1.00A 2004/11/1
 */
public class HtmlTag extends TagSupport{
    protected String property;
    protected String name;
    protected String value;
    protected String style;
    protected String scope;
    protected String readonly;
    protected String disabled;
    protected String csClass;
    protected String htmlname;
    protected String onblur;
    protected String onchange;
    protected String onclick;
    protected String ondblclick;
    protected String onfocus;
    protected String onkeydown;
    protected String onkeypress;
    protected String onkeyup;
    protected String onmousedown;
    protected String onmousemove;
    protected String onmouseout;
    protected String onmouseover;
    protected String onmouseup;
    
    /**
     * JavaScript記述を作成します
     * @return JavaScript記述を取得します
     */
    public String createJavaScriptTag(){
        StringBuffer inputTag = new StringBuffer();
        inputTag.append(JspTagUtil.createAttribute("onblur", onblur));
        inputTag.append(JspTagUtil.createAttribute("onchange", onchange));
        inputTag.append(JspTagUtil.createAttribute("onclick", onclick));
        inputTag.append(JspTagUtil.createAttribute("ondblclick", ondblclick));
        inputTag.append(JspTagUtil.createAttribute("onfocus", onfocus));
        inputTag.append(JspTagUtil.createAttribute("onkeydown", onkeydown));
        inputTag.append(JspTagUtil.createAttribute("onkeypress", onkeypress));
        inputTag.append(JspTagUtil.createAttribute("onkeyup", onkeyup));
        inputTag.append(JspTagUtil.createAttribute("onmousedown", onmousedown));
        inputTag.append(JspTagUtil.createAttribute("onmousemove", onmousemove));
        inputTag.append(JspTagUtil.createAttribute("onmouseout", onmouseout));
        inputTag.append(JspTagUtil.createAttribute("onmouseover", onmouseover));
        inputTag.append(JspTagUtil.createAttribute("onmouseup", onmouseup));
        return inputTag.toString();
    }
    
    /**
     * @return nameを取得します
     */
    public String getName() {
        return name;
    }
    /**
     * @param name name を設定します。
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return propertyを取得します
     */
    public String getProperty() {
        return property;
    }
    /**
     * @param property property を設定します。
     */
    public void setProperty(String property) {
        this.property = property;
    }
    
    /**
     * @return valueを取得します
     */
    public String getValue() {
        return value;
    }
    /**
     * @param value vlaue を設定します。
     */
    public void setValue(String value) {
        this.value = value;
    }
    /**
     * @return styleを取得します
     */
    public String getStyle() {
        return style;
    }

    /**
     * @param string styleをセットします
     */
    public void setStyle(String string) {
        style = string;
    }

    /**
     * @return scopeを取得します
     */
    public String getScope() {
        return scope;
    }

    /**
     * @param string scopeをセットします
     */
    public void setScope(String string) {
        scope = string;
    }

    /**
     * @return disabledを取得します
     */
    public String getDisabled() {
        return disabled;
    }

    /**
     * @return readonlyを取得します
     */
    public String getReadonly() {
        return readonly;
    }

    /**
     * @param string disabledをセットします
     */
    public void setDisabled(String string) {
        disabled = string;
    }

    /**
     * @param string readonlyをセットします
     */
    public void setReadonly(String string) {
        readonly = string;
    }

	/**
	 * @return csClassを取得します
	 */
	public String getCsClass() {
		return csClass;
	}

	/**
	 * @param string csClassをセットします
	 */
	public void setCsClass(String string) {
		csClass = string;
	}

    /**
     * @return htmlnameを取得します
     */
    public String getHtmlname() {
        return htmlname;
    }

    /**
     * @param string htmlnameをセットします
     */
    public void setHtmlname(String string) {
        htmlname = string;
    }

    /**
     * @return onblurを取得します
     */
    public String getOnblur() {
        return onblur;
    }

    /**
     * @return onchangeを取得します
     */
    public String getOnchange() {
        return onchange;
    }

    /**
     * @return onclickを取得します
     */
    public String getOnclick() {
        return onclick;
    }

    /**
     * @return ondblclickを取得します
     */
    public String getOndblclick() {
        return ondblclick;
    }

    /**
     * @return onfocusを取得します
     */
    public String getOnfocus() {
        return onfocus;
    }

    /**
     * @return onkeydownを取得します
     */
    public String getOnkeydown() {
        return onkeydown;
    }

    /**
     * @return onkeypressを取得します
     */
    public String getOnkeypress() {
        return onkeypress;
    }

    /**
     * @return onkeyupを取得します
     */
    public String getOnkeyup() {
        return onkeyup;
    }

    /**
     * @return onmousedownを取得します
     */
    public String getOnmousedown() {
        return onmousedown;
    }

    /**
     * @return onmousemoveを取得します
     */
    public String getOnmousemove() {
        return onmousemove;
    }

    /**
     * @return onmouseoutを取得します
     */
    public String getOnmouseout() {
        return onmouseout;
    }

    /**
     * @return onmouseoverを取得します
     */
    public String getOnmouseover() {
        return onmouseover;
    }

    /**
     * @return onmouseupを取得します
     */
    public String getOnmouseup() {
        return onmouseup;
    }

    /**
     * @param string onblurをセットします
     */
    public void setOnblur(String string) {
        onblur = string;
    }

    /**
     * @param string onchangeをセットします
     */
    public void setOnchange(String string) {
        onchange = string;
    }

    /**
     * @param string onclickをセットします
     */
    public void setOnclick(String string) {
        onclick = string;
    }

    /**
     * @param string ondblclickをセットします
     */
    public void setOndblclick(String string) {
        ondblclick = string;
    }

    /**
     * @param string onfocusをセットします
     */
    public void setOnfocus(String string) {
        onfocus = string;
    }

    /**
     * @param string onleydownをセットします
     */
    public void setOnkeydown(String string) {
        onkeydown = string;
    }

    /**
     * @param string onkeypressをセットします
     */
    public void setOnkeypress(String string) {
        onkeypress = string;
    }

    /**
     * @param string onleyupをセットします
     */
    public void setOnkeyup(String string) {
        onkeyup = string;
    }

    /**
     * @param string onmousedownをセットします
     */
    public void setOnmousedown(String string) {
        onmousedown = string;
    }

    /**
     * @param string onmousemoveをセットします
     */
    public void setOnmousemove(String string) {
        onmousemove = string;
    }

    /**
     * @param string onmouseoutをセットします
     */
    public void setOnmouseout(String string) {
        onmouseout = string;
    }

    /**
     * @param string onmouseoverをセットします
     */
    public void setOnmouseover(String string) {
        onmouseover = string;
    }

    /**
     * @param string onmouseupをセットします
     */
    public void setOnmouseup(String string) {
        onmouseup = string;
    }
}
